Star collapse ramp texture and fix end color

This commit is contained in:
Joshua Thome 2022-07-14 16:45:22 -05:00
parent 2258dc3947
commit 3e99fb5bd8
4 changed files with 58 additions and 19 deletions

View File

@ -137,9 +137,19 @@ namespace NewHorizons.Builder.Body
controller.size = starModule.size; controller.size = starModule.size;
controller.atmosphere = sunAtmosphere; controller.atmosphere = sunAtmosphere;
controller.supernova = supernova; controller.supernova = supernova;
controller.StartColour = starModule.tint; controller.startColour = starModule.tint?.ToColor();
controller.EndColour = starModule.endTint; controller.endColour = starModule.tint != null ? starModule.tint.ToColor() * 4.5948f : null;
controller.WillExplode = starModule.goSupernova; controller.willExplode = starModule.goSupernova;
if (!string.IsNullOrEmpty(starModule.starRampTexture))
{
var ramp = ImageUtilities.GetTexture(mod, starModule.starRampTexture);
controller.normalRamp = ramp;
}
if (!string.IsNullOrEmpty(starModule.starCollapseRampTexture))
{
var ramp = ImageUtilities.GetTexture(mod, starModule.starCollapseRampTexture);
controller.collapseRamp = ramp;
}
surfaceAudio.SetStarEvolutionController(controller); surfaceAudio.SetStarEvolutionController(controller);
starGO.SetActive(true); starGO.SetActive(true);
@ -177,8 +187,8 @@ namespace NewHorizons.Builder.Body
if (starModule.curve != null) controller.SetScaleCurve(starModule.curve); if (starModule.curve != null) controller.SetScaleCurve(starModule.curve);
controller.size = starModule.size; controller.size = starModule.size;
controller.supernova = supernova; controller.supernova = supernova;
controller.StartColour = starModule.tint; controller.startColour = starModule.tint?.ToColor();
controller.EndColour = starModule.endTint; controller.endColour = starModule.tint != null ? starModule.tint.ToColor() * 4.5948f : null;
controller.enabled = true; controller.enabled = true;
starGO.SetActive(true); starGO.SetActive(true);

View File

@ -15,9 +15,11 @@ namespace NewHorizons.Components.SizeControllers
{ {
public GameObject atmosphere; public GameObject atmosphere;
public SupernovaEffectController supernova; public SupernovaEffectController supernova;
public bool WillExplode { get; set; } public bool willExplode;
public MColor StartColour { get; set; } public Color? startColour;
public MColor EndColour { get; set; } public Color? endColour;
public Texture normalRamp;
public Texture collapseRamp;
private Color _startColour; private Color _startColour;
private Color _endColour; private Color _endColour;
@ -43,6 +45,8 @@ namespace NewHorizons.Components.SizeControllers
private Material _collapseEndSurfaceMaterial; private Material _collapseEndSurfaceMaterial;
private Material _startSurfaceMaterial; private Material _startSurfaceMaterial;
private Material _endSurfaceMaterial; private Material _endSurfaceMaterial;
private Texture _normalRamp;
private Texture _collapseRamp;
private StarEvolutionController _proxy; private StarEvolutionController _proxy;
@ -60,31 +64,45 @@ namespace NewHorizons.Components.SizeControllers
_endSurfaceMaterial = new Material(sun._endSurfaceMaterial); _endSurfaceMaterial = new Material(sun._endSurfaceMaterial);
var supernovaSurfaceColorRamp = supernova._surface.sharedMaterial.GetTexture(ColorRamp); var supernovaSurfaceColorRamp = supernova._surface.sharedMaterial.GetTexture(ColorRamp);
if (normalRamp == null)
{
_normalRamp = supernovaSurfaceColorRamp;
} else
{
_normalRamp = normalRamp;
}
if (collapseRamp == null)
{
_collapseRamp = supernovaSurfaceColorRamp;
} else
{
_collapseRamp = collapseRamp;
}
// Copy over the material that was set in star builder // Copy over the material that was set in star builder
_collapseStartSurfaceMaterial.SetTexture(ColorRamp, supernovaSurfaceColorRamp); _collapseStartSurfaceMaterial.SetTexture(ColorRamp, _collapseRamp);
_collapseEndSurfaceMaterial.SetTexture(ColorRamp, supernovaSurfaceColorRamp); _collapseEndSurfaceMaterial.SetTexture(ColorRamp, _collapseRamp);
_startSurfaceMaterial.SetTexture(ColorRamp, supernovaSurfaceColorRamp); _startSurfaceMaterial.SetTexture(ColorRamp, _normalRamp);
_endSurfaceMaterial.SetTexture(ColorRamp, supernovaSurfaceColorRamp); _endSurfaceMaterial.SetTexture(ColorRamp, _normalRamp);
if (StartColour == null) if (startColour == null)
{ {
_startColour = _startSurfaceMaterial.color; _startColour = _startSurfaceMaterial.color;
} }
else else
{ {
_startColour = StartColour.ToColor(); _startColour = startColour.Value;
_startSurfaceMaterial.color = _startColour; _startSurfaceMaterial.color = _startColour;
} }
if (EndColour == null) if (endColour == null)
{ {
_endColour = _startColour; _endColour = _startColour;
_endSurfaceMaterial.color = _startColour; _endSurfaceMaterial.color = _startColour;
} }
else else
{ {
_endColour = EndColour.ToColor(); _endColour = endColour.Value;
_endSurfaceMaterial.color = _endColour; _endSurfaceMaterial.color = _endColour;
} }
@ -97,7 +115,7 @@ namespace NewHorizons.Components.SizeControllers
_atmosphereRenderers = atmosphere?.transform?.Find("AtmoSphere")?.GetComponentsInChildren<MeshRenderer>(); _atmosphereRenderers = atmosphere?.transform?.Find("AtmoSphere")?.GetComponentsInChildren<MeshRenderer>();
} }
if (WillExplode) GlobalMessenger.AddListener("TriggerSupernova", Die); if (willExplode) GlobalMessenger.AddListener("TriggerSupernova", Die);
if (scaleCurve != null) if (scaleCurve != null)
{ {
@ -115,7 +133,7 @@ namespace NewHorizons.Components.SizeControllers
public void OnDestroy() public void OnDestroy()
{ {
if (WillExplode) GlobalMessenger.RemoveListener("TriggerSupernova", Die); if (willExplode) GlobalMessenger.RemoveListener("TriggerSupernova", Die);
} }
public void SetProxy(StarEvolutionController proxy) public void SetProxy(StarEvolutionController proxy)
@ -165,12 +183,13 @@ namespace NewHorizons.Components.SizeControllers
base.FixedUpdate(); base.FixedUpdate();
// Only do colour transition stuff if they set an end colour // Only do colour transition stuff if they set an end colour
if (EndColour != null) if (endColour != null)
{ {
// Use the age if theres no resizing happening, else make it get redder the larger it is or wtv // Use the age if theres no resizing happening, else make it get redder the larger it is or wtv
var t = ageValue; var t = ageValue;
if (maxScale > 0) t = CurrentScale / maxScale; if (maxScale > 0) t = CurrentScale / maxScale;
currentColour = Color.Lerp(_startColour, _endColour, t); currentColour = Color.Lerp(_startColour, _endColour, t);
supernova._surface._materials[0].SetTexture(ColorRamp, _normalRamp);
supernova._surface._materials[0].Lerp(_startSurfaceMaterial, _endSurfaceMaterial, t); supernova._surface._materials[0].Lerp(_startSurfaceMaterial, _endSurfaceMaterial, t);
} }
else else
@ -190,6 +209,7 @@ namespace NewHorizons.Components.SizeControllers
currentColour = Color.Lerp(_endColour, Color.white, t); currentColour = Color.Lerp(_endColour, Color.white, t);
supernova._surface._materials[0].SetTexture(ColorRamp, _collapseRamp);
supernova._surface._materials[0].Lerp(_collapseStartSurfaceMaterial, _collapseEndSurfaceMaterial, t); supernova._surface._materials[0].Lerp(_collapseStartSurfaceMaterial, _collapseEndSurfaceMaterial, t);
// After the collapse is done we go supernova // After the collapse is done we go supernova

View File

@ -61,6 +61,11 @@ namespace NewHorizons.External.Modules.VariableSize
/// </summary> /// </summary>
public string starRampTexture; public string starRampTexture;
/// <summary>
/// Path to the texture to put as the star ramp while it is collapsing. Optional.
/// </summary>
public string starCollapseRampTexture;
/// <summary> /// <summary>
/// How far the light from the star can reach. /// How far the light from the star can reach.
/// </summary> /// </summary>

View File

@ -1968,6 +1968,10 @@
"type": "string", "type": "string",
"description": "Path to the texture to put as the star ramp. Optional." "description": "Path to the texture to put as the star ramp. Optional."
}, },
"starRampCollapseTexture": {
"type": "string",
"description": "Path to the texture to put as the star ramp while it is collapsing. Optional."
},
"lightRadius": { "lightRadius": {
"type": "number", "type": "number",
"description": "How far the light from the star can reach.", "description": "How far the light from the star can reach.",