Sfoglia il codice sorgente

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 anni fa
parent
commit
0ced3e43fb

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

@@ -110,6 +110,15 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
     UpdateTestAnimation(timeStep);
     UpdateGizmo();
     UpdateDirtyUI();
+
+    // Handle Particle Editor looping.
+    if (particleEffectWindow !is null and particleEffectWindow.visible)
+    {
+        if (!particleEffectEmitter.emitting)
+        {
+            particleEffectEmitter.Reset();
+        }
+    }
 }
 
 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");
     particleEffectEmitter.effect = editParticleEffect;
 
-    SubscribeToEvent(particleEffectPreviewNode, "Update", "HandleParticleEffectUpdate");
-
     particleEffectPreview = particleEffectWindow.GetChild("ParticleEffectPreview", true);
     particleEffectPreview.SetFixedHeight(100);
     particleEffectPreview.SetView(particlePreviewScene, camera);
@@ -666,16 +664,6 @@ ParticleEffect@ CreateNewParticleEffect()
     return effect;
 }
 
-void HandleParticleEffectUpdate(StringHash eventType, VariantMap& eventData)
-{
-    log.Info("ASDSA");
-    if (!particleEffectEmitter.emitting)
-    {
-        log.Info("Reset emitter");
-        particleEffectEmitter.Reset();
-    }
-}
-
 void EditParticleEffect(ParticleEffect@ effect)
 {
     log.Info("EditParticleEffect()");
@@ -842,6 +830,8 @@ void RefreshParticleEffectTextureFrames()
     for (uint i = 0; i < editParticleEffect.numTextureFrames; i++)
     {
         TextureFrame@ textureFrame = editParticleEffect.GetTextureFrame(i);
+        if (textureFrame is null)
+            continue;
 
         Button@ container = Button();
         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
 {
-    return index < colorFrames_.Size() ? &textureFrames_[index] : (TextureFrame*)0;
+    return index < textureFrames_.Size() ? &textureFrames_[index] : (TextureFrame*)0;
 }
 
 Vector3 ParticleEffect::GetRandomDirection() const