aboutsummaryrefslogtreecommitdiff
path: root/Assets/Packages/RTS_Camera/Scripts/Editor
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Packages/RTS_Camera/Scripts/Editor')
-rw-r--r--Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs108
-rw-r--r--Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs.meta12
-rw-r--r--Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs158
-rw-r--r--Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs.meta12
4 files changed, 290 insertions, 0 deletions
diff --git a/Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs b/Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs
new file mode 100644
index 0000000..2c41a09
--- /dev/null
+++ b/Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs
@@ -0,0 +1,108 @@
+using UnityEngine;
+using System;
+using System.Collections.Generic;
+using UnityEditor;
+using System.Linq;
+
+
+public class VerticalBlock : IDisposable
+{
+ public VerticalBlock(params GUILayoutOption[] options)
+ {
+ GUILayout.BeginVertical(options);
+ }
+
+ public VerticalBlock(GUIStyle style, params GUILayoutOption[] options)
+ {
+ GUILayout.BeginVertical(style, options);
+ }
+
+ public void Dispose()
+ {
+ GUILayout.EndVertical();
+ }
+}
+
+public class ScrollviewBlock : IDisposable
+{
+ public ScrollviewBlock(ref Vector2 scrollPos, params GUILayoutOption[] options)
+ {
+ scrollPos = GUILayout.BeginScrollView(scrollPos, options);
+ }
+
+ public void Dispose()
+ {
+ GUILayout.EndScrollView();
+ }
+}
+
+public class HorizontalBlock : IDisposable
+{
+ public HorizontalBlock(params GUILayoutOption[] options)
+ {
+ GUILayout.BeginHorizontal(options);
+ }
+
+ public HorizontalBlock(GUIStyle style, params GUILayoutOption[] options)
+ {
+ GUILayout.BeginHorizontal(style, options);
+ }
+
+ public void Dispose()
+ {
+ GUILayout.EndHorizontal();
+ }
+}
+
+public class ColoredBlock : System.IDisposable
+{
+ public ColoredBlock(Color color)
+ {
+ GUI.color = color;
+ }
+
+ public void Dispose()
+ {
+ GUI.color = Color.white;
+ }
+}
+
+[Serializable]
+public class TabsBlock
+{
+ private Dictionary<string, Action> methods;
+ private Action currentGuiMethod;
+ public int curMethodIndex = -1;
+
+ public TabsBlock(Dictionary<string, Action> _methods)
+ {
+ methods = _methods;
+ SetCurrentMethod(0);
+ }
+
+ public void Draw()
+ {
+ var keys = methods.Keys.ToArray();
+ using (new VerticalBlock(EditorStyles.helpBox))
+ {
+ using (new HorizontalBlock())
+ {
+ for (int i = 0; i < keys.Length; i++)
+ {
+ var btnStyle = i == 0 ? EditorStyles.miniButtonLeft : i == (keys.Length - 1) ? EditorStyles.miniButtonRight : EditorStyles.miniButtonMid;
+ using (new ColoredBlock(currentGuiMethod == methods[keys[i]] ? Color.grey : Color.white))
+ if (GUILayout.Button(keys[i], btnStyle))
+ SetCurrentMethod(i);
+ }
+ }
+ GUILayout.Label(keys[curMethodIndex], EditorStyles.centeredGreyMiniLabel);
+ currentGuiMethod();
+ }
+ }
+
+ public void SetCurrentMethod(int index)
+ {
+ curMethodIndex = index;
+ currentGuiMethod = methods[methods.Keys.ToArray()[index]];
+ }
+} \ No newline at end of file
diff --git a/Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs.meta b/Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs.meta
new file mode 100644
index 0000000..07148cb
--- /dev/null
+++ b/Assets/Packages/RTS_Camera/Scripts/Editor/LayoutHelpers.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: e6604c54827307c4083b63203d4fed4b
+timeCreated: 1451938860
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs b/Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs
new file mode 100644
index 0000000..d4a828f
--- /dev/null
+++ b/Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs
@@ -0,0 +1,158 @@
+using UnityEngine;
+using System.Collections.Generic;
+using UnityEditor;
+
+namespace RTS_Cam
+{
+ [CustomEditor(typeof(RTS_Camera))]
+ public class RTS_CameraEditor : Editor
+ {
+ private RTS_Camera camera { get { return target as RTS_Camera; } }
+
+ private TabsBlock tabs;
+
+ private void OnEnable()
+ {
+ tabs = new TabsBlock(new Dictionary<string, System.Action>()
+ {
+ {"Movement", MovementTab},
+ {"Rotation", RotationTab},
+ {"Height", HeightTab}
+ });
+ tabs.SetCurrentMethod(camera.lastTab);
+ }
+
+ public override void OnInspectorGUI()
+ {
+ //base.OnInspectorGUI();
+ Undo.RecordObject(camera, "RTS_CAmera");
+ tabs.Draw();
+ if (GUI.changed)
+ camera.lastTab = tabs.curMethodIndex;
+ EditorUtility.SetDirty(camera);
+ }
+
+ private void MovementTab()
+ {
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Use keyboard input: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.useKeyboardInput = EditorGUILayout.Toggle( camera.useKeyboardInput);
+ }
+ if(camera.useKeyboardInput)
+ {
+ camera.horizontalAxis = EditorGUILayout.TextField("Horizontal axis name: ", camera.horizontalAxis);
+ camera.verticalAxis = EditorGUILayout.TextField("Vertical axis name: ", camera.verticalAxis);
+ camera.keyboardMovementSpeed = EditorGUILayout.FloatField("Movement speed: ", camera.keyboardMovementSpeed);
+ }
+
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Screen edge input: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.useScreenEdgeInput = EditorGUILayout.Toggle( camera.useScreenEdgeInput);
+ }
+
+ if(camera.useScreenEdgeInput)
+ {
+ EditorGUILayout.FloatField("Screen edge border size: ", camera.screenEdgeBorder);
+ camera.screenEdgeMovementSpeed = EditorGUILayout.FloatField("Screen edge movement speed: ", camera.screenEdgeMovementSpeed);
+ }
+
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Panning with mouse: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.usePanning = EditorGUILayout.Toggle(camera.usePanning);
+ }
+ if(camera.usePanning)
+ {
+ camera.panningKey = (KeyCode)EditorGUILayout.EnumPopup("Panning when holding: ", camera.panningKey);
+ camera.panningSpeed = EditorGUILayout.FloatField("Panning speed: ", camera.panningSpeed);
+ }
+
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Limit movement: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.limitMap = EditorGUILayout.Toggle(camera.limitMap);
+ }
+ if (camera.limitMap)
+ {
+ camera.limitX = EditorGUILayout.FloatField("Limit X: ", camera.limitX);
+ camera.limitY = EditorGUILayout.FloatField("Limit Y: ", camera.limitY);
+ }
+
+ GUILayout.Label("Follow target", EditorStyles.boldLabel);
+ camera.targetFollow = EditorGUILayout.ObjectField("Target to follow: ", camera.targetFollow, typeof(Transform)) as Transform;
+ camera.targetOffset = EditorGUILayout.Vector3Field("Target offset: ", camera.targetOffset);
+ camera.followingSpeed = EditorGUILayout.FloatField("Following speed: ", camera.followingSpeed);
+ }
+
+ private void RotationTab()
+ {
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Keyboard input: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.useKeyboardRotation = EditorGUILayout.Toggle(camera.useKeyboardRotation);
+ }
+ if(camera.useKeyboardRotation)
+ {
+ camera.rotateLeftKey = (KeyCode)EditorGUILayout.EnumPopup("Rotate left: ", camera.rotateLeftKey);
+ camera.rotateRightKey = (KeyCode)EditorGUILayout.EnumPopup("Rotate right: ", camera.rotateRightKey);
+ camera.rotationSped = EditorGUILayout.FloatField("Keyboard rotation speed", camera.rotationSped);
+ }
+
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Mouse input: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.useMouseRotation = EditorGUILayout.Toggle(camera.useMouseRotation);
+ }
+ if(camera.useMouseRotation)
+ {
+ camera.mouseRotationKey = (KeyCode)EditorGUILayout.EnumPopup("Mouse rotation key: ", camera.mouseRotationKey);
+ camera.mouseRotationSpeed = EditorGUILayout.FloatField("Mouse rotation speed: ", camera.mouseRotationSpeed);
+ }
+ }
+
+ private void HeightTab()
+ {
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Auto height: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.autoHeight = EditorGUILayout.Toggle(camera.autoHeight);
+ }
+ if (camera.autoHeight)
+ {
+ camera.heightDampening = EditorGUILayout.FloatField("Height dampening: ", camera.heightDampening);
+ EditorGUILayout.PropertyField(serializedObject.FindProperty("groundMask"));
+ }
+
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Keyboard zooming: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.useKeyboardZooming = EditorGUILayout.Toggle(camera.useKeyboardZooming);
+ }
+ if(camera.useKeyboardZooming)
+ {
+ camera.zoomInKey = (KeyCode)EditorGUILayout.EnumPopup("Zoom In: ", camera.zoomInKey);
+ camera.zoomOutKey = (KeyCode)EditorGUILayout.EnumPopup("Zoom Out: ", camera.zoomOutKey);
+ camera.keyboardZoomingSensitivity = EditorGUILayout.FloatField("Keyboard sensitivity: ", camera.keyboardZoomingSensitivity);
+ }
+
+ using (new HorizontalBlock())
+ {
+ GUILayout.Label("Scrollwheel zooming: ", EditorStyles.boldLabel, GUILayout.Width(170f));
+ camera.useScrollwheelZooming = EditorGUILayout.Toggle(camera.useScrollwheelZooming);
+ }
+ if (camera.useScrollwheelZooming)
+ camera.scrollWheelZoomingSensitivity = EditorGUILayout.FloatField("Scrollwheel sensitivity: ", camera.scrollWheelZoomingSensitivity);
+
+ if (camera.useScrollwheelZooming || camera.useKeyboardZooming)
+ {
+ using (new HorizontalBlock())
+ {
+ camera.maxHeight = EditorGUILayout.FloatField("Max height: ", camera.maxHeight);
+ camera.minHeight = EditorGUILayout.FloatField("Min height: ", camera.minHeight);
+ }
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs.meta b/Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs.meta
new file mode 100644
index 0000000..2c39be4
--- /dev/null
+++ b/Assets/Packages/RTS_Camera/Scripts/Editor/RTS_CameraEditor.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: f43923eb579b5ab44bc30687c03d3abe
+timeCreated: 1438769886
+licenseType: Store
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant: