From f36b42864951ba12a6155f9969196faac0111165 Mon Sep 17 00:00:00 2001 From: alexomur Date: Mon, 7 Jul 2025 20:54:29 +0300 Subject: [PATCH] Relative Room Extensions Relative Room Extensions --- Features/Extensions/RoomExtensions.cs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Features/Extensions/RoomExtensions.cs b/Features/Extensions/RoomExtensions.cs index 36108eb..d92ef84 100644 --- a/Features/Extensions/RoomExtensions.cs +++ b/Features/Extensions/RoomExtensions.cs @@ -3,6 +3,7 @@ using NorthwoodLib.Pools; using ProjectMER.Features.Serializable; using UnityEngine; +using Random = UnityEngine.Random; namespace ProjectMER.Features.Extensions; @@ -48,4 +49,24 @@ public static Quaternion GetAbsoluteRotation(this Room? room, Vector3 eulerAngle return room.Transform.rotation * Quaternion.Euler(eulerAngles); } + + public static Vector3 GetRelativePosition(this Room room, Vector3 position) + => room.Transform.InverseTransformPoint(position); + + public static Quaternion GetRelativeRotation(this Room? room, Vector3 rotation) + { + if (Mathf.Approximately(rotation.x, -1f)) + rotation.x = Random.Range(0f, 360f); + + if (Mathf.Approximately(rotation.y, -1f)) + rotation.y = Random.Range(0f, 360f); + + if (Mathf.Approximately(rotation.z, -1f)) + rotation.z = Random.Range(0f, 360f); + + if (room == null) + return Quaternion.Euler(rotation); + + return room.Zone == FacilityZone.Surface ? Quaternion.Euler(rotation) : room.Transform.rotation * Quaternion.Euler(rotation); + } }