diff --git a/Code/Modules/CustomTrail.cs b/Code/Modules/CustomTrail.cs index adf78e2..74e3a37 100644 --- a/Code/Modules/CustomTrail.cs +++ b/Code/Modules/CustomTrail.cs @@ -1,4 +1,5 @@ using System; +using Celeste.Mod.Trailine.ThirdParty; using Microsoft.Xna.Framework; namespace Celeste.Mod.Trailine.Modules { @@ -28,6 +29,9 @@ private static void On_Player_Update(On.Celeste.Player.orig_Update orig, Player _ => Color.Transparent }; Vector2 scale = new Vector2(Math.Abs(self.Sprite.Scale.X) * (float)self.Facing, self.Sprite.Scale.Y); + if (GravityHelperImports.IsPlayerInverted?.Invoke() ?? false) { + scale.Y *= -1f; + } TrailineTrailManager.Add(self, scale, color, Settings.TrailDuration); } } diff --git a/Code/ThirdParty/GravityHelperImports.cs b/Code/ThirdParty/GravityHelperImports.cs new file mode 100644 index 0000000..0384219 --- /dev/null +++ b/Code/ThirdParty/GravityHelperImports.cs @@ -0,0 +1,11 @@ +using System; +using MonoMod.ModInterop; + +namespace Celeste.Mod.Trailine.ThirdParty { + [ModImportName("GravityHelper")] + public static class GravityHelperImports { + + public static Func IsPlayerInverted; + + } +} diff --git a/Code/TrailineModule.cs b/Code/TrailineModule.cs index 021265f..68f69a3 100644 --- a/Code/TrailineModule.cs +++ b/Code/TrailineModule.cs @@ -2,9 +2,11 @@ using System.IO; using Celeste.Mod.Core; using Celeste.Mod.Trailine.Modules; +using Celeste.Mod.Trailine.ThirdParty; using Celeste.Mod.Trailine.UI; using Celeste.Mod.Trailine.Utils; using Microsoft.Xna.Framework; +using MonoMod.ModInterop; using YamlDotNet.Serialization; namespace Celeste.Mod.Trailine { @@ -23,6 +25,8 @@ public TrailineModule() { public static bool Loaded = false; public override void Load() { + typeof(GravityHelperImports).ModInterop(); + if (Loaded || !Settings.Enabled) { return; }