mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-07-11 14:44:36 +00:00
fix(es) for volumetric fog when dealing with dedicated servers.
This commit is contained in:
parent
ad612e218b
commit
d2dd2b4e1a
2 changed files with 16 additions and 8 deletions
|
|
@ -244,6 +244,8 @@ bool VolumetricFog::onAdd()
|
||||||
mSpeed.set(mSpeed1.x, mSpeed1.y, mSpeed2.x, mSpeed2.y);
|
mSpeed.set(mSpeed1.x, mSpeed1.y, mSpeed2.x, mSpeed2.y);
|
||||||
mInvScale = (1.0f / getMax(getMax(mObjScale.x, mObjScale.y), mObjScale.z));
|
mInvScale = (1.0f / getMax(getMax(mObjScale.x, mObjScale.y), mObjScale.z));
|
||||||
|
|
||||||
|
VFRTM->IncFogObjects();
|
||||||
|
|
||||||
if (isClientObject())
|
if (isClientObject())
|
||||||
{
|
{
|
||||||
conn = GameConnection::getConnectionToServer();
|
conn = GameConnection::getConnectionToServer();
|
||||||
|
|
@ -271,8 +273,6 @@ bool VolumetricFog::onAdd()
|
||||||
return setupRenderer();
|
return setupRenderer();
|
||||||
}
|
}
|
||||||
|
|
||||||
VFRTM->IncFogObjects();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -288,7 +288,7 @@ void VolumetricFog::onRemove()
|
||||||
mGlowing = 0;
|
mGlowing = 0;
|
||||||
glowFX->disable();
|
glowFX->disable();
|
||||||
}
|
}
|
||||||
_leaveFog(static_cast<ShapeBase*>(conn->getControlObject()));
|
_leaveFog(dynamic_cast<ShapeBase*>(conn->getControlObject()));
|
||||||
}
|
}
|
||||||
VolumetricFogRTManager::getVolumetricFogRTMResizeSignal().remove(this, &VolumetricFog::handleResize);
|
VolumetricFogRTManager::getVolumetricFogRTMResizeSignal().remove(this, &VolumetricFog::handleResize);
|
||||||
GuiCanvas::getCanvasSizeChangeSignal().remove(this, &VolumetricFog::handleCanvasResize);
|
GuiCanvas::getCanvasSizeChangeSignal().remove(this, &VolumetricFog::handleCanvasResize);
|
||||||
|
|
@ -699,7 +699,9 @@ void VolumetricFog::processTick(const Move* move)
|
||||||
}
|
}
|
||||||
if (mCounter == 3)
|
if (mCounter == 3)
|
||||||
{
|
{
|
||||||
ShapeBase* control = static_cast<ShapeBase*>(conn->getControlObject());
|
ShapeBase* control = dynamic_cast<ShapeBase*>(conn->getControlObject());
|
||||||
|
if (!control)
|
||||||
|
return;
|
||||||
MatrixF xfm;
|
MatrixF xfm;
|
||||||
control->getRenderEyeTransform(&xfm);
|
control->getRenderEyeTransform(&xfm);
|
||||||
Point3F pos = xfm.getPosition();
|
Point3F pos = xfm.getPosition();
|
||||||
|
|
@ -971,9 +973,8 @@ void VolumetricFog::prepRenderImage(SceneRenderState *state)
|
||||||
|
|
||||||
PROFILE_SCOPE(VolumetricFog_prepRenderImage);
|
PROFILE_SCOPE(VolumetricFog_prepRenderImage);
|
||||||
|
|
||||||
// Time critical therefore static_cast
|
ShapeBase* control = dynamic_cast<ShapeBase*>(conn->getControlObject());
|
||||||
ShapeBase* control = static_cast<ShapeBase*>(conn->getControlObject());
|
if (!control || (control->getWaterCoverage() >= 0.9f && !mIgnoreWater))
|
||||||
if (control->getWaterCoverage() >= 0.9f && !mIgnoreWater)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
camPos = state->getCameraPosition();
|
camPos = state->getCameraPosition();
|
||||||
|
|
|
||||||
|
|
@ -133,6 +133,13 @@ bool VolumetricFogRTManager::Init()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (GFX->getAdapterType() == NullDevice)
|
||||||
|
{
|
||||||
|
mIsInitialized = true;
|
||||||
|
Con::errorf("VolumetricFogRTManager - Dedicated server");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
GuiCanvas* cv = dynamic_cast<GuiCanvas*>(Sim::findObject("Canvas"));
|
GuiCanvas* cv = dynamic_cast<GuiCanvas*>(Sim::findObject("Canvas"));
|
||||||
if (cv == NULL)
|
if (cv == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue