Exemplo n.º 1
0
        internal void AddCopyOfState(InputStateBase inputState, ViewInformation viewInfo)
        {
            // Get the state object to where to copy the given InputState
            InputStateBase targetState = null;

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

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

            this.AddState(targetState);
        }
Exemplo n.º 2
0
        private void AddState(InputStateBase inputState)
        {
            m_inputStates.Add(inputState);

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

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

            // Register first keyboard state as default
            if (this.DefaultKeyboard == KeyboardState.Dummy)
            {
                KeyboardState keyboardState = inputState as KeyboardState;
                if (keyboardState != null)
                {
                    this.DefaultKeyboard = keyboardState;
                }
            }
        }
Exemplo n.º 3
0
        /// <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)
        {
            GamepadState targetStateCasted = targetState as GamepadState;

            targetStateCasted.EnsureNotNull(nameof(targetStateCasted));

            targetStateCasted.m_controllerIndex = this.m_controllerIndex;
            targetStateCasted.m_isConnected     = this.m_isConnected;
            targetStateCasted.m_prevState       = this.m_prevState;
            targetStateCasted.m_currentState    = this.m_currentState;
        }
Exemplo n.º 4
0
        protected override void CopyAndResetForUpdatePassInternal(InputStateBase targetState)
        {
            KeyboardState targetStateCasted = targetState as KeyboardState;

            targetStateCasted.EnsureNotNull(nameof(targetStateCasted));

            targetStateCasted.m_keysHit.Clear();
            targetStateCasted.m_keysHit.AddRange(this.m_keysHit);

            targetStateCasted.m_keysDown.Clear();
            targetStateCasted.m_keysDown.AddRange(this.m_keysDown);

            targetStateCasted.m_focused = this.m_focused;

            // Update local collections (move hit keys to down keys)
            this.m_keysDown.AddRange(this.m_keysHit);
            this.m_keysHit.Clear();
        }
Exemplo n.º 5
0
        /// <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)
        {
            MouseOrPointerState targetStateCasted = targetState as MouseOrPointerState;

            targetStateCasted.EnsureNotNull(nameof(targetStateCasted));

            targetStateCasted.m_moveDistancePixel  = m_moveDistancePixel;
            targetStateCasted.m_screenSizePixel    = m_screenSizePixel;
            targetStateCasted.m_positionPixel      = m_positionPixel;
            targetStateCasted.m_wheelDelta         = m_wheelDelta;
            targetStateCasted.m_isInside           = m_isInside;
            targetStateCasted.m_mouseOrPointerType = m_mouseOrPointerType;
            for (int loop = 0; loop < BUTTON_COUNT; loop++)
            {
                targetStateCasted.m_buttonsDown[loop] = m_buttonsDown[loop];
                targetStateCasted.m_buttonsHit[loop]  = m_buttonsHit[loop];
                targetStateCasted.m_buttonsUp[loop]   = m_buttonsUp[loop];
            }

            // Reset current object
            m_moveDistancePixel = Vector2.Zero;
            m_wheelDelta        = 0;
            for (int loop = 0; loop < BUTTON_COUNT; loop++)
            {
                m_buttonsUp[loop] = false;

                if (m_buttonsHit[loop] || m_buttonsDown[loop])
                {
                    m_buttonsHit[loop]  = false;
                    m_buttonsDown[loop] = true;
                }
                else
                {
                    m_buttonsHit[loop]  = false;
                    m_buttonsDown[loop] = false;
                }
            }
        }
Exemplo n.º 6
0
 /// <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);
Exemplo n.º 7
0
 /// <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)
 {
     CopyAndResetForUpdatePassInternal(targetState);
 }