101 lines
2.3 KiB
C#
101 lines
2.3 KiB
C#
using UnityEngine;
|
|
|
|
public class RoomSelectOpenClose : MonoBehaviour
|
|
{
|
|
[Header("References")]
|
|
[SerializeField] private GameObject roomSelectRoot;
|
|
[SerializeField] private RoomSelectManager roomSelectManager;
|
|
[SerializeField] private Transform targetCamera;
|
|
|
|
[Header("Open Options")]
|
|
[SerializeField] private bool openOnStart = false;
|
|
[SerializeField] private bool placeInFrontOfCameraOnOpen = true;
|
|
[SerializeField] private bool faceCameraOnOpen = true;
|
|
[SerializeField] private float distanceFromCamera = 2.2f;
|
|
[SerializeField] private float verticalOffset = -0.1f;
|
|
|
|
private void Reset()
|
|
{
|
|
roomSelectRoot = gameObject;
|
|
roomSelectManager = GetComponent<RoomSelectManager>();
|
|
}
|
|
|
|
private void Awake()
|
|
{
|
|
if (roomSelectRoot == null)
|
|
{
|
|
roomSelectRoot = gameObject;
|
|
}
|
|
|
|
if (roomSelectManager == null)
|
|
{
|
|
roomSelectManager = roomSelectRoot.GetComponent<RoomSelectManager>();
|
|
}
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
if (openOnStart)
|
|
{
|
|
Open();
|
|
}
|
|
else
|
|
{
|
|
Close();
|
|
}
|
|
}
|
|
|
|
public void Open()
|
|
{
|
|
if (targetCamera == null && Camera.main != null)
|
|
{
|
|
targetCamera = Camera.main.transform;
|
|
}
|
|
|
|
if (placeInFrontOfCameraOnOpen && targetCamera != null)
|
|
{
|
|
Vector3 targetPosition = targetCamera.position + targetCamera.forward * distanceFromCamera;
|
|
targetPosition.y += verticalOffset;
|
|
roomSelectRoot.transform.position = targetPosition;
|
|
}
|
|
|
|
if (faceCameraOnOpen && targetCamera != null)
|
|
{
|
|
roomSelectRoot.transform.LookAt(targetCamera);
|
|
roomSelectRoot.transform.Rotate(0f, 180f, 0f);
|
|
}
|
|
|
|
roomSelectRoot.SetActive(true);
|
|
|
|
if (roomSelectManager != null)
|
|
{
|
|
roomSelectManager.RefreshAll();
|
|
}
|
|
}
|
|
|
|
public void Close()
|
|
{
|
|
if (roomSelectRoot != null)
|
|
{
|
|
roomSelectRoot.SetActive(false);
|
|
}
|
|
}
|
|
|
|
public void Toggle()
|
|
{
|
|
if (roomSelectRoot == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if (roomSelectRoot.activeSelf)
|
|
{
|
|
Close();
|
|
}
|
|
else
|
|
{
|
|
Open();
|
|
}
|
|
}
|
|
}
|