perf: regular events to custom events

This commit is contained in:
2025-05-30 12:58:08 +03:00
parent b1b5af94d3
commit 846aa75dd5
42 changed files with 342 additions and 198 deletions

View File

@@ -4,9 +4,9 @@ namespace Syntriax.Engine.Physics2D;
public abstract class Collider2DBehaviourBase : Behaviour2D, ICollider2D
{
public event ICollider2D.CollisionDetectedEventHandler? OnCollisionDetected = null;
public event ICollider2D.CollisionResolvedEventHandler? OnCollisionResolved = null;
public event ICollider2D.TriggeredEventHandler? OnTriggered = null;
public Event<ICollider2D, CollisionDetectionInformation> OnCollisionDetected { get; private set; } = new();
public Event<ICollider2D, CollisionDetectionInformation> OnCollisionResolved { get; private set; } = new();
public Event<ICollider2D, ICollider2D> OnTriggered { get; private set; } = new();
protected bool NeedsRecalculation { get; set; } = true;
protected IRigidBody2D? _rigidBody2D = null;
@@ -29,13 +29,13 @@ public abstract class Collider2DBehaviourBase : Behaviour2D, ICollider2D
{
BehaviourController.TryGetBehaviourInParent(out _rigidBody2D);
BehaviourController.OnBehaviourAdded += OnBehaviourAddedToController;
BehaviourController.OnBehaviourRemoved += OnBehaviourRemovedFromController;
BehaviourController.OnBehaviourAdded.AddListener(OnBehaviourAddedToController);
BehaviourController.OnBehaviourRemoved.AddListener(OnBehaviourRemovedFromController);
Transform.OnPositionChanged += SetNeedsRecalculationFromPosition;
Transform.OnRotationChanged += SetNeedsRecalculationFromRotation;
Transform.OnScaleChanged += SetNeedsRecalculationFromScale;
UniverseObject.OnParentChanged += UpdateRigidBody2D;
Transform.OnPositionChanged.AddListener(SetNeedsRecalculationFromPosition);
Transform.OnRotationChanged.AddListener(SetNeedsRecalculationFromRotation);
Transform.OnScaleChanged.AddListener(SetNeedsRecalculationFromScale);
UniverseObject.OnParentChanged.AddListener(UpdateRigidBody2D);
}
private void UpdateRigidBody2D(IUniverseObject sender, IUniverseObject? previousParent, IUniverseObject? newParent)
@@ -61,12 +61,12 @@ public abstract class Collider2DBehaviourBase : Behaviour2D, ICollider2D
protected override void OnFinalize()
{
BehaviourController.OnBehaviourAdded -= OnBehaviourAddedToController;
BehaviourController.OnBehaviourRemoved -= OnBehaviourRemovedFromController;
Transform.OnScaleChanged -= SetNeedsRecalculationFromScale;
BehaviourController.OnBehaviourAdded.RemoveListener(OnBehaviourAddedToController);
BehaviourController.OnBehaviourRemoved.RemoveListener(OnBehaviourRemovedFromController);
Transform.OnScaleChanged.RemoveListener(SetNeedsRecalculationFromScale);
Transform.OnPositionChanged -= SetNeedsRecalculationFromPosition;
Transform.OnRotationChanged -= SetNeedsRecalculationFromRotation;
Transform.OnPositionChanged.RemoveListener(SetNeedsRecalculationFromPosition);
Transform.OnRotationChanged.RemoveListener(SetNeedsRecalculationFromRotation);
}
public void Detect(CollisionDetectionInformation collisionDetectionInformation) => OnCollisionDetected?.Invoke(this, collisionDetectionInformation);