From 74652d09e79dcf7df28026b573decd69e40f1cdb Mon Sep 17 00:00:00 2001 From: Alexejhero <32238504+Alexejhero@users.noreply.github.com> Date: Mon, 25 Mar 2024 04:05:31 +0100 Subject: [PATCH] Fix ghost shadows --- README.md | 2 +- .../Floors/Objects/GenericShadowBehaviour.cs | 2 ++ .../Floors/Objects/LongPlayerShadowRenderer.cs | 2 +- .../Floors/Objects/PlayerShadowRenderer.cs | 17 +++++++++++++++++ .../Floors/Objects/RelativeShadowRenderer.cs | 4 +++- Submerged/Submerged.csproj | 2 +- 6 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 Submerged/Floors/Objects/PlayerShadowRenderer.cs diff --git a/README.md b/README.md index f7cfbc6..71dd031 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,7 @@ The table below lists the most recent Submerged release for each Among Us versio | Among Us Version | Submerged Version | Links | |:---------------------------------------------------------------------------------------------:|:-----------------:|:-----------------------------------------------------------------------------------:| -| `v2024.3.5` | `v2024.3.24` | [Download](https://github.com/SubmergedAmongUs/Submerged/releases/tag/v2024.3.24/) | +| `v2024.3.5` | `v2024.3.25` | [Download](https://github.com/SubmergedAmongUs/Submerged/releases/tag/v2024.3.25/) | | `v2023.11.28` | `v2023.11.29` | [Download](https://github.com/SubmergedAmongUs/Submerged/releases/tag/v2023.11.29/) | | `v2023.10.24` | `v2023.11.2` | [Download](https://github.com/SubmergedAmongUs/Submerged/releases/tag/v2023.11.2/) | | `v2023.7.12`
`v2023.7.11` | `v2023.8.2` | [Download](https://github.com/SubmergedAmongUs/Submerged/releases/tag/v2023.8.2/) | diff --git a/Submerged/Floors/Objects/GenericShadowBehaviour.cs b/Submerged/Floors/Objects/GenericShadowBehaviour.cs index 295bcb9..e6c4e6a 100644 --- a/Submerged/Floors/Objects/GenericShadowBehaviour.cs +++ b/Submerged/Floors/Objects/GenericShadowBehaviour.cs @@ -16,7 +16,9 @@ public sealed class GenericShadowBehaviour(nint ptr) : MonoBehaviour(ptr) static GenericShadowBehaviour() { + // Overrides added earlier have higher priority (smaller index goes first) ShadowTypeOverrides.Add(obj => obj.gameObject.GetComponentInParent(true) ? typeof(LongPlayerShadowRenderer) : null); + ShadowTypeOverrides.Add(obj => obj.gameObject.GetComponentInParent() ? typeof(PlayerShadowRenderer) : null); ShadowTypeOverrides.Add(obj => obj.gameObject.GetComponent() ? typeof(DeadBodyShadowRenderer) : null); } diff --git a/Submerged/Floors/Objects/LongPlayerShadowRenderer.cs b/Submerged/Floors/Objects/LongPlayerShadowRenderer.cs index 8ceb772..204d06f 100644 --- a/Submerged/Floors/Objects/LongPlayerShadowRenderer.cs +++ b/Submerged/Floors/Objects/LongPlayerShadowRenderer.cs @@ -4,7 +4,7 @@ namespace Submerged.Floors.Objects; [RegisterInIl2Cpp] -public class LongPlayerShadowRenderer(nint ptr) : RelativeShadowRenderer(ptr) +public class LongPlayerShadowRenderer(nint ptr) : PlayerShadowRenderer(ptr) { public LongBoiPlayerBody body; diff --git a/Submerged/Floors/Objects/PlayerShadowRenderer.cs b/Submerged/Floors/Objects/PlayerShadowRenderer.cs new file mode 100644 index 0000000..b81c51b --- /dev/null +++ b/Submerged/Floors/Objects/PlayerShadowRenderer.cs @@ -0,0 +1,17 @@ +using Reactor.Utilities.Attributes; + +namespace Submerged.Floors.Objects; + +[RegisterInIl2Cpp] +public class PlayerShadowRenderer(nint ptr) : RelativeShadowRenderer(ptr) +{ + public PlayerControl player; + + protected override void Start() + { + base.Start(); + player = GetComponentInParent(); + } + + public override bool EnableShadow => player.isDummy || (!player.Data.IsDead && !player.Data.Disconnected); +} diff --git a/Submerged/Floors/Objects/RelativeShadowRenderer.cs b/Submerged/Floors/Objects/RelativeShadowRenderer.cs index 830dac2..df6d490 100644 --- a/Submerged/Floors/Objects/RelativeShadowRenderer.cs +++ b/Submerged/Floors/Objects/RelativeShadowRenderer.cs @@ -20,6 +20,8 @@ public class RelativeShadowRenderer(nint ptr) : MonoBehaviour(ptr) private readonly Dictionary _cachedSprites = []; + public virtual bool EnableShadow => true; + protected virtual void Awake() { gameObject.layer = 4; @@ -48,7 +50,7 @@ protected virtual void LateUpdate() if (targetRenderer) { - shadowRenderer.enabled = targetRenderer.enabled && targetRenderer.gameObject.activeInHierarchy; + shadowRenderer.enabled = targetRenderer.enabled && targetRenderer.gameObject.activeInHierarchy && EnableShadow; shadowRenderer.sprite = GetReplacementSprite(targetRenderer.sprite); shadowRenderer.SetColorAlpha(targetRenderer.color.a); shadowRenderer.flipX = targetRenderer.flipX; diff --git a/Submerged/Submerged.csproj b/Submerged/Submerged.csproj index e716304..9e2cdb5 100644 --- a/Submerged/Submerged.csproj +++ b/Submerged/Submerged.csproj @@ -1,6 +1,6 @@  - 2024.3.24 + 2024.3.25 Submerged Team git https://github.com/SubmergedAmongUs/Submerged