Skip to content

Commit eafc6fe

Browse files
authored
Fix animators not working when driven (#63)
I took personal offense that my mantis blade that was driven didn't work with this mod, so I fixed it.
1 parent def40a3 commit eafc6fe

File tree

2 files changed

+25
-1
lines changed

2 files changed

+25
-1
lines changed

CommunityBugFixCollection/PauseAnimatorUpdates.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System;
44
using System.Collections.Generic;
55
using System.Text;
6+
using System.Runtime.CompilerServices;
67

78
namespace CommunityBugFixCollection
89
{
@@ -12,6 +13,24 @@ internal sealed class PauseAnimatorUpdates : ResoniteBugFixMonkey<PauseAnimatorU
1213
{
1314
public override IEnumerable<string> Authors => Contributors.Banane9;
1415

16+
private class Float
17+
{
18+
public float Value;
19+
20+
public Float(float value)
21+
{
22+
Value = value;
23+
}
24+
25+
public Float()
26+
{
27+
Value = 0f;
28+
}
29+
}
30+
31+
32+
private static readonly ConditionalWeakTable<Animator, Float> _hasChangedPlayhead = new();
33+
1534
private static bool Prefix(Animator __instance)
1635
{
1736
if (!Enabled)
@@ -22,9 +41,11 @@ private static bool Prefix(Animator __instance)
2241
if (!__instance._fieldMappersValid)
2342
__instance.GenerateFieldMappers();
2443

25-
if (__instance.IsPlaying)
44+
45+
if (_hasChangedPlayhead.GetOrCreateValue(__instance).Value != __instance._playback.Position)
2646
{
2747
var position = __instance.Position;
48+
_hasChangedPlayhead.GetOrCreateValue(__instance).Value = __instance.Position;
2849

2950
foreach (var fieldMapper in __instance._fieldMappers)
3051
fieldMapper.Set(position);
@@ -33,4 +54,6 @@ private static bool Prefix(Animator __instance)
3354
return false;
3455
}
3556
}
57+
58+
3659
}

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
<ResonitePath Condition="Exists('C:\Program Files (x86)\Steam\steamapps\common\Resonite\')">C:\Program Files (x86)\Steam\steamapps\common\Resonite</ResonitePath>
4040
<ResonitePath Condition="Exists('$(HOME)/.steam/steam/steamapps/common/Resonite/')">$(HOME)/.steam/steam/steamapps/common/Resonite</ResonitePath>
4141
<ResonitePath Condition="Exists('D:/Files/Games/Resonite/app/')">D:/Files/Games/Resonite/app</ResonitePath>
42+
<ResonitePath Condition="Exists('D:\SteamLibrary\\steamapps\common\Resonite\')">D:\SteamLibrary\\steamapps\common\Resonite\</ResonitePath>
4243
<ResonitePath Condition="Exists('G:\SteamLibrary\steamapps\common\Resonite')">G:\SteamLibrary\steamapps\common\Resonite</ResonitePath>
4344
</PropertyGroup>
4445
</Project>

0 commit comments

Comments
 (0)