update
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
@@ -13,6 +14,7 @@ namespace BITKit.Sensors
|
||||
public float radius;
|
||||
public int fov;
|
||||
public bool requireSight;
|
||||
public bool autoUpdate;
|
||||
[Header(Constant.Header.Settings)]
|
||||
public LayerMask blockLayer;
|
||||
[Header(Constant.Header.InternalVariables)]
|
||||
@@ -25,6 +27,14 @@ namespace BITKit.Sensors
|
||||
Vector3 dir;
|
||||
float maxDistance;
|
||||
public override IEnumerable<Transform> Get() => detecteds;
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (autoUpdate)
|
||||
{
|
||||
Execute().Forget();
|
||||
}
|
||||
}
|
||||
public override UniTask Execute()
|
||||
{
|
||||
if (frameUpdater)
|
||||
@@ -120,4 +130,7 @@ namespace BITKit.Sensors
|
||||
return Vector3.Distance(collider.transform.position, transform.position) <= radius;
|
||||
}
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
|
||||
#endif
|
||||
}
|
@@ -28,25 +28,16 @@ namespace BITKit.Sensors
|
||||
// ReSharper disable once FieldCanBeMadeReadOnly.Local
|
||||
private List<Collider> detected = new();
|
||||
|
||||
private Queue<Collider> triggerEnterQueue=new();
|
||||
private Queue<Collider> triggerExitQueue=new();
|
||||
private readonly Queue<Collider> triggerEnterQueue=new();
|
||||
private readonly Queue<Collider> triggerExitQueue=new();
|
||||
|
||||
|
||||
private void OnTriggerEnter(Collider _collider)
|
||||
{
|
||||
triggerEnterQueue.Enqueue(_collider);
|
||||
|
||||
// if (IsValid(_collider) is false) return;
|
||||
// if (detected.Contains(_collider)) return;
|
||||
// detected.Add(_collider);
|
||||
// onDetected.Invoke(_collider);
|
||||
}
|
||||
private void OnTriggerExit(Collider _collider)
|
||||
{
|
||||
triggerExitQueue.Enqueue(_collider);
|
||||
// if (IsValid(_collider) is false) return;
|
||||
// if (!detected.Remove(_collider)) return;
|
||||
// onLost.Invoke(_collider);
|
||||
}
|
||||
|
||||
private void OnCollisionEnter(Collision collision)
|
||||
@@ -102,7 +93,36 @@ namespace BITKit.Sensors
|
||||
}
|
||||
}
|
||||
#if UNITY_EDITOR
|
||||
[CustomEditor(typeof(TriggerSensor))]
|
||||
[CustomEditor(typeof(Sensor),true)]
|
||||
public class SensorInspector:BITInspector<Sensor>
|
||||
{
|
||||
private VisualElement detectedContainer;
|
||||
public override VisualElement CreateInspectorGUI()
|
||||
{
|
||||
FillDefaultInspector();
|
||||
|
||||
detectedContainer = root.Create<VisualElement>();
|
||||
|
||||
return root;
|
||||
}
|
||||
protected override void OnUpdate()
|
||||
{
|
||||
if (detectedContainer is null) return;
|
||||
detectedContainer.Clear();
|
||||
foreach (var x in agent.Get())
|
||||
{
|
||||
|
||||
ObjectField objectField = new()
|
||||
{
|
||||
objectType = x.GetType(),
|
||||
value = x,
|
||||
};
|
||||
objectField.SetEnabled(false);
|
||||
detectedContainer.Add(objectField);
|
||||
}
|
||||
}
|
||||
}
|
||||
[CustomEditor(typeof(TriggerSensor),true)]
|
||||
public class TriggerSensorInspector:BITInspector<TriggerSensor>
|
||||
{
|
||||
private VisualElement detectedContainer;
|
||||
|
Reference in New Issue
Block a user