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--;
 | |
| 		}
 | |
| 	}
 | |
| }
 |