Proper shock effect distances

This commit is contained in:
TerrificTrifid 2022-08-22 12:59:59 -05:00
parent eb4d47dc4f
commit 657746bf5d
2 changed files with 18 additions and 3 deletions

View File

@ -125,9 +125,6 @@ namespace NewHorizons.Builder.Body
} }
} }
supernovaEffectController.shockLayerStartRadius = config.Orbit.semiMajorAxis / 10;
supernovaEffectController.shockLayerFullRadius = config.Orbit.semiMajorAxis; // Temporary; change to distance
var radius = (config.ShockEffect?.radius != null && config.ShockEffect.radius.HasValue) ? config.ShockEffect.radius.Value : biggestSize * 1.1f; var radius = (config.ShockEffect?.radius != null && config.ShockEffect.radius.HasValue) ? config.ShockEffect.radius.Value : biggestSize * 1.1f;
supernovaEffectController.shockLayerTrailFlare = radius < 500 ? 50 : 100; // Base game all uses 100, but sphere model looks bad if not 1:6 ratio with length like GD, so retain it instead supernovaEffectController.shockLayerTrailFlare = radius < 500 ? 50 : 100; // Base game all uses 100, but sphere model looks bad if not 1:6 ratio with length like GD, so retain it instead

View File

@ -71,12 +71,30 @@ namespace NewHorizons.Handlers
{ {
var distanceSqr = (supernovaPlanetEffectController.transform.position - _sunController.transform.position).sqrMagnitude; var distanceSqr = (supernovaPlanetEffectController.transform.position - _sunController.transform.position).sqrMagnitude;
if (distanceSqr < 2500000000f && distanceSqr < nearestDistanceSqr) if (distanceSqr < 2500000000f && distanceSqr < nearestDistanceSqr)
{
supernovaPlanetEffectController.SunController = _sunController; supernovaPlanetEffectController.SunController = _sunController;
supernovaPlanetEffectController.shockLayerStartRadius = Mathf.Sqrt(distanceSqr) / 10f;
supernovaPlanetEffectController.shockLayerFullRadius = Mathf.Sqrt(distanceSqr);
}
else else
{
supernovaPlanetEffectController.StarEvolutionController = nearestStarEvolutionController; supernovaPlanetEffectController.StarEvolutionController = nearestStarEvolutionController;
if (nearestDistanceSqr != float.MaxValue)
{
supernovaPlanetEffectController.shockLayerStartRadius = Mathf.Sqrt(nearestDistanceSqr) / 10f;
supernovaPlanetEffectController.shockLayerFullRadius = Mathf.Sqrt(nearestDistanceSqr);
}
}
} }
else else
{
supernovaPlanetEffectController.StarEvolutionController = nearestStarEvolutionController; supernovaPlanetEffectController.StarEvolutionController = nearestStarEvolutionController;
if (nearestDistanceSqr != float.MaxValue)
{
supernovaPlanetEffectController.shockLayerStartRadius = Mathf.Sqrt(nearestDistanceSqr) / 10f;
supernovaPlanetEffectController.shockLayerFullRadius = Mathf.Sqrt(nearestDistanceSqr);
}
}
} }
private static bool IsStarActive(Component component) private static bool IsStarActive(Component component)