Files
7d2dXG/Mods/zzz_REBIRTH__Utils/Scripts/Entities/EntityVHelicopterRebirth.cs
Nathaniel Cosford 062dfab2cd Patched
2025-05-30 01:04:40 +09:30

138 lines
4.7 KiB
C#

public class EntityVHelicopterRebirth : EntityVehicleRebirth
{
public override void Init(int _entityClass)
{
//Log.Out("EntityVHelicopterRebirth-Init START");
base.Init(_entityClass);
Transform meshTransform = this.vehicle.GetMeshTransform();
this.topPropT = meshTransform.Find("Origin/TopPropellerJoint");
this.rearPropT = meshTransform.Find("Origin/BackPropellerJoint");
}
public override void PhysicsInputMove()
{
//Log.Out("EntityVHelicopterRebirth-PhysicsInputMove START");
if (this.vehicle.GetFuelPercent() == 0f)
{
//Log.Out("EntityVHelicopterRebirth-PhysicsInputMove 1");
return;
}
if (this.vehicle.FindPart("engine").IsBroken())
{
//Log.Out("EntityVHelicopterRebirth-PhysicsInputMove 2");
return;
}
float deltaTime = Time.deltaTime;
this.vehicleRB.velocity *= 0.995f;
this.vehicleRB.velocity += new Vector3(0f, -0.002f, 0f);
this.vehicleRB.angularVelocity *= 0.97f;
if (this.movementInput != null)
{
//Log.Out("EntityVHelicopterRebirth-PhysicsInputMove 3");
this.vehicleRB.AddForce(0f, Mathf.Lerp(0.1f, 1.005f, this.topRPM / 3f) * -Physics.gravity.y * deltaTime, 0f, (ForceMode)2);
float num = 1f;
if (this.movementInput.running)
{
num *= 6f;
}
this.wheelMotor = this.movementInput.moveForward;
this.vehicleRB.AddRelativeForce(0f, 0f, this.wheelMotor * num * 0.1f, (ForceMode)2);
float num2;
if (this.movementInput.lastInputController)
{
num2 = this.movementInput.moveStrafe * num;
}
else
{
num2 = this.movementInput.moveStrafe * num;
}
this.vehicleRB.AddRelativeTorque(0f, num2 * 0.03f, 0f, (ForceMode)2);
if (this.movementInput.jump)
{
this.vehicleRB.AddRelativeForce(0f, 0.03f * num, 0f, (ForceMode)2);
this.vehicleRB.AddRelativeTorque(-0.01f, 0f, 0f, (ForceMode)2);
}
if (this.movementInput.down)
{
this.vehicleRB.AddRelativeForce(0f, -0.03f * num, 0f, (ForceMode)2);
this.vehicleRB.AddRelativeTorque(0.01f, 0f, 0f, (ForceMode)2);
}
}
if (base.HasDriver)
{
//Log.Out("EntityVHelicopterRebirth-PhysicsInputMove 4");
this.topRPM += 0.6f * deltaTime;
this.topRPM = Mathf.Min(this.topRPM, 3f);
return;
}
this.topRPM *= 0.99f;
}
protected void SetWheelsForces(float motorTorque, float brakeTorque)
{
//Log.Out("EntityVHelicopterRebirth-SetWheelsForces START");
if (this.vehicle.GetFuelPercent() == 0f)
{
//Log.Out("EntityVHelicopterRebirth-SetWheelsForces 1");
return;
}
if (this.vehicle.FindPart("engine").IsBroken())
{
//Log.Out("EntityVHelicopterRebirth-SetWheelsForces 2");
return;
}
//Log.Out("EntityVHelicopterRebirth-SetWheelsForces this.wheels.Length: " + this.wheels.Length);
for (int i = 0; i < this.wheels.Length; i++)
{
EntityVehicle.Wheel wheel = this.wheels[i];
wheel.wheelC.motorTorque = motorTorque;
wheel.wheelC.brakeTorque = 0f;
}
}
public override void UpdateWheelsSteering()
{
//Log.Out("EntityVHelicopterRebirth-UpdateWheelsSteering START");
this.wheels[0].wheelC.steerAngle = this.wheelDir;
}
public override void Update()
{
//Log.Out("EntityVHelicopterRebirth-SetWheelsForces START");
base.Update();
if (this.vehicle.GetFuelPercent() == 0f)
{
//Log.Out("EntityVHelicopterRebirth-Update 1");
return;
}
if (this.vehicle.FindPart("engine").IsBroken())
{
//Log.Out("EntityVHelicopterRebirth-Update 2");
return;
}
if (base.HasDriver && this.rearPropT)
{
Vector3 localEulerAngles = this.rearPropT.localEulerAngles;
localEulerAngles.z += 2880f * Time.deltaTime;
this.rearPropT.localEulerAngles = localEulerAngles;
}
if (this.topRPM > 0.1f && this.topPropT)
{
Vector3 localEulerAngles2 = this.topPropT.localEulerAngles;
localEulerAngles2.y += this.topRPM * 360f * Time.deltaTime;
this.topPropT.localEulerAngles = localEulerAngles2;
}
}
private const float cTopRPMMax = 3f;
private Transform topPropT;
private float topRPM;
private Transform rearPropT;
}