protected ConstrainedAxis(string name, IUpdater<float> deadzone, IUpdater<float> scale, AxisBinding binding)
     : this(name)
 {
     mDeadzone = deadzone;
     mScale = scale;
     mBinding = binding;
 }
Beispiel #2
0
 public static void reset(this AxisBinding AxisBinding)
 {
     if (AxisBindingStorage.ContainsKey(AxisBinding))
     {
         AxisBinding.primary.scale   = AxisBindingStorage[AxisBinding].primaryScale;
         AxisBinding.secondary.scale = AxisBindingStorage[AxisBinding].secondaryScale;
     }
 }
Beispiel #3
0
        // ---------------------
        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);
 }
Beispiel #6
0
 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);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        // --------------
        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);
        }
Beispiel #10
0
        // -----------------
        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);
        }
Beispiel #11
0
        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);
        }
Beispiel #13
0
 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);
 }
Beispiel #14
0
//! \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;
        }
Beispiel #16
0
        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);
        }
Beispiel #18
0
        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);
        }
Beispiel #19
0
        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);
        }
Beispiel #20
0
        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 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;
        }
Beispiel #23
0
 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));
     }
 }
Beispiel #24
0
//! \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;
        }
Beispiel #25
0
        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);
        }
Beispiel #26
0
//! \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();
        }
Beispiel #27
0
        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);
        }
Beispiel #28
0
        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 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();
        }
Beispiel #30
0
            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);
            }
Beispiel #31
0
            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);
            }
Beispiel #32
0
        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();
        }
Beispiel #33
0
            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);
            }
Beispiel #34
0
 public static bool IsNeutral(AxisBinding axis)
 {
     return(axis.IsNeutral() && Math.Abs(axis.GetAxis()) < 0.00001);
 }
Beispiel #35
0
        /// <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);
        }
Beispiel #36
0
            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();
 }
Beispiel #38
0
 public ThumbstickAxis(bool left, bool x, AxisBinding binding)
     : base(MakeName(left, x), short.MaxValue / 3f, .00005f, binding)
 {
     mLeft = left;
     mX = x;
 }
Beispiel #39
0
 /// <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;
 }
Beispiel #40
0
 public DPadAxis(bool x, AxisBinding binding)
     : base(MakeName(x), 0, .00005f, binding)
 {
     mX = x;
 }
Beispiel #41
0
 public LeanAxis(AxisBinding binding)
     : base("Lean", binding, Perspective.Z)
 {
 }
Beispiel #42
0
 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)
 {
 }
Beispiel #44
0
            /// <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;
 }
Beispiel #46
0
 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);
            }
        }
Beispiel #48
0
 public TriggerAxis(bool leftUp, AxisBinding binding)
     : base("Trigger", 0, .0005f, binding)
 {
     mLeftUp = leftUp;
 }
Beispiel #49
0
 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();
 }
Beispiel #51
0
 public KinectAxis(string name, IUpdater <float> deadzone, IUpdater <float> scale, AxisBinding binding)
     : base(name, deadzone, scale, binding)
 {
     Init();
 }
Beispiel #52
0
 public DotAxis(string name, AxisBinding binding, Perspective perspective)
     : base(name, binding)
 {
     mPerspective = perspective;
     Init();
 }
Beispiel #53
0
 public KinectAxis(string name, AxisBinding binding)
     : base(name, binding)
 {
     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);

            }
        }
Beispiel #55
0
        /// <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);
        }