void DrawRect(Vector3 position, Vector3 size, Color color, float faceOpacity, float outlineOpacity, bool mode2D) { var verts = new Vector3[] { position, position + new Vector3(size.x, 0, 0), position + new Vector3(size.x, 0, size.z), position + new Vector3(0, 0, size.z) }; if (mode2D) { for (int i = 0; i < verts.Length; i++) { verts[i] = DMathUtils.FlipYZ(verts[i]); } } Color faceColor = new Color(color.r, color.g, color.b, faceOpacity); Color outlineColor = new Color(color.r, color.g, color.b, outlineOpacity); Handles.DrawSolidRectangleWithOutline(verts, faceColor, outlineColor); }
void UpdateCursorPosition(DungeonPaintModeGrid mode) { float distance; var e = Event.current; Plane plane; if (mode.mode2D) { var planePoint = Vector3.zero; plane = new Plane(new Vector3(0, 0, 1), planePoint); } else { var cursorHeight = mode.GetCursorHeight(); var planePoint = new Vector3(0, cursorHeight, 0); plane = new Plane(Vector3.up, planePoint); } var ray = HandleUtility.GUIPointToWorldRay(e.mousePosition); if (plane.Raycast(ray, out distance)) { var hitpoint = ray.GetPoint(distance); if (mode.mode2D) { hitpoint = DMathUtils.FlipYZ(hitpoint); } hitpoint = SnapToGrid(hitpoint); cursorPosition = hitpoint; if (!mode.mode2D) { if (e.type == EventType.ScrollWheel) { var delta = (int)Mathf.Sign(e.delta.y); mode.SetElevationDelta(delta); } } } }