Esempio n. 1
0
        public string CrossFadeAuxiliaryDirectly(AnimationClip clip, AnimSettings settings, float fadeLength, PlayMode playMode = PlayMode.StopSameLayer, string auxId = null)
        {
            if (_animation == null)
            {
                throw new AnimationInvalidAccessException();
            }
            if (clip == null)
            {
                throw new System.ArgumentNullException("clip");
            }
            if (!_initialized)
            {
                this.Init();
            }
            if (this.ControllerMask != null && !this.ControllerMask.CanPlay(clip, settings))
            {
                return(null);
            }

            var id   = this.AddAuxiliaryClip(clip, auxId);
            var anim = _animation[id];

            settings.Apply(anim);
            this.CrossFadeInternal(id, fadeLength, playMode, anim.layer);
            return(id);
        }
 public static AnimSettings Intersect(AnimSettings settings, AnimSettings with, AnimSettingsMask mask)
 {
     if ((mask & AnimSettingsMask.Weight) != 0)
     {
         settings.weight = with.weight;
     }
     if ((mask & AnimSettingsMask.Speed) != 0)
     {
         settings.speed = with.speed;
     }
     if ((mask & AnimSettingsMask.Layer) != 0)
     {
         settings.layer = with.layer;
     }
     if ((mask & AnimSettingsMask.WrapMode) != 0)
     {
         settings.wrapMode = with.wrapMode;
     }
     if ((mask & AnimSettingsMask.BlendMode) != 0)
     {
         settings.blendMode = with.blendMode;
     }
     if ((mask & AnimSettingsMask.TimeSupplier) != 0)
     {
         settings.timeSupplier = with.timeSupplier;
     }
     return(settings);
 }
Esempio n. 3
0
        public SPAnim CrossFadeAuxiliary(AnimationClip clip, AnimSettings settings, float fadeLength, QueueMode queueMode = QueueMode.PlayNow, PlayMode playMode = PlayMode.StopSameLayer, string auxId = null)
        {
            if (_animation == null)
            {
                throw new AnimationInvalidAccessException();
            }
            if (clip == null)
            {
                throw new System.ArgumentNullException("clip");
            }
            if (!_initialized)
            {
                this.Init();
            }
            if (this.ControllerMask != null && !this.ControllerMask.CanPlay(clip, settings))
            {
                return(null);
            }

            var id   = this.AddAuxiliaryClip(clip, auxId);
            var anim = SPAnim.Create(_animation, id);

            settings.Apply(anim);
            anim.CrossFade(fadeLength, queueMode, playMode);
            return(anim);
        }
        private object PlayClip(SPAnimationController controller, UnityEngine.Object clip)
        {
            if (controller == null || !controller.isActiveAndEnabled || clip == null)
            {
                return(null);
            }

            if (clip is AnimationClip)
            {
                if (_crossFadeDur > 0f)
                {
                    return(controller.CrossFadeAuxiliary(clip as AnimationClip,
                                                         (_settingsMask != 0) ? AnimSettings.Intersect(AnimSettings.Default, _settings, _settingsMask) : AnimSettings.Default,
                                                         _crossFadeDur, _queueMode, _playMode));
                }
                else
                {
                    return(controller.PlayAuxiliary(clip as AnimationClip,
                                                    (_settingsMask != 0) ? AnimSettings.Intersect(AnimSettings.Default, _settings, _settingsMask) : AnimSettings.Default,
                                                    _queueMode, _playMode));
                }
            }
            else if (clip is IScriptableAnimationClip)
            {
                return(controller.Play(clip as IScriptableAnimationClip));
            }

            return(null);
        }
Esempio n. 5
0
 public bool CanPlay(AnimationClip clip, AnimSettings settings)
 {
     return(TestLayer(settings.layer));
 }