//Handler of edit button. Set the index of the selected gizmo and save the initial position private void EditButtonHandler(int index) { if (index == GizmoCustomEditor.selectedIndex) { GizmoCustomEditor.selectedIndex = -1; } else { GizmoCustomEditor.selectedIndex = index; } //Save the position when entering edit mode GizmoCustomEditor.StartingPosition = GizmoCustomEditor.GetPositiontAt(index); SceneView.RepaintAll(); }
//Window GUI update private void OnGUI() { if (GizmoCustomEditor._gizmos != null) { float fieldWidth = position.width / 5.0f; scrollPosition = GUILayout.BeginScrollView(scrollPosition); //Columns names EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("name", GUILayout.MinWidth(100), GUILayout.MaxWidth(fieldWidth)); EditorGUILayout.LabelField(" ", GUILayout.MinWidth(100), GUILayout.MaxWidth(fieldWidth)); EditorGUILayout.LabelField("position", GUILayout.MinWidth(100), GUILayout.MaxWidth(fieldWidth)); EditorGUILayout.EndHorizontal(); for (int i = 0; i < GizmoCustomEditor._gizmos.arraySize; i++) { //Color the selected line in red if (i == GizmoCustomEditor.selectedIndex) { GUI.color = Color.red; } else { GUI.color = Color.white; } //Input fields EditorGUILayout.BeginHorizontal(); EditorGUILayout.Space(); GizmoCustomEditor.SetNameAt(i, EditorGUILayout.TextField(GizmoCustomEditor.GetNameAt(i), GUILayout.MinWidth(100), GUILayout.MaxWidth(fieldWidth))); EditorGUILayout.Space(); GizmoCustomEditor.SetPositionAt(i, EditorGUILayout.Vector3Field("", GizmoCustomEditor.GetPositiontAt(i), GUILayout.MinWidth(300), GUILayout.MaxWidth(fieldWidth * 3))); EditorGUILayout.Space(); if (GUILayout.Button("Edit", GUILayout.MinWidth(100), GUILayout.MaxWidth(fieldWidth))) { EditButtonHandler(i); } EditorGUILayout.Space(); EditorGUILayout.EndHorizontal(); EditorGUILayout.Space(); } GUILayout.EndScrollView(); } }