fix(es) for volumetric fog when dealing with dedicated servers.

This commit is contained in:
Azaezel 2017-09-15 13:46:19 -05:00
parent ad612e218b
commit d2dd2b4e1a
2 changed files with 16 additions and 8 deletions

View file

@ -244,6 +244,8 @@ bool VolumetricFog::onAdd()
mSpeed.set(mSpeed1.x, mSpeed1.y, mSpeed2.x, mSpeed2.y);
mInvScale = (1.0f / getMax(getMax(mObjScale.x, mObjScale.y), mObjScale.z));
VFRTM->IncFogObjects();
if (isClientObject())
{
conn = GameConnection::getConnectionToServer();
@ -270,8 +272,6 @@ bool VolumetricFog::onAdd()
InitTexture();
return setupRenderer();
}
VFRTM->IncFogObjects();
return true;
}
@ -288,7 +288,7 @@ void VolumetricFog::onRemove()
mGlowing = 0;
glowFX->disable();
}
_leaveFog(static_cast<ShapeBase*>(conn->getControlObject()));
_leaveFog(dynamic_cast<ShapeBase*>(conn->getControlObject()));
}
VolumetricFogRTManager::getVolumetricFogRTMResizeSignal().remove(this, &VolumetricFog::handleResize);
GuiCanvas::getCanvasSizeChangeSignal().remove(this, &VolumetricFog::handleCanvasResize);
@ -699,7 +699,9 @@ void VolumetricFog::processTick(const Move* move)
}
if (mCounter == 3)
{
ShapeBase* control = static_cast<ShapeBase*>(conn->getControlObject());
ShapeBase* control = dynamic_cast<ShapeBase*>(conn->getControlObject());
if (!control)
return;
MatrixF xfm;
control->getRenderEyeTransform(&xfm);
Point3F pos = xfm.getPosition();
@ -971,9 +973,8 @@ void VolumetricFog::prepRenderImage(SceneRenderState *state)
PROFILE_SCOPE(VolumetricFog_prepRenderImage);
// Time critical therefore static_cast
ShapeBase* control = static_cast<ShapeBase*>(conn->getControlObject());
if (control->getWaterCoverage() >= 0.9f && !mIgnoreWater)
ShapeBase* control = dynamic_cast<ShapeBase*>(conn->getControlObject());
if (!control || (control->getWaterCoverage() >= 0.9f && !mIgnoreWater))
return;
camPos = state->getCameraPosition();

View file

@ -132,7 +132,14 @@ bool VolumetricFogRTManager::Init()
Con::errorf("VolumetricFogRTManager allready initialized!!");
return true;
}
if (GFX->getAdapterType() == NullDevice)
{
mIsInitialized = true;
Con::errorf("VolumetricFogRTManager - Dedicated server");
return true;
}
GuiCanvas* cv = dynamic_cast<GuiCanvas*>(Sim::findObject("Canvas"));
if (cv == NULL)
{