1
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
@@ -5,12 +6,25 @@ namespace BITKit
|
||||
{
|
||||
public class PhysicsImpact : MonoBehaviour
|
||||
{
|
||||
private new Collider collider;
|
||||
public event Action<Collision> OnPhysicsCollisionEnter;
|
||||
[SerializeField] private Collider[] ignoreColliders;
|
||||
private readonly HashSet<int> ignoreCollidersHash = new();
|
||||
private void OnEnable()
|
||||
{
|
||||
collider = GetComponent<Collider>();
|
||||
ignoreCollidersHash.Clear();
|
||||
if (ignoreColliders is null) return;
|
||||
foreach (var x in ignoreColliders)
|
||||
{
|
||||
ignoreCollidersHash.Add(x.transform.GetInstanceID());
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCollisionEnter(Collision collision)
|
||||
{
|
||||
if (collision.transform.TryGetComponent<IPhysicsImpact>(out var impact))
|
||||
{
|
||||
impact.AddImpact(collision.relativeVelocity);
|
||||
}
|
||||
if(ignoreCollidersHash.Contains(collision.transform.GetInstanceID())) return;
|
||||
OnPhysicsCollisionEnter?.Invoke(collision);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user