diff --git a/NewHorizons/Components/SizeControllers/StarEvolutionController.cs b/NewHorizons/Components/SizeControllers/StarEvolutionController.cs index c284a7fc..bc32bc5c 100644 --- a/NewHorizons/Components/SizeControllers/StarEvolutionController.cs +++ b/NewHorizons/Components/SizeControllers/StarEvolutionController.cs @@ -59,10 +59,13 @@ namespace NewHorizons.Components.SizeControllers private bool _isSupernova; private float _supernovaStartTime; - private Material _collapseStartSurfaceMaterial; - private Material _collapseEndSurfaceMaterial; - private Material _startSurfaceMaterial; - private Material _endSurfaceMaterial; + private static Material _collapseStartSurfaceMaterial; + private static Material _collapseEndSurfaceMaterial; + private static Material _startSurfaceMaterial; + private static Material _endSurfaceMaterial; + private static Texture _defaultNormalRamp; + private static Texture _defaultCollapseRamp; + private Material _surfaceMaterial; private Texture _normalRamp; private Texture _collapseRamp; @@ -86,29 +89,39 @@ namespace NewHorizons.Components.SizeControllers private TessellatedSphereRenderer _surface; - private void Start() + public static void Init() { - _surface = GetComponentInChildren(true); - - _rigidbody = this.GetAttachedOWRigidbody(); - var sun = GameObject.FindObjectOfType(); + _collapseStartSurfaceMaterial = new Material(sun._collapseStartSurfaceMaterial); _collapseEndSurfaceMaterial = new Material(sun._collapseEndSurfaceMaterial); _startSurfaceMaterial = new Material(sun._startSurfaceMaterial); _endSurfaceMaterial = new Material(sun._endSurfaceMaterial); + _defaultNormalRamp = sun._startSurfaceMaterial.GetTexture(ColorRamp); + _defaultCollapseRamp = sun._collapseStartSurfaceMaterial.GetTexture(ColorRamp); + } + + private void Start() + { + _surface = GetComponentInChildren(true); + _surfaceMaterial = new Material(_surface._materials[0]); + + _rigidbody = this.GetAttachedOWRigidbody(); + if (normalRamp == null) { - _normalRamp = sun._startSurfaceMaterial.GetTexture(ColorRamp); - } else + _normalRamp = _defaultNormalRamp; + } + else { _normalRamp = normalRamp; } if (collapseRamp == null) { - _collapseRamp = sun._collapseStartSurfaceMaterial.GetTexture(ColorRamp); - } else + _collapseRamp = _defaultCollapseRamp; + } + else { _collapseRamp = collapseRamp; } @@ -165,7 +178,6 @@ namespace NewHorizons.Components.SizeControllers } _flareEmitter = GetComponentInChildren(); - _surfaceMaterial = _surface._materials[0]; if (!isProxy) SupernovaEffectHandler.RegisterStar(this); @@ -419,7 +431,7 @@ namespace NewHorizons.Components.SizeControllers UpdateSupernova(); return; } - + if (!_isCollapsing) { base.FixedUpdate(); @@ -431,7 +443,7 @@ namespace NewHorizons.Components.SizeControllers UpdateCollapse(); if (_isSupernova) return; } - + // This is just all the scales stuff for the atmosphere effects if (_fog != null) { diff --git a/NewHorizons/Main.cs b/NewHorizons/Main.cs index bdaf697b..d9a023f5 100644 --- a/NewHorizons/Main.cs +++ b/NewHorizons/Main.cs @@ -23,6 +23,7 @@ using UnityEngine.Events; using UnityEngine.SceneManagement; using Logger = NewHorizons.Utility.Logger; using NewHorizons.OtherMods.OWRichPresence; +using NewHorizons.Components.SizeControllers; namespace NewHorizons { @@ -305,6 +306,7 @@ namespace NewHorizons RemoteHandler.Init(); AtmosphereBuilder.Init(); BrambleNodeBuilder.Init(BodyDict[CurrentStarSystem].Select(x => x.Config).Where(x => x.Bramble?.dimension != null).ToArray()); + StarEvolutionController.Init(); if (isSolarSystem) {