protected void OnCollisionDetected(object sender, CollisionEventArgs args) { if (CollisionDetected != null) { CollisionDetected.Invoke(sender, args); } }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.TryGetComponent(out IDamageable damageable)) { CollisionDetected?.Invoke(damageable); } }
private void OnTriggerEnter(Collider other) { if (other.TryGetComponent(out IDamageable damageable)) { CollisionDetected?.Invoke(damageable); } }
public static void Update(float delta) { if (_colliders.Count <= 1) { return; } for (var i = 0; i < _colliders.Count; i++) { for (var j = 0; j < _colliders.Count; j++) { if (i == j) { continue; } var first = _colliders.ElementAt(i); var second = _colliders.ElementAt(j); if (!first.Enabled || !second.Enabled) { continue; } var result = first.Collide(second); if (result.Occured) { if (!first.CollidingWith.Contains(second)) { first.CollidingWith.Add(second); first.Entity.OnCollisionEnter(second.Entity); } if (!second.CollidingWith.Contains(first)) { second.CollidingWith.Add(first); second.Entity.OnCollisionEnter(first.Entity); } CollisionDetected?.Invoke(null, new CollisionEventArgs(first, second)); } else { if (first.CollidingWith.Contains(second)) { first.CollidingWith.Remove(second); first.Entity.OnCollisionExit(second.Entity); } if (second.CollidingWith.Contains(first)) { second.CollidingWith.Remove(first); second.Entity.OnCollisionExit(first.Entity); } } } } }
private void FixedUpdate() { RaycastHit hit; if (!Physics.Raycast(_transform.position, -transform.up, out hit, CollisionDistance)) { return; } var distance = Vector3.Distance(_transform.position, hit.point); if (distance > CollisionDistance) { return; } if (CollisionDetected != null) { CollisionDetected.Invoke(hit.point); } }
private void OnCollisionDetected(GameObject gameObject, CollisionEventArgs args) { CollisionDetected?.Invoke(gameObject, args); }
protected virtual void OnCollisionDetected(CollisionEventArgs e) { CollisionDetected?.Invoke(this, e); }
/// <summary> /// Raises the CollisionDetected event. /// </summary> /// <param name="body1">The first body involved in the collision.</param> /// <param name="body2">The second body involved in the collision.</param> /// <param name="point">The collision point.</param> /// <param name="normal">The normal pointing to body1.</param> /// <param name="penetration">The penetration depth.</param> // CUSTOM: Added triangle as an out parameter. protected void RaiseCollisionDetected(RigidBody body1, RigidBody body2, ref JVector point1, ref JVector point2, ref JVector normal, JVector[] triangle, float penetration) { CollisionDetected?.Invoke(body1, body2, point1, point2, normal, triangle, penetration); }