using AlicizaX.Audio.Runtime; using UnityEditor; namespace AlicizaX.Audio.Editor { [CustomEditor(typeof(AudioEmitter))] internal sealed class AudioEmitterInspector : UnityEditor.Editor { private SerializedProperty _audioType; private SerializedProperty _clipMode; private SerializedProperty _address; private SerializedProperty _clip; private SerializedProperty _playOnEnable; private SerializedProperty _loop; private SerializedProperty _volume; private SerializedProperty _async; private SerializedProperty _cacheClip; private SerializedProperty _stopWithFadeout; private SerializedProperty _followSelf; private SerializedProperty _followOffset; private SerializedProperty _spatialBlend; private SerializedProperty _rolloffMode; private SerializedProperty _minDistance; private SerializedProperty _maxDistance; private SerializedProperty _useTriggerRange; private SerializedProperty _triggerRange; private SerializedProperty _triggerHysteresis; private SerializedProperty _drawGizmos; private SerializedProperty _drawOnlyWhenSelected; private SerializedProperty _triggerColor; private SerializedProperty _minDistanceColor; private SerializedProperty _maxDistanceColor; public override void OnInspectorGUI() { serializedObject.Update(); EditorGUILayout.LabelField("Playback", EditorStyles.boldLabel); EditorGUILayout.PropertyField(_audioType); EditorGUILayout.PropertyField(_clipMode); if (_clipMode.enumValueIndex == 1) { EditorGUILayout.PropertyField(_clip); } else { EditorGUILayout.PropertyField(_address); EditorGUILayout.PropertyField(_async); EditorGUILayout.PropertyField(_cacheClip); } EditorGUILayout.PropertyField(_playOnEnable); EditorGUILayout.PropertyField(_loop); EditorGUILayout.PropertyField(_volume); EditorGUILayout.PropertyField(_stopWithFadeout); EditorGUILayout.Space(); EditorGUILayout.LabelField("Spatial", EditorStyles.boldLabel); EditorGUILayout.PropertyField(_followSelf); EditorGUILayout.PropertyField(_followOffset); EditorGUILayout.PropertyField(_spatialBlend); EditorGUILayout.PropertyField(_rolloffMode); EditorGUILayout.PropertyField(_minDistance); EditorGUILayout.PropertyField(_maxDistance); EditorGUILayout.Space(); EditorGUILayout.LabelField("Trigger", EditorStyles.boldLabel); EditorGUILayout.PropertyField(_useTriggerRange); if (_useTriggerRange.boolValue) { EditorGUILayout.PropertyField(_triggerRange); EditorGUILayout.PropertyField(_triggerHysteresis); } EditorGUILayout.Space(); EditorGUILayout.LabelField("Gizmos", EditorStyles.boldLabel); EditorGUILayout.PropertyField(_drawGizmos); if (_drawGizmos.boolValue) { EditorGUILayout.PropertyField(_drawOnlyWhenSelected); if (_useTriggerRange.boolValue) { EditorGUILayout.PropertyField(_triggerColor); } EditorGUILayout.PropertyField(_minDistanceColor); EditorGUILayout.PropertyField(_maxDistanceColor); } serializedObject.ApplyModifiedProperties(); } private void OnEnable() { _audioType = serializedObject.FindProperty("m_AudioType"); _clipMode = serializedObject.FindProperty("m_ClipMode"); _address = serializedObject.FindProperty("m_Address"); _clip = serializedObject.FindProperty("m_Clip"); _playOnEnable = serializedObject.FindProperty("m_PlayOnEnable"); _loop = serializedObject.FindProperty("m_Loop"); _volume = serializedObject.FindProperty("m_Volume"); _async = serializedObject.FindProperty("m_Async"); _cacheClip = serializedObject.FindProperty("m_CacheClip"); _stopWithFadeout = serializedObject.FindProperty("m_StopWithFadeout"); _followSelf = serializedObject.FindProperty("m_FollowSelf"); _followOffset = serializedObject.FindProperty("m_FollowOffset"); _spatialBlend = serializedObject.FindProperty("m_SpatialBlend"); _rolloffMode = serializedObject.FindProperty("m_RolloffMode"); _minDistance = serializedObject.FindProperty("m_MinDistance"); _maxDistance = serializedObject.FindProperty("m_MaxDistance"); _useTriggerRange = serializedObject.FindProperty("m_UseTriggerRange"); _triggerRange = serializedObject.FindProperty("m_TriggerRange"); _triggerHysteresis = serializedObject.FindProperty("m_TriggerHysteresis"); _drawGizmos = serializedObject.FindProperty("m_DrawGizmos"); _drawOnlyWhenSelected = serializedObject.FindProperty("m_DrawOnlyWhenSelected"); _triggerColor = serializedObject.FindProperty("m_TriggerColor"); _minDistanceColor = serializedObject.FindProperty("m_MinDistanceColor"); _maxDistanceColor = serializedObject.FindProperty("m_MaxDistanceColor"); } } }