public override void Initialise(GPUAnimatorRenderer renderer) { base.Initialise(renderer); _skinnedMeshRenderer = GameObjectUtils.GetComponent <SkinnedMeshRenderer>(this.gameObject, true); _animationStates = new GPUAnimationState[0]; _primaryAnimationState = null; _secondaryAnimationState = null; GPUAnimations animations = _renderer._animations.GetAnimations(); _animationStates = new GPUAnimationState[animations._animations.Length]; for (int i = 0; i < animations._animations.Length; i++) { _animationStates[i] = new GPUAnimationState(this, animations._animations[i]); } _activeAnimationStates = new List <GPUAnimationState>(animations._animations.Length + 1); _primaryAnimationState = GetAnimationState(_defaultAnimation); _secondaryAnimationState = null; if (_primaryAnimationState != null && _playAutomatically) { _primaryAnimationState.Enabled = true; _primaryAnimationState.Weight = 1.0f; if (_wrapMode != WrapMode.Default) { _primaryAnimationState.WrapMode = _wrapMode; } } }
public GPUAnimationState CrossFade(string animation, float fadeLength = 0.3f, PlayMode mode = PlayMode.StopSameLayer, WrapMode wrapMode = WrapMode.Default) { if (fadeLength > 0.0f) { ClearQueuedAnimation(); GPUAnimationState animState = GetAnimationState(animation); if (animState != null) { _crossFadedAnimation = new GPUAnimationState(this, animState.GetAnimation()) { Enabled = true, Weight = 0.0f, Speed = animState.Speed, WrapMode = wrapMode == WrapMode.Default ? animState.WrapMode : wrapMode }; _crossFadedAnimation.FadeWeightTo(1.0f, fadeLength); } else { _crossFadedAnimation = null; } } else { Play(animation, mode, wrapMode); } return(_crossFadedAnimation); }
public bool Play(string animation, PlayMode mode = PlayMode.StopSameLayer, WrapMode wrapMode = WrapMode.Default) { Stop(); GPUAnimationState animState = GetAnimationState(animation); if (animState != null) { animState.Enabled = true; animState.Time = 0.0f; animState.Weight = 1.0f; if (wrapMode != WrapMode.Default) { animState.WrapMode = wrapMode; } else if (_wrapMode != WrapMode.Default) { animState.WrapMode = _wrapMode; } UpdatePrimaryAndSecondaryStates(); return(true); } else { return(false); } }
private void ClearCrossFadedAnimation() { if (_crossFadedAnimation != null && _crossFadedAnimation.Enabled) { _activeAnimationStates.Remove(_crossFadedAnimation); } _crossFadedAnimation = null; }
public void Rewind(string animation) { GPUAnimationState state = GetAnimationState(animation); if (state != null) { state.Time = 0.0f; } }
public void Blend(string animation, float targetWeight = 1.0f, float fadeLength = 0.3f) { GPUAnimationState state = GetAnimationState(animation); if (state != null) { state.FadeWeightTo(targetWeight, fadeLength); } }
public void Stop(string animation) { GPUAnimationState state = GetAnimationState(animation); if (state != null) { state.Enabled = false; UpdatePrimaryAndSecondaryStates(); } }
internal void OnStateEnabledChanged(GPUAnimationState state, bool enabled) { if (enabled) { _activeAnimationStates.Add(state); } else { _activeAnimationStates.Remove(state); } }
public bool IsPlaying(string animation) { GPUAnimationState state = this[animation]; if (state != null) { return(state.Enabled); } return(false); }
public void Stop() { for (int i = 0; i < _animationStates.Length; i++) { _animationStates[i].Enabled = false; } _activeAnimationStates.Clear(); _primaryAnimationState = null; _secondaryAnimationState = null; _queuedAnimation = string.Empty; _crossFadedAnimation = null; }
public GPUAnimationState CrossFadeQueued(string animation, float fadeLength = 0.3f, QueueMode queue = QueueMode.CompleteOthers, PlayMode mode = PlayMode.StopSameLayer, WrapMode wrapMode = WrapMode.Default) { ClearQueuedAnimation(); _queuedAnimation = animation; _queuedAnimationMode = queue; _queuedAnimationPlayMode = mode; _queuedAnimationWrapMode = wrapMode; _queuedAnimationCrossFadeLength = fadeLength; _crossFadedAnimation = null; //TO DO! return valid state?? return(_crossFadedAnimation); }
private void UpdatePrimaryAndSecondaryStates() { _primaryAnimationState = _crossFadedAnimation; _secondaryAnimationState = null; foreach (GPUAnimationState state in _activeAnimationStates) { if (_crossFadedAnimation == null && (_primaryAnimationState == null || state.Weight > _primaryAnimationState.Weight)) { _secondaryAnimationState = _primaryAnimationState; _primaryAnimationState = state; } else if (_secondaryAnimationState == null || state.Weight > _secondaryAnimationState.Weight) { _secondaryAnimationState = state; } } }
private void UpdateAnimations(float deltaTime) { for (int i = 0; i < _activeAnimationStates.Count;) { GPUAnimationState state = _activeAnimationStates[i]; state.Update(deltaTime, this.gameObject); if (state.Enabled) { i++; } else { _activeAnimationStates.RemoveAt(i); } } UpdateQueuedAnimation(); UpdateCrossFadedAnimation(); }
private void UpdateCrossFadedAnimation() { if (_crossFadedAnimation != null && _crossFadedAnimation.Weight >= 1.0f) { for (int i = 0; i < _animationStates.Length; i++) { if (_animationStates[i].Name == _crossFadedAnimation.Name) { _animationStates[i].Time = _crossFadedAnimation.Time; _animationStates[i].Speed = _crossFadedAnimation.Speed; _animationStates[i].WrapMode = _crossFadedAnimation.WrapMode; _animationStates[i].Enabled = _crossFadedAnimation.Enabled; _animationStates[i].Weight = 1.0f; } else { _animationStates[i].Enabled = false; } } _activeAnimationStates.Remove(_crossFadedAnimation); _crossFadedAnimation = null; } }