77 lines
2.4 KiB
C#
77 lines
2.4 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using Cysharp.Threading.Tasks;
|
|
using Main;
|
|
using Stary.Evo;
|
|
using UnityEngine;
|
|
using YooAsset;
|
|
|
|
namespace Main
|
|
{
|
|
public class PointController : MonoBehaviour, IController
|
|
{
|
|
public ZoneController ZoneController;
|
|
private SphereCollider sphereCollider;
|
|
|
|
private IUnRegister _onTriggerEnterUnRegister;
|
|
private IUnRegister _onTriggerExitUnRegister;
|
|
|
|
public void Init(ZoneController ZoneController, PointData pointData)
|
|
{
|
|
this.ZoneController = ZoneController;
|
|
name = pointData.name;
|
|
//根据数据设置zone 碰撞盒
|
|
transform.localPosition = pointData.position;
|
|
transform.localRotation = Quaternion.Euler(pointData.rotation);
|
|
transform.localScale = pointData.scale;
|
|
sphereCollider = this.transform.GetOrAddComponent<SphereCollider>();
|
|
|
|
_onTriggerEnterUnRegister = this.OnTriggerEnterEvent(OnPointTriggerEnterEvent);
|
|
_onTriggerExitUnRegister = this.OnTriggerExitEvent(OnPointriggerExitEvent);
|
|
this.gameObject.SetActive(false);
|
|
}
|
|
|
|
public void OnPointTriggerEnterEvent(Collider collider)
|
|
{
|
|
if (collider.gameObject.CompareTag("MainCamera"))
|
|
{
|
|
// ZoneController.OpenPoint(this);
|
|
Debug.Log("OnPointTriggerEnterEvent");
|
|
}
|
|
}
|
|
|
|
public void OnPointriggerExitEvent(Collider collider)
|
|
{
|
|
if (collider.gameObject.CompareTag("MainCamera"))
|
|
{
|
|
// ZoneController.OpenPoint(this);
|
|
Debug.Log("OnPointTriggerEnterEvent");
|
|
}
|
|
}
|
|
|
|
public IArchitecture GetArchitecture()
|
|
{
|
|
return MainArchitecture.Interface;
|
|
}
|
|
}
|
|
|
|
public class ZoneColliderEntity
|
|
{
|
|
public string Name { get; set; }
|
|
public BoxCollider ZoneCollider { get; set; }
|
|
|
|
public Func<Collider> EntorComplete { get; set; }
|
|
|
|
public Func<Collider> ExitComplete { get; set; }
|
|
public PointColliderEntity[] PointColliderEntities { get; set; }
|
|
}
|
|
|
|
public class PointColliderEntity
|
|
{
|
|
public string Name { get; set; }
|
|
public bool IsTrigger { get; set; }
|
|
public SphereCollider PointCollider { get; set; }
|
|
|
|
public Func<Collider> EntorComplete { get; set; }
|
|
}
|
|
} |