Explorar el Código

Merge pull request #1872 from Florastamine/master

Add Animation::GetTrack(unsigned)
Lasse Öörni hace 8 años
padre
commit
e92c0ee093

+ 1 - 0
Source/Urho3D/AngelScript/GraphicsAPI.cpp

@@ -1128,6 +1128,7 @@ static void RegisterAnimation(asIScriptEngine* engine)
     engine->RegisterObjectMethod("Animation", "void set_length(float)", asMETHOD(Animation, SetLength), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "void set_length(float)", asMETHOD(Animation, SetLength), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "float get_length() const", asMETHOD(Animation, GetLength), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "float get_length() const", asMETHOD(Animation, GetLength), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "AnimationTrack@+ get_tracks(const String&in)", asMETHODPR(Animation, GetTrack, (const String&), AnimationTrack*), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "AnimationTrack@+ get_tracks(const String&in)", asMETHODPR(Animation, GetTrack, (const String&), AnimationTrack*), asCALL_THISCALL);
+    engine->RegisterObjectMethod("Animation", "AnimationTrack@+ GetTrack(uint)", asMETHODPR(Animation, GetTrack, (unsigned), AnimationTrack*), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "uint get_numTracks() const", asMETHOD(Animation, GetNumTracks), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "uint get_numTracks() const", asMETHOD(Animation, GetNumTracks), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "void set_numTriggers(uint)", asMETHOD(Animation, SetNumTriggers), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "void set_numTriggers(uint)", asMETHOD(Animation, SetNumTriggers), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "uint get_numTriggers() const", asMETHOD(Animation, GetNumTriggers), asCALL_THISCALL);
     engine->RegisterObjectMethod("Animation", "uint get_numTriggers() const", asMETHOD(Animation, GetNumTriggers), asCALL_THISCALL);

+ 18 - 0
Source/Urho3D/Graphics/Animation.cpp

@@ -376,8 +376,26 @@ SharedPtr<Animation> Animation::Clone(const String& cloneName) const
     ret->SetMemoryUse(GetMemoryUse());
     ret->SetMemoryUse(GetMemoryUse());
     
     
     return ret;
     return ret;
+} 
+
+AnimationTrack* Animation::GetTrack(unsigned index) 
+{ 
+    if (index >= GetNumTracks()) 
+        return (AnimationTrack*) 0;
+
+    int j = 0; 
+    for(HashMap<StringHash, AnimationTrack>::Iterator i = tracks_.Begin(); i != tracks_.End(); ++i) 
+    {
+        if (j == index) 
+            return &i->second_; 
+        
+        ++j;
+    }
+    
+    return (AnimationTrack*) 0;
 }
 }
 
 
+
 AnimationTrack* Animation::GetTrack(const String& name)
 AnimationTrack* Animation::GetTrack(const String& name)
 {
 {
     HashMap<StringHash, AnimationTrack>::Iterator i = tracks_.Find(StringHash(name));
     HashMap<StringHash, AnimationTrack>::Iterator i = tracks_.Find(StringHash(name));

+ 4 - 1
Source/Urho3D/Graphics/Animation.h

@@ -162,7 +162,10 @@ public:
     const HashMap<StringHash, AnimationTrack>& GetTracks() const { return tracks_; }
     const HashMap<StringHash, AnimationTrack>& GetTracks() const { return tracks_; }
 
 
     /// Return number of animation tracks.
     /// Return number of animation tracks.
-    unsigned GetNumTracks() const { return tracks_.Size(); }
+    unsigned GetNumTracks() const { return tracks_.Size(); } 
+
+    /// Return animation track by index. 
+    AnimationTrack *GetTrack(unsigned index);
 
 
     /// Return animation track by name.
     /// Return animation track by name.
     AnimationTrack* GetTrack(const String& name);
     AnimationTrack* GetTrack(const String& name);

+ 2 - 1
Source/Urho3D/LuaScript/pkgs/Graphics/Animation.pkg

@@ -61,7 +61,8 @@ class Animation : public Resource
     float GetLength() const;
     float GetLength() const;
     unsigned GetNumTracks() const;
     unsigned GetNumTracks() const;
     AnimationTrack* GetTrack(const String name);
     AnimationTrack* GetTrack(const String name);
-    AnimationTrack* GetTrack(StringHash nameHash);
+    AnimationTrack* GetTrack(StringHash nameHash); 
+    AnimationTrack* GetTrack(unsigned index); 
     unsigned GetNumTriggers() const;
     unsigned GetNumTriggers() const;
     AnimationTriggerPoint* GetTrigger(unsigned index);
     AnimationTriggerPoint* GetTrigger(unsigned index);