using Sandbox;
using System;

namespace VeloX;

[Group( "VeloX" )]
[Title( "VeloX - Car" )]
public partial class VeloXCar : VeloXBase
{

	protected override void FixedUpdate()
	{

		UpdateInput();
		PhysicsSimulate();
		UpdateABS();
		UpdateESC();
	}

	protected override void OnFixedUpdate()
	{
		if ( IsProxy )
			return;

		base.OnFixedUpdate();

		var dt = Time.Delta;
		//EngineThink( dt );
		SimulateAerodinamics( dt );
		//WheelThink( dt );
		UpdateSteering( dt );
		UpdateUnflip( dt );
		UpdateDrift( dt );
	}

	private void UpdateUnflip( float dt )
	{
		if ( Math.Abs( inputSteer ) < 0.1f )
			return;

		if ( Math.Abs( WorldRotation.Angles().roll ) < 70 )
			return;

		var angVel = Body.AngularVelocity;
		var force = inputSteer * Mass * Math.Clamp( 1 - angVel.x / 50, 0, 1 ) * 0.05f;
		Body.AngularVelocity -= Body.WorldRotation.Forward * force * dt;
	}
}
