Browse Source

Add Angelscript and Lua script API.

aster2013 10 years ago
parent
commit
21b90f6b86

+ 0 - 6
Source/Urho3D/LuaScript/pkgs/Urho2D/Drawable2D.pkg

@@ -9,16 +9,10 @@ class Drawable2D : public Drawable
 public:
 public:
     void SetLayer(int layer);
     void SetLayer(int layer);
     void SetOrderInLayer(int orderInLayer);
     void SetOrderInLayer(int orderInLayer);
-    void SetTexture(Texture2D* texture);
-    void SetBlendMode(BlendMode mode);
     
     
     int GetLayer() const;
     int GetLayer() const;
     int GetOrderInLayer() const;
     int GetOrderInLayer() const;
-    Texture2D* GetTexture() const;
-    BlendMode GetBlendMode() const;
     
     
     tolua_property__get_set int layer;
     tolua_property__get_set int layer;
     tolua_property__get_set int orderInLayer;
     tolua_property__get_set int orderInLayer;
-    tolua_property__get_set Texture2D* texture;
-    tolua_property__get_set BlendMode blendMode;
 };
 };

+ 5 - 1
Source/Urho3D/LuaScript/pkgs/Urho2D/ParticleEmitter2D.pkg

@@ -4,10 +4,14 @@ class ParticleEmitter2D : public Drawable2D
 {    
 {    
 public:
 public:
     void SetEffect(ParticleEffect2D* effect);
     void SetEffect(ParticleEffect2D* effect);
-    ParticleEffect2D* GetEffect() const;
     void SetSprite(Sprite2D* sprite);
     void SetSprite(Sprite2D* sprite);
+    void SetBlendMode(BlendMode blendMode);
+
+    ParticleEffect2D* GetEffect() const;
     Sprite2D* GetSprite() const;
     Sprite2D* GetSprite() const;
+    BlendMode GetBlendMode() const;
 
 
     tolua_property__get_set ParticleEffect2D* effect;
     tolua_property__get_set ParticleEffect2D* effect;
     tolua_property__get_set Sprite2D* sprite;
     tolua_property__get_set Sprite2D* sprite;
+    tolua_property__get_set BlendMode blendMode;
 };
 };

+ 6 - 0
Source/Urho3D/LuaScript/pkgs/Urho2D/StaticSprite2D.pkg

@@ -4,6 +4,7 @@ class StaticSprite2D : public Drawable2D
 {    
 {    
 public:
 public:
     void SetSprite(Sprite2D* sprite);
     void SetSprite(Sprite2D* sprite);
+    void SetBlendMode(BlendMode mode);
     void SetFlip(bool flipX, bool flipY);
     void SetFlip(bool flipX, bool flipY);
     void SetFlipX(bool flipX);
     void SetFlipX(bool flipX);
     void SetFlipY(bool flipY);
     void SetFlipY(bool flipY);
@@ -11,20 +12,25 @@ public:
     void SetAlpha(float alpha);
     void SetAlpha(float alpha);
     void SetUseHotSpot(bool useHotSpot);
     void SetUseHotSpot(bool useHotSpot);
     void SetHotSpot(const Vector2& hotspot);
     void SetHotSpot(const Vector2& hotspot);
+    void SetCustomMaterial(Material* customMaterial);
 
 
     Sprite2D* GetSprite() const;
     Sprite2D* GetSprite() const;
+    BlendMode GetBlendMode() const;
     bool GetFlipX() const;
     bool GetFlipX() const;
     bool GetFlipY() const;
     bool GetFlipY() const;
     const Color& GetColor() const;
     const Color& GetColor() const;
     float GetAlpha() const;
     float GetAlpha() const;
     bool GetUseHotSpot() const;
     bool GetUseHotSpot() const;
     const Vector2& GetHotSpot() const;
     const Vector2& GetHotSpot() const;
+    Material* GetCustomMaterial() const;
     
     
     tolua_property__get_set Sprite2D* sprite;
     tolua_property__get_set Sprite2D* sprite;
+    tolua_property__get_set BlendMode blendMode;
     tolua_property__get_set bool flipX;
     tolua_property__get_set bool flipX;
     tolua_property__get_set bool flipY;
     tolua_property__get_set bool flipY;
     tolua_property__get_set Color& color;
     tolua_property__get_set Color& color;
     tolua_property__get_set float alpha;
     tolua_property__get_set float alpha;
     tolua_property__get_set bool useHotSpot;
     tolua_property__get_set bool useHotSpot;
     tolua_property__get_set Vector2 hotSpot;
     tolua_property__get_set Vector2 hotSpot;
+    tolua_property__get_set Material* customMaterial;
 };
 };

+ 6 - 5
Source/Urho3D/Script/Urho2DAPI.cpp

@@ -94,16 +94,11 @@ template <class T> void RegisterDrawable2D(asIScriptEngine* engine, const char*
     engine->RegisterObjectMethod(className, "int get_layer() const", asMETHOD(T, GetLayer), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "int get_layer() const", asMETHOD(T, GetLayer), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_orderInLayer(int)", asMETHOD(T, SetOrderInLayer), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_orderInLayer(int)", asMETHOD(T, SetOrderInLayer), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "int get_orderInLayer() const", asMETHOD(T, GetOrderInLayer), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "int get_orderInLayer() const", asMETHOD(T, GetOrderInLayer), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "void set_texture(Texture2D@+)", asMETHOD(T, SetTexture), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "Texture2D@+ get_texture() const", asMETHOD(T, GetTexture), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "void set_blendMode(BlendMode)", asMETHOD(T, SetBlendMode), asCALL_THISCALL);
-    engine->RegisterObjectMethod(className, "BlendMode get_blendMode() const", asMETHOD(T, GetBlendMode), asCALL_THISCALL);
 }
 }
 
 
 static void RegisterDrawable2D(asIScriptEngine* engine)
 static void RegisterDrawable2D(asIScriptEngine* engine)
 {
 {
     engine->RegisterGlobalProperty("const float PIXEL_SIZE", (void*)&PIXEL_SIZE);
     engine->RegisterGlobalProperty("const float PIXEL_SIZE", (void*)&PIXEL_SIZE);
-
     RegisterDrawable2D<Drawable2D>(engine, "Drawable2D");
     RegisterDrawable2D<Drawable2D>(engine, "Drawable2D");
 }
 }
 
 
@@ -114,6 +109,8 @@ template <class T> void RegisterStaticSprite2D(asIScriptEngine* engine, const ch
     RegisterSubclass<StaticSprite2D, T>(engine, "StaticSprite2D", className);
     RegisterSubclass<StaticSprite2D, T>(engine, "StaticSprite2D", className);
     engine->RegisterObjectMethod(className, "void set_sprite(Sprite2D@+)", asMETHOD(T, SetSprite), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_sprite(Sprite2D@+)", asMETHOD(T, SetSprite), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "Sprite2D@+ get_sprite() const", asMETHOD(T, GetSprite), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "Sprite2D@+ get_sprite() const", asMETHOD(T, GetSprite), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void set_blendMode(BlendMode)", asMETHOD(T, SetBlendMode), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "BlendMode get_blendMode() const", asMETHOD(T, GetBlendMode), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void SetFlip(bool, bool)", asMETHOD(T, SetFlip), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void SetFlip(bool, bool)", asMETHOD(T, SetFlip), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_flipX(bool)", asMETHOD(T, SetFlipX), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_flipX(bool)", asMETHOD(T, SetFlipX), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "bool get_flipX() const", asMETHOD(T, GetFlipX), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "bool get_flipX() const", asMETHOD(T, GetFlipX), asCALL_THISCALL);
@@ -127,6 +124,8 @@ template <class T> void RegisterStaticSprite2D(asIScriptEngine* engine, const ch
     engine->RegisterObjectMethod(className, "bool get_useHotSpot() const", asMETHOD(T, GetUseHotSpot), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "bool get_useHotSpot() const", asMETHOD(T, GetUseHotSpot), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_hotSpot(const Vector2&in)", asMETHOD(T, SetHotSpot), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_hotSpot(const Vector2&in)", asMETHOD(T, SetHotSpot), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "const Vector2& get_hotSpot() const", asMETHOD(T, GetHotSpot), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "const Vector2& get_hotSpot() const", asMETHOD(T, GetHotSpot), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void set_customMaterial(Material@+)", asMETHOD(T, SetCustomMaterial), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "Material@+ get_customMaterial() const", asMETHOD(T, GetCustomMaterial), asCALL_THISCALL);
 }
 }
 
 
 static void RegisterStaticSprite2D(asIScriptEngine* engine)
 static void RegisterStaticSprite2D(asIScriptEngine* engine)
@@ -186,6 +185,8 @@ static void RegisterParticleEmitter2D(asIScriptEngine* engine)
     engine->RegisterObjectMethod("ParticleEmitter2D", "ParticleEffect2D@+ get_effect() const", asMETHOD(ParticleEmitter2D, GetEffect), asCALL_THISCALL);
     engine->RegisterObjectMethod("ParticleEmitter2D", "ParticleEffect2D@+ get_effect() const", asMETHOD(ParticleEmitter2D, GetEffect), asCALL_THISCALL);
     engine->RegisterObjectMethod("ParticleEmitter2D", "void set_sprite(Sprite2D@+)", asMETHOD(ParticleEmitter2D, SetSprite), asCALL_THISCALL);
     engine->RegisterObjectMethod("ParticleEmitter2D", "void set_sprite(Sprite2D@+)", asMETHOD(ParticleEmitter2D, SetSprite), asCALL_THISCALL);
     engine->RegisterObjectMethod("ParticleEmitter2D", "Sprite2D@+ get_sprite() const", asMETHOD(ParticleEmitter2D, GetSprite), asCALL_THISCALL);
     engine->RegisterObjectMethod("ParticleEmitter2D", "Sprite2D@+ get_sprite() const", asMETHOD(ParticleEmitter2D, GetSprite), asCALL_THISCALL);
+    engine->RegisterObjectMethod("ParticleEmitter2D", "void set_blendMode(BlendMode)", asMETHOD(ParticleEmitter2D, SetBlendMode), asCALL_THISCALL);
+    engine->RegisterObjectMethod("ParticleEmitter2D", "BlendMode get_blendMode() const", asMETHOD(ParticleEmitter2D, GetBlendMode), asCALL_THISCALL);
 }
 }
 
 
 static void FakeAddRef(void* ptr)
 static void FakeAddRef(void* ptr)

+ 1 - 1
Source/Urho3D/Urho2D/Renderer2D.cpp

@@ -401,7 +401,7 @@ static inline bool CompareSourceBatch2Ds(const SourceBatch2D* lhs, const SourceB
     if (lhs->material_ != rhs->material_)
     if (lhs->material_ != rhs->material_)
         return lhs->material_->GetNameHash() < rhs->material_->GetNameHash();
         return lhs->material_->GetNameHash() < rhs->material_->GetNameHash();
 
 
-    return (int)lhs < (int)rhs;
+    return lhs < rhs;
 }
 }
 
 
 void Renderer2D::UpdateViewBatchInfo(ViewBatchInfo2D& viewBatchInfo, Camera* camera)
 void Renderer2D::UpdateViewBatchInfo(ViewBatchInfo2D& viewBatchInfo, Camera* camera)