mirror of
https://github.com/lllyasviel/YGOProUnity_V2.git
synced 2026-10-21 00:38:07 +08:00
97 lines
3.4 KiB
C#
97 lines
3.4 KiB
C#
//----------------------------------------------
|
|
// NGUI: Next-Gen UI kit
|
|
// Copyright © 2011-2015 Tasharen Entertainment
|
|
//----------------------------------------------
|
|
|
|
using UnityEngine;
|
|
using UnityEditor;
|
|
|
|
[CanEditMultipleObjects]
|
|
[CustomEditor(typeof(PropertyBinding))]
|
|
public class PropertyBindingEditor : Editor
|
|
{
|
|
public override void OnInspectorGUI ()
|
|
{
|
|
PropertyBinding pb = target as PropertyBinding;
|
|
|
|
NGUIEditorTools.SetLabelWidth(80f);
|
|
|
|
serializedObject.Update();
|
|
|
|
if (pb.direction == PropertyBinding.Direction.TargetUpdatesSource && pb.target != null)
|
|
PropertyReferenceDrawer.filter = pb.target.GetPropertyType();
|
|
|
|
GUILayout.Space(3f);
|
|
PropertyBinding.Direction dir = (target as PropertyBinding).direction;
|
|
|
|
PropertyReferenceDrawer.mustRead = (dir == PropertyBinding.Direction.SourceUpdatesTarget ||
|
|
dir == PropertyBinding.Direction.BiDirectional);
|
|
PropertyReferenceDrawer.mustWrite = (dir == PropertyBinding.Direction.TargetUpdatesSource ||
|
|
dir == PropertyBinding.Direction.BiDirectional);
|
|
|
|
NGUIEditorTools.DrawProperty(serializedObject, "source");
|
|
|
|
if (pb.direction == PropertyBinding.Direction.SourceUpdatesTarget && pb.source != null)
|
|
PropertyReferenceDrawer.filter = pb.source.GetPropertyType();
|
|
|
|
if (pb.source.target != null)
|
|
{
|
|
GUILayout.Space(-18f);
|
|
|
|
if (pb.direction == PropertyBinding.Direction.TargetUpdatesSource)
|
|
{
|
|
GUILayout.Label(" \u25B2"); // Up
|
|
}
|
|
else if (pb.direction == PropertyBinding.Direction.SourceUpdatesTarget)
|
|
{
|
|
GUILayout.Label(" \u25BC"); // Down
|
|
}
|
|
else GUILayout.Label(" \u25B2\u25BC");
|
|
}
|
|
|
|
GUILayout.Space(1f);
|
|
|
|
PropertyReferenceDrawer.mustRead = (dir == PropertyBinding.Direction.TargetUpdatesSource ||
|
|
dir == PropertyBinding.Direction.BiDirectional);
|
|
PropertyReferenceDrawer.mustWrite = (dir == PropertyBinding.Direction.SourceUpdatesTarget ||
|
|
dir == PropertyBinding.Direction.BiDirectional);
|
|
|
|
NGUIEditorTools.DrawProperty(serializedObject, "target");
|
|
|
|
PropertyReferenceDrawer.mustRead = false;
|
|
PropertyReferenceDrawer.mustWrite = false;
|
|
PropertyReferenceDrawer.filter = typeof(void);
|
|
|
|
GUILayout.Space(1f);
|
|
NGUIEditorTools.DrawPaddedProperty(serializedObject, "direction");
|
|
NGUIEditorTools.DrawPaddedProperty(serializedObject, "update");
|
|
GUILayout.BeginHorizontal();
|
|
NGUIEditorTools.DrawProperty(" ", serializedObject, "editMode", GUILayout.Width(100f));
|
|
GUILayout.Label("Update in Edit Mode");
|
|
GUILayout.EndHorizontal();
|
|
|
|
if (!serializedObject.isEditingMultipleObjects)
|
|
{
|
|
if (pb.source != null && pb.target != null && pb.source.GetPropertyType() != pb.target.GetPropertyType())
|
|
{
|
|
if (pb.direction == PropertyBinding.Direction.BiDirectional)
|
|
{
|
|
EditorGUILayout.HelpBox("Bi-Directional updates require both Source and Target to reference values of the same type.", MessageType.Error);
|
|
}
|
|
else if (pb.direction == PropertyBinding.Direction.SourceUpdatesTarget)
|
|
{
|
|
if (!PropertyReference.Convert(pb.source.Get(), pb.target.GetPropertyType()))
|
|
{
|
|
EditorGUILayout.HelpBox("Unable to convert " + pb.source.GetPropertyType() + " to " + pb.target.GetPropertyType(), MessageType.Error);
|
|
}
|
|
}
|
|
else if (!PropertyReference.Convert(pb.target.Get(), pb.source.GetPropertyType()))
|
|
{
|
|
EditorGUILayout.HelpBox("Unable to convert " + pb.target.GetPropertyType() + " to " + pb.source.GetPropertyType(), MessageType.Error);
|
|
}
|
|
}
|
|
}
|
|
serializedObject.ApplyModifiedProperties();
|
|
}
|
|
}
|