コード例 #1
0
 public static void UpdateAnimationRelativePath(LostProperty prop, string newPath)
 {
     Debug.Log(prop.PropPath + "を" + newPath + "に修正");
     prop.State = FixState.Fixed;
     prop.SerializedProperty.stringValue = newPath;
     prop.SerializedClip.ApplyModifiedProperties();
 }
コード例 #2
0
        private static ClipValidationContainer FindLostAnimations(AnimationClip clip, Transform root)
        {
            var lostAnimations = new List <LostProperty>();
            var serializedClip = new SerializedObject(clip);

            // clipはいくつかのカーブをもっている
            foreach (var curveName in CurveNames)
            {
                var curves     = serializedClip.FindProperty(curveName);
                var curveCount = curves.arraySize;
                for (var i = 0; i < curveCount; i++)
                {
                    var curve             = curves.GetArrayElementAtIndex(i);
                    var pathProperty      = curve.FindPropertyRelative(PathPropName);
                    var attributeProperty = curve.FindPropertyRelative(AttributePropName);
                    var attribute         = attributeProperty != null ? attributeProperty.stringValue : "Position";
                    // ルートの直下からの相対パスが入ってる
                    var path   = pathProperty.stringValue;
                    var result = root.Find(path);
                    if (result == null)
                    {
                        var lost = new LostProperty
                        {
                            ObjectName         = GetObjectName(path),
                            PropPath           = path,
                            AttributeName      = attribute,
                            SerializedProperty = pathProperty,
                            SerializedClip     = serializedClip,
                            State = FixState.Lost
                        };
                        lostAnimations.Add(lost);
                    }
                }
            }

            var clipLost = new ClipValidationContainer(lostAnimations, clip);

            return(clipLost);
        }