소스 검색

Use string hash key to store sprites.

aster2013 11 년 전
부모
커밋
c86d2239b2
2개의 변경된 파일7개의 추가작업 그리고 8개의 파일을 삭제
  1. 4 5
      Source/Engine/Urho2D/AnimationSet2D.cpp
  2. 3 3
      Source/Engine/Urho2D/AnimationSet2D.h

+ 4 - 5
Source/Engine/Urho2D/AnimationSet2D.cpp

@@ -94,10 +94,9 @@ Animation2D* AnimationSet2D::GetAnimation(const String& name) const
     return 0;
 }
 
-Sprite2D* AnimationSet2D::GetSprite(unsigned folderId, unsigned fileId) const
+Sprite2D* AnimationSet2D::GetSprite(const StringHash& hash) const
 {
-    unsigned key = (folderId << 16) + fileId;
-    HashMap<unsigned, SharedPtr<Sprite2D> >::ConstIterator i = sprites_.Find(key);
+    HashMap<StringHash, SharedPtr<Sprite2D> >::ConstIterator i = sprites_.Find(hash);
     if (i != sprites_.End())
         return i->second_;
     return 0;
@@ -244,7 +243,7 @@ bool AnimationSet2D::LoadSpriterFolders(const XMLElement& rootElem)
 
                 sprite->SetHotSpot(hotSpot);
 
-                sprites_[(folderId << 16) + fileId] = sprite;
+                sprites_[StringHash((folderId << 16) + fileId)] = sprite;
             }
             else if (!hasSpriteSheet)
                 cache->BackgroundLoadResource<Sprite2D>(parentPath + fileName, true, this);
@@ -368,7 +367,7 @@ bool AnimationSet2D::LoadSpriterAnimation(const XMLElement& animationElem)
             {
                 int folder = childElem.GetUInt("folder");
                 int file = childElem.GetUInt("file");
-                key.sprite_ = GetSprite(folder, file);
+                key.sprite_ = GetSprite(StringHash((folder << 16) + file));
                 if (!key.sprite_)
                 {
                     LOGERROR("Could not find sprite");

+ 3 - 3
Source/Engine/Urho2D/AnimationSet2D.h

@@ -58,8 +58,8 @@ public:
     Animation2D* GetAnimation(const String& name) const;
 
 private:
-    /// Return sprite by folder id and file id.
-    Sprite2D* GetSprite(unsigned folderId, unsigned fileId) const;
+    /// Return sprite by hash.
+    Sprite2D* GetSprite(const StringHash& hash) const;
     /// Begin load scml.
     bool BeginLoadSpriter(Deserializer &source);
     /// Finish load scml.
@@ -70,7 +70,7 @@ private:
     bool LoadSpriterAnimation(const XMLElement& animationElem);
 
     /// Sprites.
-    HashMap<unsigned, SharedPtr<Sprite2D> > sprites_;
+    HashMap<StringHash, SharedPtr<Sprite2D> > sprites_;
     /// Animations.
     Vector<SharedPtr<Animation2D> > animations_;
     /// Spriter file.