123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432 |
- /***********************************************
- EasyTouch Controls
- Copyright © 2014-2015 The Hedgehog Team
- http://www.blitz3dfr.com/teamtalk/index.php
-
- The.Hedgehog.Team@gmail.com
-
- **********************************************/
- using UnityEngine;
- using UnityEngine.UI;
- using System.Collections;
- using UnityEditor;
- #if UNITY_5_3
- using UnityEditor.SceneManagement;
- #endif
- [CustomEditor(typeof(ETCJoystick))]
- public class ETCJoystickInspector: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(){
-
- ETCJoystick t = (ETCJoystick)target;
-
- EditorGUILayout.Space();
- t.gameObject.name = EditorGUILayout.TextField("Joystick name",t.gameObject.name);
- 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);
- EditorGUILayout.Space();
- #region Type & Size
- t.showPSInspector = ETCGuiTools.BeginFoldOut( "Position & Size",t.showPSInspector);
- if (t.showPSInspector){
- ETCGuiTools.BeginGroup();{
- // Type
- t.joystickType = (ETCJoystick.JoystickType)EditorGUILayout.EnumPopup("Type",t.joystickType);
- if (t.joystickType == ETCJoystick.JoystickType.Static){
- t.anchor = (ETCBase.RectAnchor)EditorGUILayout.EnumPopup( "Anchor",t.anchor);
- if (t.anchor != ETCBase.RectAnchor.UserDefined){
- t.anchorOffet = EditorGUILayout.Vector2Field("Offset",t.anchorOffet);
- }
- t.IsNoOffsetThumb = ETCGuiTools.Toggle("No offset thumb",t.IsNoOffsetThumb,true);
- // if (t.isNoOffsetThumb) t.isNoReturn = false;
- t.IsNoReturnThumb = ETCGuiTools.Toggle("No return of the thumb",t.IsNoReturnThumb,true);
- }
- else if( t.joystickType == ETCJoystick.JoystickType.Dynamic){
- t.anchor = ETCBase.RectAnchor.UserDefined;
- t.allowJoystickOverTouchPad = ETCGuiTools.Toggle("Allow over touchpad",t.allowJoystickOverTouchPad,true);
- t.joystickArea = (ETCJoystick.JoystickArea)EditorGUILayout.EnumPopup( "Joystick area",t.joystickArea);
- if (t.joystickArea == ETCJoystick.JoystickArea.UserDefined){
- t.userArea = (RectTransform)EditorGUILayout.ObjectField("User area",t.userArea,typeof(RectTransform),true);
- }
- }
- 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("Background 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("Background size", t.rectTransform().rect.height);
- t.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,s);
- t.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,s*ratio);
- }
-
- // Thumb sprite ratio
- rect = t.thumb.GetComponent<Image>().sprite.rect;
- ratio = rect.width / rect.height;
-
- // Thumb size
- if (ratio>=1){
- float s = EditorGUILayout.FloatField("Thumb size", t.thumb.rectTransform().rect.width);
- t.thumb.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,s);
- t.thumb.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,s/ratio);
- }
- else{
- float s = EditorGUILayout.FloatField("Thumb size", t.thumb.rectTransform().rect.height);
- t.thumb.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,s);
- t.thumb.rectTransform().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,s*ratio);
- }
-
- EditorGUILayout.Space();
- t.radiusBase = (ETCJoystick.RadiusBase)EditorGUILayout.EnumPopup("Radius based on",t.radiusBase );
- if (t.radiusBase == ETCJoystick.RadiusBase.UserDefined){
- t.radiusBaseValue = EditorGUILayout.FloatField("Radius",t.radiusBaseValue);
- }
- EditorGUILayout.Space();
-
- }ETCGuiTools.EndGroup();
- }
- #endregion
- #region Axes properties
- t.showAxesInspector = ETCGuiTools.BeginFoldOut( "Axes properties",t.showAxesInspector);
- if (t.showAxesInspector){
- ETCGuiTools.BeginGroup();{
- EditorGUILayout.Space();
- ETCGuiTools.BeginGroup(5);{
- t.enableKeySimulation = ETCGuiTools.Toggle("Enable Unity axes",t.enableKeySimulation,true);
- if (t.enableKeySimulation){
- t.allowSimulationStandalone = ETCGuiTools.Toggle("Allow Unity axes on standalone",t.allowSimulationStandalone,true);
- t.visibleOnStandalone = ETCGuiTools.Toggle("Force visible",t.visibleOnStandalone,true);
- }
- }ETCGuiTools.EndGroup();
- EditorGUILayout.Space();
- ETCGuiTools.BeginGroup(5);{
- //t.isTurnAndMove = EditorGUILayout.ToggleLeft("Enable Turn & Move direction Action",t.isTurnAndMove);
- t.isTurnAndMove = ETCGuiTools.Toggle("Turn & Move direction Action",t.isTurnAndMove,true,220,true);
- if (t.isTurnAndMove){
- TurnAndMove(t.axisX, t.axisY,t );
- }
- }ETCGuiTools.EndGroup();
- //EditorGUILayout.Space();
- ETCGuiTools.BeginGroup(5);{
- ETCAxisInspector.AxisInspector( t.axisX,"Horizontal",ETCBase.ControlType.Joystick,t.isTurnAndMove,unityAxes);
- }ETCGuiTools.EndGroup();
- ETCGuiTools.BeginGroup(5);{
- ETCAxisInspector.AxisInspector( t.axisY,"Vertical" ,ETCBase.ControlType.Joystick,t.isTurnAndMove,unityAxes);
- }ETCGuiTools.EndGroup();
- }ETCGuiTools.EndGroup();
- }
- #endregion
- #region Camera
- t.showCameraInspector = ETCGuiTools.BeginFoldOut( "Camera",t.showCameraInspector);
- if (t.showCameraInspector){
- ETCGuiTools.BeginGroup();{
- EditorGUILayout.Space();
- t.enableCamera = ETCGuiTools.Toggle("Enable tracking",t.enableCamera,true);
- if (t.enableCamera){
- EditorGUILayout.Space();
- // Auto link
- ETCGuiTools.BeginGroup(5);{
- t.autoLinkTagCam = EditorGUILayout.ToggleLeft("Auto link on tag",t.autoLinkTagCam);
- if (t.autoLinkTagCam){
- t.autoCamTag = EditorGUILayout.TagField("",t.autoCamTag);
- }
- else{
- t.cameraTransform = (Transform)EditorGUILayout.ObjectField("Camera",t.cameraTransform,typeof(Transform),true);
- }
- }ETCGuiTools.EndGroup();
- EditorGUILayout.Space();
- ETCGuiTools.BeginGroup(5);{
- t.cameraTargetMode = (ETCJoystick.CameraTargetMode)EditorGUILayout.EnumPopup("Target mode",t.cameraTargetMode);
- if (t.cameraTargetMode == ETCBase.CameraTargetMode.UserDefined){
- t.cameraLookAt = (Transform)EditorGUILayout.ObjectField("Camera target",t.cameraLookAt,typeof(Transform),true);
- }
- if (t.cameraTargetMode == ETCBase.CameraTargetMode.LinkOnTag){
- t.camTargetTag = EditorGUILayout.TagField("",t.camTargetTag);
- }
- }ETCGuiTools.EndGroup();
- EditorGUILayout.Space();
- ETCGuiTools.BeginGroup(5);{
- t.cameraMode = (ETCJoystick.CameraMode)EditorGUILayout.EnumPopup("Camera mode",t.cameraMode);
- switch (t.cameraMode){
- case ETCJoystick.CameraMode.Follow:
- t.followOffset = EditorGUILayout.Vector3Field("Offset",t.followOffset);
- break;
- case ETCJoystick.CameraMode.SmoothFollow:
- t.enableWallDetection = EditorGUILayout.Toggle("Wall detection", t.enableWallDetection);
- if (t.enableWallDetection){
- SerializedObject so = new SerializedObject(t);
- SerializedProperty layer = so.FindProperty("wallLayer");
- EditorGUILayout.PropertyField( layer,true);
- so.ApplyModifiedProperties();
- }
- EditorGUILayout.Space();
- t.followDistance = EditorGUILayout.FloatField("Distance",t.followDistance);
- t.followHeight = EditorGUILayout.FloatField("Height",t.followHeight);
- t.followHeightDamping = EditorGUILayout.FloatField("Height damping",t.followHeightDamping);
- t.followRotationDamping = EditorGUILayout.FloatField("Rotation dampping",t.followRotationDamping);
- break;
- }
- }ETCGuiTools.EndGroup();
- }
- }ETCGuiTools.EndGroup();
- }
- #endregion
- #region sprites
- t.showSpriteInspector = ETCGuiTools.BeginFoldOut( "Sprites",t.showSpriteInspector);
- if (t.showSpriteInspector){
- ETCGuiTools.BeginGroup();{
- #region Background
- Sprite areaSprite = t.GetComponent<Image>().sprite;
-
- EditorGUILayout.BeginHorizontal();
- t.GetComponent<Image>().sprite = (Sprite)EditorGUILayout.ObjectField("Background",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( areaSprite.rect.x/ areaSprite.texture.width,
- areaSprite.rect.y/ areaSprite.texture.height,
- areaSprite.rect.width/ areaSprite.texture.width,
- areaSprite.rect.height/ areaSprite.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);
- #endregion
- EditorGUILayout.Space();
- #region thumb
- Sprite thumbSprite = t.thumb.GetComponent<Image>().sprite;
-
- EditorGUILayout.BeginHorizontal();
- t.thumb.GetComponent<Image>().sprite = (Sprite)EditorGUILayout.ObjectField("Thumb",t.thumb.GetComponent<Image>().sprite,typeof(Sprite),true,GUILayout.MinWidth(100));
- t.thumb.GetComponent<Image>().color = EditorGUILayout.ColorField("",t.thumb.GetComponent<Image>().color,GUILayout.Width(50));
- EditorGUILayout.EndHorizontal();
-
- spriteRect = new Rect( thumbSprite.rect.x/ thumbSprite.texture.width,
- thumbSprite.rect.y/ thumbSprite.texture.height,
- thumbSprite.rect.width/ thumbSprite.texture.width,
- thumbSprite.rect.height/ thumbSprite.texture.height);
-
- GUILayout.Space(8);
- lastRect = GUILayoutUtility.GetLastRect();
- lastRect.x = 20;
- lastRect.width = 100;
- lastRect.height = 100;
-
- GUILayout.Space(100);
-
- ETCGuiTools.DrawTextureRectPreview( lastRect,spriteRect,t.thumb.GetComponent<Image>().sprite.texture,Color.white);
-
- #endregion
- }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
- if (t.anchor != ETCBase.RectAnchor.UserDefined && t.joystickType == ETCJoystick.JoystickType.Static){
- t.SetAnchorPosition();
- }
- if (GUI.changed){
- EditorUtility.SetDirty(t);
- #if UNITY_5_3
- EditorSceneManager.MarkSceneDirty( EditorSceneManager.GetActiveScene());
- #endif
- }
- }
- private void TurnAndMove(ETCAxis X, ETCAxis Y, ETCJoystick j){
- EditorGUI.indentLevel++;
- X.autoLinkTagPlayer = EditorGUILayout.ToggleLeft("Auto link on tag",X.autoLinkTagPlayer, GUILayout.Width(200));
- if (X.autoLinkTagPlayer){
- X.autoTag = EditorGUILayout.TagField("",X.autoTag);
- }
- if (!X.autoLinkTagPlayer){
- X.directTransform = (Transform)EditorGUILayout.ObjectField("Direct action to",X.directTransform,typeof(Transform),true);
- }
- EditorGUILayout.Space();
- if (j.tmMoveCurve==null){
- j.InitTurnMoveCurve();
- }
- j.tmMoveCurve = EditorGUILayout.CurveField("Move curve",j.tmMoveCurve);
- j.tmSpeed = EditorGUILayout.FloatField("Move speed",j.tmSpeed);
- j.tmAdditionnalRotation = EditorGUILayout.FloatField("Intial rotation",j.tmAdditionnalRotation);
- j.tmLockInJump = EditorGUILayout.Toggle("Lock in jump",j.tmLockInJump);
- X.gravity = EditorGUILayout.FloatField("Gravity",X.gravity);
- EditorGUI.indentLevel--;
- }
-
- }
|