示例#1
0
        protected void AccumulateDelta(IntPtr oldStatePtr, IntPtr newStatePtr, InputControl <float> control)
        {
            var oldDelta = control.ReadValueFrom(oldStatePtr);
            var newDelta = control.ReadValueFrom(newStatePtr);

            control.WriteValueInto(newStatePtr, oldDelta + newDelta);
        }
示例#2
0
        protected bool ResetDelta(IntPtr statePtr, InputControl <float> control)
        {
            var value = control.ReadValueFrom(statePtr);

            if (Mathf.Approximately(0f, value))
            {
                return(false);
            }
            control.WriteValueInto(statePtr, 0f);
            return(true);
        }
示例#3
0
            /// <summary>
            /// Checking an individual input event for significant InputControl changes.
            /// </summary>
            /// <param name="inputEvent">The input event being checked for changes</param>
            /// <param name="device">The input device being checked against </param>
            /// <returns>True if any changes exist in the event once the device has been filtered through for noise and non-significant changes.  False otherwise.</returns>
            public bool HasValidData(InputEventPtr inputEvent, InputDevice device)
            {
                if (!inputEvent.valid)
                {
                    throw new ArgumentException("Invalid or unset event being checked.", "inputEvent");
                }

                if (device == null)
                {
                    throw new ArgumentException("No device passed in to check if inputEvent has valid data", "device");
                }

                InputControl control = device.allControls[controlIndex];

                if (control != null)
                {
                    switch (type)
                    {
                    case EElementType.TypeFloat:
                    {
                        InputControl <float> castedControl = control as InputControl <float>;
                        if (castedControl != null)
                        {
                            float value;
                            if (castedControl.ReadValueFrom(inputEvent, out value) && Mathf.Abs(value) > float.Epsilon)
                            {
                                return(true);
                            }
                        }
                    }
                    break;

                    case EElementType.TypeVec2:
                    {
                        InputControl <Vector2> castedControl = control as InputControl <Vector2>;
                        if (castedControl != null)
                        {
                            Vector2 value;
                            if (castedControl.ReadValueFrom(inputEvent, out value) && Vector2.SqrMagnitude(value) > float.Epsilon)
                            {
                                return(true);
                            }
                        }
                    }
                    break;
                    }
                }

                return(false);
            }