using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Obi.Samples { [RequireComponent(typeof(ObiSolver))] public class ObiParticleCounter : MonoBehaviour { ObiSolver solver; public int counter = 0; public Collider2D targetCollider = null; ObiNativeContactList frame; HashSet particles = new HashSet(); void Awake() { solver = GetComponent(); } void OnEnable() { solver.OnCollision += Solver_OnCollision; } void OnDisable() { solver.OnCollision -= Solver_OnCollision; } void Solver_OnCollision(object sender, ObiNativeContactList e) { HashSet currentParticles = new HashSet(); for (int i = 0; i < e.count; ++i) { if (e[i].distance < 0.001f) { /*Component collider; if (ObiCollider2D.idToCollider.TryGetValue(e.contacts.Data[i].other,out collider)){ if (collider == targetCollider) currentParticles.Add(e.contacts.Data[i].particle); }*/ } } particles.ExceptWith(currentParticles); counter += particles.Count; particles = currentParticles; Debug.Log(counter); } } }