public static AnimatorLODOverrideController GetOverrideController(Animator animator) { foreach (AnimatorLODControllerOverrides controllerOverrides in _controllerOverrides) { for (int i = 0; i < controllerOverrides._animatorData.Length; i++) { if (controllerOverrides._animatorData[i]._controller == animator.runtimeAnimatorController) { AnimatorLODOverrideController controller = new AnimatorLODOverrideController(animator.runtimeAnimatorController, controllerOverrides._animatorData[i]._animatorLODs) { name = animator.runtimeAnimatorController.name + " (LOD)" }; return(controller); } } } return(null); }
private void Start() { //Create override controller _overrideController = AnimatorLODControllerOverrides.GetOverrideController(_animator); if (_overrideController == null) { this.enabled = false; return; } _animator.runtimeAnimatorController = _overrideController; //Cache LOD level types _LODs = _LODGroup.GetLODs(); _LODHasSkinnedMeshes = new bool[_LODs.Length]; for (int i = 0; i < _LODs.Length; i++) { SetupLOD(ref _LODs[i], out _LODHasSkinnedMeshes[i]); } _currentLODLevel = -1; }