This commit is contained in:
CortexCore
2024-03-31 23:31:00 +08:00
parent e179d2eb53
commit b7b89ee71a
641 changed files with 31286 additions and 22134 deletions

View File

@@ -28,20 +28,21 @@ namespace BITKit.Sensors
[Header(Constant.Header.InternalVariables)]
// ReSharper disable once FieldCanBeMadeReadOnly.Local
private List<Collider> detected = new();
private readonly Queue<Collider> triggerEnterQueue=new();
private readonly Queue<Collider> triggerExitQueue=new();
private readonly Queue<Collider> triggerEnterQueue = new();
private readonly Queue<Collider> triggerExitQueue = new();
private bool diagnosisNextFrame;
private void OnTriggerEnter(Collider _collider)
{
triggerEnterQueue.Enqueue(_collider);
if(immediately)Rebuild();
if (immediately) Rebuild();
}
private void OnTriggerExit(Collider _collider)
{
triggerExitQueue.Enqueue(_collider);
if(immediately)Rebuild();
if (immediately) Rebuild();
}
private void OnCollisionEnter(Collision collision)
@@ -63,24 +64,17 @@ namespace BITKit.Sensors
public IEnumerable<Transform> Get()
{
if(BITAppForUnity.IsPlaying is false)return ArraySegment<Transform>.Empty;
try
{
return detected.Select(x => x.transform).ToArray();
return detected.Select(x => x.transform).ToArray();
}
catch (MissingReferenceException)
{
List<Transform> list = new();
foreach (var x in detected)
{
try
{
list.Add(x.transform);
}
catch (MissingReferenceException){}
}
return list.ToArray();
detected = detected.Where(x => x).ToList();
}
}
return detected.Select(x => x.transform).ToArray();
}
//public bool IsValid(Collider _collider) => ignores.Contains(_collider.gameObject) is false;
public bool IsValid(Collider _collider)
@@ -101,10 +95,8 @@ namespace BITKit.Sensors
throw new NotImplementedException();
}
public UniTask Execute()
{
throw new NotImplementedException();
}
public UniTask Execute()=>
UniTask.CompletedTask;
private void Update()
{
@@ -177,16 +169,17 @@ namespace BITKit.Sensors
protected override void OnUpdate()
{
if (!agent || detectedContainer is null) return;
if (BITAppForUnity.IsPlaying is false) return;
detectedContainer.Clear();
foreach (var x in agent.Get())
foreach (var x in agent.detected)
{
ObjectField objectField = new()
{
objectType = x.GetType(),
value = x,
};
objectField.SetEnabled(false);
objectField.style.opacity = 1;
detectedContainer.Add(objectField);
}
}