public SPAnim Clone()
        {
            var a = SPAnim.Create(_controller, _clipId);

            a._weight       = _weight;
            a._speed        = _speed;
            a._layer        = _layer;
            a._wrapMode     = _wrapMode;
            a._blendMode    = _blendMode;
            a._mask         = _mask;
            a._timeSupplier = _timeSupplier;
            return(a);
        }
        //***SEE NOTES IN CLASS DESCRIPTION

        //public void SetFrameClamp(int firstFrame, int lastFrame)
        //{
        //    if (_container != null) throw new System.InvalidOperationException("The frame clamp can only be set on a clip that has not been initialized.");

        //    _firstFrame = firstFrame;
        //    _lastFrame = lastFrame;
        //    if (_firstFrame < 0) _firstFrame = 0;
        //    if (_lastFrame < 0) _lastFrame = -1;
        //    else if (_lastFrame < _firstFrame) _lastFrame = _firstFrame + 1;
        //}

        //public void ResetFrameClamp()
        //{
        //    _firstFrame = 0;
        //    _lastFrame = -1;
        //}

        /// <summary>
        /// Creates a state for use in animating.
        /// </summary>
        /// <returns></returns>
        public ISPAnim CreateAnimatableState()
        {
            if (_controller == null)
            {
                throw new System.InvalidOperationException("This clip has not been initialized.");
            }
            if (_controller.ControllerMask != null && !_controller.ControllerMask.CanPlay(this))
            {
                return(null);
            }

            if (_clip is AnimationClip)
            {
                if (_state == null)
                {
                    //this.Dispose();
                    //throw new System.InvalidOperationException("This clip was unexpectedly destroyed, make sure the animation hasn't been destroyed, or another clip was added with the same name.");
                    return(null);
                }

                var a = SPAnim.Create(_controller, _id);
                a.Weight    = _weight;
                a.Speed     = _speed;
                a.Layer     = _layer;
                a.WrapMode  = _wrapMode;
                a.BlendMode = _blendMode;
                a.Mask      = _mask.Value;
                if (_timeSupplier.IsCustom)
                {
                    a.TimeSupplier = _timeSupplier.TimeSupplier as ITimeSupplier;
                }
                return(a);
            }
            else if (_clip is IScriptableAnimationClip)
            {
                var a = (_clip as IScriptableAnimationClip).CreateState() ?? SPAnim.Null;
                a.Speed = _speed;
                a.Layer = _layer;
                if (_timeSupplier.IsCustom)
                {
                    a.TimeSupplier = _timeSupplier.TimeSupplier as ITimeSupplier;
                }
                return(a);
            }

            return(null);
        }
        public SPAnim CreateAuxiliarySPAnim(AnimationClip clip, string auxId = null)
        {
            if (_animation == null)
            {
                throw new AnimationInvalidAccessException();
            }
            if (clip == null)
            {
                throw new System.ArgumentNullException("clip");
            }
            if (!_initialized)
            {
                this.Init();
            }

            var id = this.AddAuxiliaryClip(clip, auxId);

            return(SPAnim.Create(_animation, id));
        }
Esempio n. 4
0
        public ISPAnim CrossFadeAuxiliary(SPAnimClip clip, 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 (clip.Clip is AnimationClip)
            {
                if (this.ControllerMask != null && !this.ControllerMask.CanPlay(clip))
                {
                    return(null);
                }

                var id   = this.AddAuxiliaryClip(clip.Clip as AnimationClip, auxId);
                var anim = SPAnim.Create(_animation, id);
                anim.Weight       = clip.Weight;
                anim.Speed        = clip.Speed;
                anim.Layer        = clip.Layer;
                anim.WrapMode     = clip.WrapMode;
                anim.BlendMode    = clip.BlendMode;
                anim.TimeSupplier = (clip.TimeSupplier != SPTime.Normal) ? anim.TimeSupplier : null;
                anim.CrossFade(fadeLength, queueMode, playMode);
                return(anim);
            }
            else if (clip.Clip is IScriptableAnimationClip)
            {
                return(this.Play(clip.Clip as IScriptableAnimationClip, playMode));
            }
            else
            {
                return(SPAnim.Null);
            }
        }
        public SPAnim CrossFadeAuxiliary(AnimationClip clip, 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();
            }

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

            anim.CrossFade(fadeLength, queueMode, playMode);
            return(anim);
        }