diff --git a/Engine.Physics2D/PhysicsMaterial2D.cs b/Engine.Physics2D/PhysicsMaterial2D.cs index a3875ca..bb48c82 100644 --- a/Engine.Physics2D/PhysicsMaterial2D.cs +++ b/Engine.Physics2D/PhysicsMaterial2D.cs @@ -1,7 +1,7 @@ namespace Engine.Physics2D; -public readonly struct PhysicsMaterial2D(float Friction, float Restitution) : IPhysicsMaterial2D +public class PhysicsMaterial2D(float Friction, float Restitution) : IPhysicsMaterial2D { - public readonly float Friction { get; init; } = Friction; - public readonly float Restitution { get; init; } = Restitution; + public float Friction { get; set; } = Friction; + public float Restitution { get; set; } = Restitution; } diff --git a/Engine.Physics2D/PhysicsMaterial2DDefault.cs b/Engine.Physics2D/PhysicsMaterial2DDefault.cs deleted file mode 100644 index 1ed446e..0000000 --- a/Engine.Physics2D/PhysicsMaterial2DDefault.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace Engine.Physics2D; - -public readonly struct PhysicsMaterial2DDefault : IPhysicsMaterial2D -{ - public readonly float Friction => .1f; - - public readonly float Restitution => .1f; -} diff --git a/Engine.Physics2D/ReadOnlyPhysicsMaterial2D.cs b/Engine.Physics2D/ReadOnlyPhysicsMaterial2D.cs new file mode 100644 index 0000000..fe3f79c --- /dev/null +++ b/Engine.Physics2D/ReadOnlyPhysicsMaterial2D.cs @@ -0,0 +1,9 @@ +namespace Engine.Physics2D; + +public readonly struct ReadOnlyPhysicsMaterial2D(float Friction, float Restitution) : IPhysicsMaterial2D +{ + public readonly float Friction { get; } = Friction; + public readonly float Restitution { get; } = Restitution; + + public readonly static ReadOnlyPhysicsMaterial2D Default = new(.1f, .1f); +} diff --git a/Engine.Physics2D/RigidBody2D.cs b/Engine.Physics2D/RigidBody2D.cs index 3c5a96e..dbf97be 100644 --- a/Engine.Physics2D/RigidBody2D.cs +++ b/Engine.Physics2D/RigidBody2D.cs @@ -6,7 +6,7 @@ public class RigidBody2D : Behaviour2D, IRigidBody2D { private const float LOWEST_ALLOWED_MASS = 0.00001f; - public IPhysicsMaterial2D Material { get; set; } = new PhysicsMaterial2DDefault(); + public IPhysicsMaterial2D Material { get; set; } = ReadOnlyPhysicsMaterial2D.Default; public Vector2D Velocity { get; set; } = Vector2D.Zero; public float AngularVelocity { get; set; } = 0f;