39 lines
918 B
C#
39 lines
918 B
C#
using OpenTK.Mathematics;
|
|
|
|
namespace DoomDeathmatch.Component;
|
|
|
|
public class RigidbodyComponent : Engine.Scene.Component.Component
|
|
{
|
|
public Vector3 Velocity { get; private set; } = Vector3.Zero;
|
|
public Vector3 Acceleration { get; private set; } = Vector3.Zero;
|
|
public Vector3 Force { get; private set; } = Vector3.Zero;
|
|
public float Mass { get; set; } = 1.0f;
|
|
public bool IsStatic { get; set; } = false;
|
|
|
|
public void AddForce(Vector3 parForce)
|
|
{
|
|
if (IsStatic)
|
|
return;
|
|
|
|
Force += parForce;
|
|
}
|
|
|
|
public void AddVelocity(Vector3 parVelocity)
|
|
{
|
|
if (IsStatic)
|
|
return;
|
|
|
|
Velocity += parVelocity;
|
|
}
|
|
|
|
public override void Update(double parDeltaTime)
|
|
{
|
|
if (IsStatic)
|
|
return;
|
|
|
|
Acceleration = Force / Mass;
|
|
Velocity += Acceleration * (float)parDeltaTime;
|
|
GameObject.Transform.Translation += Velocity * (float)parDeltaTime;
|
|
Force = Vector3.Zero;
|
|
}
|
|
} |