Skip to content

Commit fdba852

Browse files
Multiple Changes
- Moved tool logic out of mono behaviour and into own class. - Added option to use transform values for mesh and wire mesh modes. - Renamed files.
1 parent aef23cd commit fdba852

File tree

6 files changed

+206
-159
lines changed

6 files changed

+206
-159
lines changed

Editor/GizmoDrawer.cs

Lines changed: 3 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,6 @@ public class GizmoDrawer : MonoBehaviour
99
[SerializeField] private bool drawOnSelectOnly;
1010

1111
#region Properties
12-
[HideInInspector]
13-
public enum GizmoType
14-
{
15-
Sphere,
16-
WireSphere,
17-
18-
Cube,
19-
WireCube,
20-
21-
Mesh,
22-
WireMesh,
23-
24-
Line,
25-
LineList,
26-
LineStrip,
27-
28-
Icon,
29-
GuiTexture,
30-
}
31-
3212
//Shared
3313
[HideInInspector] public Transform originTransform;
3414
[HideInInspector] public Vector3 originPos;
@@ -48,7 +28,7 @@ public enum GizmoType
4828
// Mesh
4929
[HideInInspector] public Mesh mesh;
5030
[HideInInspector] public Vector3 meshRotation;
51-
31+
[HideInInspector] public bool useTransformValues;
5232
//Line
5333
[HideInInspector] public Transform targetTransform;
5434
[HideInInspector] public Vector3 targetPosition;
@@ -79,118 +59,13 @@ public enum GizmoType
7959
private void OnDrawGizmosSelected()
8060
{
8161
if (drawOnSelectOnly)
82-
DrawGizmo(this);
62+
GizmoTool.DrawGizmo(this);
8363
}
8464

8565
private void OnDrawGizmos()
8666
{
8767
if (!drawOnSelectOnly)
88-
DrawGizmo(this);
89-
}
90-
91-
static Vector3 LineTargetPosition(GizmoDrawer drawer)
92-
{
93-
if (drawer.targetTransform != null)
94-
{
95-
return drawer.targetTransform.position;
96-
}
97-
98-
return drawer.targetPosition;
99-
}
100-
101-
static Vector3 OriginPosition(GizmoDrawer drawer)
102-
{
103-
if (drawer.originTransform != null)
104-
{
105-
return drawer.originTransform.position;
106-
}
107-
else
108-
{
109-
return drawer.originPos;
110-
}
111-
}
112-
113-
static void SyncPositionArrays(GizmoDrawer drawer, out Vector3[] points, out Transform[] transforms)
114-
{
115-
points = drawer.points;
116-
transforms = drawer.transformPoints;
117-
118-
if (transforms.Length > 0)
119-
{
120-
points = new Vector3[transforms.Length];
121-
122-
for (int i = 0; i < transforms.Length; i++)
123-
{
124-
if (transforms[i] != null)
125-
{
126-
points[i] = transforms[i].position;
127-
}
128-
}
129-
}
130-
}
131-
132-
static void DrawGizmo(GizmoDrawer drawer)
133-
{
134-
drawer.originPos = OriginPosition(drawer);
135-
var origin = drawer.originPos;
136-
137-
var scale = drawer.scale;
138-
139-
switch (drawer.gizmoType)
140-
{
141-
case GizmoType.Sphere:
142-
GizmoUtil.DrawSphere(origin, drawer.floatRadius, drawer.gizmoColor);
143-
break;
144-
145-
case GizmoType.Cube:
146-
GizmoUtil.DrawCube(origin, scale, drawer.gizmoColor);
147-
break;
148-
149-
case GizmoType.WireSphere:
150-
GizmoUtil.DrawWireSphere(origin, drawer.floatRadius, drawer.gizmoColor);
151-
break;
152-
153-
case GizmoType.WireCube:
154-
GizmoUtil.DrawWireCube(origin, scale, drawer.gizmoColor);
155-
break;
156-
157-
case GizmoType.Icon:
158-
GizmoUtil.DrawIcon(origin, drawer.filePathString, drawer.allowScaling, drawer.gizmoColor);
159-
break;
160-
161-
case GizmoType.Mesh:
162-
var rotation = Quaternion.Euler(drawer.meshRotation);
163-
GizmoUtil.DrawMesh(drawer.mesh, origin, rotation, scale, drawer.gizmoColor);
164-
break;
165-
166-
case GizmoType.WireMesh:
167-
rotation = Quaternion.Euler(drawer.meshRotation);
168-
GizmoUtil.DrawWireMesh(drawer.mesh, origin, rotation, scale, drawer.gizmoColor);
169-
break;
170-
171-
case GizmoType.Line:
172-
drawer.targetPosition = LineTargetPosition(drawer);
173-
GizmoUtil.DrawLine(origin, drawer.targetPosition, drawer.gizmoColor);
174-
break;
175-
176-
case GizmoType.LineList or GizmoType.LineStrip:
177-
178-
if (drawer.useTransformArray)
179-
{
180-
SyncPositionArrays(drawer, out drawer.points, out drawer.transformPoints);
181-
}
182-
183-
if (drawer.gizmoType == GizmoType.LineStrip)
184-
GizmoUtil.DrawLineStrip(drawer.points, drawer.gizmoColor, drawer.looped);
185-
else
186-
GizmoUtil.DrawLineList(drawer.points, drawer.gizmoColor);
187-
break;
188-
189-
case GizmoType.GuiTexture:
190-
if (drawer.texture != null)
191-
GizmoUtil.DrawGuiTexture(drawer.screenRect, drawer.texture, drawer.mat);
192-
break;
193-
}
68+
GizmoTool.DrawGizmo(this);
19469
}
19570
}
19671
#endif

Editor/GizmoDrawerInspector.cs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ public class GizmoDrawerInspector : Editor
3030
serProp_lineLoopedBool,
3131
serProp_screenRect,
3232
serProp_texture,
33-
serProp_mat;
33+
serProp_mat,
34+
serProp_useTransfromVals;
3435
#endregion
3536

3637
GizmoDrawer gizmoDrawer;
@@ -65,6 +66,8 @@ private void OnEnable()
6566
serProp_screenRect = serializedObject.FindProperty("screenRect");
6667
serProp_texture = serializedObject.FindProperty("texture");
6768
serProp_mat = serializedObject.FindProperty("mat");
69+
70+
serProp_useTransfromVals = serializedObject.FindProperty("useTransformValues");
6871
}
6972

7073
public override void OnInspectorGUI()
@@ -106,45 +109,49 @@ public override void OnInspectorGUI()
106109
SceneView.RepaintAll();
107110
}
108111

109-
static void DrawInspector(GizmoDrawer.GizmoType type, GizmoDrawerInspector editor, out bool showColour, out bool showSingleOrigin)
112+
static void DrawInspector(GizmoType type, GizmoDrawerInspector editor, out bool showColour, out bool showSingleOrigin)
110113
{
111114
showSingleOrigin = false;
112115
showColour = false;
113116

114117
switch (type)
115118
{
116-
case GizmoDrawer.GizmoType.Sphere or GizmoDrawer.GizmoType.WireSphere:
119+
case GizmoType.Sphere or GizmoType.WireSphere:
117120
showSingleOrigin = true;
118121

119122
showColour = true;
120123
EditorGUILayout.PropertyField(editor.serProp_floatRadius);
121124
break;
122125

123-
case GizmoDrawer.GizmoType.Cube or GizmoDrawer.GizmoType.WireCube:
126+
case GizmoType.Cube or GizmoType.WireCube:
124127
showSingleOrigin = true;
125128

126129
showColour = true;
127130
EditorGUILayout.PropertyField(editor.serProp_vec3Scale);
128131
break;
129132

130-
case GizmoDrawer.GizmoType.Icon:
133+
case GizmoType.Icon:
131134
showSingleOrigin = true;
132135
showColour = true;
133136

134137
EditorGUILayout.PropertyField(editor.serProp_filePathString);
135138
EditorGUILayout.PropertyField(editor.serProp_allowScalingBool);
136139
break;
137140

138-
case GizmoDrawer.GizmoType.Mesh or GizmoDrawer.GizmoType.WireMesh:
141+
case GizmoType.Mesh or GizmoType.WireMesh:
139142
showSingleOrigin = true;
140143
showColour = true;
141144

142145
EditorGUILayout.PropertyField(editor.serProp_mesh);
146+
EditorGUILayout.PropertyField(editor.serProp_useTransfromVals);
147+
148+
if (editor.serProp_useTransfromVals.boolValue == true) return;
149+
143150
EditorGUILayout.PropertyField(editor.serProp_meshRot);
144151
EditorGUILayout.PropertyField(editor.serProp_vec3Scale);
145152
break;
146153

147-
case GizmoDrawer.GizmoType.Line:
154+
case GizmoType.Line:
148155
showSingleOrigin = true;
149156
showColour = true;
150157

@@ -157,13 +164,13 @@ static void DrawInspector(GizmoDrawer.GizmoType type, GizmoDrawerInspector edito
157164
}
158165
break;
159166

160-
case GizmoDrawer.GizmoType.LineList or GizmoDrawer.GizmoType.LineStrip:
167+
case GizmoType.LineList or GizmoType.LineStrip:
161168
showSingleOrigin = false;
162169
showColour = true;
163170

164171
EditorGUILayout.PropertyField(editor.serProp_useTransformArrayBool);
165172

166-
if (type == GizmoDrawer.GizmoType.LineStrip)
173+
if (type == GizmoType.LineStrip)
167174
EditorGUILayout.PropertyField(editor.serProp_lineLoopedBool);
168175

169176
if (editor.gizmoDrawer.useTransformArray)
@@ -176,7 +183,7 @@ static void DrawInspector(GizmoDrawer.GizmoType type, GizmoDrawerInspector edito
176183
}
177184
break;
178185

179-
case GizmoDrawer.GizmoType.GuiTexture:
186+
case GizmoType.GuiTexture:
180187
showSingleOrigin = true;
181188
showColour = false;
182189
EditorGUILayout.PropertyField(editor.serProp_texture);

0 commit comments

Comments
 (0)