fix: collider2Ds not updating collider after new assignment
This commit is contained in:
parent
2535a1d6ec
commit
26a80452bc
@ -10,7 +10,7 @@ public abstract class Collider2DBehaviourBase : Behaviour2D, ICollider2D
|
|||||||
public event ICollider2D.CollisionResolvedEventHandler? OnCollisionResolved = null;
|
public event ICollider2D.CollisionResolvedEventHandler? OnCollisionResolved = null;
|
||||||
public event ICollider2D.TriggeredEventHandler? OnTriggered = null;
|
public event ICollider2D.TriggeredEventHandler? OnTriggered = null;
|
||||||
|
|
||||||
protected bool NeedsRecalculation { get; private set; } = true;
|
protected bool NeedsRecalculation { get; set; } = true;
|
||||||
protected IRigidBody2D? _rigidBody2D = null;
|
protected IRigidBody2D? _rigidBody2D = null;
|
||||||
|
|
||||||
public IRigidBody2D? RigidBody2D => _rigidBody2D;
|
public IRigidBody2D? RigidBody2D => _rigidBody2D;
|
||||||
|
@ -6,9 +6,19 @@ namespace Syntriax.Engine.Physics2D;
|
|||||||
public class Collider2DCircleBehaviour : Collider2DBehaviourBase, ICircleCollider2D
|
public class Collider2DCircleBehaviour : Collider2DBehaviourBase, ICircleCollider2D
|
||||||
{
|
{
|
||||||
public Circle CircleWorld { get; protected set; } = Circle.UnitCircle;
|
public Circle CircleWorld { get; protected set; } = Circle.UnitCircle;
|
||||||
public Circle CircleLocal { get; set; } = Circle.UnitCircle;
|
public Circle CircleLocal
|
||||||
|
{
|
||||||
|
get => _circleLocal;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_circleLocal = value;
|
||||||
|
NeedsRecalculation = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void CalculateCollider() => CircleWorld = Transform.TransformCircle(CircleLocal);
|
private Circle _circleLocal = Circle.UnitCircle;
|
||||||
|
|
||||||
|
public override void CalculateCollider() => CircleWorld = Transform.Transform(CircleLocal);
|
||||||
|
|
||||||
public Collider2DCircleBehaviour() { }
|
public Collider2DCircleBehaviour() { }
|
||||||
public Collider2DCircleBehaviour(Circle circle) => CircleLocal = circle;
|
public Collider2DCircleBehaviour(Circle circle) => CircleLocal = circle;
|
||||||
|
@ -6,11 +6,20 @@ namespace Syntriax.Engine.Physics2D;
|
|||||||
public class Collider2DShapeBehaviour : Collider2DBehaviourBase, IShapeCollider2D
|
public class Collider2DShapeBehaviour : Collider2DBehaviourBase, IShapeCollider2D
|
||||||
{
|
{
|
||||||
public Shape2D ShapeWorld { get => _shapeWorld; protected set => _shapeWorld = value; }
|
public Shape2D ShapeWorld { get => _shapeWorld; protected set => _shapeWorld = value; }
|
||||||
public Shape2D ShapeLocal { get; set; } = Shape2D.Square;
|
public Shape2D ShapeLocal
|
||||||
|
{
|
||||||
|
get => _shapeLocal;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_shapeLocal = value;
|
||||||
|
NeedsRecalculation = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Shape2D _shapeWorld = Shape2D.Square.CreateCopy();
|
private Shape2D _shapeWorld = Shape2D.Square;
|
||||||
|
private Shape2D _shapeLocal = Shape2D.Square;
|
||||||
|
|
||||||
public override void CalculateCollider() => Transform.TransformShape(ShapeLocal, ref _shapeWorld);
|
public override void CalculateCollider() => ShapeLocal.Transform(Transform, ref _shapeWorld);
|
||||||
|
|
||||||
public Collider2DShapeBehaviour() { }
|
public Collider2DShapeBehaviour() { }
|
||||||
public Collider2DShapeBehaviour(Shape2D shape)
|
public Collider2DShapeBehaviour(Shape2D shape)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user