Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 18 additions & 21 deletions Source/Modules/ModulePETTurbine.cs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,6 @@ public void DisableTurbine(KSPActionParam param)
private float turbineSpeed;
private float efficiencyCurve;
private float efficiencyAngle;
private float trueEfficiencyAngle;

private Vector3Renderer currentOrientationLine;
private Vector3Renderer windDirectionLine;
Expand Down Expand Up @@ -208,7 +207,7 @@ public void Start()
Events["ForceWindUpdate"].guiActive = false;

UI_Toggle turbineToggle = (UI_Toggle)Fields["isActive"].uiControlFlight;
turbineToggle.requireFullControl = DifficultyGeneral.Instance.requireFullControll;
turbineToggle.requireFullControl = DifficultyGeneral.Instance.requireFullControl;

if (HighLogic.LoadedSceneIsFlight)
{
Expand Down Expand Up @@ -276,8 +275,8 @@ private void CalculateTracking()
if (part.WaterContact)
return;

efficiencyAngle = Vector3.Angle(windDirection, hasRotatingPivot ? rotationPivot.forward : turbinePivot.forward);
trueEfficiencyAngle = 1 - (Math.Abs(efficiencyAngle) / 180);
float angle = Vector3.Angle(windDirection, hasRotatingPivot ? rotationPivot.forward : turbinePivot.forward);
efficiencyAngle = 1 - (Math.Abs(angle) / 180);

if (hasRotatingPivot)
{
Expand All @@ -302,8 +301,8 @@ private void CalculateTracking()

private void UpdateTurbine()
{
float localWindSpeed = (float)(vessel.atmDensity * windSpeedMult) * trueEfficiencyAngle;

float localWindSpeed = (float)(vessel.atmDensity * windSpeedMult) * efficiencyAngle;
switch (deployState)
{
case DeployState.EXTENDED:
Expand All @@ -312,7 +311,7 @@ private void UpdateTurbine()
if (localWindSpeed < minWindSpeed)
{
statusDisplay = $"Too little wind to generate power!";
efficiencyCurve = efficiencyAngle = 0.0f;
efficiencyCurve = efficiencyAngle = turbineSpeed = 0.0f;
break;
}

Expand All @@ -322,6 +321,8 @@ private void UpdateTurbine()

statusDisplay = $"Generating Power...";

Debug.Log($"{turbineSpeed}");

if (turbineSpeed > maxWindTolerance)
{
Destroy();
Expand All @@ -330,29 +331,26 @@ private void UpdateTurbine()
}
else
{
if (localWindSpeed < minWindSpeed)
{
statusDisplay = $"Too little wind to generate power!";
efficiencyCurve = efficiencyAngle = 0.0f;
break;
}

turbineSpeed = Mathf.Lerp(turbineSpeed, 0, TimeWarp.fixedDeltaTime * spoolUpTime);
efficiencyCurve = Mathf.Lerp(efficiencyCurve, 0, TimeWarp.fixedDeltaTime);
efficiencyCurve = turbineSpeed / (float)vessel.atmDensity * atmEfficiencyCurve.Evaluate((float)vessel.atmDensity);
turbinePivot.Rotate(turbinePivotAxis * (TimeWarp.fixedDeltaTime * SPEEDCONST) * turbineSpeed * turbineSpeedMult, Space.Self);

if (turbineSpeed < 0.01)
statusDisplay = $"Idling - Not generating power";
}
break;
case DeployState.RETRACTING:
turbineSpeed = Mathf.Lerp(turbineSpeed, 0, (1f - this.anim[this.animationName].normalizedTime) * TimeWarp.fixedDeltaTime);
efficiencyCurve = Mathf.Lerp(efficiencyCurve, 0, (1f - this.anim[this.animationName].normalizedTime) * TimeWarp.fixedDeltaTime);
turbineSpeed = Mathf.Lerp(turbineSpeed, 0, (1f - anim[animationName].normalizedTime) * TimeWarp.fixedDeltaTime);
efficiencyCurve = turbineSpeed / (float)vessel.atmDensity * atmEfficiencyCurve.Evaluate((float)vessel.atmDensity);
turbinePivot.Rotate(turbinePivotAxis * (TimeWarp.fixedDeltaTime * SPEEDCONST) * turbineSpeed * turbineSpeedMult, Space.Self);
break;
}
}
}

private void UpdateResourceHandler()
{
resHandler.UpdateModuleResourceOutputs(deployState == DeployState.EXTENDED ? efficiencyCurve * trueEfficiencyAngle : 0);
resHandler.UpdateModuleResourceOutputs(deployState == DeployState.EXTENDED ? efficiencyCurve * efficiencyAngle : 0);
}

public override void Update()
Expand All @@ -365,9 +363,8 @@ public override void Update()
windDirectionDisplay = Utilities.GetCardinalDirection(windHeading);
windSpeedDisplay = $"{(float)vessel.atmDensity * windSpeedMult:P1}";


turbineEfficiencyDisplay = $"{(deployState == DeployState.EXTENDED ? efficiencyCurve * trueEfficiencyAngle : 0):P1}";
flowRateDisplay = $"{(deployState == DeployState.EXTENDED ? (efficiencyCurve * trueEfficiencyAngle) * chargeRate : 0):N2}";
turbineEfficiencyDisplay = $"{(deployState == DeployState.EXTENDED ? efficiencyCurve * efficiencyAngle : 0):P1}";
flowRateDisplay = $"{(deployState == DeployState.EXTENDED ? (efficiencyCurve * efficiencyAngle) * chargeRate : 0):N2}";

if (showWindDirection)
{
Expand Down