// Update is called once per frame void Update() { inputReceivers.UnionWith(inputReceiverRegisterAwaiters); inputReceiverRegisterAwaiters.Clear(); inputReceivers.ExceptWith(inputReceiverUnregisterAwaiters); inputReceiverUnregisterAwaiters.Clear(); if (RuleManager.Rule?.HasPermission(this) ?? false) { foreach (var receiver in inputReceivers) { receiver.OnHorizontalAxis(inputSource.GetHorizontalAxisLeftStick()); receiver.OnVerticalAxis(inputSource.GetVerticalAxisLeftStick()); if (inputSource.GetButtonDown(InputSource.Button.Cross)) { receiver.OnJumpButtonDown(); } if (inputSource.GetButtonDown(InputSource.Button.Square)) { receiver.OnFireButtonDown(); } if (inputSource.GetButtonDown(InputSource.Button.Circle)) { receiver.OnUnequipButtonDown(); } } } }