86 lines
2.8 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|