C++RAW #include "UnityPrefix.h" #include "Runtime/Mono/MonoBehaviour.h" #include "Runtime/Mono/MonoScript.h" #include "Runtime/Graphics/Transform.h" #include "Runtime/Animation/AnimatorOverrideController.h" #include "Runtime/Animation/AnimationClip.h" #include "Runtime/Animation/RuntimeAnimatorController.h" #include "Runtime/Scripting/ScriptingExportUtility.h" using namespace Unity; CSRAW using System; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Collections; namespace UnityEngine { CSRAW [System.Serializable] CSRAW [StructLayout (LayoutKind.Sequential)] CLASS AnimationClipPair public AnimationClip originalClip; public AnimationClip overrideClip; END // AnimatorOverrideController definition CLASS AnimatorOverrideController : RuntimeAnimatorController // Creates a new animation clip CSRAW public AnimatorOverrideController() { Internal_CreateAnimationSet(this); } CUSTOM private static void Internal_CreateAnimationSet ([Writable]AnimatorOverrideController self) { Object* animationSet = NEW_OBJECT(AnimatorOverrideController); animationSet->Reset(); Scripting::ConnectScriptingWrapperToObject (self.GetScriptingObject(), animationSet); animationSet->AwakeFromLoad(kInstantiateOrCreateFromCodeAwakeFromLoad); } // The runtime representation of AnimatorController that controls the Animator CUSTOM_PROP RuntimeAnimatorController runtimeAnimatorController {return Scripting::ScriptingWrapperFor(self->GetAnimatorController());} { self->SetAnimatorController(value);} // Returns the animation clip named /name/. CSRAW public AnimationClip this [string name] { get { return Internal_GetClipByName(name, true); } set { Internal_SetClipByName(name, value); } } CUSTOM private AnimationClip Internal_GetClipByName(string name, bool returnEffectiveClip) { return Scripting::ScriptingWrapperFor(self->GetClip( name, returnEffectiveClip )); } CUSTOM private void Internal_SetClipByName(string name, AnimationClip clip) { return self->SetClip( name, clip ); } // Returns the animation clip named /name/. CSRAW public AnimationClip this [AnimationClip clip] { get { return Internal_GetClip(clip, true); } set { Internal_SetClip(clip, value); } } CUSTOM private AnimationClip Internal_GetClip(AnimationClip originalClip, bool returnEffectiveClip) { return Scripting::ScriptingWrapperFor(self->GetClip( originalClip, returnEffectiveClip)); } CUSTOM private void Internal_SetClip(AnimationClip originalClip, AnimationClip overrideClip) { return self->SetClip( originalClip, overrideClip ); } CONDITIONAL UNITY_EDITOR CSRAW internal delegate void OnOverrideControllerDirtyCallback(); CONDITIONAL UNITY_EDITOR CSRAW internal OnOverrideControllerDirtyCallback OnOverrideControllerDirty; CONDITIONAL UNITY_EDITOR CSRAW internal static void OnInvalidateOverrideController(AnimatorOverrideController controller) { if(controller.OnOverrideControllerDirty != null) controller.OnOverrideControllerDirty(); } CSRAW public AnimationClipPair[] clips { get { AnimationClip[] originalAnimationClips = GetOriginalClips(); AnimationClipPair[] clipPair = new AnimationClipPair[originalAnimationClips.Length]; for(int i=0;iGetOriginalClips(), ClassID(AnimationClip)); } CUSTOM private AnimationClip[] GetOverrideClips() { return CreateScriptingArrayFromUnityObjects(self->GetOverrideClips(), ClassID(AnimationClip)); } CONDITIONAL UNITY_EDITOR CUSTOM public void PerformOverrideClipListCleanup() { return self->PerformOverrideClipListCleanup(); } END CSRAW }