Beispiel #1
0
        private void AddState(InputStateBase inputState)
        {
            _inputStates.Add(inputState);

            // Register first MouseOrPointer state as default
            if (this.DefaultMouseOrPointer == MouseOrPointerState.Dummy)
            {
                if (inputState is MouseOrPointerState mouseOrPointer)
                {
                    this.DefaultMouseOrPointer = mouseOrPointer;
                }
            }

            // Register first Gamepad state as default
            if (this.DefaultGamepad == GamepadState.Dummy)
            {
                if (inputState is GamepadState gamepadState)
                {
                    this.DefaultGamepad = gamepadState;
                }
            }

            // Register first keyboard state as default
            if (this.DefaultKeyboard == KeyboardState.Dummy)
            {
                if (inputState is KeyboardState keyboardState)
                {
                    this.DefaultKeyboard = keyboardState;
                }
            }
        }
Beispiel #2
0
        internal void AddCopyOfState(InputStateBase inputState, ViewInformation?viewInfo)
        {
            // Get the state object to where to copy the given InputState
            InputStateBase?targetState = null;

            for (var loop = 0; loop < _recoveredStates.Count; loop++)
            {
                if (_recoveredStates[loop].CurrentType == inputState.CurrentType)
                {
                    targetState = _recoveredStates[loop];
                    _recoveredStates.RemoveAt(loop);
                    break;
                }
            }
            if (targetState == null)
            {
                targetState = (InputStateBase)Activator.CreateInstance(inputState.CurrentType) !;
            }

            // Copy all state data
            inputState.CopyAndResetForUpdatePass(targetState);
            targetState.RelatedView = viewInfo;

            this.AddState(targetState);
        }
Beispiel #3
0
        protected override void CopyAndResetForUpdatePassInternal(InputStateBase targetState)
        {
            var targetStateCasted = (KeyboardState)targetState;

            targetStateCasted._keysHit.Clear();
            targetStateCasted._keysHit.AddRange(_keysHit);

            targetStateCasted._keysDown.Clear();
            targetStateCasted._keysDown.AddRange(_keysDown);

            targetStateCasted._focused = _focused;

            // Update local collections (move hit keys to down keys)
            _keysDown.AddRange(_keysHit);
            _keysHit.Clear();
        }
        /// <summary>
        /// Copies this object and then resets it
        /// in preparation of the next update pass.
        /// Called by update-render loop.
        /// </summary>
        protected override void CopyAndResetForUpdatePassInternal(InputStateBase targetState)
        {
            var targetStateCasted = (MouseOrPointerState)targetState;

            targetStateCasted._moveDistancePixel = _moveDistancePixel;
            targetStateCasted._screenSizePixel   = _screenSizePixel;
            targetStateCasted._positionPixel     = _positionPixel;
            targetStateCasted._wheelDelta        = _wheelDelta;
            targetStateCasted._isInside          = _isInside;
            targetStateCasted.Type = this.Type;
            for (var loop = 0; loop < s_buttonCount; loop++)
            {
                targetStateCasted._buttonsDown[loop] = _buttonsDown[loop];
                targetStateCasted._buttonsHit[loop]  = _buttonsHit[loop];
                targetStateCasted._buttonsUp[loop]   = _buttonsUp[loop];
            }

            // Reset current object
            _moveDistancePixel = Vector2.Zero;
            _wheelDelta        = 0;
            for (var loop = 0; loop < s_buttonCount; loop++)
            {
                _buttonsUp[loop] = false;

                if (_buttonsHit[loop] || _buttonsDown[loop])
                {
                    _buttonsHit[loop]  = false;
                    _buttonsDown[loop] = true;
                }
                else
                {
                    _buttonsHit[loop]  = false;
                    _buttonsDown[loop] = false;
                }
            }
        }
 /// <summary>
 /// Copies this object and then resets it
 /// in preparation of the next update pass.
 /// Called by update-render loop.
 /// </summary>
 internal void CopyAndResetForUpdatePass(InputStateBase targetState)
 {
     this.CopyAndResetForUpdatePassInternal(targetState);
 }
 /// <summary>
 /// Copies this object and then resets it
 /// in preparation of the next update pass.
 /// Called by update-render loop.
 /// </summary>
 protected abstract void CopyAndResetForUpdatePassInternal(InputStateBase targetState);