Skip to content

Commit a0245b7

Browse files
committed
Merge remote-tracking branch 'upstream/master'
2 parents 644bda3 + 425559c commit a0245b7

7 files changed

Lines changed: 50 additions & 15 deletions

File tree

CommunityBugFixCollection/Box.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
5+
namespace CommunityBugFixCollection
6+
{
7+
internal sealed class Box<T>
8+
where T : struct
9+
{
10+
public T Value { get; set; }
11+
12+
public Box(T value)
13+
{
14+
Value = value;
15+
}
16+
17+
public Box()
18+
{ }
19+
20+
public static implicit operator Box<T>(T value) => new(value);
21+
22+
public static implicit operator T(Box<T> box) => box.Value;
23+
}
24+
}

CommunityBugFixCollection/CommunityBugFixCollection.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
1111
<PackageId>CommunityBugFixCollection</PackageId>
1212
<Title>Community Bug-Fix Collection</Title>
13-
<Authors>Banane9; Nytra; art0007i; LeCloutPanda; goat; __Choco__; LJ</Authors>
14-
<Version>0.6.0-beta</Version>
13+
<Authors>Banane9; Nytra; art0007i; LeCloutPanda; goat; __Choco__; LJ; 989onan</Authors>
14+
<Version>0.7.0-beta</Version>
1515
<Description>This MonkeyLoader mod for Resonite that fixes various small Resonite-issues that are still open.</Description>
1616
<PackageReadmeFile>README.md</PackageReadmeFile>
1717
<PackageLicenseExpression>LGPL-3.0-or-later</PackageLicenseExpression>

CommunityBugFixCollection/Contributors.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,5 +20,7 @@ internal static class Contributors
2020
public static string[] LJ { get; } = ["LJ"];
2121

2222
public static string[] Nytra { get; } = ["Nytra"];
23+
24+
public static string[] Onan { get; } = ["989onan"];
2325
}
2426
}

CommunityBugFixCollection/Locale/de.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"CommunityBugFixCollection.ReallyNoDestroyUndo.Description": "Sorgt dafür, dass die NoDestroyUndo Komponente tatsächlich verhindert, dass das Zerstören eines Objekts rückgängig gemacht werden kann.",
4444
"CommunityBugFixCollection.SmoothDraggables.Description": "Umgeht, dass Slider und Joints in Headless-Sessions verrutschen.",
4545
"CommunityBugFixCollection.TiltedUIAlignment.Description": "Kippt die UI-fokussierte Kamera, um UIX-Renderprobleme zum umgehen.",
46+
"CommunityBugFixCollection.SteamVRFocusResolutionScale.Description": "Verhindert, dass das SteamVR Unity Plugin die Renderauflösung dauerhaft verringert, wenn ein Fokusevent verpasst wird.",
4647
"CommunityBugFixCollection.StationaryGrabWorldActivation.Description": "Verhindert, dass die Welt-Greifen Fortbewegung den Spieler bei jeder Aktivierung bewegt.",
4748
"CommunityBugFixCollection.ValidQuaternionInputs.Description": "Lässt das ProtoFlux-Tool valide float und double Quaternions spawnen.",
4849
"CommunityBugFixCollection.ValueModDecimal.Description": "Fügt eine Nullprüfung bei der Decimal ValueMod ProtoFlux Node hinzu, um einen Crash bei der Teilung durch Null zu verhindern.",

CommunityBugFixCollection/Locale/en.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"CommunityBugFixCollection.ReallyNoDestroyUndo.Description": "Makes the NoDestroyUndo component actually prevent undoing destroying something.",
5050
"CommunityBugFixCollection.SmoothDraggables.Description": "Workaround for Sliders and Joints snapping in sessions hosted by a headless.",
5151
"CommunityBugFixCollection.StationaryGrabWorldActivation.Description": "Stops the Grab World Locomotion from moving the player with each activiation.",
52+
"CommunityBugFixCollection.SteamVRFocusResolutionScale.Description": "Prevents the SteamVR Unity plugin from permanently lowering the render resolution when a focus event is missed.",
5253
"CommunityBugFixCollection.TiltedUIAlignment.Description": "Tilts the UI-Focus camera to work around UIX rendering issues.",
5354
"CommunityBugFixCollection.ValidQuaternionInputs.Description": "Makes the ProtoFlux Tool spawn valid float and double quaternion inputs.",
5455
"CommunityBugFixCollection.ValueModDecimal.Description": "Adds a zero check to the Decimal ValueMod ProtoFlux node to prevent DIV/0 crashes.",

CommunityBugFixCollection/PauseAnimatorUpdates.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ namespace CommunityBugFixCollection
1111
[HarmonyPatch(typeof(Animator), nameof(Animator.OnCommonUpdate))]
1212
internal sealed class PauseAnimatorUpdates : ResoniteBugFixMonkey<PauseAnimatorUpdates>
1313
{
14-
public override IEnumerable<string> Authors => Contributors.Banane9;
14+
private static readonly ConditionalWeakTable<Animator, Box<float>> _lastPositionByAnimator = new();
15+
16+
public override IEnumerable<string> Authors { get; } = [.. Contributors.Banane9, .. Contributors.Onan];
1517

1618
private class Float
1719
{
@@ -41,11 +43,17 @@ private static bool Prefix(Animator __instance)
4143
if (!__instance._fieldMappersValid)
4244
__instance.GenerateFieldMappers();
4345

46+
if (!_lastPositionByAnimator.TryGetValue(__instance, out var lastPosition))
47+
{
48+
// Make sure that initial state is always applied,
49+
// since playback position can't be < 0
50+
lastPosition = -1;
51+
_lastPositionByAnimator.Add(__instance, lastPosition);
52+
}
4453

45-
if (_hasChangedPlayhead.GetOrCreateValue(__instance).Value != __instance._playback.Position)
54+
if (lastPosition != __instance.Position)
4655
{
47-
var position = __instance.Position;
48-
_hasChangedPlayhead.GetOrCreateValue(__instance).Value = __instance.Position;
56+
var position = lastPosition.Value = __instance.Position;
4957

5058
foreach (var fieldMapper in __instance._fieldMappers)
5159
fieldMapper.Set(position);

CommunityBugFixCollection/SteamVrFocusResolutionScale.cs renamed to CommunityBugFixCollection/SteamVRFocusResolutionScale.cs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,28 @@
11
using HarmonyLib;
2-
using MonkeyLoader.Resonite;
32
using System.Collections.Generic;
43

54
namespace CommunityBugFixCollection
65
{
7-
[HarmonyPatchCategory(nameof(SteamVrFocusResolutionScale))]
86
[HarmonyPatch("Valve.VR.SteamVR_Render", "OnInputFocus")]
9-
internal sealed class SteamVrFocusResolutionScale : ResoniteBugFixMonkey<SteamVrFocusResolutionScale>
7+
[HarmonyPatchCategory(nameof(SteamVRFocusResolutionScale))]
8+
internal sealed class SteamVRFocusResolutionScale : ResoniteBugFixMonkey<SteamVRFocusResolutionScale>
109
{
11-
public override IEnumerable<string> Authors => Contributors.Goat;
12-
13-
// SteamVR_Render is treated as a singleton in SteamVR and initialized once from SteamVRDriver through SteamVR.Initialize()
10+
// SteamVR_Render is treated as a singleton in SteamVR and initialized once from SteamVRDriver through SteamVR.Initialize()
1411
private static bool _lastInputFocus = false;
15-
12+
13+
public override IEnumerable<string> Authors => Contributors.Goat;
14+
1615
public static bool Prefix(bool hasFocus)
1716
{
1817
// Work around some broken logic in SteamVR focus handling
1918
// https://github.com/Yellow-Dog-Man/Resonite-Issues/issues/2337#issuecomment-3025681468
2019
// https://github.com/ValveSoftware/steamvr_unity_plugin/blob/056c82369d78f253af8cefcae9b289efd69bd960/Assets/SteamVR/Scripts/SteamVR_Render.cs#L237-L262
2120
if (Enabled && !hasFocus && !_lastInputFocus)
2221
{
23-
Logger.Trace(() => "Dropping redundant OnInputFocus call");
22+
Logger.Trace(() => "Dropping redundant OnInputFocus unfocus call!");
2423
return false;
2524
}
26-
25+
2726
_lastInputFocus = hasFocus;
2827
return true;
2928
}

0 commit comments

Comments
 (0)