32 lines
850 B
C#
32 lines
850 B
C#
using Engine.Core;
|
|
|
|
namespace Engine.Physics2D;
|
|
|
|
public class Collider2DShape : Collider2DBase, IShapeCollider2D
|
|
{
|
|
public Shape2D ShapeWorld { get; protected set; } = Shape2D.Square;
|
|
public Shape2D ShapeLocal
|
|
{
|
|
get;
|
|
set
|
|
{
|
|
field = value;
|
|
NeedsRecalculation = true;
|
|
}
|
|
} = Shape2D.Square;
|
|
|
|
private float area = 0f; public override float Area => area;
|
|
private float geometricInertia = 0f; public override float GeometricInertia => geometricInertia;
|
|
|
|
public override void CalculateCollider()
|
|
{
|
|
ShapeLocal.Transform(Transform, ShapeWorld);
|
|
|
|
area = ShapeWorld.Area;
|
|
geometricInertia = ShapeWorld.GetGeometricInertia(Transform.Position);
|
|
}
|
|
|
|
public Collider2DShape() { }
|
|
public Collider2DShape(Shape2D shape) { ShapeLocal = shape; }
|
|
}
|