summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorglassmancody.info <glassmancody.info@gmail.com>2022-01-04 14:10:39 -0800
committerglassmancody.info <glassmancody.info@gmail.com>2022-01-04 14:10:39 -0800
commit909aa43ba12b1d06cf822783215ac84ee6a3730d (patch)
tree32258759838a21f434d2ef751081237d87d8aca5
parentb6572fbe42e4c560c7beefe6544b3320a5cd70f9 (diff)
update sky particle node correctly
-rw-r--r--apps/openmw/mwrender/sky.cpp7
-rw-r--r--apps/openmw/mwrender/sky.hpp1
2 files changed, 5 insertions, 3 deletions
diff --git a/apps/openmw/mwrender/sky.cpp b/apps/openmw/mwrender/sky.cpp
index c0a071c062..7b124b018c 100644
--- a/apps/openmw/mwrender/sky.cpp
+++ b/apps/openmw/mwrender/sky.cpp
@@ -248,6 +248,7 @@ namespace MWRender
, mEnabled(true)
, mSunEnabled(true)
, mPrecipitationAlpha(0.f)
+ , mDirtyParticlesEffect(false)
{
osg::ref_ptr<CameraRelativeTransform> skyroot = new CameraRelativeTransform;
skyroot->setName("Sky Root");
@@ -537,8 +538,7 @@ namespace MWRender
if (!enabled && mParticleNode && mParticleEffect)
{
mCurrentParticleEffect.clear();
- mParticleNode->removeChild(mParticleEffect);
- mParticleEffect = nullptr;
+ mDirtyParticlesEffect = true;
}
mEnabled = enabled;
@@ -610,8 +610,9 @@ namespace MWRender
if (mIsStorm)
mStormDirection = weather.mStormDirection;
- if (mCurrentParticleEffect != weather.mParticleEffect)
+ if (mDirtyParticlesEffect || (mCurrentParticleEffect != weather.mParticleEffect))
{
+ mDirtyParticlesEffect = false;
mCurrentParticleEffect = weather.mParticleEffect;
// cleanup old particles
diff --git a/apps/openmw/mwrender/sky.hpp b/apps/openmw/mwrender/sky.hpp
index 1a30633886..e2ceae45f4 100644
--- a/apps/openmw/mwrender/sky.hpp
+++ b/apps/openmw/mwrender/sky.hpp
@@ -186,6 +186,7 @@ namespace MWRender
bool mSunEnabled;
float mPrecipitationAlpha;
+ bool mDirtyParticlesEffect;
osg::Vec4f mMoonScriptColor;
};