Procházet zdrojové kódy

Properly save and load anim curve tangents

BearishSun před 9 roky
rodič
revize
142748717f

+ 2 - 11
Source/BansheeEditor/Source/BsProjectLibrary.cpp

@@ -1155,17 +1155,8 @@ namespace BansheeEngine
 			return;
 
 		FileEntry* fileEntry = static_cast<FileEntry*>(entry);
-		if (fileEntry->meta == nullptr)
-			return;
-
-		SPtr<ProjectResourceMeta> resMeta;
-		auto& resourceMetas = fileEntry->meta->getResourceMetaData();
-		for (auto& resMetaEntry : resourceMetas)
-		{
-			if (resMeta->getUniqueName() == path.getWTail())
-				resMeta = resMetaEntry;
-		}
-
+		SPtr<ProjectResourceMeta> resMeta = findResourceMeta(path);
+		
 		if (resMeta == nullptr)
 			return;
 

+ 18 - 26
Source/MBansheeEditor/Windows/Animation/EditorAnimInfo.cs

@@ -93,14 +93,22 @@ namespace BansheeEditor
                     FileEntry fileEntry = (FileEntry)entry;
                     ResourceMeta[] metas = fileEntry.ResourceMetas;
 
-                    for (int i = 0; i < metas.Length; i++)
+                    if (clipInfo.isImported)
                     {
-                        if (clipName == metas[i].SubresourceName)
+                        for (int i = 0; i < metas.Length; i++)
                         {
-                            editorCurveData = metas[i].EditorData as EditorAnimClipTangents;
-                            break;
+                            if (clipName == metas[i].SubresourceName)
+                            {
+                                editorCurveData = metas[i].EditorData as EditorAnimClipTangents;
+                                break;
+                            }
                         }
                     }
+                    else
+                    {
+                        if(metas.Length > 0)
+                            editorCurveData = metas[0].EditorData as EditorAnimClipTangents;
+                    }
                 }
             }
 
@@ -405,29 +413,13 @@ namespace BansheeEditor
                 ProjectLibrary.Save(clip);
 
                 // Save tangents for editor only use
-                LibraryEntry entry = ProjectLibrary.GetEntry(resourcePath);
-                string clipName = PathEx.GetTail(resourcePath);
+                EditorAnimClipTangents newCurveData = new EditorAnimClipTangents();
+                newCurveData.positionCurves = positionTangents.ToArray();
+                newCurveData.rotationCurves = rotationTangents.ToArray();
+                newCurveData.scaleCurves = scaleTangents.ToArray();
+                newCurveData.floatCurves = floatTangents.ToArray();
 
-                if (entry != null && entry.Type == LibraryEntryType.File)
-                {
-                    FileEntry fileEntry = (FileEntry)entry;
-                    ResourceMeta[] metas = fileEntry.ResourceMetas;
-
-                    for (int i = 0; i < metas.Length; i++)
-                    {
-                        if (clipName == metas[i].SubresourceName)
-                        {
-                            EditorAnimClipTangents newCurveData = new EditorAnimClipTangents();
-                            newCurveData.positionCurves = positionTangents.ToArray();
-                            newCurveData.rotationCurves = rotationTangents.ToArray();
-                            newCurveData.scaleCurves = scaleTangents.ToArray();
-                            newCurveData.floatCurves = floatTangents.ToArray();
-
-                            ProjectLibrary.SetEditorData(resourcePath, newCurveData);
-                            break;
-                        }
-                    }
-                }
+                ProjectLibrary.SetEditorData(resourcePath, newCurveData);
             }
             else
             {

+ 1 - 1
Source/MBansheeEditor/Windows/Animation/GUICurveEditor.cs

@@ -662,7 +662,7 @@ namespace BansheeEditor
         /// <summary>
         /// Change the set of curves to display.
         /// </summary>
-        /// <param name="curves">New set of curves to draw on the GUI element.</param>
+        /// <param name="curveInfos">New set of curves to draw on the GUI element.</param>
         public void SetCurves(CurveDrawInfo[] curveInfos)
         {
             this.curveInfos = curveInfos;