244 lines
8.8 KiB
C#
244 lines
8.8 KiB
C#
|
|
using UnityEngine;
|
||
|
|
using UnityEditor;
|
||
|
|
using System.Collections;
|
||
|
|
using UnityEngine.UI;
|
||
|
|
#if UNITY_5_3
|
||
|
|
using UnityEditor.SceneManagement;
|
||
|
|
#endif
|
||
|
|
|
||
|
|
[CustomEditor(typeof(ETCDPad))]
|
||
|
|
public class ETCDPadInspector : Editor {
|
||
|
|
|
||
|
|
public string[] unityAxes;
|
||
|
|
|
||
|
|
void OnEnable(){
|
||
|
|
var inputManager = AssetDatabase.LoadAllAssetsAtPath("ProjectSettings/InputManager.asset")[0];
|
||
|
|
SerializedObject obj = new SerializedObject(inputManager);
|
||
|
|
SerializedProperty axisArray = obj.FindProperty("m_Axes");
|
||
|
|
if (axisArray.arraySize > 0){
|
||
|
|
unityAxes = new string[axisArray.arraySize];
|
||
|
|
for( int i = 0; i < axisArray.arraySize; ++i ){
|
||
|
|
var axis = axisArray.GetArrayElementAtIndex(i);
|
||
|
|
unityAxes[i] = axis.FindPropertyRelative("m_Name").stringValue;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
public override void OnInspectorGUI(){
|
||
|
|
|
||
|
|
ETCDPad t = (ETCDPad)target;
|
||
|
|
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
|
||
|
|
t.activated = ETCGuiTools.Toggle("Activated",t.activated,true);
|
||
|
|
t.visible = ETCGuiTools.Toggle("Visible",t.visible,true);
|
||
|
|
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
t.useFixedUpdate = ETCGuiTools.Toggle("Use Fixed Updae",t.useFixedUpdate,true);
|
||
|
|
t.isUnregisterAtDisable = ETCGuiTools.Toggle("Unregister at disabling time",t.isUnregisterAtDisable,true);
|
||
|
|
|
||
|
|
#region Position & Size
|
||
|
|
t.showPSInspector = ETCGuiTools.BeginFoldOut( "Position & Size",t.showPSInspector);
|
||
|
|
if (t.showPSInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
// Anchor
|
||
|
|
t.anchor = (ETCBase.RectAnchor)EditorGUILayout.EnumPopup( "Anchor",t.anchor);
|
||
|
|
if (t.anchor != ETCBase.RectAnchor.UserDefined){
|
||
|
|
t.anchorOffet = EditorGUILayout.Vector2Field("Offset",t.anchorOffet);
|
||
|
|
}
|
||
|
|
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
|
||
|
|
// Area sprite ratio
|
||
|
|
Rect rect = t.GetComponent<Image>().sprite.rect;
|
||
|
|
float ratio = rect.width / rect.height;
|
||
|
|
|
||
|
|
// Area Size
|
||
|
|
if (ratio>=1){
|
||
|
|
float s = EditorGUILayout.FloatField("Size", t.rectTransform().rect.width);
|
||
|
|
t.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,s);
|
||
|
|
t.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,s/ratio);
|
||
|
|
}
|
||
|
|
else{
|
||
|
|
float s = EditorGUILayout.FloatField("Size", t.rectTransform().rect.height);
|
||
|
|
t.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,s);
|
||
|
|
t.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,s*ratio);
|
||
|
|
}
|
||
|
|
|
||
|
|
t.buttonSizeCoef = EditorGUILayout.FloatField("Button size coef",t.buttonSizeCoef);
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
#region Axes properties
|
||
|
|
t.showBehaviourInspector = ETCGuiTools.BeginFoldOut( "Axes properties",t.showBehaviourInspector);
|
||
|
|
if (t.showBehaviourInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
t.enableKeySimulation = ETCGuiTools.Toggle("Enable key simulation",t.enableKeySimulation,true);
|
||
|
|
if (t.enableKeySimulation){
|
||
|
|
t.allowSimulationStandalone = ETCGuiTools.Toggle("Allow simulation on standalone",t.allowSimulationStandalone,true);
|
||
|
|
t.visibleOnStandalone = ETCGuiTools.Toggle("Force visible",t.visibleOnStandalone,true);
|
||
|
|
}
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
|
||
|
|
t.dPadAxisCount = (ETCDPad.DPadAxis)EditorGUILayout.EnumPopup("Axes count",t.dPadAxisCount);
|
||
|
|
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
|
||
|
|
ETCGuiTools.BeginGroup(5);{
|
||
|
|
ETCAxisInspector.AxisInspector( t.axisX,"Horizontal", ETCBase.ControlType.DPad,false,unityAxes);
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
|
||
|
|
ETCGuiTools.BeginGroup(5);{
|
||
|
|
ETCAxisInspector.AxisInspector( t.axisY,"Vertical" ,ETCBase.ControlType.DPad,false,unityAxes);
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
#region Sprite
|
||
|
|
t.showSpriteInspector = ETCGuiTools.BeginFoldOut( "Sprites",t.showSpriteInspector);
|
||
|
|
if (t.showSpriteInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
|
||
|
|
Sprite frameSprite = t.GetComponent<Image>().sprite;
|
||
|
|
|
||
|
|
EditorGUILayout.BeginHorizontal();
|
||
|
|
t.GetComponent<Image>().sprite = (Sprite)EditorGUILayout.ObjectField("Frame",t.GetComponent<Image>().sprite,typeof(Sprite),true,GUILayout.MinWidth(100));
|
||
|
|
t.GetComponent<Image>().color = EditorGUILayout.ColorField("",t.GetComponent<Image>().color,GUILayout.Width(50));
|
||
|
|
EditorGUILayout.EndHorizontal();
|
||
|
|
EditorGUILayout.Space();
|
||
|
|
Rect spriteRect = new Rect( frameSprite.rect.x/ frameSprite.texture.width,
|
||
|
|
frameSprite.rect.y/ frameSprite.texture.height,
|
||
|
|
frameSprite.rect.width/ frameSprite.texture.width,
|
||
|
|
frameSprite.rect.height/ frameSprite.texture.height);
|
||
|
|
GUILayout.Space(8);
|
||
|
|
Rect lastRect = GUILayoutUtility.GetLastRect();
|
||
|
|
lastRect.x = 20;
|
||
|
|
lastRect.width = 100;
|
||
|
|
lastRect.height = 100;
|
||
|
|
|
||
|
|
GUILayout.Space(100);
|
||
|
|
|
||
|
|
ETCGuiTools.DrawTextureRectPreview( lastRect,spriteRect,t.GetComponent<Image>().sprite.texture,Color.white);
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
#region Events
|
||
|
|
t.showEventInspector = ETCGuiTools.BeginFoldOut( "Move Events",t.showEventInspector);
|
||
|
|
if (t.showEventInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty movestartEvent = serializedObject.FindProperty("onMoveStart");
|
||
|
|
EditorGUILayout.PropertyField(movestartEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty moveEvent = serializedObject.FindProperty("onMove");
|
||
|
|
EditorGUILayout.PropertyField(moveEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty moveSpeedEvent = serializedObject.FindProperty("onMoveSpeed");
|
||
|
|
EditorGUILayout.PropertyField(moveSpeedEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty moveEndEvent = serializedObject.FindProperty("onMoveEnd");
|
||
|
|
EditorGUILayout.PropertyField(moveEndEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
|
||
|
|
t.showTouchEventInspector = ETCGuiTools.BeginFoldOut( "Touch Events",t.showTouchEventInspector);
|
||
|
|
if (t.showTouchEventInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty touchStartEvent = serializedObject.FindProperty("onTouchStart");
|
||
|
|
EditorGUILayout.PropertyField(touchStartEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty touchUpEvent = serializedObject.FindProperty("onTouchUp");
|
||
|
|
EditorGUILayout.PropertyField(touchUpEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
|
||
|
|
t.showDownEventInspector = ETCGuiTools.BeginFoldOut( "Down Events",t.showDownEventInspector);
|
||
|
|
if (t.showDownEventInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty downUpEvent = serializedObject.FindProperty("OnDownUp");
|
||
|
|
EditorGUILayout.PropertyField(downUpEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty downRightEvent = serializedObject.FindProperty("OnDownRight");
|
||
|
|
EditorGUILayout.PropertyField(downRightEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty downDownEvent = serializedObject.FindProperty("OnDownDown");
|
||
|
|
EditorGUILayout.PropertyField(downDownEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty downLeftEvent = serializedObject.FindProperty("OnDownLeft");
|
||
|
|
EditorGUILayout.PropertyField(downLeftEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
|
||
|
|
t.showPressEventInspector = ETCGuiTools.BeginFoldOut( "Press Events",t.showPressEventInspector);
|
||
|
|
if (t.showPressEventInspector){
|
||
|
|
ETCGuiTools.BeginGroup();{
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty pressUpEvent = serializedObject.FindProperty("OnPressUp");
|
||
|
|
EditorGUILayout.PropertyField(pressUpEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty pressRightEvent = serializedObject.FindProperty("OnPressRight");
|
||
|
|
EditorGUILayout.PropertyField(pressRightEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty pressDownEvent = serializedObject.FindProperty("OnPressDown");
|
||
|
|
EditorGUILayout.PropertyField(pressDownEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
serializedObject.Update();
|
||
|
|
SerializedProperty pressLeftEvent = serializedObject.FindProperty("OnPressLeft");
|
||
|
|
EditorGUILayout.PropertyField(pressLeftEvent, true, null);
|
||
|
|
serializedObject.ApplyModifiedProperties();
|
||
|
|
|
||
|
|
}ETCGuiTools.EndGroup();
|
||
|
|
}
|
||
|
|
#endregion
|
||
|
|
|
||
|
|
t.SetAnchorPosition();
|
||
|
|
|
||
|
|
if (GUI.changed){
|
||
|
|
EditorUtility.SetDirty(t);
|
||
|
|
#if UNITY_5_3
|
||
|
|
EditorSceneManager.MarkSceneDirty( EditorSceneManager.GetActiveScene());
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|