Example #1
0
        public static Keyframe ToKeyframe(JSONObject obj)
        {
            Keyframe k = new Keyframe(obj.HasField("time")? obj.GetField("time").n : 0, obj.HasField("value")? obj.GetField("value").n : 0);

            if (obj.HasField("inTangent"))
            {
                k.inTangent = obj.GetField("inTangent").n;
            }
            if (obj.HasField("outTangent"))
            {
                k.outTangent = obj.GetField("outTangent").n;
            }
            if (obj.HasField("tangentMode"))
            {
                k.tangentMode = (int)obj.GetField("tangentMode").n;
            }

            return(k);
        }
Example #2
0
        public static AnimationCurve ToAnimationCurve(JSONObject obj)
        {
            AnimationCurve a = new AnimationCurve();

            if (obj.HasField("keys"))
            {
                JSONObject keys = obj.GetField("keys");
                for (int i = 0; i < keys.list.Count; i++)
                {
                    a.AddKey(ToKeyframe(keys[i]));
                }
            }
            if (obj.HasField("preWrapMode"))
            {
                a.preWrapMode = (WrapMode)((int)obj.GetField("preWrapMode").n);
            }
            if (obj.HasField("postWrapMode"))
            {
                a.postWrapMode = (WrapMode)((int)obj.GetField("postWrapMode").n);
            }
            return(a);
        }
        /// <summary>
        /// Merge object right into left recursively
        /// </summary>
        /// <param name="left">The left (base) object</param>
        /// <param name="right">The right (new) object</param>
        static void MergeRecur(JSONObject left, JSONObject right)
        {
            if (left.type == Type.NULL)
            {
                left.Absorb(right);
            }
            else if (left.type == Type.OBJECT && right.type == Type.OBJECT)
            {
                for (int i = 0; i < right.list.Count; i++)
                {
                    string key = right.keys[i];
                    if (right[i].isContainer)
                    {
                        if (left.HasField(key))
                        {
                            MergeRecur(left[key], right[i]);
                        }
                        else
                        {
                            left.AddField(key, right[i]);
                        }
                    }
                    else
                    {
                        if (left.HasField(key))
                        {
                            left.SetField(key, right[i]);
                        }
                        else
                        {
                            left.AddField(key, right[i]);
                        }
                    }
                }
            }
            else if (left.type == Type.ARRAY && right.type == Type.ARRAY)
            {
                if (right.Count > left.Count)
                {
#if UNITY_2 || UNITY_3 || UNITY_4 || UNITY_5
                    Debug.LogError
#else
                    Debug.WriteLine
#endif
                        ("Cannot merge arrays when right object has more elements");

                    return;
                }
                for (int i = 0; i < right.list.Count; i++)
                {
                    if (left[i].type == right[i].type)                   //Only overwrite with the same type
                    {
                        if (left[i].isContainer)
                        {
                            MergeRecur(left[i], right[i]);
                        }
                        else
                        {
                            left[i] = right[i];
                        }
                    }
                }
            }
        }