74 lines
2.3 KiB
C#
74 lines
2.3 KiB
C#
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<Collider>();
|
|
}
|
|
|
|
BoxCollider boxCollider = collider.GetComponent<BoxCollider>();
|
|
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<Collider>();
|
|
}
|
|
|
|
BoxCollider boxCollider = collider.GetComponent<BoxCollider>();
|
|
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|