Selaa lähdekoodia

Added possibility to new a ParticleEffect from Lua, and exposed missing functions. Fixed crash if ParticleEffect has no color frames. Closes #689.

Lasse Öörni 10 vuotta sitten
vanhempi
sitoutus
ddb9362ef4

+ 0 - 1
Source/Urho3D/Core/WorkQueue.cpp

@@ -207,7 +207,6 @@ unsigned WorkQueue::RemoveWorkItems(const Vector<SharedPtr<WorkItem> >& items)
     return removed;
 }
 
-
 void WorkQueue::Pause()
 {
     if (!paused_)

+ 1 - 1
Source/Urho3D/Graphics/ParticleEmitter.cpp

@@ -483,7 +483,7 @@ bool ParticleEmitter::EmitNewParticle()
     billboard.uv_ = textureFrames_.Size() ? textureFrames_[0].uv_ : Rect::POSITIVE;
     billboard.rotation_ = effect_->GetRandomRotation();
     const Vector<ColorFrame>& colorFrames_ = effect_->GetColorFrames();
-    billboard.color_ = colorFrames_[0].color_;
+    billboard.color_ = colorFrames_.Size() ? colorFrames_[0].color_ : Color();
     billboard.enabled_ = true;
 
     return true;

+ 27 - 0
Source/Urho3D/LuaScript/pkgs/Graphics/ParticleEffect.pkg

@@ -29,6 +29,9 @@ struct TextureFrame
 
 class ParticleEffect : public Resource
 {
+    ParticleEffect();
+    ~ParticleEffect();
+
     void SetMaterial(Material* material);
     void SetNumParticles(unsigned num);
     void SetUpdateInvisible(bool enable);
@@ -58,8 +61,18 @@ class ParticleEffect : public Resource
     void SetMaxRotationSpeed(float speed);    
     void SetSizeAdd(float sizeAdd);
     void SetSizeMul(float sizeMul);
+    void AddColorTime(const Color& color, const float time);
+    void AddColorFrame(const ColorFrame& colorFrame);
+    void RemoveColorFrame(unsigned index);
     void SetColorFrame(unsigned index, const ColorFrame& colorFrame);
+    void SetNumColorFrames(unsigned number);
+    void SortColorFrames();
+    void AddTextureTime(const Rect& uv, const float time);
+    void AddTextureFrame(const TextureFrame& textureFrame);
+    void RemoveTextureFrame(unsigned index);
     void SetTextureFrame(unsigned index, const TextureFrame& textureFrame);
+    void SetNumTextureFrames(unsigned number);
+    void SortTextureFrames();
 
     Material* GetMaterial() const;
     unsigned GetNumParticles() const;
@@ -127,3 +140,17 @@ class ParticleEffect : public Resource
     tolua_property__get_set unsigned numColorFrames;
     tolua_property__get_set unsigned numTextureFrames;
 };
+
+${
+#define TOLUA_DISABLE_tolua_GraphicsLuaAPI_ParticleEffect_new00
+static int tolua_GraphicsLuaAPI_ParticleEffect_new00(lua_State* tolua_S)
+{
+    return ToluaNewObject<ParticleEffect>(tolua_S);
+}
+
+#define TOLUA_DISABLE_tolua_GraphicsLuaAPI_ParticleEffect_new00_local
+static int tolua_GraphicsLuaAPI_ParticleEffect_new00_local(lua_State* tolua_S)
+{
+    return ToluaNewObjectGC<ParticleEffect>(tolua_S);
+}
+$}