fix: clean gitignore for Godot C#

This commit is contained in:
maxwes08
2026-04-17 12:38:11 +02:00
commit 3ac0b6b866
23 changed files with 841 additions and 0 deletions

View File

@@ -0,0 +1,58 @@
using System;
public abstract class RotatingComponent
{
public double MomentOfInertia { get; set; } // kg·m²
public double AngularVelocity { get; set; } // rad/s
public double AngularPosition { get; set; } // rad (0..2π, wrapped)
public double TotalAngularPosition { get; set; } // rad (never wraps)
public double AccumulatedTorque {get; private set; }
public RotatingComponent(double momentOfInertia = 0.1, double angularVelocity = 0, double angularPosition = 0)
{
MomentOfInertia = momentOfInertia;
AngularVelocity = angularVelocity;
AngularPosition = angularPosition;
TotalAngularPosition = angularPosition;
AccumulatedTorque = 0;
}
public virtual void ApplyTorque(double torqueNm)
{
AccumulatedTorque += torqueNm;
}
public virtual void Update(double dt)
{
if (dt <= 0) return;
if (MomentOfInertia > 0)
{
double angularAcceleration = AccumulatedTorque / MomentOfInertia;
AngularVelocity += angularAcceleration * dt;
}
double deltaAngle = AngularVelocity * dt;
TotalAngularPosition += deltaAngle;
AngularPosition += deltaAngle;
// Wrap AngularPosition to 0..2π for sin/cos
AngularPosition = AngularPosition % (2 * Math.PI);
if (AngularPosition < 0) AngularPosition += 2 * Math.PI;
AccumulatedTorque = 0;
}
public double RPM => AngularVelocity * 60 / (2 * Math.PI);
public double TotalAngleDeg => TotalAngularPosition * 180 / Math.PI;
public void SetRPM(double rpm)
{
AngularVelocity = rpm * 2 * Math.PI / 60;
}
public virtual void ResetTorque()
{
AccumulatedTorque = 0;
}
}