Jelajahi Sumber

Add SetAlpha in StaticSprite2D to AnimatedSprite2D alpha animation bug.
Add typedef in Vector and HashMap.

aster2013 11 tahun lalu
induk
melakukan
c11db9fdcd

+ 3 - 0
Source/Urho3D/Container/HashMap.h

@@ -36,6 +36,9 @@ namespace Urho3D
 template <class T, class U> class HashMap : public HashBase
 {
 public:
+    typedef T KeyType;
+    typedef U ValueType;
+    
     /// Hash map key-value pair with const key.
     class KeyValue
     {

+ 2 - 0
Source/Urho3D/Container/Vector.h

@@ -35,6 +35,7 @@ namespace Urho3D
 template <class T> class Vector : public VectorBase
 {
 public:
+    typedef T ValueType;
     typedef RandomAccessIterator<T> Iterator;
     typedef RandomAccessConstIterator<T> ConstIterator;
     
@@ -458,6 +459,7 @@ private:
 template <class T> class PODVector : public VectorBase
 {
 public:
+    typedef T ValueType;
     typedef RandomAccessIterator<T> Iterator;
     typedef RandomAccessConstIterator<T> ConstIterator;
     

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

@@ -8,14 +8,23 @@ public:
     void SetFlipX(bool flipX);
     void SetFlipY(bool flipY);
     void SetColor(const Color& color);
+    void SetAlpha(float alpha);
+    void SetUseHotSpot(bool useHotSpot);
+    void SetHotSpot(const Vector2& hotspot);
 
     Sprite2D* GetSprite() const;
     bool GetFlipX() const;
     bool GetFlipY() const;
     const Color& GetColor() const;
+    float GetAlpha() const;
+    bool GetUseHotSpot() const;
+    const Vector2& GetHotSpot() const;
     
     tolua_property__get_set Sprite2D* sprite;
     tolua_property__get_set bool flipX;
     tolua_property__get_set bool flipY;
     tolua_property__get_set Color& color;
+    tolua_property__get_set float alpha;
+    tolua_property__get_set bool useHotSpot;
+    tolua_property__get_set Vector2 hotSpot;
 };

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

@@ -121,6 +121,12 @@ template <class T> void RegisterStaticSprite2D(asIScriptEngine* engine, const ch
     engine->RegisterObjectMethod(className, "bool get_flipY() const", asMETHOD(T, GetFlipY), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "void set_color(const Color&in)", asMETHOD(T, SetColor), asCALL_THISCALL);
     engine->RegisterObjectMethod(className, "const Color& get_color() const", asMETHOD(T, GetColor), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void set_alpha(float)", asMETHOD(T, SetAlpha), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "float get_alpha() const", asMETHOD(T, GetAlpha), asCALL_THISCALL);
+    engine->RegisterObjectMethod(className, "void set_useHotSpot(bool)", asMETHOD(T, SetUseHotSpot), 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, "const Vector2& get_hotSpot() const", asMETHOD(T, GetHotSpot), asCALL_THISCALL);
 }
 
 static void RegisterStaticSprite2D(asIScriptEngine* engine)

+ 1 - 0
Source/Urho3D/Urho2D/AnimatedSprite2D.cpp

@@ -458,6 +458,7 @@ void AnimatedSprite2D::UpdateAnimation(float timeStep)
                 {
                     staticSprite->SetOrderInLayer(orderInLayer_ + nodeInfo.value.zIndex_);
                     staticSprite->SetSprite(nodeInfo.value.sprite_);
+                    staticSprite->SetAlpha(nodeInfo.value.alpha_);
                     staticSprite->SetUseHotSpot(nodeInfo.value.useHotSpot_);
                     staticSprite->SetHotSpot(nodeInfo.value.hotSpot_);
                 }

+ 10 - 0
Source/Urho3D/Urho2D/StaticSprite2D.cpp

@@ -107,6 +107,16 @@ void StaticSprite2D::SetColor(const Color& color)
     MarkNetworkUpdate();
 }
 
+void StaticSprite2D::SetAlpha(float alpha)
+{
+    if (alpha == color_.a_)
+        return;
+
+    color_.a_ = alpha;
+    verticesDirty_ = true;
+    MarkNetworkUpdate();
+}
+
 void StaticSprite2D::SetUseHotSpot(bool useHotSpot)
 {
     if (useHotSpot == useHotSpot_)

+ 4 - 0
Source/Urho3D/Urho2D/StaticSprite2D.h

@@ -52,6 +52,8 @@ public:
     void SetFlipY(bool flipY);
     /// Set color.
     void SetColor(const Color& color);
+    /// Set alpha.
+    void SetAlpha(float alpha);
     /// Set use hot spot.
     void SetUseHotSpot(bool useHotSpot);
     /// Set hot spot.
@@ -65,6 +67,8 @@ public:
     bool GetFlipY() const { return flipY_; }
     /// Return color.
     const Color& GetColor() const { return color_; }
+    /// Return alpha.
+    float GetAlpha() const { return color_.a_; }
     /// Return use hot spot.
     bool GetUseHotSpot() const { return useHotSpot_; }
     /// Return hot spot.