コード例 #1
0
 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);
 }
コード例 #2
0
        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();
        }