void OnSceneGUI() { int controlId = GUIUtility.GetControlID(FocusType.Passive); Event e = Event.current; switch (e.type) { case EventType.MouseDown: Vector2 pos = GetMousePosition(e); pos.x -= g.transform.position.x; pos.y -= g.transform.position.y; pos.y *= -1; if (pos.x > 0 && pos.y > 0 && pos.x < g.MaxX && pos.y < g.MaxY) { Grid.Coords c = new Grid.Coords() { x = Mathf.FloorToInt(pos.x), y = Mathf.FloorToInt(pos.y) }; if (!e.control && !e.shift) { g.UnSelect(); } if (e.shift && g.selected.Count > 0) { int minX = Mathf.Min(g.selected[0].x, c.x); int minY = Mathf.Min(g.selected[0].y, c.y); int maxX = Mathf.Max(g.selected[0].x, c.x); int maxY = Mathf.Max(g.selected[0].y, c.y); for (int X = minX; X <= maxX; X++) { for (int Y = minY; Y <= maxY; Y++) { g.AddSelected(new Grid.Coords() { x = X, y = Y }); } } } else { g.AddSelected(c); } GUIUtility.hotControl = controlId; e.Use(); } break; } }
void OnSceneGUI() { int controlId = GUIUtility.GetControlID(FocusType.Passive); Event e = Event.current; switch (e.type) { case EventType.MouseDown: Vector2 pos = GetMousePosition(e); pos.x -= g.transform.position.x; pos.y -= g.transform.position.y; pos.y *= -1; if (pos.x > 0 && pos.y > 0 && pos.x < g.MaxX && pos.y < g.MaxY) { Grid.Coords c = new Grid.Coords() { x = Mathf.FloorToInt(pos.x), y = Mathf.FloorToInt(pos.y) }; if (!e.control&& ! e.shift) { g.UnSelect(); } if (e.shift && g.selected.Count >0) { int minX = Mathf.Min(g.selected[0].x, c.x); int minY = Mathf.Min(g.selected[0].y, c.y); int maxX = Mathf.Max(g.selected[0].x, c.x); int maxY = Mathf.Max(g.selected[0].y, c.y); for (int X = minX; X <= maxX; X++) { for (int Y = minY; Y <= maxY; Y++) { g.AddSelected(new Grid.Coords() { x = X, y =Y}); } } } else { g.AddSelected(c); } GUIUtility.hotControl = controlId; e.Use(); } break; } }