Move mouse-look sensitivity into the PlayerSettings CultCache global

ActionGameManager.Sensitivity was a Unity-serialized public float2, but
CultMath's float2 isn't Unity-serializable, so ARPG.unity's stored value
loaded as zero and mouse look went dead. Sensitivity is a player
preference, so it belongs in PlayerInputSettings (key 2) with the prior
default (-0.001, 0.001) as a field initializer, so a pre-existing player
store missing the key still deserializes to the working default instead
of zero. ActionGameManager now reads PlayerSettings.InputSettings.Sensitivity
directly; no cached copy on the MonoBehaviour. Adds a pinning test that
simulates an old store lacking key 2 and asserts the default, plus a
round-trip test for a non-default value.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Meta Vens 2026-09-17 17:22:09 +02:00
commit 00ebe46abe
3 changed files with 48 additions and 2 deletions

View file

@ -2,7 +2,9 @@ using GameCult.Caching;
using System;
using System.Collections.Generic;
using System.Globalization;
using CultMath;
using MessagePack;
using static CultMath.math;
[CultDocument("aetheria.playersettings", "1"), CultGlobal, MessagePackObject]
public class PlayerSettings
@ -71,6 +73,7 @@ public class PlayerInputSettings
// MessagePack's untrusted-data security refuses to read it back.
[Key(0)] public Dictionary<string, Dictionary<int, string>> InputActionMap = new Dictionary<string, Dictionary<int, string>>();
[Key(1)] public List<string> ActionBarInputs = new List<string>();
[Key(2)] public float2 Sensitivity = float2(-0.001f, 0.001f);
}
public enum Quality