diff --git a/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs b/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs index c18487ba..054e170b 100644 --- a/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs +++ b/NewHorizons/Builder/Atmosphere/CloudsBuilder.cs @@ -85,19 +85,7 @@ namespace NewHorizons.Builder.Atmosphere fluidCLFV._layer = 5; fluidCLFV._priority = 1; fluidCLFV._density = 1.2f; - - var fluidType = FluidVolume.Type.CLOUD; - - try - { - fluidType = (FluidVolume.Type)Enum.Parse(typeof(FluidVolume.Type), Enum.GetName(typeof(CloudFluidType), atmo.clouds.fluidType).ToUpper()); - } - catch (Exception ex) - { - Logger.LogError($"Couldn't parse fluid volume type [{atmo.clouds.fluidType}]:\n{ex}"); - } - - fluidCLFV._fluidType = fluidType; + fluidCLFV._fluidType = atmo.clouds.fluidType.ConvertToOW(FluidVolume.Type.CLOUD); fluidCLFV._allowShipAutoroll = true; fluidCLFV._disableOnStart = false; diff --git a/NewHorizons/Builder/Body/RingBuilder.cs b/NewHorizons/Builder/Body/RingBuilder.cs index c39dabf6..c89318f0 100644 --- a/NewHorizons/Builder/Body/RingBuilder.cs +++ b/NewHorizons/Builder/Body/RingBuilder.cs @@ -46,18 +46,7 @@ namespace NewHorizons.Builder.Body trigger._shape = ringShape; var sfv = ringVolume.AddComponent(); - var fluidType = FluidVolume.Type.NONE; - - try - { - fluidType = (FluidVolume.Type)Enum.Parse(typeof(FluidVolume.Type), Enum.GetName(typeof(CloudFluidType), ring.fluidType).ToUpper()); - } - catch (Exception ex) - { - Logger.LogError($"Couldn't parse fluid volume type [{ring.fluidType}]:\n{ex}"); - } - - sfv._fluidType = fluidType; + sfv._fluidType = ring.fluidType.ConvertToOW(); sfv._density = 5f; ringVolume.SetActive(true); diff --git a/NewHorizons/Builder/Props/TornadoBuilder.cs b/NewHorizons/Builder/Props/TornadoBuilder.cs index e166bea0..9f962fe5 100644 --- a/NewHorizons/Builder/Props/TornadoBuilder.cs +++ b/NewHorizons/Builder/Props/TornadoBuilder.cs @@ -2,6 +2,7 @@ using NewHorizons.Components; using NewHorizons.External.Modules; using NewHorizons.Handlers; using NewHorizons.Utility; +using System; using UnityEngine; using Logger = NewHorizons.Utility.Logger; using Random = UnityEngine.Random; @@ -143,15 +144,9 @@ namespace NewHorizons.Builder.Props tornadoGO.GetComponentInChildren().enabled = true; // Resize it so the force volume goes all the way up - switch (downwards) - { - case true: - tornadoGO.transform.Find("MockDownTornado_FluidCenter").localScale = new Vector3(1, 2f, 1); - break; - default: - tornadoGO.transform.Find("MockUpTornado_FluidCenter").localScale = new Vector3(1, 2f, 1); - break; - } + var fluidGO = tornadoGO.transform.Find(downwards ? "MockDownTornado_FluidCenter" : "MockUpTornado_FluidCenter"); + fluidGO.GetComponent()._fluidType = info.fluidType.ConvertToOW(FluidVolume.Type.CLOUD); + fluidGO.localScale = new Vector3(1, 2f, 1); if (info.tint != null) { @@ -176,6 +171,7 @@ namespace NewHorizons.Builder.Props hurricaneGO.transform.rotation = Quaternion.FromToRotation(Vector3.up, sector.transform.TransformDirection(position.normalized)); var fluidVolume = hurricaneGO.GetComponentInChildren(); + fluidVolume._fluidType = info.fluidType.ConvertToOW(FluidVolume.Type.CLOUD); fluidVolume._density = 8; var effects = hurricaneGO.transform.Find("Effects_GD_Hurricane").gameObject; diff --git a/NewHorizons/External/Modules/AtmosphereModule.cs b/NewHorizons/External/Modules/AtmosphereModule.cs index 3e20630d..f03f3ceb 100644 --- a/NewHorizons/External/Modules/AtmosphereModule.cs +++ b/NewHorizons/External/Modules/AtmosphereModule.cs @@ -9,7 +9,7 @@ using Newtonsoft.Json.Converters; namespace NewHorizons.External.Modules { [JsonConverter(typeof(StringEnumConverter))] - public enum CloudFluidType + public enum FluidType { [EnumMember(Value = @"none")] None = 0, @@ -126,7 +126,7 @@ namespace NewHorizons.External.Modules /// /// Fluid type for sounds/effects when colliding with this cloud. /// - [DefaultValue("cloud")] public CloudFluidType fluidType = CloudFluidType.Cloud; + [DefaultValue("cloud")] public FluidType fluidType = FluidType.Cloud; /// /// Add lightning to this planet like on Giant's Deep. @@ -202,8 +202,8 @@ namespace NewHorizons.External.Modules [Obsolete("CloudRamp is deprecated, please use CloudInfo instead")] public string cloudRamp; - [Obsolete("CloudFluidType is deprecated, please use CloudInfo instead")] - public CloudFluidType fluidType; + [Obsolete("FluidType is deprecated, please use CloudInfo instead")] + public FluidType fluidType; [Obsolete("UseBasicCloudShader is deprecated, please use CloudInfo instead")] public bool useBasicCloudShader; diff --git a/NewHorizons/External/Modules/PropModule.cs b/NewHorizons/External/Modules/PropModule.cs index 0af60122..02a03306 100644 --- a/NewHorizons/External/Modules/PropModule.cs +++ b/NewHorizons/External/Modules/PropModule.cs @@ -325,6 +325,11 @@ namespace NewHorizons.External.Modules /// The maximum distance at which you'll hear the sounds of the cyclone. If not set it will scale relative to the size of the cyclone. /// public float audioDistance; + + /// + /// Fluid type for sounds/effects when colliding with this tornado. + /// + [DefaultValue("cloud")] public FluidType fluidType = FluidType.Cloud; } [JsonObject] diff --git a/NewHorizons/External/Modules/VariableSize/RingModule.cs b/NewHorizons/External/Modules/VariableSize/RingModule.cs index dd0ecaf2..2a4157d1 100644 --- a/NewHorizons/External/Modules/VariableSize/RingModule.cs +++ b/NewHorizons/External/Modules/VariableSize/RingModule.cs @@ -9,7 +9,7 @@ namespace NewHorizons.External.Modules.VariableSize /// /// Fluid type for sounds/effects when colliding with this ring. /// - public CloudFluidType fluidType = CloudFluidType.None; + public FluidType fluidType = FluidType.None; /// /// Angle between the rings and the equatorial plane of the planet. diff --git a/NewHorizons/Schemas/body_schema.json b/NewHorizons/Schemas/body_schema.json index 554d2944..ae405fb2 100644 --- a/NewHorizons/Schemas/body_schema.json +++ b/NewHorizons/Schemas/body_schema.json @@ -327,7 +327,7 @@ "fluidType": { "description": "Fluid type for sounds/effects when colliding with this cloud.", "default": "cloud", - "$ref": "#/definitions/CloudFluidType" + "$ref": "#/definitions/FluidType" }, "hasLightning": { "type": "boolean", @@ -388,7 +388,7 @@ "basic" ] }, - "CloudFluidType": { + "FluidType": { "type": "string", "description": "", "x-enumNames": [ @@ -1675,6 +1675,11 @@ "type": "number", "description": "The maximum distance at which you'll hear the sounds of the cyclone. If not set it will scale relative to the size of the cyclone.", "format": "float" + }, + "fluidType": { + "description": "Fluid type for sounds/effects when colliding with this tornado.", + "default": "cloud", + "$ref": "#/definitions/FluidType" } } }, @@ -2124,7 +2129,7 @@ }, "fluidType": { "description": "Fluid type for sounds/effects when colliding with this ring.", - "$ref": "#/definitions/CloudFluidType" + "$ref": "#/definitions/FluidType" }, "inclination": { "type": "number", diff --git a/NewHorizons/Utility/NewHorizonExtensions.cs b/NewHorizons/Utility/NewHorizonExtensions.cs index 43548039..389975be 100644 --- a/NewHorizons/Utility/NewHorizonExtensions.cs +++ b/NewHorizons/Utility/NewHorizonExtensions.cs @@ -1,4 +1,5 @@ using NewHorizons.External.Configs; +using NewHorizons.External.Modules; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -215,5 +216,18 @@ namespace NewHorizons.Utility Utility.Logger.LogVerbose($"Coordinate Check for {system}: {xCorrect}, {yCorrect}, {zCorrect} [{string.Join("-", coordinates.x)}, {string.Join("-", coordinates.y)}, {string.Join("-", coordinates.z)}]"); return xCorrect && yCorrect && zCorrect; } + + public static FluidVolume.Type ConvertToOW(this FluidType fluidType, FluidVolume.Type @default = FluidVolume.Type.NONE) + { + try + { + return (FluidVolume.Type)Enum.Parse(typeof(FluidVolume.Type), Enum.GetName(typeof(FluidType), fluidType).ToUpper()); + } + catch (Exception ex) + { + Logger.LogError($"Couldn't parse fluid volume type [{fluidType}]:\n{ex}"); + return @default; + } + } } }