1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
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);
}
}
}
}
}
|