public override void OnInspectorGUI() { AnimatorLODControllerOverrides controllerOverrides = target as AnimatorLODControllerOverrides; if (controllerOverrides == null) { return; } EditorGUI.BeginChangeCheck(); _dataList.index = -1; _dataList.DoLayoutList(); if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); CacheOverrideClips(); } EditorGUILayout.Separator(); if (GUILayout.Button("Update Animation Overides")) { CacheOverrideClips(); } }
private void CacheOverrideClips() { AnimatorLODControllerOverrides controllerOverrides = (AnimatorLODControllerOverrides)target; for (int i = 0; i < controllerOverrides._animatorData.Length; i++) { for (int j = 0; j < controllerOverrides._animatorData[i]._animatorLODs.Length; j++) { CacheOverrideClips(controllerOverrides._animatorData[i]._controller, ref controllerOverrides._animatorData[i]._animatorLODs[j]); } } EditorSceneManager.MarkSceneDirty(controllerOverrides.gameObject.scene); }
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; }