Esempio n. 1
0
        public static bool HasKey(IEnumerable <PropertyModification> modifications, UnityEngine.Object target,
                                  WindowState state)
        {
            AnimationClip clip;
            double        keyTime;
            bool          inRange;

            if (!GetClipAndRelativeTime(target, state, out clip, out keyTime, out inRange))
            {
                return(false);
            }

            return(GetKeyTimes(target, modifications, state).Any(t => (CurveEditUtility.KeyCompare((float)state.editSequence.time, (float)t, clip.frameRate) == 0)));
        }
 private static void AddObjectKey(AnimationClip clip, EditorCurveBinding sourceBinding, SerializedProperty prop, double time)
 {
     if (prop.get_propertyType() == 5)
     {
         ObjectReferenceKeyframe[] array     = null;
         AnimationClipCurveInfo    curveInfo = AnimationClipCurveCache.Instance.GetCurveInfo(clip);
         int num = Array.IndexOf <EditorCurveBinding>(curveInfo.objectBindings, sourceBinding);
         if (num >= 0)
         {
             array = curveInfo.objectCurves[num];
             int num2 = CurveEditUtility.EvaluateIndex(array, (float)time);
             if (CurveEditUtility.KeyCompare(array[num2].time, (float)time, clip.get_frameRate()) == 0)
             {
                 array[num2].value = prop.get_objectReferenceValue();
             }
             else if (num2 < array.Length - 1 && CurveEditUtility.KeyCompare(array[num2 + 1].time, (float)time, clip.get_frameRate()) == 0)
             {
                 array[num2 + 1].value = prop.get_objectReferenceValue();
             }
             else
             {
                 if (time > (double)array[0].time)
                 {
                     num2++;
                 }
                 ArrayUtility.Insert <ObjectReferenceKeyframe>(ref array, num2, new ObjectReferenceKeyframe
                 {
                     time  = (float)time,
                     value = prop.get_objectReferenceValue()
                 });
             }
         }
         else
         {
             array          = new ObjectReferenceKeyframe[1];
             array[0].time  = (float)time;
             array[0].value = prop.get_objectReferenceValue();
         }
         AnimationUtility.SetObjectReferenceCurve(clip, sourceBinding, array);
         EditorUtility.SetDirty(clip);
     }
 }