From 944ba3fde31c769d2ae776430491a070d4cc0c40 Mon Sep 17 00:00:00 2001 From: Nick Date: Sun, 26 Mar 2023 00:56:26 -0400 Subject: [PATCH] Add colours and fix orientation --- .../Assets/textures/Effects_CO_GasTail_d.png | Bin 0 -> 254 bytes NewHorizons/Builder/Body/CometTailBuilder.cs | 20 ++++++++++++++++++ .../SizeControllers/CometTailController.cs | 13 ++---------- .../External/Modules/CometTailModule.cs | 10 +++++++++ NewHorizons/Utility/NewHorizonExtensions.cs | 9 ++++++-- 5 files changed, 39 insertions(+), 13 deletions(-) create mode 100644 NewHorizons/Assets/textures/Effects_CO_GasTail_d.png diff --git a/NewHorizons/Assets/textures/Effects_CO_GasTail_d.png b/NewHorizons/Assets/textures/Effects_CO_GasTail_d.png new file mode 100644 index 0000000000000000000000000000000000000000..00859b6c4f6e4f91b1c86b785daa60506c258dba GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0vp^j6m$b!3HF63(7ix1d4;)ofy`glX(f`u%tWsIx;Y9 z?C1WI$O`0h7I;J!GcfQS24TkI`72U@f|EU6978mM=bk;ucUXakCBQ^LBlYM1^F2*d z1WpC1t(;O_TOoD&SVwB4%91H;#(NiRt#j6V+OdD;K+ zs?E~yJ80t3YWS>W>$jF-y~EY}C$~r>J8>u$ZYa!uDzBZkRw6kjM`hvGZHvF}GoHI* xtJpGrFU_eXmnIa;S@b=2EXa2_^NU+?-;33Lg1eS@NdTS4;OXk;vd$@?2>{yCUDp5r literal 0 HcmV?d00001 diff --git a/NewHorizons/Builder/Body/CometTailBuilder.cs b/NewHorizons/Builder/Body/CometTailBuilder.cs index 4d8e719f..cdc691f5 100644 --- a/NewHorizons/Builder/Body/CometTailBuilder.cs +++ b/NewHorizons/Builder/Body/CometTailBuilder.cs @@ -2,6 +2,7 @@ using NewHorizons.Components.SizeControllers; using NewHorizons.External.Configs; using NewHorizons.External.Modules; using NewHorizons.Utility; +using NewHorizons.Utility.Files; using NewHorizons.Utility.OuterWilds; using NewHorizons.Utility.OWML; using UnityEngine; @@ -93,6 +94,25 @@ namespace NewHorizons.Builder.Body gasTail.SetActive(true); controller.gasTail = gasTail; + if (cometTailModule.dustTint != null) + { + foreach (var dust in dustTail.GetComponentsInChildren()) + { + var untintedDust = ImageUtilities.GetTexture(Main.Instance, "Assets/textures/Effects_CO_DustTail_d.png"); + dust.material.mainTexture = ImageUtilities.TintImage(untintedDust, cometTailModule.dustTint.ToColor()); + } + } + + if (cometTailModule.gasTint != null) + { + foreach (var gas in gasTail.GetComponentsInChildren()) + { + var untintedGas = ImageUtilities.GetTexture(Main.Instance, "Assets/textures/Effects_CO_GasTail_d.png"); + gas.material.mainTexture = untintedGas; + gas.material.color = cometTailModule.gasTint.ToColor(); + } + } + rootObj.SetActive(true); } } diff --git a/NewHorizons/Components/SizeControllers/CometTailController.cs b/NewHorizons/Components/SizeControllers/CometTailController.cs index b3bef490..b108d76e 100644 --- a/NewHorizons/Components/SizeControllers/CometTailController.cs +++ b/NewHorizons/Components/SizeControllers/CometTailController.cs @@ -18,18 +18,9 @@ namespace NewHorizons.Components.SizeControllers private Vector3 _gasTarget; private Vector3 _dustTarget; - private float _angularVelocity = 1f; - public void Start() { _body = transform.GetAttachedOWRigidbody(); - - if (!_hasRotationOverride && _hasPrimaryBody) - { - UpdateTargetPositions(); - dustTail?.transform?.LookAt(_dustTarget); - gasTail?.transform?.LookAt(_gasTarget); - } } public override void FixedUpdate() @@ -40,8 +31,8 @@ namespace NewHorizons.Components.SizeControllers { UpdateTargetPositions(); - dustTail?.SmoothLookAt(_dustTarget, Time.deltaTime, _angularVelocity); - gasTail?.SmoothLookAt(_gasTarget, Time.deltaTime, _angularVelocity); + dustTail?.LookDir(_dustTarget); + gasTail?.LookDir(_gasTarget); } } diff --git a/NewHorizons/External/Modules/CometTailModule.cs b/NewHorizons/External/Modules/CometTailModule.cs index b74c88f3..2750ba36 100644 --- a/NewHorizons/External/Modules/CometTailModule.cs +++ b/NewHorizons/External/Modules/CometTailModule.cs @@ -21,5 +21,15 @@ namespace NewHorizons.External.Modules /// The body that the comet tail should always point away from /// public string primaryBody; + + /// + /// Colour of the dust tail (the shorter part) + /// + public MColor dustTint; + + /// + /// Colour of the gas tail (the longer part) + /// + public MColor gasTint; } } diff --git a/NewHorizons/Utility/NewHorizonExtensions.cs b/NewHorizons/Utility/NewHorizonExtensions.cs index d20be830..275e6f52 100644 --- a/NewHorizons/Utility/NewHorizonExtensions.cs +++ b/NewHorizons/Utility/NewHorizonExtensions.cs @@ -256,14 +256,19 @@ namespace NewHorizons.Utility public static FluidVolume.Type ConvertToOW(this NHFluidType fluidType, FluidVolume.Type @default = FluidVolume.Type.NONE) => EnumUtils.Parse(fluidType.ToString().ToUpper(), @default); - public static void SmoothLookAt(this GameObject go, Vector3 direction, float dt, float angularVelocity) + public static void SmoothLookDir(this GameObject go, Vector3 direction, float dt, float angularVelocity) { var start = go.transform.rotation; var end = Quaternion.FromToRotation(Vector3.forward, direction); var angle = Quaternion.Angle(start, end); - go.transform.rotation = Quaternion.Slerp(start, end, angularVelocity / angle * dt * dt); + go.transform.rotation = Quaternion.Slerp(start, end, (angularVelocity / angle) * dt); + } + + public static void LookDir(this GameObject go, Vector3 direction) + { + go.transform.rotation = Quaternion.FromToRotation(Vector3.forward, direction); } } }