using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Beyond { [RequireComponent(typeof(BoxCollider))] public class BoxVolume : StreamingAsset { protected override void Draw() { if (collider == null) { collider = GetComponent(); } BoxCollider boxCollider = collider.GetComponent(); if (boxCollider) { Vector3 size = new Vector3(boxCollider.size.x * transform.localScale.x, boxCollider.size.y * transform.localScale.y, boxCollider.size.z * transform.localScale.z); GizmosExtensions.DrawCube(transform.position + boxCollider.center, size, transform.rotation); } } protected override void DrawWire() { if (collider == null) { collider = GetComponent(); } BoxCollider boxCollider = collider.GetComponent(); if (boxCollider) { Vector3 size = new Vector3(boxCollider.size.x * transform.localScale.x, boxCollider.size.y * transform.localScale.y, boxCollider.size.z * transform.localScale.z); GizmosExtensions.DrawWireCube(transform.position + boxCollider.center, size, transform.rotation); } } private void CancelDeactivationCoroutine() { if (deactivation != null) { Debug.Log("StopCoroutine deactivation"); StopCoroutine(deactivation); deactivation = null; } } protected override void OnTriggerEnter(Collider other) { if (collisionLayer == 1 << other.gameObject.layer) { if (tagMask.IsInTagMask(other.tag)) { CancelDeactivationCoroutine(); SetActive(true); } } } protected override void OnTriggerExit(Collider other) { if (collisionLayer == 1 << other.gameObject.layer) { if (tagMask.IsInTagMask(other.tag)) { SetActive(false); } } } } }