private GPUAnimatorOverrideController GetOverrideController(Animator animator) { RuntimeAnimatorController runtimeAnimatorController = GetRuntimeAnimatorController(animator); if (_renderer == null) { _renderer = GetComponent <GPUAnimatorRenderer>(); } if (!_overrideControllers.TryGetValue(runtimeAnimatorController, out GPUAnimatorOverrideController overrideController)) { List <KeyValuePair <AnimationClip, AnimationClip> > overrides = new List <KeyValuePair <AnimationClip, AnimationClip> >(); foreach (AnimationClip origClip in runtimeAnimatorController.animationClips) { for (int i = 0; i < _overrideClips.Length; i++) { if (_overrideClips[i]._originalClip == origClip) { overrides.Add(new KeyValuePair <AnimationClip, AnimationClip>(origClip, _overrideClips[i]._overrideClip)); } } } overrideController = new GPUAnimatorOverrideController(runtimeAnimatorController, _renderer._animations.GetAnimations(), overrides); _overrideControllers[runtimeAnimatorController] = overrideController; } return(overrideController); }
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 static GPUAnimatorOverrideController GetOverrideController(GPUAnimatorRenderer renderer, Animator animator) { GPUAnimatorRendererControllerOverrider animatorRendererOverrideController = renderer.GetComponent <GPUAnimatorRendererControllerOverrider>(); if (animatorRendererOverrideController != null) { return(animatorRendererOverrideController.GetOverrideController(animator)); } else { RuntimeAnimatorController runtimeAnimatorController = GetRuntimeAnimatorController(animator); return(new GPUAnimatorOverrideController(runtimeAnimatorController, renderer._animations.GetAnimations())); } }
public override void Initialise(GPUAnimatorRenderer renderer) { base.Initialise(renderer); _animator = GetComponent <Animator>(); _skinnedMeshRenderer = GameObjectUtils.GetComponent <SkinnedMeshRenderer>(this.gameObject, true); int numLayers = Math.Max(Math.Min(1 + _numAdditionalLayers, _animator.layerCount), 1); _layers = new GPUAnimatorLayer[numLayers]; for (int i = 0; i < _layers.Length; i++) { _layers[i] = new GPUAnimatorLayer(_animator, i); } _animator.runtimeAnimatorController = GPUAnimatorRendererControllerOverrider.GetOverrideController(_renderer, _animator); _animator.avatar = GetDummyAvatar(); }
public virtual void Initialise(GPUAnimatorRenderer renderer) { _initialised = true; _renderer = renderer; _onInitialise?.Invoke(); }