public override void OnFixedUpdate()
{
if (Discharging)
{
for (int i = 0; i < capacityState.Length; i++)
{
capacityState[i].normalizedTime = 1 - (-CurrentCharge / MaximumCharge);
}
float amt = TimeWarp.fixedDeltaTime * dischargeActual;
if (DischargeGeneratesHeat && TimeWarp.CurrentRate <= 100f)
{
this.part.AddThermalFlux((double)HeatRate);
}
this.part.RequestResource("StoredCharge", amt);
this.part.RequestResource("ElectricCharge", -amt);
CapacitorStatus = String.Format("Discharging: {0:F2}/s", dischargeActual);
// if the amount returned is zero, disable discharging
if (CurrentCharge <= 0f)
{
Discharging = false;
}
}
else if (Enabled && CurrentCharge < MaximumCharge)
{
for (int i = 0; i < capacityState.Length; i++)
{
capacityState[i].normalizedTime = 1 - (-CurrentCharge / MaximumCharge);
}
double amt = this.part.RequestResource("ElectricCharge", TimeWarp.fixedDeltaTime * ChargeRate);
if (amt > 0d)
{
this.part.RequestResource("StoredCharge", -amt * ChargeRatio);
CapacitorStatus = String.Format("Recharging: {0:F2}/s", ChargeRate);
}
else
{
CapacitorStatus = String.Format("Not enough ElectricCharge!");
}
lastUpdateTime = Planetarium.fetch.time;
}
else if (CurrentCharge == 0f)
{
CapacitorStatus = "Discharged!";
} else
{
CapacitorStatus = String.Format("Ready");
}
}