public static Rect Begin(float zoomScale, Rect screenCoordsArea) { GUI.EndGroup(); Rect clippedArea = screenCoordsArea.ScaleSizeBy(1.0f / zoomScale, screenCoordsArea.TopLeft()); clippedArea.y += BonWindow.TopOffset; GUI.BeginGroup(clippedArea); _prevGuiMatrix = GUI.matrix; Matrix4x4 translation = Matrix4x4.TRS(clippedArea.TopLeft(), Quaternion.identity, Vector3.one); _tmpScaleVector.Set(zoomScale, zoomScale, 1.0f); Matrix4x4 scale = Matrix4x4.Scale(_tmpScaleVector); GUI.matrix = translation * scale * translation.inverse * GUI.matrix; return clippedArea; }
public static Rect Begin(float zoomScale, Rect screenCoordsArea) { GUI.EndGroup(); // End the group Unity begins automatically for an EditorWindow to clip out the window tab. This allows us to draw outside of the size of the EditorWindow. Rect clippedArea = screenCoordsArea.ScaleSizeBy(1.0f / zoomScale, screenCoordsArea.TopLeft()); clippedArea.y += kEditorWindowTabHeight; GUI.BeginGroup(clippedArea); _prevGuiMatrix = GUI.matrix; Matrix4x4 translation = Matrix4x4.TRS(clippedArea.TopLeft(), Quaternion.identity, Vector3.one); Matrix4x4 scale = Matrix4x4.Scale(new Vector3(zoomScale, zoomScale, 1.0f)); GUI.matrix = translation * scale * translation.inverse * GUI.matrix; return clippedArea; }
private bool IsRectInRect(Rect rect1, Rect rect2) { if (rect1.Contains (rect2.BottomRight ()) || rect1.Contains (rect2.BottomLeft ()) || rect1.Contains (rect2.TopLeft ()) || rect1.Contains (rect2.TopRight ())) { return true; } return false; }
public static Rect BeginZoomArea(float zoomScale, Rect screenCoordsArea) { GUI.EndGroup(); Rect clippedArea = screenCoordsArea.ScaleSizeBy(1.0f / zoomScale, screenCoordsArea.TopLeft()); clippedArea.y += kEditorWindowTabHeight; GUI.BeginGroup(clippedArea); preZoomGUIMatrix = GUI.matrix; Matrix4x4 translation = Matrix4x4.TRS(clippedArea.TopLeft(), Quaternion.identity, Vector3.one); Matrix4x4 scale = Matrix4x4.Scale(new Vector3(zoomScale, zoomScale, 1.0f)); GUI.matrix = translation * scale * translation.inverse * GUI.matrix; return clippedArea; }
public static Rect Begin(Rect screenCoordsArea, float zoomScale) { GUI.EndGroup(); Rect rect = screenCoordsArea.ScaleSizeBy(1f / zoomScale, screenCoordsArea.TopLeft()); rect.y += 21f; GUI.BeginGroup(rect); EditorZoomArea._prevGuiMatrix = GUI.matrix; Matrix4x4 lhs = Matrix4x4.TRS(rect.TopLeft(), Quaternion.identity, Vector3.one); Vector3 one = Vector3.one; one.y = zoomScale; one.x = zoomScale; Matrix4x4 rhs = Matrix4x4.Scale(one); GUI.matrix = lhs * rhs * lhs.inverse * GUI.matrix; return rect; }