using System; using FS_Atmo; using UnityEngine; public class DoorTrigger : MonoBehaviour { private SphereCollider trigger; private BoxCollider boxCollider; private SimpleOpenClose simpleOpenClose; private bool playerInTrigger; public static event Action OnDoorOpen; public static event Action OnDoorClose; private void Start() { trigger = GetComponent(); if (trigger == null) { Debug.LogWarning("SphereCollider not found on " + base.gameObject.name); } else { trigger.isTrigger = true; } boxCollider = GetComponent(); simpleOpenClose = GetComponent(); if (simpleOpenClose == null) { Debug.LogError("SimpleOpenClose component not found on " + base.gameObject.name); } } private void Update() { if (playerInTrigger) { if (!simpleOpenClose.objectOpen) { simpleOpenClose.BroadcastMessage("ObjectClicked"); DoorTrigger.OnDoorOpen?.Invoke(this); } } else if (simpleOpenClose.objectOpen) { simpleOpenClose.BroadcastMessage("ObjectClicked"); DoorTrigger.OnDoorClose?.Invoke(this); } } private void OnTriggerEnter(Collider other) { if (other.gameObject.layer == LayerMask.NameToLayer("Player")) { playerInTrigger = true; } } private void OnTriggerExit(Collider other) { if (other.gameObject.layer == LayerMask.NameToLayer("Player")) { playerInTrigger = false; } } }