2
0
Эх сурвалжийг харах

Fixed a texture frame bug, where the size of color frames was being checked instead.
Moved some particle effect logic into the editor HandleUpdate event, so the particle effect will automatically restart when it stops.

hdunderscore 11 жил өмнө
parent
commit
0ced3e43fb

+ 9 - 0
Bin/Data/Scripts/Editor.as

@@ -110,6 +110,15 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
     UpdateTestAnimation(timeStep);
     UpdateTestAnimation(timeStep);
     UpdateGizmo();
     UpdateGizmo();
     UpdateDirtyUI();
     UpdateDirtyUI();
+
+    // Handle Particle Editor looping.
+    if (particleEffectWindow !is null and particleEffectWindow.visible)
+    {
+        if (!particleEffectEmitter.emitting)
+        {
+            particleEffectEmitter.Reset();
+        }
+    }
 }
 }
 
 
 void HandleReloadFinished(StringHash eventType, VariantMap& eventData)
 void HandleReloadFinished(StringHash eventType, VariantMap& eventData)

+ 2 - 12
Bin/Data/Scripts/Editor/EditorParticleEffect.as

@@ -646,8 +646,6 @@ void InitParticleEffectPreview()
     editParticleEffect = CreateNewParticleEffect();//cache.GetResource("ParticleEffect", "Particle/SnowExplosion.xml");
     editParticleEffect = CreateNewParticleEffect();//cache.GetResource("ParticleEffect", "Particle/SnowExplosion.xml");
     particleEffectEmitter.effect = editParticleEffect;
     particleEffectEmitter.effect = editParticleEffect;
 
 
-    SubscribeToEvent(particleEffectPreviewNode, "Update", "HandleParticleEffectUpdate");
-
     particleEffectPreview = particleEffectWindow.GetChild("ParticleEffectPreview", true);
     particleEffectPreview = particleEffectWindow.GetChild("ParticleEffectPreview", true);
     particleEffectPreview.SetFixedHeight(100);
     particleEffectPreview.SetFixedHeight(100);
     particleEffectPreview.SetView(particlePreviewScene, camera);
     particleEffectPreview.SetView(particlePreviewScene, camera);
@@ -666,16 +664,6 @@ ParticleEffect@ CreateNewParticleEffect()
     return effect;
     return effect;
 }
 }
 
 
-void HandleParticleEffectUpdate(StringHash eventType, VariantMap& eventData)
-{
-    log.Info("ASDSA");
-    if (!particleEffectEmitter.emitting)
-    {
-        log.Info("Reset emitter");
-        particleEffectEmitter.Reset();
-    }
-}
-
 void EditParticleEffect(ParticleEffect@ effect)
 void EditParticleEffect(ParticleEffect@ effect)
 {
 {
     log.Info("EditParticleEffect()");
     log.Info("EditParticleEffect()");
@@ -842,6 +830,8 @@ void RefreshParticleEffectTextureFrames()
     for (uint i = 0; i < editParticleEffect.numTextureFrames; i++)
     for (uint i = 0; i < editParticleEffect.numTextureFrames; i++)
     {
     {
         TextureFrame@ textureFrame = editParticleEffect.GetTextureFrame(i);
         TextureFrame@ textureFrame = editParticleEffect.GetTextureFrame(i);
+        if (textureFrame is null)
+            continue;
 
 
         Button@ container = Button();
         Button@ container = Button();
         lv.AddItem(container);
         lv.AddItem(container);

+ 1 - 1
Source/Engine/Graphics/ParticleEffect.cpp

@@ -687,7 +687,7 @@ const ColorFrame* ParticleEffect::GetColorFrame(unsigned index) const
 
 
 const TextureFrame* ParticleEffect::GetTextureFrame(unsigned index) const
 const TextureFrame* ParticleEffect::GetTextureFrame(unsigned index) const
 {
 {
-    return index < colorFrames_.Size() ? &textureFrames_[index] : (TextureFrame*)0;
+    return index < textureFrames_.Size() ? &textureFrames_[index] : (TextureFrame*)0;
 }
 }
 
 
 Vector3 ParticleEffect::GetRandomDirection() const
 Vector3 ParticleEffect::GetRandomDirection() const