private object PlayClip(Animation controller, UnityEngine.Object clip, PlayAnimInfo info) { if (clip is AnimationClip) { var animController = controller as Animation; var id = "aux*" + clip.GetInstanceID(); var a = animController[id]; if (a == null || a.clip != clip) { animController.AddClip(clip as AnimationClip, id); } AnimationState anim; if (info.CrossFadeDur > 0f) { anim = animController.CrossFadeQueued(id, info.CrossFadeDur, info.QueueMode, info.PlayMode); } else { anim = animController.PlayQueued(id, info.QueueMode, info.PlayMode); } if (info.ApplyCustomSettings) { info.Settings.Apply(anim); } return(anim); } return(null); }
private object TryPlay(object controller, PlayAnimInfo info) { if (controller is SPLegacyAnimController) { switch (info.Mode) { case i_PlayAnimation.PlayByMode.PlayAnim: return(PlayClip(controller as SPLegacyAnimController, info.Clip, info)); case i_PlayAnimation.PlayByMode.PlayAnimByID: var anim = (controller as SPLegacyAnimController).GetAnim(info.Id); if (anim != null) { if (info.CrossFadeDur > 0f) { anim.CrossFade(info.CrossFadeDur, info.QueueMode, info.PlayMode); } else { anim.Play(info.QueueMode, info.PlayMode); } if (info.ApplyCustomSettings) { info.Settings.Apply(anim); } return(anim); } return(null); case i_PlayAnimation.PlayByMode.PlayAnimFromResource: return(this.PlayClip(controller as SPLegacyAnimController, Resources.Load <UnityEngine.Object>(info.Id), info)); } } else if (controller is Animation) { switch (info.Mode) { case i_PlayAnimation.PlayByMode.PlayAnim: return(PlayClip(controller as Animation, info.Clip, info)); case i_PlayAnimation.PlayByMode.PlayAnimByID: var comp = controller as Animation; if (comp[info.Id] != null) { AnimationState anim; if (info.CrossFadeDur > 0f) { anim = comp.CrossFadeQueued(info.Id, info.CrossFadeDur, info.QueueMode, info.PlayMode); } else { anim = comp.PlayQueued(info.Id, info.QueueMode, info.PlayMode); } if (info.ApplyCustomSettings) { info.Settings.Apply(anim); } return(anim); } return(null); case i_PlayAnimation.PlayByMode.PlayAnimFromResource: return(this.PlayClip(controller as Animation, Resources.Load <UnityEngine.Object>(info.Id), info)); } } else if (controller is ISPAnimationSource) { if (info.Mode == i_PlayAnimation.PlayByMode.PlayAnimByID) { var anim = (controller as ISPAnimationSource).GetAnim(info.Id); if (anim != null) { if (info.CrossFadeDur > 0f) { anim.CrossFade(info.CrossFadeDur, info.QueueMode, info.PlayMode); } else { anim.Play(info.QueueMode, info.PlayMode); } if (info.ApplyCustomSettings) { info.Settings.Apply(anim); } return(anim); } return(null); } } else if (controller is ISPAnimator) { if (string.IsNullOrEmpty(info.Id)) { return(null); } return(com.spacepuppy.Dynamic.DynamicUtil.InvokeMethod(controller, info.Id)); } return(null); }
private object PlayClip(SPLegacyAnimController controller, UnityEngine.Object clip, PlayAnimInfo info) { if (clip is AnimationClip) { var anim = controller.CreateAuxiliarySPAnim(clip as AnimationClip); if (info.ApplyCustomSettings) { info.Settings.Apply(anim); } if (info.CrossFadeDur > 0f) { anim.CrossFade(info.CrossFadeDur, info.QueueMode, info.PlayMode); } else { anim.Play(info.QueueMode, info.PlayMode); } return(anim); } else if (clip is IScriptableAnimationClip) { return(controller.Play(clip as IScriptableAnimationClip)); } return(null); }
private object PlayClip(SPLegacyAnimController controller, UnityEngine.Object clip, PlayAnimInfo info) { if (clip is AnimationClip) { if (info.CrossFadeDur > 0f) { return(controller.CrossFadeAuxiliary(clip as AnimationClip, (info.SettingsMask != 0) ? AnimSettings.Intersect(AnimSettings.Default, info.Settings, info.SettingsMask) : AnimSettings.Default, info.CrossFadeDur, info.QueueMode, info.PlayMode)); } else { return(controller.PlayAuxiliary(clip as AnimationClip, (info.SettingsMask != 0) ? AnimSettings.Intersect(AnimSettings.Default, info.Settings, info.SettingsMask) : AnimSettings.Default, info.QueueMode, info.PlayMode)); } } else if (clip is IScriptableAnimationClip) { return(controller.Play(clip as IScriptableAnimationClip)); } return(null); }