using System; using Syntriax.Engine.Core; using Syntriax.Engine.Core.Abstract; using Syntriax.Engine.Physics2D.Abstract; using Syntriax.Engine.Physics2D.Primitives; namespace Syntriax.Engine.Physics2D; public class Collider2DShapeBehaviour : BehaviourOverride, IShapeCollider2D { public Action? OnCollisionPreResolve { get; set; } = null; public Action? OnCollisionResolved { get; set; } = null; public Shape ShapeWorld => _shapeWorld; public Shape ShapeLocal { get; set; } = new([new(1f, 1f), new(-1f, 1f), new(-1f, -1f), new(1f, -1f)]); public IRigidBody2D? RigidBody2D { get; set; } = null; protected Shape _shapeWorld = new([new(1f, 1f), new(-1f, 1f), new(-1f, -1f), new(1f, -1f)]); ITransform IAssignableTransform.Transform => Transform; Action? IAssignableTransform.OnTransformAssigned { get => GameObject.OnTransformAssigned; set => GameObject.OnTransformAssigned = value; } bool IAssignableTransform.Assign(ITransform transform) => GameObject.Assign(transform); public virtual void Recalculate() => Transform.TransformShape(ShapeLocal, ref _shapeWorld); }