private void RenderStateContainers() { InspectorUIUtility.DrawTitle("State Animations"); for (int i = 0; i < stateContainers.arraySize; i++) { SerializedProperty stateContainer = stateContainers.GetArrayElementAtIndex(i); SerializedProperty stateContainerName = stateContainer.FindPropertyRelative("stateName"); SerializedProperty animationTargetsList = stateContainer.FindPropertyRelative("animationTargets"); SerializedProperty stateContainerAnimationClip = stateContainer.FindPropertyRelative("animationClip"); SerializedProperty animationTransitionDuration = stateContainer.FindPropertyRelative("animationTransitionDuration"); Color previousGUIColor = GUI.color; using (new EditorGUILayout.HorizontalScope()) { string stateFoldoutID = stateContainerName.stringValue + "StateContainer" + "_" + target.name; if (inPlayMode) { BaseInteractiveElement baseInteractiveElement = interactiveElement.objectReferenceValue as BaseInteractiveElement; if (baseInteractiveElement.isActiveAndEnabled) { if (baseInteractiveElement.IsStateActive(stateContainerName.stringValue)) { GUI.color = Color.cyan; } } } using (new EditorGUILayout.VerticalScope(EditorStyles.helpBox)) { EditorGUILayout.Space(); if (InspectorUIUtility.DrawSectionFoldoutWithKey(stateContainerName.stringValue, stateFoldoutID, MixedRealityStylesUtility.TitleFoldoutStyle, false)) { using (new EditorGUI.IndentLevelScope()) { using (var check = new EditorGUI.ChangeCheckScope()) { EditorGUILayout.PropertyField(stateContainerAnimationClip); EditorGUILayout.PropertyField(animationTransitionDuration); if (check.changed) { instance.SetAnimationTransitionDuration(stateContainerName.stringValue, animationTransitionDuration.floatValue); instance.SetAnimationClip(stateContainerName.stringValue, stateContainerAnimationClip.objectReferenceValue as AnimationClip); } } RenderAnimationTargetList(animationTargetsList, stateContainerName); } } EditorGUILayout.Space(); } GUI.color = previousGUIColor; if (!inPlayMode) { if (InspectorUIUtility.SmallButton(RemoveButtonLabel)) { instance.RemoveAnimatorState(instance.RootStateMachine, stateContainerName.stringValue); stateContainers.DeleteArrayElementAtIndex(i); break; } } } } }