/// <summary> /// Read the current value of the control and return it as an object. /// </summary> /// <returns></returns> /// <remarks> /// This method allocates GC memory and thus may cause garbage collection when used during gameplay. /// /// Use <seealso cref="ReadValueIntoBuffer"/> to read values generically without having to know the /// specific value type of a control. /// </remarks> /// <seealso cref="ReadValueIntoBuffer"/> /// <seealso cref="InputControl{TValue}.ReadValue"/> public static unsafe object ReadValueAsObject(this InputControl control) { if (control == null) { throw new ArgumentNullException(nameof(control)); } return(control.ReadValueFromStateAsObject(control.currentStatePtr)); }
/// <summary> /// Read the control's default value and return it as an object. /// </summary> /// <param name="control">Control to read default value from.</param> /// <returns></returns> /// <exception cref="ArgumentNullException"><paramref name="control"/> is null.</exception> /// <remarks> /// This method allocates GC memory and should thus not be used during normal gameplay. /// </remarks> /// <seealso cref="InputControl.hasDefaultValue"/> /// <seealso cref="InputControl.defaultStatePtr"/> public static unsafe object ReadDefaultValueAsObject(this InputControl control) { if (control == null) { throw new ArgumentNullException("control"); } return(control.ReadValueFromStateAsObject(control.defaultStatePtr)); }