diff --git a/.voidbot/state/aetheria.cc b/.voidbot/state/aetheria.cc index a48aacd2d..be4a5113b 100644 Binary files a/.voidbot/state/aetheria.cc and b/.voidbot/state/aetheria.cc differ diff --git a/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs b/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs index c1ded0a7c..57c313467 100644 --- a/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs +++ b/Assets/Scripts/UI/InputScreen/InputDisplayLayout.cs @@ -502,6 +502,14 @@ public class InputDisplayLayout : MonoBehaviour ActionGameManager.QueueRuntimePlayerSettingsCommit(); } + private void CommitBindingOverride(InputAction action, InputBinding binding, string inputSystemPath) + { + binding.overridePath = inputSystemPath; + action.ApplyBindingOverride(binding); + ActionGameManager.RuntimePlayerSettings.InputSettings.InputActionMap[(action.name, action.GetBindingIndex(binding))] = inputSystemPath; + QueueRuntimeInputSettingsCommit(); + } + private void OnEnable() { foreach(var buttonMapping in _buttonMappings) @@ -525,11 +533,7 @@ public class InputDisplayLayout : MonoBehaviour } else { - _dragAction.Binding.overridePath = _previewButton.Button.InputSystemPath; - _dragAction.Action.ApplyBindingOverride(_dragAction.Binding); - ActionGameManager.RuntimePlayerSettings.InputSettings.InputActionMap[(_dragAction.Action.name, - _dragAction.Action.GetBindingIndex(_dragAction.Binding))] = _previewButton.Button.InputSystemPath; - // TODO: Assign New Binding + CommitBindingOverride(_dragAction.Action, _dragAction.Binding, _previewButton.Button.InputSystemPath); } foreach(var action in _actionMappings) diff --git a/docs/aetheria-perfect-machine-map.md b/docs/aetheria-perfect-machine-map.md index 6898edf7f..043006068 100644 --- a/docs/aetheria-perfect-machine-map.md +++ b/docs/aetheria-perfect-machine-map.md @@ -76,7 +76,8 @@ legacy catalog cache, and legacy UI paths should be migration-only or deleted. projection is not portable state authority. Aetheria has its own remapping UI that calls Unity's InputSystem at the binding/action layer; Unity's generated `AetheriaInput` class is the edge consumer of typed binding overrides, not - the durable owner. + the durable owner. Binding drag/drop and action-bar remapping both queue the + same typed player-settings commit after mutating the runtime projection. - `Aetheria.State` now exposes typed node put/get ports for run state, zone state, and entity snapshots. The state smoke writes a run referencing a zone, a zone referencing an entity snapshot, and an entity snapshot carrying