summaryrefslogtreecommitdiff
path: root/Runtime/Animation/ScriptBindings/Animations.txt
diff options
context:
space:
mode:
Diffstat (limited to 'Runtime/Animation/ScriptBindings/Animations.txt')
-rw-r--r--Runtime/Animation/ScriptBindings/Animations.txt721
1 files changed, 721 insertions, 0 deletions
diff --git a/Runtime/Animation/ScriptBindings/Animations.txt b/Runtime/Animation/ScriptBindings/Animations.txt
new file mode 100644
index 0000000..ddeb57e
--- /dev/null
+++ b/Runtime/Animation/ScriptBindings/Animations.txt
@@ -0,0 +1,721 @@
+C++RAW
+
+#include "UnityPrefix.h"
+#include "Runtime/Animation/Animation.h"
+#include "Runtime/Animation/AnimationClip.h"
+#include "Runtime/Animation/AnimationManager.h"
+#include "Runtime/Animation/AnimationState.h"
+#include "Runtime/Animation/Animator.h"
+#include "Runtime/Animation/Motion.h"
+#include "Runtime/Graphics/Transform.h"
+#include "Runtime/Animation/AnimationCurveUtility.h"
+#include "Runtime/Mono/MonoBehaviour.h"
+#include "Runtime/Mono/MonoScript.h"
+#include "Runtime/Scripting/ScriptingManager.h"
+#include "Runtime/Scripting/ScriptingUtility.h"
+#include "Runtime/Scripting/ScriptingExportUtility.h"
+#include "Runtime/Scripting/Backend/ScriptingTypeRegistry.h"
+#include "Runtime/Scripting/ScriptingObjectWithIntPtrField.h"
+#include "Runtime/mecanim/human/human.h"
+#include "Runtime/mecanim/generic/crc32.h"
+#include "Runtime/Animation/AnimationUtility.h"
+#include "Runtime/Scripting/Scripting.h"
+
+using namespace Unity;
+
+CSRAW
+
+using System;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Collections;
+
+namespace UnityEngine
+{
+
+// Determines how time is treated outside of the keyframed range of an [[AnimationClip]] or [[AnimationCurve]].
+ENUM WrapMode
+ // When time reaches the end of the animation clip, the clip will automatically stop playing and time will be reset to beginning of the clip.
+ Once = 1,
+
+ // When time reaches the end of the animation clip, time will continue at the beginning.
+ Loop = 2,
+
+ // When time reaches the end of the animation clip, time will ping pong back between beginning and end.
+ PingPong = 4,
+
+ // Reads the default repeat mode set higher up.
+ Default = 0,
+
+ // Plays back the animation. When it reaches the end, it will keep playing the last frame and never stop playing.
+ ClampForever = 8,
+
+ //*undocumented*
+ Clamp = 1,
+END
+
+// AnimationEvent lets you call a script function similar to SendMessage as part of playing back an animation.
+CSRAW [StructLayout (LayoutKind.Sequential)]
+CLASS AnimationEvent
+ CSRAW [NotRenamed]
+ CSRAW internal IntPtr m_Ptr;
+ CSRAW int m_OwnsData;
+
+ C++RAW
+
+ struct AnimationEventMono
+ {
+ AnimationEvent* m_Ptr;
+ int m_OwnsData;
+ };
+
+ C++RAW
+ void VerifyReadOnly (ScriptingObjectWithIntPtrField<AnimationEvent>& self)
+ {
+#if ENABLE_MONO
+ if (ExtractMonoObjectData<AnimationEventMono> (self.object).m_OwnsData != 1)
+ Scripting::RaiseMonoException("AnimationEvents sent by an Animation Event callback may not modify the AnimationEvent data");
+#endif
+ }
+
+ C++RAW
+ inline AnimationEvent* GetAnimationEvent (ScriptingObjectWithIntPtrField<AnimationEvent>& self)
+ {
+ AnimationEvent* event = self.GetPtr();
+ if (!event)
+ Scripting::RaiseNullException("Animation Event is out of scope");
+
+ return event;
+ }
+
+ // Creates a new animation event
+ CSRAW public AnimationEvent ()
+ {
+ m_OwnsData = 1;
+ Create();
+ }
+
+ THREAD_SAFE
+ CUSTOM private void Create ()
+ {
+ self.SetPtr(new AnimationEvent());
+ }
+
+ CSRAW ~AnimationEvent ()
+ {
+ if (m_OwnsData != 0)
+ Destroy();
+ }
+
+ THREAD_SAFE
+ CUSTOM private void Destroy ()
+ {
+ delete self.GetPtr();
+ }
+
+ OBSOLETE warning Use stringParameter instead
+ CUSTOM_PROP string data { return scripting_string_new(GetAnimationEvent(self)->stringParameter); } { VerifyReadOnly(self); GetAnimationEvent(self)->stringParameter = value.AsUTF8(); }
+
+ // String parameter that is stored in the event and will be sent to the function.
+ CUSTOM_PROP string stringParameter { return scripting_string_new(GetAnimationEvent(self)->stringParameter); } { VerifyReadOnly(self); GetAnimationEvent(self)->stringParameter = value.AsUTF8(); }
+
+ // Float parameter that is stored in the event and will be sent to the function.
+ CUSTOM_PROP float floatParameter { return GetAnimationEvent(self)->floatParameter; } { VerifyReadOnly(self); GetAnimationEvent(self)->floatParameter = value; }
+
+ // int parameter that is stored in the event and will be sent to the function.
+ CUSTOM_PROP int intParameter { return GetAnimationEvent(self)->intParameter; } { VerifyReadOnly(self); GetAnimationEvent(self)->intParameter = value; }
+
+ // Object reference parameter that is stored in the event and will be sent to the function.
+ CUSTOM_PROP Object objectReferenceParameter { return Scripting::ScriptingWrapperFor(GetAnimationEvent(self)->objectReferenceParameter); } { VerifyReadOnly(self); GetAnimationEvent(self)->objectReferenceParameter = (Object*)value; }
+
+ // The name of the function that will be called.
+ CUSTOM_PROP string functionName { return scripting_string_new(GetAnimationEvent(self)->functionName); } { VerifyReadOnly(self);GetAnimationEvent(self)->functionName = value.AsUTF8(); }
+
+ // The time at which the event will be fired off.
+ CUSTOM_PROP float time { return GetAnimationEvent(self)->time; } { VerifyReadOnly(self); GetAnimationEvent(self)->time = value; }
+
+ // Function call options.
+ CUSTOM_PROP SendMessageOptions messageOptions { return GetAnimationEvent(self)->messageOptions; } { VerifyReadOnly(self); GetAnimationEvent(self)->messageOptions = value; }
+
+ // The animation state that fired this event (RO).
+ CUSTOM_PROP AnimationState animationState
+ {
+ return TrackedReferenceBaseToScriptingObject(GetAnimationEvent(self)->stateSender, animationState);
+ }
+
+END
+
+// Stores keyframe based animations.
+CLASS AnimationClip : Motion
+
+ // Creates a new animation clip
+ CSRAW public AnimationClip()
+ {
+ Internal_CreateAnimationClip(this);
+ }
+
+ CUSTOM private static void Internal_CreateAnimationClip ([Writable]AnimationClip self)
+ {
+ Object* animClip = NEW_OBJECT(AnimationClip);
+ animClip->Reset();
+ Scripting::ConnectScriptingWrapperToObject (self.GetScriptingObject(), animClip);
+ animClip->AwakeFromLoad(kInstantiateOrCreateFromCodeAwakeFromLoad);
+ }
+
+ // Animation length in seconds (RO)
+ CUSTOM_PROP float length { return self->GetRange ().second; }
+
+
+ CUSTOM_PROP internal float startTime { return self->GetRange ().first; }
+ CUSTOM_PROP internal float stopTime { return self->GetRange ().second; }
+
+
+ // Frame rate at which keyframes are sampled (RO)
+ AUTO_PROP float frameRate GetSampleRate SetSampleRate
+
+
+ // Assigns the curve to animate a specific property.
+ CUSTOM void SetCurve (string relativePath, Type type, string propertyName, AnimationCurve curve)
+ {
+#if ENABLE_MONO
+ Scripting::RaiseIfNull(type);
+ MonoClass* klass = GetScriptingTypeRegistry().GetType(type);
+ MonoScript* script = NULL;
+ int classID = Scripting::GetClassIDFromScriptingClass(klass);
+ if (classID == ClassID(MonoBehaviour))
+ {
+ script = GetMonoScriptManager().FindRuntimeScript(klass);
+ if (script == NULL)
+ {
+ ErrorString("The script class couldn't be found");
+ return;
+ }
+ }
+
+ self->SetCurve(relativePath, classID, script, propertyName, curve.GetPtr(), true);
+#endif
+ }
+
+ //*undocumented*
+ AUTO void EnsureQuaternionContinuity();
+
+ // Clears all curves from the clip.
+ AUTO void ClearCurves();
+
+ // Sets the default wrap mode used in the animation state.
+ AUTO_PROP WrapMode wrapMode GetWrapMode SetWrapMode
+
+ // Adds an animation event to the clip.
+ CUSTOM void AddEvent (AnimationEvent evt)
+ {
+ Scripting::RaiseIfNull(evt.GetPtr());
+ self->AddRuntimeEvent(*GetAnimationEvent(evt));
+ }
+
+ // AABB of this Animation Clip in local space of Animation component that it is attached too.
+ AUTO_PROP Bounds localBounds GetBounds SetBounds
+
+END
+
+// A single keyframe that can be injected into an animation curve.
+STRUCT Keyframe
+ CSRAW float m_Time;
+ CSRAW float m_Value;
+ CSRAW float m_InTangent;
+ CSRAW float m_OutTangent;
+
+ CSRAW
+ #if UNITY_EDITOR
+ int m_TangentMode;
+ #endif
+
+ // Create a keyframe.
+ CSRAW public Keyframe (float time, float value)
+ {
+ m_Time = time;
+ m_Value = value;
+ m_InTangent = 0;
+ m_OutTangent = 0;
+ #if UNITY_EDITOR
+ m_TangentMode = 0;
+ #endif
+ }
+
+ // Create a keyframe.
+ CSRAW public Keyframe (float time, float value, float inTangent, float outTangent)
+ {
+ m_Time = time;
+ m_Value = value;
+ m_InTangent = inTangent;
+ m_OutTangent = outTangent;
+ #if UNITY_EDITOR
+ m_TangentMode = 0;
+ #endif
+ }
+
+ // The time of the keyframe.
+ CSRAW public float time { get { return m_Time; } set { m_Time = value; } }
+
+ // The value of the curve at keyframe.
+ CSRAW public float value { get { return m_Value; } set { m_Value = value; } }
+
+ // Describes the tangent when approaching this point from the previous point in the curve.
+ CSRAW public float inTangent { get { return m_InTangent; } set { m_InTangent = value; } }
+
+ // Describes the tangent when leaving this point towards the next point in the curve.
+ CSRAW public float outTangent { get { return m_OutTangent; } set { m_OutTangent = value; } }
+
+ // The tangent mode of the keyframe.
+ // This is used only in the editor and will always return 0 in the player.
+ CSRAW public int tangentMode
+ {
+ get {
+ #if UNITY_EDITOR
+ return m_TangentMode;
+ #else
+ return 0;
+ #endif
+ }
+ set {
+ #if UNITY_EDITOR
+ m_TangentMode = value;
+ #endif
+ }
+ }
+
+END
+
+CSRAW #pragma warning disable 414
+
+// An animation curve. Lets you add keyframes and evaluate the curve at a given time.
+C++RAW
+ static void CleanupAnimationCurve(void* animationCurve){ delete ((AnimationCurve*)animationCurve); };
+// A collection of curves form an [[AnimationClip]].
+CSRAW [StructLayout (LayoutKind.Sequential)]
+THREAD_SAFE
+CLASS AnimationCurve
+ CSRAW
+ internal IntPtr m_Ptr;
+
+ THREAD_SAFE
+ CUSTOM private void Cleanup () { CleanupAnimationCurve(self.GetPtr()); }
+
+ CSRAW
+ ~AnimationCurve()
+ {
+ Cleanup ();
+ }
+
+ // Evaluate the curve at /time/.
+ CUSTOM float Evaluate (float time)
+ {
+ return self->Evaluate(time);
+ }
+
+ // All keys defined in the animation curve.
+ CSRAW public Keyframe[] keys { get { return GetKeys(); } set { SetKeys(value); } }
+
+ // Add a new key to the curve.
+ CUSTOM int AddKey (float time, float value) { return AddKeySmoothTangents(*self, time, value); }
+
+ // Add a new key to the curve.
+ CSRAW public int AddKey (Keyframe key) { return AddKey_Internal(key); }
+
+ CUSTOM private int AddKey_Internal (Keyframe key) { return self->AddKey (key); }
+
+ // Removes the keyframe at /index/ and inserts key.
+ CUSTOM int MoveKey (int index, Keyframe key)
+ {
+ if (index >= 0 && index < self->GetKeyCount())
+ return MoveCurveKey(*self, index, key);
+ else {
+ Scripting::RaiseOutOfRangeException("");
+ return 0;
+ }
+ }
+
+ // Removes a key
+ CUSTOM void RemoveKey (int index)
+ {
+ if (index >= 0 && index < self->GetKeyCount())
+ self->RemoveKeys(self->begin() + index, self->begin() + index + 1);
+ else
+ Scripting::RaiseOutOfRangeException("");
+ }
+
+ // Retrieves the key at index (RO)
+ CSRAW public Keyframe this [int index]
+ {
+ get { return GetKey_Internal(index); }
+ }
+
+ // The number of keys in the curve (RO)
+ CUSTOM_PROP int length { return self->GetKeyCount(); }
+
+ // Replace all keyframes with the /keys/ array.
+ CUSTOM private void SetKeys (Keyframe[] keys)
+ {
+ KeyframeTpl<float>* first = Scripting::GetScriptingArrayStart<KeyframeTpl<float> > (keys);
+ self->Assign(first, first + GetScriptingArraySize(keys));
+ self->Sort();
+ }
+
+ CUSTOM private Keyframe GetKey_Internal (int index)
+ {
+ if (index >= 0 && index < self->GetKeyCount())
+ {
+ return self->GetKey(index);
+ }
+ else
+ {
+ Scripting::RaiseOutOfRangeException("");
+ return KeyframeTpl<float>();
+ }
+ }
+
+ CUSTOM private Keyframe[] GetKeys ()
+ {
+ if (self->GetKeyCount() <= 0)
+ return CreateEmptyStructArray(MONO_COMMON.keyframe);
+ return CreateScriptingArray(&self->GetKey(0), self->GetKeyCount(), MONO_COMMON.keyframe);
+ }
+
+ // Smooth the in and out tangents of the keyframe at /index/.
+ CUSTOM void SmoothTangents (int index, float weight)
+ {
+ if (index >= 0 && index < self->GetKeyCount())
+ RecalculateSplineSlope(*self, index, weight);
+ else
+ Scripting::RaiseOutOfRangeException("");
+ }
+
+ // A straight Line starting at /timeStart/, /valueStart/ and ending at /timeEnd/, /valueEnd/
+ CSRAW public static AnimationCurve Linear (float timeStart, float valueStart, float timeEnd, float valueEnd)
+ {
+ float tangent = (valueEnd - valueStart) / (timeEnd - timeStart);
+ Keyframe[] keys = { new Keyframe(timeStart, valueStart, 0.0F, tangent), new Keyframe(timeEnd, valueEnd, tangent, 0.0F) };
+ return new AnimationCurve(keys);
+ }
+
+ // An ease-in and out curve starting at /timeStart/, /valueStart/ and ending at /timeEnd/, /valueEnd/.
+ CSRAW public static AnimationCurve EaseInOut (float timeStart, float valueStart, float timeEnd, float valueEnd)
+ {
+ Keyframe[] keys = { new Keyframe(timeStart, valueStart, 0.0F, 0.0F), new Keyframe(timeEnd, valueEnd, 0.0F, 0.0F) };
+ return new AnimationCurve(keys);
+ }
+
+ // The behaviour of the animation before the first keyframe
+ CUSTOM_PROP WrapMode preWrapMode { return self->GetPreInfinity(); } { self->SetPreInfinity(value); }
+ // The behaviour of the animation after the last keyframe
+ CUSTOM_PROP WrapMode postWrapMode { return self->GetPostInfinity(); } { self->SetPostInfinity(value); }
+
+ // Creates an animation curve from arbitrary number of keyframes.
+ CSRAW public AnimationCurve (params Keyframe[] keys) { Init(keys); }
+
+ CONDITIONAL UNITY_FLASH || UNITY_WINRT
+ // *undocumented*
+ CSRAW public AnimationCurve(IntPtr nativeptr) { m_Ptr = nativeptr; }
+
+ // Creates an empty animation curve
+ CSRAW public AnimationCurve () { Init(null); }
+
+ THREAD_SAFE
+ CUSTOM private void Init (Keyframe[] keys)
+ {
+ self.SetPtr(new AnimationCurve(), CleanupAnimationCurve);
+ #if UNITY_WINRT
+ if (keys != SCRIPTING_NULL) AnimationCurve_CUSTOM_SetKeys(self.object, keys);
+ #else
+ if (keys != SCRIPTING_NULL) AnimationCurve_CUSTOM_SetKeys(self, keys);
+ #endif
+ }
+
+END
+
+CSRAW #pragma warning restore 414
+
+
+// Used by Animation.Play function.
+ENUM PlayMode
+ // Will stop all animations that were started in the same layer. This is the default when playing animations.
+ StopSameLayer = 0,
+ // Will stop all animations that were started with this component before playing
+ StopAll = 4,
+END
+
+// Used by Animation.Play function.
+ENUM QueueMode
+ // Will start playing after all other animations have stopped playing
+ CompleteOthers = 0,
+
+ // Starts playing immediately. This can be used if you just want to quickly create a duplicate animation.
+ PlayNow = 2
+END
+
+// Used by Animation.Play function.
+ENUM AnimationBlendMode
+ // Animations will be blended
+ Blend = 0,
+ // Animations will be added
+ Additive = 1
+END
+
+
+//*undocumented* - deprecated
+CSRAW public enum AnimationPlayMode { Stop = 0, Queue = 1, Mix = 2 }
+
+// This enum controlls culling of Animation component.
+ENUM AnimationCullingType
+ // Animation culling is disabled - object is animated even when offscreen.
+ AlwaysAnimate = 0,
+
+ // Animation is disabled when renderers are not visible.
+ BasedOnRenderers = 1,
+
+ // Animation is disabled when Animation::ref::localBounds are not visible.
+ BasedOnClipBounds = 2,
+
+ // Animation is disabled when Animation::ref::localBounds are not visible.
+ BasedOnUserBounds = 3
+END
+
+// The animation component is used to play back animations.
+CLASS Animation : Behaviour, IEnumerable
+ // The default animation.
+ AUTO_PTR_PROP AnimationClip clip GetClip SetClip
+
+ // Should the default animation clip (Animation.clip) automatically start playing on startup.
+ AUTO_PROP bool playAutomatically GetPlayAutomatically SetPlayAutomatically
+
+ // How should time beyond the playback range of the clip be treated?
+ AUTO_PROP WrapMode wrapMode GetWrapMode SetWrapMode
+
+ // Stops all playing animations that were started with this Animation.
+ AUTO void Stop ();
+
+ // Stops an animation named /name/.
+ CSRAW public void Stop (string name) { Internal_StopByName(name); }
+ CUSTOM private void Internal_StopByName (string name) { return self->Stop (name); }
+
+ // Rewinds the animation named /name/.
+ CSRAW public void Rewind (string name) { Internal_RewindByName(name); }
+ CUSTOM private void Internal_RewindByName (string name) { self->Rewind(name); }
+
+ // Rewinds all animations
+ AUTO void Rewind ();
+
+ // Samples animations at the current state.
+ AUTO void Sample ();
+
+ // Are we playing any animations?
+ AUTO_PROP bool isPlaying IsPlaying
+
+ // Is the animation named /name/ playing?
+ CUSTOM bool IsPlaying (string name) { return self->IsPlaying (name); }
+
+
+ // Returns the animation state named /name/.
+ CSRAW public AnimationState this [string name]
+ {
+ get { return GetState(name); }
+ }
+
+ /// *listonly*
+ CSRAW public bool Play (PlayMode mode = PlayMode.StopSameLayer) { return PlayDefaultAnimation (mode); }
+
+ // Plays animation without any blending.
+ CUSTOM bool Play (string animation, PlayMode mode = PlayMode.StopSameLayer) { return self->Play(animation, mode); }
+
+ // Fades the animation with name /animation/ in over a period of /time/ seconds and fades other animations out.
+ CUSTOM void CrossFade (string animation, float fadeLength = 0.3F, PlayMode mode = PlayMode.StopSameLayer) { self->CrossFade(animation, fadeLength, mode); }
+
+ // Blends the animation named /animation/ towards /targetWeight/ over the next /time/ seconds.
+ CUSTOM void Blend (string animation, float targetWeight = 1.0F, float fadeLength = 0.3F) { self->Blend(animation, targetWeight, fadeLength); }
+
+
+ // Cross fades an animation after previous animations has finished playing.
+ CUSTOM AnimationState CrossFadeQueued (string animation, float fadeLength = 0.3F, QueueMode queue = QueueMode.CompleteOthers, PlayMode mode = PlayMode.StopSameLayer)
+ {
+ AnimationState* as = self->QueueCrossFade(animation, fadeLength, queue, mode);
+ return TrackedReferenceBaseToScriptingObject(as,animationState);
+ }
+
+
+ // Plays an animation after previous animations has finished playing.
+ CUSTOM AnimationState PlayQueued (string animation, QueueMode queue = QueueMode.CompleteOthers, PlayMode mode = PlayMode.StopSameLayer)
+ {
+ AnimationState* as = self->QueuePlay(animation, queue, mode);
+ return TrackedReferenceBaseToScriptingObject(as, animationState);
+ }
+
+
+ // Adds a /clip/ to the animation with name /newName/.
+ CSRAW public void AddClip (AnimationClip clip, string newName) { AddClip (clip, newName, Int32.MinValue, Int32.MaxValue); }
+
+ // Adds /clip/ to the only play between /firstFrame/ and /lastFrame/. The new clip will also be added to the animation with name /newName/.
+ CUSTOM void AddClip (AnimationClip clip, string newName, int firstFrame, int lastFrame, bool addLoopFrame = false) { self->AddClip(*clip, newName, firstFrame, lastFrame, addLoopFrame); }
+
+ // Remove clip from the animation list.
+ CUSTOM void RemoveClip (AnimationClip clip) { self->RemoveClip (*clip); }
+
+ // Remove clip from the animation list.
+ CSRAW public void RemoveClip (string clipName) { RemoveClip2(clipName); }
+
+ // Get the number of clips currently assigned to this animation
+ CUSTOM int GetClipCount () { return self->GetClipCount(); }
+
+ CUSTOM private void RemoveClip2 (string clipName) { self->RemoveClip (clipName); }
+
+ CUSTOM private bool PlayDefaultAnimation (PlayMode mode) { return self->Play(mode); }
+
+ //*undocumented* deprecated
+ OBSOLETE warning use PlayMode instead of AnimationPlayMode.
+ CSRAW public bool Play (AnimationPlayMode mode) { return PlayDefaultAnimation((PlayMode)mode); }
+ //*undocumented* deprecated
+ OBSOLETE warning use PlayMode instead of AnimationPlayMode.
+ CSRAW public bool Play (string animation, AnimationPlayMode mode) { return Play(animation, (PlayMode)mode); }
+
+
+ // Synchronizes playback speed of all animations in the /layer/.
+ AUTO void SyncLayer(int layer);
+
+ //*undocumented* Documented separately
+ CSRAW public IEnumerator GetEnumerator ()
+ {
+ return new Animation.Enumerator (this);
+ }
+ //*undocumented*
+ CLASS private Enumerator : IEnumerator
+ CSRAW
+ private Animation m_Outer;
+ private int m_CurrentIndex = -1;
+
+ internal Enumerator (Animation outer) { m_Outer = outer; }
+ //*undocumented*
+ public object Current
+ {
+ get { return m_Outer.GetStateAtIndex (m_CurrentIndex); }
+ }
+
+ //*undocumented*
+ public bool MoveNext ()
+ {
+ int childCount = m_Outer.GetStateCount();
+ m_CurrentIndex++;
+ return m_CurrentIndex < childCount;
+ }
+
+ //*undocumented*
+ public void Reset () { m_CurrentIndex = -1; }
+ END
+
+ CUSTOM internal AnimationState GetState(string name)
+ {
+ AnimationState* state = self->GetState(name);
+ return TrackedReferenceBaseToScriptingObject(state, animationState);
+ }
+
+ CUSTOM internal AnimationState GetStateAtIndex (int index)
+ {
+
+ Animation& selfRef = *self;
+ if (index >= 0 || index < selfRef.GetAnimationStateCount())
+ {
+ return TrackedReferenceBaseToScriptingObject(&selfRef.GetAnimationStateAtIndex (index), animationState);
+ }
+ Scripting::RaiseMonoException("Animation State out of bounds!");
+ return SCRIPTING_NULL;
+ }
+
+ CUSTOM internal int GetStateCount () { return self->GetAnimationStateCount(); }
+
+ OBSOLETE planned Returns the animation clip named /name/.
+ CSRAW public AnimationClip GetClip (string name) {
+ AnimationState state = GetState(name);
+ if (state)
+ return state.clip;
+ else
+ return null;
+ }
+
+
+ // When turned on, animations will be executed in the physics loop. This is only useful in conjunction with kinematic rigidbodies.
+ AUTO_PROP bool animatePhysics GetAnimatePhysics SetAnimatePhysics
+
+ // When turned on, Unity might stop animating if it thinks that the results of the animation won't be visible to the user.
+ OBSOLETE warning Use cullingType instead
+ CUSTOM_PROP bool animateOnlyIfVisible
+ {
+ Animation::CullingType type = self->GetCullingType();
+ AssertMsg(type == Animation::kCulling_AlwaysAnimate || type == Animation::kCulling_BasedOnRenderers,
+ "Culling type %d cannot be converted to animateOnlyIfVisible. animateOnlyIfVisible is obsolete, please use cullingType instead.", type);
+ return type == Animation::kCulling_BasedOnRenderers;
+ }
+ {
+ self->SetCullingType(value ? Animation::kCulling_BasedOnRenderers : Animation::kCulling_AlwaysAnimate);
+ }
+
+ // Controls culling of this Animation component.
+ AUTO_PROP AnimationCullingType cullingType GetCullingType SetCullingType
+
+ // AABB of this Animation animation component in local space.
+ AUTO_PROP Bounds localBounds GetLocalAABB SetLocalAABB
+
+END
+
+// The AnimationState gives full control over animation blending.
+CLASS AnimationState : TrackedReference
+
+ // Enables / disables the animation.
+
+ AUTO_PROP bool enabled GetEnabled SetEnabled
+
+ // The weight of animation
+ AUTO_PROP float weight GetWeight SetWeight
+
+ // Wrapping mode of the animation.
+ AUTO_PROP WrapMode wrapMode GetWrapMode SetWrapMode
+
+ // The current time of the animation
+ AUTO_PROP float time GetTime SetTime
+
+ // The normalized time of the animation.
+ AUTO_PROP float normalizedTime GetNormalizedTime SetNormalizedTime
+
+ // The playback speed of the animation. 1 is normal playback speed.
+ AUTO_PROP float speed GetSpeed SetSpeed
+
+ // The normalized playback speed.
+ AUTO_PROP float normalizedSpeed GetNormalizedSpeed SetNormalizedSpeed
+
+ // The length of the animation clip in seconds.
+ AUTO_PROP float length GetLength
+
+ // The layer of the animation. When calculating the final blend weights, animations in higher layers will get their weights
+ AUTO_PROP int layer GetLayer SetLayer
+
+ // The clip that is being played by this animation state.
+ AUTO_PTR_PROP AnimationClip clip GetClip
+
+ // Adds a transform which should be animated. This allows you to reduce the number of animations you have to create.
+ CUSTOM void AddMixingTransform (Transform mix, bool recursive = true) { self->AddMixingTransform(*mix, recursive); }
+
+ // Removes a transform which should be animated.
+ CUSTOM void RemoveMixingTransform (Transform mix) { self->RemoveMixingTransform(*mix); }
+
+ // The name of the animation
+ CUSTOM_PROP string name { return scripting_string_new(self->GetName()); } { self->SetName(value.AsUTF8()); }
+
+ // Which blend mode should be used?
+ AUTO_PROP AnimationBlendMode blendMode GetBlendMode SetBlendMode
+END
+
+CLASS GameObject : Object
+
+ // Samples an animation at a given time for any animated properties.
+ CUSTOM void SampleAnimation (AnimationClip animation, float time) { SampleAnimation (*self, *animation, time, animation->GetWrapMode()); }
+
+END
+
+
+CSRAW }