From 9da188fa57f94a4ce9e08ff2ea1f095318d22607 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Mon, 22 Jun 2026 00:07:34 +0100 Subject: [PATCH] Move body icon sizing into render settings --- Aetheria.State.Verify/Program.cs | 9 +++++++-- Assets/Scripts/Gameplay/ActionGameManager.cs | 7 ++++++- Assets/Scripts/Zone Display/ZoneRenderer.cs | 2 +- .../Runtime/AetheriaRuntimeDaemonRenderQueries.cs | 10 +++++++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/Aetheria.State.Verify/Program.cs b/Aetheria.State.Verify/Program.cs index a6ae2a8f0..ebc2573e8 100644 --- a/Aetheria.State.Verify/Program.cs +++ b/Aetheria.State.Verify/Program.cs @@ -1833,11 +1833,13 @@ static void RequireDaemonRenderQueryAuthority(string root) "public double DefaultViewDistance { get; }", "public double MinimapIconScale { get; }", "public double MinimapAsteroidSize { get; }", + "public AetheriaRuntimeExponentialCurve BodyIconSizeCurve { get; }", "public int ResolveDefaultMinimapZoomIndex()", "public int ResolveNextMinimapZoomIndex(int currentIndex)", "public double ResolveMinimapDistance(int zoomIndex)", "public double ResolveDefaultMinimapDistance()", "public double ResolveMinimapIconSize(double minimapDistance)", + "public double ResolveBodyIconSize(double mass)", "public double NormalizeThermalRisk(double temperature)", "public double NormalizeHeatstrokePost(double heatstroke)", "public double NormalizeSevereHeatstrokePost(double heatstroke)", @@ -2004,7 +2006,8 @@ static void RequireDaemonRenderQueryAuthority(string root) ContainsUnitySettingsMember(zoneRenderer, "DefaultMinimapZoom") || ContainsUnitySettingsMember(zoneRenderer, "MinimapIconSize") || ContainsUnitySettingsMember(zoneRenderer, "DefaultViewDistance") || - ContainsUnitySettingsMember(zoneRenderer, "MinimapAsteroidSize")) + ContainsUnitySettingsMember(zoneRenderer, "MinimapAsteroidSize") || + ContainsUnitySettingsMember(zoneRenderer, "IconSize")) { throw new InvalidOperationException( "ZoneRenderer must initialize view/minimap presentation through shared daemon render settings instead of Unity GameSettings."); @@ -2161,6 +2164,7 @@ static void RequireDaemonRenderQueryAuthority(string root) "RenderSettings.MinimapAsteroidSize", "RenderSettings.ResolveDefaultMinimapDistance()", "RenderSettings.ResolveMinimapIconSize(value)", + "RenderSettings.ResolveBodyIconSize(mass)", "AetheriaRuntimeDaemonRenderQueries.QueryWormholeExits(", "RenderSettings.WormholeDistanceRatio", "AddWormhole(exit)", @@ -2261,7 +2265,8 @@ static void RequireDaemonRenderQueryAuthority(string root) "Settings.WormholeDistanceRatio", "Settings.DefaultViewDistance", "Settings.MinimapIconSize", - "Settings.MinimapAsteroidSize" + "Settings.MinimapAsteroidSize", + "Settings.IconSize" }; var missingActionGameManagerRenderSymbols = requiredActionGameManagerRenderSymbols diff --git a/Assets/Scripts/Gameplay/ActionGameManager.cs b/Assets/Scripts/Gameplay/ActionGameManager.cs index 438948549..73dc45bd1 100644 --- a/Assets/Scripts/Gameplay/ActionGameManager.cs +++ b/Assets/Scripts/Gameplay/ActionGameManager.cs @@ -564,6 +564,7 @@ public class ActionGameManager : MonoBehaviour public AetheriaRuntimeDaemonRenderSettings ObservedDaemonRenderSettings() { var emissionCurve = Settings.GameplaySettings.TemperatureEmissionCurve; + var bodyIconSizeCurve = Settings.IconSize; return new AetheriaRuntimeDaemonRenderSettings( new AetheriaRuntimeExponentialCurve( emissionCurve.Exponent, @@ -592,7 +593,11 @@ public class ActionGameManager : MonoBehaviour Settings.WormholeDistanceRatio, Settings.DefaultViewDistance, Settings.MinimapIconSize, - Settings.MinimapAsteroidSize); + Settings.MinimapAsteroidSize, + new AetheriaRuntimeExponentialCurve( + bodyIconSizeCurve.Exponent, + bodyIconSizeCurve.Multiplier, + bodyIconSizeCurve.Constant)); } private readonly (float2 direction, string name)[] _directions = { diff --git a/Assets/Scripts/Zone Display/ZoneRenderer.cs b/Assets/Scripts/Zone Display/ZoneRenderer.cs index 763565b0e..edd4a51c7 100644 --- a/Assets/Scripts/Zone Display/ZoneRenderer.cs +++ b/Assets/Scripts/Zone Display/ZoneRenderer.cs @@ -476,7 +476,7 @@ public class ZoneRenderer : MonoBehaviour // if (depth > _maxDepth) _maxDepth = depth; planet.GravityWell.material.SetFloat("_Depth", gravityWellDepth); planet.Icon.transform.position = new Vector3(0, -gravityWellDepth, 0); - planet.Icon.transform.localScale = Settings.IconSize.Evaluate(mass) * Vector3.one; + planet.Icon.transform.localScale = (float)RenderSettings.ResolveBodyIconSize(mass) * Vector3.one; _bodyViewsByBodyKey[bodyKey] = planet; diff --git a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonRenderQueries.cs b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonRenderQueries.cs index 302a9ac84..ec69daa3c 100644 --- a/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonRenderQueries.cs +++ b/Packages/org.gamecult.aetheria.state/Runtime/AetheriaRuntimeDaemonRenderQueries.cs @@ -68,7 +68,8 @@ namespace GameCult.Aetheria.State.Verse double wormholeDistanceRatio = 1.0, double defaultViewDistance = 0.0, double minimapIconScale = 0.0, - double minimapAsteroidSize = 0.0) + double minimapAsteroidSize = 0.0, + AetheriaRuntimeExponentialCurve bodyIconSizeCurve = default) { TemperatureEmissionCurve = temperatureEmissionCurve; LockIndicatorFrequency = lockIndicatorFrequency; @@ -89,6 +90,7 @@ namespace GameCult.Aetheria.State.Verse DefaultViewDistance = Math.Max(0.0, defaultViewDistance); MinimapIconScale = Math.Max(0.0, minimapIconScale); MinimapAsteroidSize = Math.Max(0.0, minimapAsteroidSize); + BodyIconSizeCurve = bodyIconSizeCurve; } public AetheriaRuntimeExponentialCurve TemperatureEmissionCurve { get; } @@ -110,6 +112,7 @@ namespace GameCult.Aetheria.State.Verse public double DefaultViewDistance { get; } public double MinimapIconScale { get; } public double MinimapAsteroidSize { get; } + public AetheriaRuntimeExponentialCurve BodyIconSizeCurve { get; } public int ResolveDefaultMinimapZoomIndex() { @@ -144,6 +147,11 @@ namespace GameCult.Aetheria.State.Verse return Math.Max(0.0, minimapDistance) * MinimapIconScale; } + public double ResolveBodyIconSize(double mass) + { + return BodyIconSizeCurve.Evaluate(Math.Max(0.0, mass)); + } + public double NormalizeThermalRisk(double temperature) { var range = HeatstrokeTemperature - HypothermiaTemperature;