193 lines
6.9 KiB
C#
193 lines
6.9 KiB
C#
using UnityEngine;
|
|
using UnityEditor;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
|
|
public class ETCAxisInspector{
|
|
|
|
public static void AxisInspector(ETCAxis axis, string label, ETCBase.ControlType type, bool turnMove = false, string[] unityAxes=null){
|
|
|
|
EditorGUILayout.BeginHorizontal();
|
|
//GUI.color = color;
|
|
axis.enable = ETCGuiTools.Toggle(label + " axis : ",axis.enable,true,125,true);
|
|
//GUI.color = Color.white;
|
|
axis.name = EditorGUILayout.TextField("",axis.name,GUILayout.MinWidth(50));
|
|
EditorGUILayout.EndHorizontal();
|
|
|
|
if (axis.enable){
|
|
|
|
EditorGUI.indentLevel++;
|
|
|
|
#region General
|
|
//EditorGUILayout.LabelField( "General",EditorStyles.boldLabel);
|
|
axis.showGeneralInspector = EditorGUILayout.Foldout(axis.showGeneralInspector,"General setting");
|
|
if (axis.showGeneralInspector){
|
|
ETCGuiTools.BeginGroup(20);{
|
|
EditorGUI.indentLevel--;
|
|
axis.actionOn = (ETCAxis.ActionOn)EditorGUILayout.EnumPopup("React on",axis.actionOn );
|
|
|
|
EditorGUILayout.Space();
|
|
if (type == ETCBase.ControlType.Joystick ){
|
|
axis.valueMethod = (ETCAxis.AxisValueMethod)EditorGUILayout.EnumPopup("Dead zone method",axis.valueMethod);
|
|
switch (axis.valueMethod){
|
|
case ETCAxis.AxisValueMethod.Classical:
|
|
axis.deadValue = EditorGUILayout.Slider("Dead length",axis.deadValue,0f,1f);
|
|
break;
|
|
case ETCAxis.AxisValueMethod.Curve:
|
|
if (axis.curveValue == null){
|
|
axis.InitDeadCurve();
|
|
}
|
|
axis.curveValue = EditorGUILayout.CurveField("Sensitivity curve", axis.curveValue);
|
|
break;
|
|
}
|
|
|
|
}
|
|
EditorGUILayout.Space();
|
|
|
|
axis.invertedAxis = ETCGuiTools.Toggle("Inverted axis",axis.invertedAxis,true);
|
|
|
|
EditorGUILayout.Space();
|
|
|
|
#region Button & DPAD Value over the time
|
|
if (type == ETCBase.ControlType.Button || type == ETCBase.ControlType.DPad){
|
|
axis.isValueOverTime = ETCGuiTools.Toggle("Value over the time",axis.isValueOverTime,true);
|
|
if (axis.isValueOverTime){
|
|
//EditorGUI.indentLevel--;
|
|
ETCGuiTools.BeginGroup(5);{
|
|
axis.overTimeStep = EditorGUILayout.FloatField("Step",axis.overTimeStep);
|
|
axis.maxOverTimeValue = EditorGUILayout.FloatField("Max value",axis.maxOverTimeValue);
|
|
}ETCGuiTools.EndGroup();
|
|
//EditorGUI.indentLevel++;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region Joysick
|
|
if (type == ETCBase.ControlType.Joystick ){
|
|
axis.axisThreshold = EditorGUILayout.Slider("On/Off Threshold",axis.axisThreshold,0f,1f);
|
|
}
|
|
#endregion
|
|
|
|
if (!turnMove){
|
|
string labelspeed = "Speed";
|
|
if (type== ETCBase.ControlType.TouchPad){
|
|
labelspeed ="Sensitivity";
|
|
}
|
|
axis.speed = EditorGUILayout.FloatField(labelspeed,axis.speed);
|
|
}
|
|
EditorGUI.indentLevel++;
|
|
}ETCGuiTools.EndGroup();
|
|
}
|
|
#endregion
|
|
|
|
if (!turnMove){
|
|
#region Direction Action
|
|
axis.showDirectInspector = EditorGUILayout.Foldout(axis.showDirectInspector,"Direction ation (optional)");
|
|
if (axis.showDirectInspector){
|
|
ETCGuiTools.BeginGroup(20);{
|
|
EditorGUI.indentLevel--;
|
|
|
|
//EditorGUILayout.BeginHorizontal();
|
|
axis.autoLinkTagPlayer = EditorGUILayout.ToggleLeft("Auto link on tag",axis.autoLinkTagPlayer, GUILayout.Width(200));
|
|
if (axis.autoLinkTagPlayer){
|
|
axis.autoTag = EditorGUILayout.TagField("",axis.autoTag);
|
|
}
|
|
//EditorGUILayout.EndHorizontal();
|
|
|
|
if (!axis.autoLinkTagPlayer){
|
|
axis.directTransform = (Transform)EditorGUILayout.ObjectField("Direct action to",axis.directTransform,typeof(Transform),true);
|
|
}
|
|
|
|
axis.directAction = (ETCAxis.DirectAction ) EditorGUILayout.EnumPopup( "Action",axis.directAction);
|
|
if (axis.directAction != ETCAxis.DirectAction.Jump){
|
|
axis.axisInfluenced = (ETCAxis.AxisInfluenced) EditorGUILayout.EnumPopup("Affected axis",axis.axisInfluenced);
|
|
}
|
|
else{
|
|
EditorGUILayout.HelpBox("Required character controller", MessageType.Info);
|
|
}
|
|
|
|
if ((axis.directCharacterController || axis.autoLinkTagPlayer) && (axis.directAction == ETCAxis.DirectAction.Translate || axis.directAction == ETCAxis.DirectAction.TranslateLocal)){
|
|
|
|
axis.isLockinJump = EditorGUILayout.Toggle("Lock in jump",axis.isLockinJump);
|
|
if (axis.autoLinkTagPlayer)
|
|
EditorGUILayout.HelpBox("Required character controller", MessageType.Info);
|
|
}
|
|
EditorGUI.indentLevel++;
|
|
}ETCGuiTools.EndGroup();
|
|
}
|
|
#endregion
|
|
|
|
#region smooth & inertia
|
|
axis.showInertiaInspector = EditorGUILayout.Foldout(axis.showInertiaInspector,"Gravity-Inertia-smoothing...");
|
|
if (axis.showInertiaInspector){
|
|
ETCGuiTools.BeginGroup(20);{
|
|
EditorGUI.indentLevel--;
|
|
|
|
if ( axis.directCharacterController!=null || axis.autoLinkTagPlayer){
|
|
axis.gravity = EditorGUILayout.FloatField("Gravity",axis.gravity);
|
|
}
|
|
|
|
// Inertia
|
|
axis.isEnertia = ETCGuiTools.Toggle("Enable inertia", axis.isEnertia,true);
|
|
if (axis.isEnertia){
|
|
//EditorGUI.indentLevel--;
|
|
ETCGuiTools.BeginGroup(5);{
|
|
axis.inertia = EditorGUILayout.Slider("Inertia",axis.inertia,1f,500f);
|
|
axis.inertiaThreshold = EditorGUILayout.FloatField("Threshold",axis.inertiaThreshold);
|
|
}ETCGuiTools.EndGroup();
|
|
//EditorGUI.indentLevel++;
|
|
}
|
|
|
|
// AutoStab & clamp rotation
|
|
if (axis.directAction == ETCAxis.DirectAction.RotateLocal ){
|
|
//AutoStab
|
|
axis.isAutoStab = ETCGuiTools.Toggle("Automatic stabilization",axis.isAutoStab,true);
|
|
if (axis.isAutoStab){
|
|
//EditorGUI.indentLevel--;
|
|
ETCGuiTools.BeginGroup(5);{
|
|
axis.autoStabSpeed = EditorGUILayout.FloatField("Speed",axis.autoStabSpeed);
|
|
axis.autoStabThreshold = EditorGUILayout.FloatField("Threshold ", axis.autoStabThreshold);
|
|
}ETCGuiTools.EndGroup();
|
|
//EditorGUI.indentLevel++;
|
|
}
|
|
|
|
// clamp rotation
|
|
axis.isClampRotation = ETCGuiTools.Toggle("Clamp rotation",axis.isClampRotation,true);
|
|
if (axis.isClampRotation){
|
|
//EditorGUI.indentLevel--;
|
|
ETCGuiTools.BeginGroup(5);{
|
|
axis.maxAngle = EditorGUILayout.FloatField("Max angle",axis.maxAngle);
|
|
axis.minAngle = EditorGUILayout.FloatField("Min angle",axis.minAngle);
|
|
}ETCGuiTools.EndGroup();
|
|
//EditorGUI.indentLevel++;
|
|
}
|
|
|
|
}
|
|
|
|
EditorGUI.indentLevel++;
|
|
}ETCGuiTools.EndGroup();
|
|
}
|
|
#endregion
|
|
}
|
|
|
|
#region Unity axes
|
|
axis.showSimulatinInspector = EditorGUILayout.Foldout(axis.showSimulatinInspector,"Unity axes");
|
|
if (axis.showSimulatinInspector){
|
|
ETCGuiTools.BeginGroup(20);{
|
|
EditorGUI.indentLevel--;
|
|
int index = System.Array.IndexOf(unityAxes,axis.unityAxis );
|
|
int tmpIndex = EditorGUILayout.Popup(index,unityAxes);
|
|
if (tmpIndex != index){
|
|
axis.unityAxis = unityAxes[tmpIndex];
|
|
}
|
|
EditorGUI.indentLevel++;
|
|
}ETCGuiTools.EndGroup();
|
|
|
|
}
|
|
#endregion
|
|
|
|
EditorGUI.indentLevel--;
|
|
}
|
|
}
|
|
}
|