Added many other things and processings

This commit is contained in:
2026-08-13 17:55:05 +03:00
parent 36ecac038a
commit 3c490bdae8
625 changed files with 929224 additions and 151067 deletions
@@ -5,6 +5,8 @@ public sealed class StartRoomZone : MonoBehaviour
{
[SerializeField] private Collider roomCollider;
public Collider RoomCollider => roomCollider;
private void Awake()
{
if (roomCollider == null)
@@ -14,6 +16,56 @@ public sealed class StartRoomZone : MonoBehaviour
public bool Contains(Vector3 worldPosition) =>
roomCollider != null && roomCollider.bounds.Contains(worldPosition);
public bool TryGetRandomSpawnPosition(
float edgePadding,
float heightAboveFloor,
out Vector3 position)
{
if (roomCollider == null)
{
position = default;
return false;
}
edgePadding = Mathf.Max(0f, edgePadding);
heightAboveFloor = Mathf.Max(0f, heightAboveFloor);
if (roomCollider is BoxCollider boxCollider)
{
Vector3 lossyScale = boxCollider.transform.lossyScale;
float localPaddingX = edgePadding / Mathf.Max(Mathf.Abs(lossyScale.x), 0.0001f);
float localPaddingZ = edgePadding / Mathf.Max(Mathf.Abs(lossyScale.z), 0.0001f);
Vector3 halfSize = boxCollider.size * 0.5f;
float availableX = Mathf.Max(0f, halfSize.x - localPaddingX);
float availableZ = Mathf.Max(0f, halfSize.z - localPaddingZ);
Vector3 localPosition = boxCollider.center + new Vector3(
Random.Range(-availableX, availableX),
-halfSize.y,
Random.Range(-availableZ, availableZ));
position = boxCollider.transform.TransformPoint(localPosition) +
Vector3.up * heightAboveFloor;
return true;
}
Bounds bounds = roomCollider.bounds;
float minX = bounds.min.x + edgePadding;
float maxX = bounds.max.x - edgePadding;
float minZ = bounds.min.z + edgePadding;
float maxZ = bounds.max.z - edgePadding;
if (minX > maxX)
minX = maxX = bounds.center.x;
if (minZ > maxZ)
minZ = maxZ = bounds.center.z;
position = new Vector3(
Random.Range(minX, maxX),
bounds.min.y + heightAboveFloor,
Random.Range(minZ, maxZ));
return true;
}
private void OnDrawGizmosSelected()
{
Collider targetCollider = roomCollider != null ? roomCollider : GetComponent<Collider>();