/// <summary>Initializes the struct with default values.</summary> public static AnimationClipState Default() { AnimationClipState value = new AnimationClipState(); value.layer = 0; value.time = 0f; value.speed = 1f; value.weight = 1f; value.wrapMode = AnimWrapMode.Loop; value.stopped = false; return(value); }
/// <summary> /// Allows the caller to play an animation clip during edit mode. This form of animation playback is limited as /// you have no control over clip properties, and features like blending, cross fade or animation events are not /// supported. /// /// Caller will need to manually call <see cref="UpdateFloatProperties"/> in order to apply evaluated animation data /// to relevant float properties (if required). /// /// Caller will also need to manually call <see cref="RefreshClipMappings"/> whenever the curves internal to the /// animation clip change. This should be called before the call to <see cref="UpdateFloatProperties"/>. /// </summary> /// <param name="clip">Animation clip to play.</param> /// <param name="startTime">Time to start playing at, in seconds.</param> /// <param name="freeze">If true, only the frame at the specified time will be shown, without advancing the /// animation.</param> internal void EditorPlay(RRef <AnimationClip> clip, float startTime, bool freeze = false) { bool inPreviewMode = Internal__togglePreviewMode(mCachedPtr, true); if (!inPreviewMode) { return; } if (freeze) { Sample(clip, startTime); } else { AnimationClipState clipState = AnimationClipState.Default(); clipState.time = startTime; SetState(clip, clipState); } Internal__refreshClipMappings(mCachedPtr); }
private static extern void Internal_setState(IntPtr thisPtr, RRef <AnimationClip> clip, ref AnimationClipState state);
private static extern bool Internal_getState(IntPtr thisPtr, RRef <AnimationClip> clip, out AnimationClipState state);
/// <summary> /// Changes the state of a playing animation clip. If animation clip is not currently playing the playback is started for /// the clip. /// </summary> /// <param name="clip">Clip to change the state for.</param> /// <param name="state">New state of the animation (e.g. changing the time for seeking).</param> public void SetState(RRef <AnimationClip> clip, AnimationClipState state) { Internal_setState(mCachedPtr, clip, ref state); }
/// <summary>Retrieves detailed information about a currently playing animation clip.</summary> /// <param name="clip">Clip to retrieve the information for.</param> /// <param name="state"> /// Animation clip state containing the requested information. Only valid if the method returns true. /// </param> /// <returns>True if the state was found (animation clip is playing), false otherwise.</returns> public bool GetState(RRef <AnimationClip> clip, out AnimationClipState state) { return(Internal_getState(mCachedPtr, clip, out state)); }