Files
DeltaVR/Assets/Plugins/FMOD/src/Editor/StudioGlobalParameterTriggerEditor.cs

86 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using UnityEditor;
using UnityEngine;
namespace FMODUnity
{
[CustomEditor(typeof(StudioGlobalParameterTrigger))]
public class StudioGlobalParameterTriggerEditor : Editor
{
private SerializedProperty param;
private SerializedProperty trigger;
private SerializedProperty tag;
private SerializedProperty value;
private SerializedProperty data1, data2;
private static GUIContent NotFoundWarning;
private string currentPath;
[SerializeField]
private EditorParamRef editorParamRef;
private void OnEnable()
{
param = serializedObject.FindProperty("Parameter");
trigger = serializedObject.FindProperty("TriggerEvent");
tag = serializedObject.FindProperty("CollisionTag");
value = serializedObject.FindProperty("Value");
}
public override void OnInspectorGUI()
{
if (NotFoundWarning == null)
{
Texture warningIcon = EditorUtils.LoadImage("NotFound.png");
NotFoundWarning = new GUIContent(L10n.Tr("Parameter Not Found"), warningIcon);
}
EditorGUILayout.PropertyField(trigger, new GUIContent(L10n.Tr("Trigger")));
if (trigger.enumValueIndex >= (int)EmitterGameEvent.TriggerEnter && trigger.enumValueIndex <= (int)EmitterGameEvent.TriggerExit2D)
{
tag.stringValue = EditorGUILayout.TagField("Collision Tag", tag.stringValue);
}
EditorGUILayout.PropertyField(param, new GUIContent(L10n.Tr("Parameter")));
if (param.stringValue != currentPath)
{
currentPath = param.stringValue;
if (string.IsNullOrEmpty(param.stringValue))
{
editorParamRef = null;
}
else
{
editorParamRef = EventManager.ParamFromPath(param.stringValue);
value.floatValue = Mathf.Clamp(value.floatValue, editorParamRef.Min, editorParamRef.Max);
}
}
if (editorParamRef != null)
{
using (new EditorGUILayout.HorizontalScope())
{
EditorGUILayout.PrefixLabel(L10n.Tr("Override Value"));
value.floatValue = EditorUtils.DrawParameterValueLayout(value.floatValue, editorParamRef);
}
}
else
{
Rect rect = EditorGUILayout.GetControlRect();
rect.xMin += EditorGUIUtility.labelWidth;
GUI.Label(rect, NotFoundWarning);
}
serializedObject.ApplyModifiedProperties();
}
}
}