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); }
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); }
/// <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); }