This commit is contained in:
CortexCore
2024-04-16 04:06:46 +08:00
parent 37e7fcea51
commit c798b224be
67 changed files with 1305 additions and 425 deletions

View File

@@ -17,6 +17,7 @@ namespace BITKit.Sensors
/// </summary>
public interface ISensor
{
int Id { get; }
/// <summary>
/// 自动更新
/// </summary>
@@ -45,7 +46,7 @@ namespace BITKit.Sensors
/// 传感器执行检测
/// </summary>
/// <returns></returns>
UniTask Execute();
UniTask Execute(float delta);
}
[Serializable]
@@ -53,6 +54,8 @@ namespace BITKit.Sensors
{
[SerializeField] private GameObject gameObject;
private ISensor _sensorImplementation => gameObject.GetComponent<ISensor>();
public int Id => _sensorImplementation.Id;
public IEnumerable<Transform> Get()
{
return _sensorImplementation.Get();
@@ -67,10 +70,9 @@ namespace BITKit.Sensors
{
return _sensorImplementation.GetDistance();
}
public UniTask Execute()
public UniTask Execute(float delta)
{
return _sensorImplementation.Execute();
return _sensorImplementation.Execute(delta);
}
}
[System.Serializable]
@@ -78,6 +80,8 @@ namespace BITKit.Sensors
{
[SerializeField] private MonoBehaviour monoBehaviour;
private ISensor _sensorImplementation=>monoBehaviour as ISensor;
public int Id => _sensorImplementation.Id;
public IEnumerable<Transform> Get()
{
return _sensorImplementation.Get();
@@ -93,9 +97,9 @@ namespace BITKit.Sensors
return _sensorImplementation.GetDistance();
}
public UniTask Execute()
public UniTask Execute(float delta)
{
return _sensorImplementation.Execute();
return _sensorImplementation.Execute(delta);
}
}
public abstract class Sensor : MonoBehaviour, ISensor
@@ -106,16 +110,15 @@ namespace BITKit.Sensors
[Header(Constant.Header.Gameobjects)]
public Collider[] ignoreColliders;
[Header(Constant.Header.InternalVariables)]
[NonSerialized]
[SerializeField,ReadOnly]
public Transform[] detected = Array.Empty<Transform>();
public abstract IEnumerable<Transform> Get();
public abstract bool IsValid(Collider _collider);
public abstract UniTask Execute();
public abstract float GetDistance();
public virtual UniTask Execute(float delta)=>UniTask.CompletedTask;
public int Id { get; private set; }
bool ISensor.AutoUpdate => autoUpdate;
protected int Id;
protected Transform Transform;
protected virtual void OnEnable()

View File

@@ -0,0 +1,16 @@
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace BITKit.Sensors
{
public interface ISensorTarget
{
public int Id { get; }
Bounds Bounds { get; }
Transform Transform { get; }
void Detected(float weight,ISensor sensor,object sender);
event Action<float, ISensor, object> OnDetected;
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d6b2f04f438f7bd4c812fb6441a5ca4a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: