void OnSceneGUI() { if (hexa == null || Application.isPlaying || !hexa.enableGridEditor) { return; } Event e = Event.current; bool gridHit = hexa.CheckRay(HandleUtility.GUIPointToWorldRay(e.mousePosition)); if (tileHighlightedIndex != hexa.lastHighlightedTileIndex) { tileHighlightedIndex = hexa.lastHighlightedTileIndex; SceneView.RepaintAll(); } int count = tileSelectedIndices.Count; for (int k = 0; k < count; k++) { int idx = tileSelectedIndices [k]; Vector3 pos = hexa.GetTileCenter(idx); Handles.color = colorSelection; Handles.DrawSolidDisc(pos, hexa.tiles [idx].center, HandleUtility.GetHandleSize(pos) * 0.075f); } if (tileHighlightedIndex < 0) { return; } bool redraw = false; if ((e.type == EventType.MouseDown && e.isMouse && e.button == 0) || e.shift) { if (gridHit && e.type == EventType.MouseDown) { e.Use(); } if (!e.shift && tileSelectedIndices.Contains(tileHighlightedIndex)) { tileSelectedIndices.Remove(tileHighlightedIndex); } else { if (!e.control) { tileSelectedIndices.Clear(); } tileSelectedIndices.Add(tileHighlightedIndex); if (textureMode > 0) { hexa.SetTileTexture(tileHighlightedIndex, textureMode, Color.white); redraw = true; } if (!e.shift) { tileColor = hexa.GetTileColor(tileHighlightedIndex); if (tileColor.a == 0) { tileColor = Color.white; } tileTextureIndex = hexa.GetTileTextureIndex(tileHighlightedIndex); } tileTag = hexa.GetTileTag(tileHighlightedIndex); tileTagInt = hexa.GetTileTagInt(tileHighlightedIndex); EditorUtility.SetDirty(target); } } if (e.shift) { if (e.keyCode == KeyCode.S) { if (tileTextureIndex == 0) { hexa.SetTileColor(tileHighlightedIndex, tileColor); } else { hexa.SetTileTexture(tileHighlightedIndex, tileTextureIndex, tileColor, false); } redraw = true; e.Use(); } else if (e.keyCode == KeyCode.C) { hexa.ClearTile(tileHighlightedIndex); redraw = true; e.Use(); } } if (redraw) { SceneView.RepaintAll(); } if (gridHit) { Selection.activeGameObject = hexa.transform.gameObject; } }