BITKit/Src/Unity/Scripts/Physics/PhysicsImpacter.cs

30 lines
965 B
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
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(ignoreCollidersHash.Contains(collision.transform.GetInstanceID())) return;
OnPhysicsCollisionEnter?.Invoke(collision);
}
}
}