public void Init(int a_numTargets) { m_delay = new AnimStepVariableFloat(0, a_numTargets); m_offsetTime = new AnimStepVariableFloat(0, a_numTargets); m_volume = new AnimStepVariableFloat(1, a_numTargets); m_pitch = new AnimStepVariableFloat(1, a_numTargets); }
public void BaseOnInspectorGUI(GameObject[] a_targetObjects, int a_stepIndex, AnimSetupType a_animType, SerializedObject a_serializedObject, System.Action a_onAnimatedStateChanged) { if (m_grabbedInitialDefaultStateData == false) { m_duration = new AnimStepVariableFloat(SetCustomInitialDuration ? CustomInitialDuration : 1); m_grabbedInitialDefaultStateData = SetAllValuesFromCurrentState(a_targetObjects); a_serializedObject.Update(); } if (a_serializedObject.targetObject.GetType() != GetType()) { return; } if (a_stepIndex > 0) { EditorGUILayout.PropertyField(a_serializedObject.FindProperty("m_waitForPreviousComplete"), new GUIContent("Wait For All Finish?")); } OnInspectorGUI( a_stepIndex, a_animType, a_serializedObject, a_onAnimatedStateChanged: () => { a_serializedObject.ApplyModifiedProperties(); a_onAnimatedStateChanged(); } ); bool setupChanged = false; m_delay.OnInspectorGUI(a_serializedObject.FindProperty("m_delay"), ref setupChanged, m_numTargets > 1, new GUIContent("Delay")); m_duration.OnInspectorGUI(a_serializedObject.FindProperty("m_duration"), ref setupChanged, m_numTargets > 1, new GUIContent("Duration")); if (UseEasing) { EditorGUILayout.PropertyField(a_serializedObject.FindProperty("m_easing")); } EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Add Audio Clip?", GUILayout.Width(90)); SerializedProperty audioClipDatasProperty = a_serializedObject.FindProperty("m_audioClipDatas"); if (GUILayout.Button("+", GUILayout.Width(20), GUILayout.Height(14))) { audioClipDatasProperty.InsertArrayElementAtIndex(audioClipDatasProperty.arraySize); a_serializedObject.ApplyModifiedProperties(); EditorGUILayout.EndHorizontal(); m_audioClipDatas [m_audioClipDatas.Length - 1].Init(m_numTargets); return; } EditorGUILayout.EndHorizontal(); if (audioClipDatasProperty.arraySize > 0) { SerializedProperty audioClipDataInstanceProperty; bool instanceDeleted = false; EditorGUILayout.BeginVertical(EditorStyles.helpBox); for (int idx = 0; idx < audioClipDatasProperty.arraySize; idx++) { instanceDeleted = false; audioClipDataInstanceProperty = audioClipDatasProperty.GetArrayElementAtIndex(idx); EditorGUILayout.BeginHorizontal(); SerializedProperty foldoutStateProperty = audioClipDataInstanceProperty.FindPropertyRelative("m_editorFoldoutState"); foldoutStateProperty.boolValue = EditorGUILayout.Foldout(foldoutStateProperty.boolValue, "Audio Clip #" + (idx + 1), true); GUILayout.FlexibleSpace(); if (GUILayout.Button("x", GUILayout.Width(20), GUILayout.Height(14))) { audioClipDatasProperty.DeleteArrayElementAtIndex(idx); instanceDeleted = true; } EditorGUILayout.EndHorizontal(); if (!instanceDeleted && foldoutStateProperty.boolValue) { EditorGUILayout.PropertyField(audioClipDataInstanceProperty.FindPropertyRelative("m_clip")); SerializedProperty triggerPointProperty = audioClipDataInstanceProperty.FindPropertyRelative("m_triggerPoint"); EditorGUILayout.PropertyField(triggerPointProperty, new GUIContent("Play When?")); GUIContent offsetLabelContent; if (((AudioClipData.CLIP_TRIGGER_POINT)triggerPointProperty.enumValueIndex) == AudioClipData.CLIP_TRIGGER_POINT.START_OF_ANIM_STEP) { offsetLabelContent = new GUIContent("Delay Time"); } else { offsetLabelContent = new GUIContent("Offset Time"); } m_audioClipDatas[idx].Delay.OnInspectorGUI(audioClipDataInstanceProperty.FindPropertyRelative("m_delay"), ref setupChanged, m_numTargets > 1, offsetLabelContent); m_audioClipDatas[idx].OffsetTime.OnInspectorGUI(audioClipDataInstanceProperty.FindPropertyRelative("m_offsetTime"), ref setupChanged, m_numTargets > 1, new GUIContent("Clip Offset")); m_audioClipDatas[idx].Pitch.OnInspectorGUI(audioClipDataInstanceProperty.FindPropertyRelative("m_pitch"), ref setupChanged, m_numTargets > 1, new GUIContent("Pitch")); m_audioClipDatas[idx].Volume.OnInspectorGUI(audioClipDataInstanceProperty.FindPropertyRelative("m_volume"), ref setupChanged, m_numTargets > 1, new GUIContent("Volume")); } } EditorGUILayout.EndVertical(); } a_serializedObject.ApplyModifiedProperties(); }