Files
kridoo 6e91a0c7f0 111
2025-09-15 17:32:08 +08:00

82 lines
2.8 KiB
C#

/* SimpleLOD 1.5a */
/* By Orbcreation BV */
/* Richard Knol */
/* March 18, 2015 */
/* Note: if you also use other packages by Orbcreation, */
/* you may end up with multiple copies of this file. */
/* In that case, better delete/merge those files into 1. */
using UnityEngine;
using System;
using System.Collections;
namespace OrbCreationExtensions
{
public static class RectExtensions
{
public static bool MouseInRect(this Rect rect, Vector2 point) {
return rect.Contains(point);
}
public static bool MouseInRect(this Rect rect) {
Vector2 point = Input.mousePosition;
point.y = (Screen.height - point.y);
return rect.MouseInRect(point);
}
public static bool MouseInRect(this Rect rect, Rect parentRect, Vector2 point) {
rect.x += parentRect.x;
rect.y += parentRect.y;
return rect.MouseInRect(point);
}
public static bool MouseInRect(this Rect rect, Rect parentRect) {
Vector2 point = Input.mousePosition;
point.y = (Screen.height - point.y);
return rect.MouseInRect(parentRect, point);
}
public static bool MouseInRect(this Rect rect, Rect parentRect1, Rect parentRect2, Vector2 point) {
rect.x+=parentRect1.x;
rect.y+=parentRect1.y;
rect.x+=parentRect2.x;
rect.y+=parentRect2.y;
return rect.MouseInRect(point);
}
public static bool MouseInRect(this Rect rect, Rect parentRect1, Rect parentRect2) {
Vector2 point = Input.mousePosition;
point.y = (Screen.height - point.y);
return rect.MouseInRect(parentRect1, parentRect2, point);
}
public static Vector2 RelativeMousePosInRect(this Rect rect, Vector2 point) {
Vector2 relativePoint = new Vector2(-1,-1);
if(rect.Contains(point)) {
relativePoint.x = point.x - rect.x;
if(rect.width > 0.0f) relativePoint.x = Mathf.Abs(relativePoint.x / rect.width);
relativePoint.y = point.y - rect.y;
if(rect.height > 0.0f) relativePoint.y = 1.0f - Mathf.Abs(relativePoint.y / rect.height);
}
return relativePoint;
}
public static Vector2 RelativeMousePosInRect(this Rect rect) {
Vector2 point = Input.mousePosition;
point.y = (Screen.height - point.y);
return rect.RelativeMousePosInRect(point);
}
public static Rect RelativeRectInImage(this Rect r, Texture2D img) {
return new Rect(r.x / img.width, 1.0f - ((r.y + r.height) / img.height), r.width / img.width, r.height / img.height);
}
public static float MaxExtents(this Bounds b) {
return Mathf.Max(Mathf.Max(b.extents.x, b.extents.y), b.extents.z);
}
public static float MaxSize(this Bounds b) {
return Mathf.Max(Mathf.Max(b.size.x, b.size.y), b.size.z);
}
public static float MinExtents(this Bounds b) {
return Mathf.Min(Mathf.Min(b.extents.x, b.extents.y), b.extents.z);
}
public static float MinSize(this Bounds b) {
return Mathf.Min(Mathf.Min(b.size.x, b.size.y), b.size.z);
}
}
}