protected ConstrainedAxis(string name, IUpdater<float> deadzone, IUpdater<float> scale, AxisBinding binding) : this(name) { mDeadzone = deadzone; mScale = scale; mBinding = binding; }
public static void reset(this AxisBinding AxisBinding) { if (AxisBindingStorage.ContainsKey(AxisBinding)) { AxisBinding.primary.scale = AxisBindingStorage[AxisBinding].primaryScale; AxisBinding.secondary.scale = AxisBindingStorage[AxisBinding].secondaryScale; } }
// --------------------- public TouchTrackPad() : base() { this.touchSmoothing = 0.5f; this.touchState = new TouchGestureBasicState(); this.pressBinding = new DigitalBinding(); this.horzSwipeBinding = new AxisBinding("Mouse X", false); this.vertSwipeBinding = new AxisBinding("Mouse Y", false); }
// ---------------------------- static protected void SetupAxisBinding(AxisBinding binding, string axisName) { binding.Clear(); if (!string.IsNullOrEmpty(axisName)) { binding.Enable(); binding.AddTarget().SetSingleAxis(axisName, false); } }
// ------------------- public TouchButtonCreationWizard() : base() { this.minSize = new Vector2(this.minSize.x, 500); this.pressBinding = new DigitalBinding(); this.pressBindingInsp = new DigitalBindingInspector(null, new GUIContent("Press Binding")); this.toggleBinding = new DigitalBinding(); this.toggleBindingInsp = new DigitalBindingInspector(null, new GUIContent("Toggle Binding")); this.touchPressureBinding = new AxisBinding(); this.touchPressureBindingInsp = new AxisBindingInspector(null, new GUIContent("Touch Pressure Binding"), false, InputRig.InputSource.Analog, this.DrawPressureBindingExtraGUI); }
public PushAxis(AxisBinding binding) : base("Push", binding, new PushSingleAxis(true), new PushSingleAxis(false)) { KinectAxisConfig cfg = new KinectAxisConfig(); (Positive as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Positive.Name); (Negative as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Negative.Name); (Positive as ConstrainedAxis).Scale.Value = cfg.GetScale(Positive.Name); (Negative as ConstrainedAxis).Scale.Value = cfg.GetScale(Negative.Name); }
// ----------------- public TouchJoystick() : base() { this.joyStateBinding = new JoystickStateBinding(); this.pressBinding = new DigitalBinding(); this.emulateTouchPressure = true; this.touchPressureBinding = new AxisBinding(); this.centerWhenFollowing = false; this.config = new JoystickConfig(); this.state = new JoystickState(this.config); }
public KinectScaledAxis(string name, AxisBinding binding) : base(name, new ScalarUpdater(sAnchor * MakeDZ()), new ScalarUpdater(sAnchor * MakeScale()), binding) { mDeadzoneScale = sTmpDZScale; mScaleScale = sTmpSScale; mDeadzoneScale.Value = G.Cfg.GetDeadzone(name); mScaleScale.Value = G.Cfg.GetScale(name); Scale.ManuallyChanged += new Action <float>(Scale_ManuallyChanged); Deadzone.ManuallyChanged += new Action <float>(Deadzone_ManuallyChanged); }
// -------------- public TouchTrackPadCreationWizard() : base() { this.minSize = new Vector2(this.minSize.x, 500); this.pressBinding = new DigitalBinding(); this.horzDeltaBinding = new AxisBinding(); this.vertDeltaBinding = new AxisBinding(); this.pressBindingInsp = new DigitalBindingInspector(null, new GUIContent("Press binding")); this.horzDeltaBindingInsp = new AxisBindingInspector(null, new GUIContent("Horizontal Delta Binding"), false, InputRig.InputSource.TouchDelta); this.vertDeltaBindingInsp = new AxisBindingInspector(null, new GUIContent("Vertical Delta Binding"), false, InputRig.InputSource.TouchDelta); }
// ----------------- public TouchWheelCreationWizard() : base() { this.pressBinding = new DigitalBinding(); this.turnLeftBinding = new DigitalBinding(); this.turnRightBinding = new DigitalBinding(); this.turnBinding = new AxisBinding(); this.pressBindingInsp = new DigitalBindingInspector(null, new GUIContent("Press Binding")); this.turnLeftBindingInsp = new DigitalBindingInspector(null, new GUIContent("Turn Left Binding")); this.turnRightBindingInsp = new DigitalBindingInspector(null, new GUIContent("Turn Right Binding")); this.turnBindingInsp = new AxisBindingInspector(null, new GUIContent("Turn Analog Binding"), true, InputRig.InputSource.Analog); }
private static string GetBinding(AxisBinding binding) { switch (binding) { case AxisBinding.X: return("Move"); case AxisBinding.Pitch: return("Camera"); case AxisBinding.Z: return("Fly"); } return("Unknown"); }
public KinectScaledAxis(string name, AxisBinding binding) : base(name, new ScalarUpdater(sAnchor * MakeDZ()), new ScalarUpdater(sAnchor * MakeScale()), binding) { mDeadzoneScale = sTmpDZScale; mScaleScale = sTmpSScale; mDeadzoneScale.Value = G.Cfg.GetDeadzone(name); mScaleScale.Value = G.Cfg.GetScale(name); Scale.ManuallyChanged += new Action<float>(Scale_ManuallyChanged); Deadzone.ManuallyChanged += new Action<float>(Deadzone_ManuallyChanged); }
public PushAxis(bool right, AxisBinding binding) : base("Push" + (right ? "Right" : "Left"), binding, new PushSingleAxis(right, true), new PushSingleAxis(right, false)) { KinectAxisConfig cfg = new KinectAxisConfig(); (Positive as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Positive.Name); (Negative as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Negative.Name); (Positive as ConstrainedAxis).Scale.Value = cfg.GetScale(Positive.Name); (Negative as ConstrainedAxis).Scale.Value = cfg.GetScale(Negative.Name); }
//! \endcond // ------------------- public TouchSteeringWheel() : base() { this.analogConfig = new AnalogConfig(); this.analogConfig.analogDeadZone = 0.3f; this.centerWhenFollowing = false; this.pressBinding = new DigitalBinding(); this.analogTurnBinding = new AxisBinding("Horizontal", false); this.turnLeftBinding = new DigitalBinding(KeyCode.None, true, "Horizontal", true, false); this.turnRightBinding = new DigitalBinding(KeyCode.None, true, "Horizontal", false, false); }
public CrouchAxis(AxisBinding binding) : base("Crouch", binding) { Scalar hip = Nui.y(Nui.joint(Nui.Hip_Centre)); Scalar feet = Nui.y((Nui.joint(Nui.Ankle_Left) + Nui.joint(Nui.Ankle_Right))) / 2f; //How far pushing forward Scalar raw = feet - hip; Scalar anchor = Nui.smooth(Nui.magnitude(Nui.joint(Nui.Shoulder_Centre) - Nui.joint(Nui.Hip_Centre)), 50); mRaw = (anchor * 3) + raw; mRaw *= -1f; }
// ----------------- public TouchJoystickCreationWizard() : base() { this.minSize = new Vector2(this.minSize.x, 500); this.pressBinding = new DigitalBinding(); this.pressBindingInsp = new DigitalBindingInspector(null, new GUIContent("Press binding")); this.horzAxisBinding = new AxisBinding(); this.vertAxisBinding = new AxisBinding(); this.horzAxisBindingInsp = new AxisBindingInspector(null, new GUIContent("Horizontal Axis Binding"), false, InputRig.InputSource.Analog); this.vertAxisBindingInsp = new AxisBindingInspector(null, new GUIContent("Vertical Axis Binding"), false, InputRig.InputSource.Analog); }
public PushAxis(AxisBinding binding) : base( "Push", binding, new PushSingleAxis(true), new PushSingleAxis(false)) { KinectAxisConfig cfg = new KinectAxisConfig(); (Positive as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Positive.Name); (Negative as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Negative.Name); (Positive as ConstrainedAxis).Scale.Value = cfg.GetScale(Positive.Name); (Negative as ConstrainedAxis).Scale.Value = cfg.GetScale(Negative.Name); }
public PushAxis(bool right, AxisBinding binding) : base( "Push" + (right ? "Right" : "Left"), binding, new PushSingleAxis(right, true), new PushSingleAxis(right, false)) { KinectAxisConfig cfg = new KinectAxisConfig(); (Positive as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Positive.Name); (Negative as ConstrainedAxis).Deadzone.Value = cfg.GetDeadzone(Negative.Name); (Positive as ConstrainedAxis).Scale.Value = cfg.GetScale(Positive.Name); (Negative as ConstrainedAxis).Scale.Value = cfg.GetScale(Negative.Name); }
public TAxis(bool right, AxisBinding binding) : base((right ? "T-Right" : "T-Left"), binding, Perspective.Z) { mRight = right; Vector h = Nui.joint(mRight ? Nui.Hand_Right : Nui.Hand_Left); Vector s = Nui.joint(mRight ? Nui.Shoulder_Right : Nui.Shoulder_Left); mB = h - s; mActive = C.And(mRight ? G.ActiveR : G.ActiveL, Nui.abs(Nui.x(B)) > Nui.abs(Nui.z(B)) * 2f); mB = Nui.limit(mB, true, true, false); Init(); }
public GameSettingsManipulator() { _pitchUp = GameSettings.PITCH_UP; _pitchDown = GameSettings.PITCH_DOWN; _pitchAxisPrimaryInverted = GameSettings.AXIS_PITCH.primary.inverted; _pitchAxisSecondaryInverted = GameSettings.AXIS_PITCH.secondary.inverted; _rollLeft = GameSettings.ROLL_LEFT; _rollRight = GameSettings.ROLL_RIGHT; _rollAxis = GameSettings.AXIS_ROLL; _yawLeft = GameSettings.YAW_LEFT; _yawRight = GameSettings.YAW_RIGHT; _yawAxis = GameSettings.AXIS_YAW; }
public static void saveDefault(this AxisBinding AxisBinding, string name) { checkSaveFile(); if (keybindingSettings.isSet("ended") && !keybindingSettings.getBool("ended")) { AxisBinding.primary.scale = keybindingSettings.getFloat(name + "_primaryScale"); AxisBinding.secondary.scale = keybindingSettings.getFloat(name + "_secondaryScale"); } keybindingSettings.set(name + "_primaryScale", AxisBinding.primary.scale.ToString()); keybindingSettings.set(name + "_secondaryScale", AxisBinding.secondary.scale.ToString()); keybindingSettings.save(); if (!AxisBindingStorage.ContainsKey(AxisBinding)) { AxisBindingStorage.Add(AxisBinding, new AxisBindingStorage(AxisBinding.primary.scale, AxisBinding.secondary.scale)); } }
//! \endcond // --------------------- public TouchButton() : base() { this.pressBinding = new DigitalBinding(); this.toggleOnlyBinding = new DigitalBinding(); this.emulateTouchPressure = true; this.touchPressureBinding = new AxisBinding(); this.centerWhenFollowing = true; this.toggleOnAction = ToggleOnAction.OnPress; this.toggleOffAction = ToggleOffAction.OnRelease; this.autoToggleOff = false; this.autoToggleOffTimeOut = 1.0f; }
public StandAxis(bool forward, AxisBinding binding) : base("Stand" + (forward ? "X" : "Y"), binding) { mStandConfig = new StandConfig(); Vector handR = Nui.joint(Nui.Hand_Right); Vector handL = Nui.joint(Nui.Hand_Left); Vector zeroPoint = Vector.Create("ZeroPoint", mStandConfig.ZeroPosition.X, mStandConfig.ZeroPosition.Y, mStandConfig.ZeroPosition.Z); //How far pushing forward Vector diff = zeroPoint - Nui.joint(Nui.Hip_Centre); mRaw = forward ? Nui.z(diff) : Nui.x(diff); //Whether the push gesture could be active mActive = C.And(Nui.abs(mRaw) > Deadzone.Value, Nui.abs(mRaw) < mStandConfig.Maximum); //mActive = C.And(mActive, Nui.y(hand) > Nui.y(elbow)); //The value for the push gesture mValue = Nui.ifScalar(mActive, mRaw, 0f); }
//! \endcond // ------------------- public TouchSteeringWheel() : base() { this.analogConfig = new AnalogConfig(); this.analogConfig.analogDeadZone = 0.0f; this.touchSmoothing = 0.1f; this.centerOnDirectTouch = false; this.centerWhenFollowing = false; this.wheelMode = WheelMode.Swipe; this.pressBinding = new DigitalBinding(); this.analogTurnBinding = new AxisBinding("Horizontal", false); this.turnLeftBinding = new DigitalBinding(KeyCode.None, true, "Horizontal", true, false); this.turnRightBinding = new DigitalBinding(KeyCode.None, true, "Horizontal", false, false); this.emulateTouchPressure = true; this.touchPressureBinding = new AxisBinding(); }
public ArmYawAxis(bool right, AxisBinding binding) : base("ArmYaw" + (right ? "Right" : "Left"), binding, Perspective.Y) { mRight = right; Vector diff = Nui.joint(mRight ? Nui.Shoulder_Right : Nui.Shoulder_Left) - Nui.joint(mRight ? Nui.Hand_Right : Nui.Hand_Left); mActive = Condition.And( mRight ? GlobalConditions.ActiveR : GlobalConditions.ActiveL, Condition.And( Nui.z(diff) > Nui.abs(Nui.x(diff)), Nui.z(diff) > Nui.abs(Nui.y(diff)))); mB = Nui.limit(diff, true, false, true); Init(); }
public PushSingleAxis(bool right, bool forward, AxisBinding binding) : base("Push" + (right ? "Right" : "Left") + (forward ? "+" : "-"), binding) { mMirror = false; Vector hand = Nui.joint(right ? Nui.Hand_Right : Nui.Hand_Left); Vector elbow = Nui.joint(right ? Nui.Elbow_Right : Nui.Elbow_Left); //How far pushing forward mRaw = Nui.z(hand - Nui.joint(Nui.Hip_Centre)); if (forward) { mRaw *= -1f; } //Whether the push gesture could be active mActive = right ? GlobalConditions.ActiveR : GlobalConditions.ActiveL; //mActive = C.And(mActive, Nui.y(hand) > Nui.y(elbow)); //The value for the push gesture mValue = Nui.ifScalar(mActive, mRaw, 0f); }
public PushSingleAxis(bool forward, AxisBinding binding) : base("Push" + (forward ? "+" : "-"), binding) { mMirror = false; Vector handR = Nui.joint(Nui.Hand_Right); Vector handL = Nui.joint(Nui.Hand_Left); //How far pushing forward mRaw = Nui.z(handR - Nui.joint(Nui.Hip_Centre)) + Nui.z(handL - Nui.joint(Nui.Hip_Centre)); if (forward) { mRaw *= -1f; } //Whether the push gesture could be active mActive = C.And(C.Or(GlobalConditions.ActiveR, GlobalConditions.ActiveL), !C.And(GlobalConditions.ActiveR, GlobalConditions.ActiveL)); //mActive = C.And(mActive, Nui.y(hand) > Nui.y(elbow)); //The value for the push gesture mValue = Nui.ifScalar(mActive, mRaw, 0f); }
public ArmPitchAxis(bool right, AxisBinding binding) : base("ArmPitch" + (right ? "Right" : "Left"), binding, Perspective.X) { mRight = right; Vector shoulders = Nui.joint(Nui.Shoulder_Left) - Nui.joint(Nui.Shoulder_Right); Vector diff = Nui.joint(mRight ? Nui.Shoulder_Right : Nui.Shoulder_Left) - Nui.joint(mRight ? Nui.Hand_Right : Nui.Hand_Left); mActive = Condition.And( mRight ? GlobalConditions.ActiveR : GlobalConditions.ActiveL, /*Condition.And( * Nui.z(diff) > Nui.abs(Nui.x(diff)), * Nui.z(diff) > Nui.abs(Nui.y(diff)))*/ Nui.z(diff) > Nui.abs(Nui.magnitude(shoulders)) ); mB = Nui.limit(diff, false, true, true); Init(); }
public PushSingleAxis(bool forward, AxisBinding binding) : base("Push" + (forward ? "+" : "-"), binding) { mMirror = false; Vector handR = Nui.joint(Nui.Hand_Right); Vector handL = Nui.joint(Nui.Hand_Left); //How far pushing forward mRaw = Nui.z(handR - Nui.joint(Nui.Hip_Centre)) + Nui.z(handL - Nui.joint(Nui.Hip_Centre)); if (forward) mRaw *= -1f; //Whether the push gesture could be active mActive = C.And(C.Or(GlobalConditions.ActiveR, GlobalConditions.ActiveL), !C.And(GlobalConditions.ActiveR, GlobalConditions.ActiveL)); //mActive = C.And(mActive, Nui.y(hand) > Nui.y(elbow)); //The value for the push gesture mValue = Nui.ifScalar(mActive, mRaw, 0f); }
public static bool IsNeutral(AxisBinding axis) { return(axis.IsNeutral() && Math.Abs(axis.GetAxis()) < 0.00001); }
/// <summary> /// Links an analog button to the axis /// </summary> /// <param name="button">Analog button</param> /// <param name="priority">Priority of the button</param> public void AddAnalogButton(AbstractButton button, short priority) { if (button.Type != ButtonType.Analog) throw new ArgumentException("Provided button is not analog"); AxisBinding binding = new AxisBinding(button, priority); _hardwareButtons.Add(binding); _hardwareButtons.Sort(AxisBinding.Comparison); }
public PushSingleAxis(bool right, bool forward, AxisBinding binding) : base("Push" + (right ? "Right" : "Left") + (forward ? "+" : "-"), binding) { mMirror = false; Vector hand = Nui.joint(right ? Nui.Hand_Right : Nui.Hand_Left); Vector elbow = Nui.joint(right ? Nui.Elbow_Right : Nui.Elbow_Left); //How far pushing forward mRaw = Nui.z(hand - Nui.joint(Nui.Hip_Centre)); if (forward) mRaw *= -1f; //Whether the push gesture could be active mActive = right ? GlobalConditions.ActiveR : GlobalConditions.ActiveL; //mActive = C.And(mActive, Nui.y(hand) > Nui.y(elbow)); //The value for the push gesture mValue = Nui.ifScalar(mActive, mRaw, 0f); }
public KinectAxis(string name, AxisBinding binding) : base(name, binding) { Init(); }
public ThumbstickAxis(bool left, bool x, AxisBinding binding) : base(MakeName(left, x), short.MaxValue / 3f, .00005f, binding) { mLeft = left; mX = x; }
/// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="binding"></param> /// <param name="axes">First access will be positive, second negative.</param> public SplitAxis(string name, AxisBinding binding, params IAxis[] axes) : this(name, axes) { mBinding = binding; }
public DPadAxis(bool x, AxisBinding binding) : base(MakeName(x), 0, .00005f, binding) { mX = x; }
public LeanAxis(AxisBinding binding) : base("Lean", binding, Perspective.Z) { }
public TwistAxis(AxisBinding binding) : base("Twist", binding, Perspective.Y) { }
protected ConstrainedAxis(string name, float deadzone, float scale, AxisBinding binding) : this(name, new Updater<float>("Deadzone", deadzone), new Updater<float>("Scale", scale), binding) { }
/// <summary> /// Compares two AxisBinding instance /// </summary> /// <param name="first">First instance</param> /// <param name="second">Second instance</param> /// <returns>Return a value indicating the position of the first instance</returns> internal static int Comparison(AxisBinding first, AxisBinding second) { if (first._priority < second._priority) return -1; return (first._priority > second._priority) ? 1 : 0; }
protected ConstrainedAxis(string name, AxisBinding binding) : this(name) { mBinding = binding; }
protected ConstrainedAxis(string name, float deadzone, float scale, AxisBinding binding) : this(name, new Updater <float>("Deadzone", deadzone), new Updater <float>("Scale", scale), binding) { }
// ------------------ public void Draw(AxisBinding bind, InputRig rig) { bool bindingEnabled = bind.enabled; EditorGUILayout.BeginVertical(); EditorGUILayout.BeginHorizontal(); bindingEnabled = EditorGUILayout.ToggleLeft(this.labelContent, bindingEnabled, GUILayout.MinWidth(30)); if (bindingEnabled) { if (GUILayout.Button(new GUIContent(CFEditorStyles.Inst.texPlusSign, "Add target"), CFEditorStyles.Inst.iconButtonStyle)) //, GUILayout.Width(20), GUILayout.Height(20))) { CFGUI.CreateUndo("Add new target to Analog Binding.", this.undoObject); bind.AddTarget(); CFGUI.EndUndo(this.undoObject); } if (GUILayout.Button(new GUIContent(CFEditorStyles.Inst.texMinusSign, "Remove target"), CFEditorStyles.Inst.iconButtonStyle)) //, GUILayout.Width(20), GUILayout.Height(20))) { CFGUI.CreateUndo("Remove target from Analog Binding.", this.undoObject); bind.RemoveLastTarget(); CFGUI.EndUndo(this.undoObject); } } EditorGUILayout.EndHorizontal(); if (bindingEnabled) { CFGUI.BeginIndentedVertical(CFEditorStyles.Inst.transpSunkenBG); if (this.customExtraGUI != null) { this.customExtraGUI(); } this.PrepareTargetElemListInspectors(bind.targetList.Count); if (bind.targetList.Count == 0) { EditorGUILayout.LabelField("No targets defined...", CFEditorStyles.Inst.centeredTextTranspBG); } else { for (int i = 0; i < bind.targetList.Count; ++i) { this.targetElemInspList[i].DrawGUI(bind.targetList[i], rig, (i == (bind.targetList.Count - 1))); } } CFGUI.EndIndentedVertical(); } EditorGUILayout.EndVertical(); if ((bindingEnabled != bind.enabled) ) { CFGUI.CreateUndo("Analog Axis Binding modification.", this.undoObject); bind.enabled = bindingEnabled; CFGUI.EndUndo(this.undoObject); } }
public TriggerAxis(bool leftUp, AxisBinding binding) : base("Trigger", 0, .0005f, binding) { mLeftUp = leftUp; }
public static bool IsNeutral(AxisBinding axis) { return axis.IsNeutral() && Math.Abs(axis.GetAxis()) < 0.00001; }
public KinectAxis(string name, IUpdater<float> deadzone, IUpdater<float> scale, AxisBinding binding) : base(name, deadzone, scale, binding) { Init(); }
public KinectAxis(string name, IUpdater <float> deadzone, IUpdater <float> scale, AxisBinding binding) : base(name, deadzone, scale, binding) { Init(); }
public DotAxis(string name, AxisBinding binding, Perspective perspective) : base(name, binding) { mPerspective = perspective; Init(); }
public KinectCursorAxis(bool left, bool x, AxisBinding binding) { mName = MakeName(left, x); mBinding = binding; mLeft = left; mX = x; mPanel = new UserControl(); mSmoothingFactor = Scalar.Create(HAND_SMOOTHING_FRAMES); if(mLeft) mHand = Nui.smooth(Nui.joint(Nui.Hand_Right), mSmoothingFactor); else mHand = Nui.smooth(Nui.joint(Nui.Hand_Left), mSmoothingFactor); mAnchor = Nui.smooth(Nui.joint(Nui.Hip_Centre), ANCHOR_SMOOTHING_FRAMES); mLeftShift = Scalar.Create("Left Shift", .0f); mUpShift = Scalar.Create("Up Shift", .0f); mWidth = Scalar.Create("Width", .5f); mHeight = Scalar.Create("Height", .5f); mTopLeftX = Nui.x(mAnchor) - (mWidth * mLeftShift); mTopLeftY = Nui.y(mAnchor) + (mHeight * mUpShift); if (mLeft) { if (mX) { mLeftHandShift = Scalar.Create("LeftHandShift", .5f); mNUIRaw = (Nui.x(mHand) + mLeftHandShift) - mTopLeftX; xActiveLeft = C.And(mNUIRaw >= 0f, mNUIRaw <= mWidth); mConstrained = Nui.constrain(mNUIRaw, .01f, mWidth, .10f, false); } else { mNUIRaw = Nui.y(mHand) - mTopLeftY; yActiveLeft = C.And(mNUIRaw >= 0f, mNUIRaw <= mHeight); mConstrained = Nui.constrain(mNUIRaw, .01f, mHeight, .10f, false); } if(xActiveLeft != null && yActiveLeft != null) mOnScreenConditionLeft = C.And(xActiveLeft, yActiveLeft); } else { if (mX) { mNUIRaw = Nui.x(mHand) - mTopLeftX; xActiveRight = C.And(mNUIRaw >= 0f, mNUIRaw <= mWidth); mConstrained = Nui.constrain(mNUIRaw, .01f, mWidth, .10f, false); } else { mNUIRaw = Nui.y(mHand) - mTopLeftY; yActiveRight = C.And(mNUIRaw >= 0f, mNUIRaw <= mHeight); mConstrained = Nui.constrain(mNUIRaw, .01f, mHeight, .10f, false); } if (xActiveRight != null && yActiveRight != null) mOnScreenConditionRight = C.And(xActiveRight, yActiveRight); } }
/// <summary> /// Links two digital button to the axis /// </summary> /// <param name="negative">Button used to go in negative range</param> /// <param name="positive">Button used to go in positive range</param> /// <param name="priority">Priority of the button</param> public void AddDigitalButton(AbstractButton negative, AbstractButton positive, short priority) { if((negative.Type != ButtonType.Digital)) throw new ArgumentException("Negative button is not digital"); if ((positive.Type != ButtonType.Digital)) throw new ArgumentException("Positive button is not digital"); AxisBinding binding = new AxisBinding(negative, positive, priority); _hardwareButtons.Add(binding); _hardwareButtons.Sort(AxisBinding.Comparison); }