コード例 #1
0
 public MoveController(int num)
 {
     _data = new MoveData();
     _dirty = true;
     gemState = new PSMoveSharpGemState();
     sphereState = new PSMoveSharpSphereState();
     imageState = new PSMoveSharpImageState();
     Connected = false;
     Num = num;
 }
コード例 #2
0
    public void Update(PSMoveSharpState state)
    {
        gemState    = state.gemStates[Num];
        sphereState = state.sphereStates[Num];
        imageState  = state.imageStates[Num];

        Connected = (state.gemStatus[Num].connected == 1);

        _dirty = true;
    }
コード例 #3
0
 public MoveController(int num)
 {
     _data       = new MoveData();
     _dirty      = true;
     gemState    = new PSMoveSharpGemState();
     sphereState = new PSMoveSharpSphereState();
     imageState  = new PSMoveSharpImageState();
     Connected   = false;
     Num         = num;
 }
コード例 #4
0
ファイル: PSMoveWrapper.cs プロジェクト: qipa/NordeusNinja
    private void UpdateGemState(int num)
    {
        PSMoveSharpGemState selected_gem = state.gemStates[num];

        position[num].x     = (float)Convert.ToInt32(selected_gem.pos.x) / 100;
        position[num].y     = (float)Convert.ToInt32(selected_gem.pos.y) / 100;
        position[num].z     = (float)Convert.ToInt32(selected_gem.pos.z) / 100;
        velocity[num].x     = (float)Convert.ToInt32(selected_gem.vel.x) / 100;
        velocity[num].y     = (float)Convert.ToInt32(selected_gem.vel.y) / 100;
        velocity[num].z     = (float)Convert.ToInt32(selected_gem.vel.z) / 100;
        acceleration[num].x = (float)Convert.ToInt32(selected_gem.accel.x) / 100;
        acceleration[num].y = (float)Convert.ToInt32(selected_gem.accel.y) / 100;
        acceleration[num].z = (float)Convert.ToInt32(selected_gem.accel.z) / 100;

        Quaternion rotation = new Quaternion(selected_gem.quat.x, selected_gem.quat.y, selected_gem.quat.z, selected_gem.quat.w);

        orientation[num]  = rotation.eulerAngles;
        qOrientation[num] = rotation;
        //orientation[num] = Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).x);
        angularVelocity[num].x     = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.x);
        angularVelocity[num].y     = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.y);
        angularVelocity[num].z     = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.z);
        angularAcceleration[num].x = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.x);
        angularAcceleration[num].y = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.y);
        angularAcceleration[num].z = Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.z);

        handlePosition[num].x     = (float)Convert.ToInt32(selected_gem.handle_pos.x) / 100;
        handlePosition[num].y     = (float)Convert.ToInt32(selected_gem.handle_pos.y) / 100;
        handlePosition[num].z     = (float)Convert.ToInt32(selected_gem.handle_pos.z) / 100;
        handleVelocity[num].x     = (float)Convert.ToInt32(selected_gem.handle_vel.x) / 100;
        handleVelocity[num].y     = (float)Convert.ToInt32(selected_gem.handle_vel.y) / 100;
        handleVelocity[num].z     = (float)Convert.ToInt32(selected_gem.handle_vel.z) / 100;
        handleAcceleration[num].x = (float)Convert.ToInt32(selected_gem.handle_accel.x) / 100;
        handleAcceleration[num].y = (float)Convert.ToInt32(selected_gem.handle_accel.y) / 100;
        handleAcceleration[num].z = (float)Convert.ToInt32(selected_gem.handle_accel.z) / 100;


        isButtonSquare[num]   = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0);
        isButtonCross[num]    = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0);
        isButtonCircle[num]   = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0);
        isButtonTriangle[num] = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0);
        isButtonMove[num]     = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0);
        valueT[num]           = selected_gem.pad.analog_trigger;
        isButtonT[num]        = (valueT[num] >= thresholdT);
        isButtonStart[num]    = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0);
        isButtonSelect[num]   = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0);
    }
コード例 #5
0
    public void Update(PSMoveSharpGemState gemState, 
        PSMoveSharpSphereState sphereState,
        PSMoveSharpImageState imageState)
    {
        // gem state
        Position = PSMoveUtil.Float4ToVector3(gemState.pos)/100;
        Velocity = PSMoveUtil.Float4ToVector3(gemState.vel)/100;
        Acceleration = PSMoveUtil.Float4ToVector3(gemState.accel)/100;

        QOrientation = PSMoveUtil.Float4ToQuaternion(gemState.quat);
        Orientation = QOrientation.eulerAngles;
        AngularVelocity = PSMoveUtil.Float4ToVector3(gemState.angvel) * Mathf.Rad2Deg;
        AngularAcceleration = PSMoveUtil.Float4ToVector3(gemState.angaccel) * Mathf.Rad2Deg;

        HandlePosition = PSMoveUtil.Float4ToVector3(gemState.handle_pos)/100;
        HandleVelocity = PSMoveUtil.Float4ToVector3(gemState.handle_vel)/100;
        HandleAcceleration = PSMoveUtil.Float4ToVector3(gemState.handle_accel)/100;

        PrevButtons = Buttons;
        Buttons = MoveButton.None;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0)
            Buttons |= MoveButton.Square;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0)
            Buttons |= MoveButton.Cross;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0)
            Buttons |= MoveButton.Circle;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0)
            Buttons |= MoveButton.Triangle;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0)
            Buttons |= MoveButton.Move;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0)
            Buttons |= MoveButton.Start;
        if((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0)
            Buttons |= MoveButton.Select;

        ValueT =  gemState.pad.analog_trigger;

        if(ValueT >= thresholdT)
            Buttons |= MoveButton.T;

        // sphere state
        SphereColor = new Color(sphereState.r, sphereState.g, sphereState.b);
        IsTracking = (sphereState.tracking == 1);
        TrackingHue = (int)sphereState.tracking_hue;

        // image state
        SpherePixelPosition = new Vector2(imageState.u, imageState.v);
        SpherePixelRadius = imageState.r;
        SphereProjectionPosition = new Vector2(imageState.projectionx, imageState.projectiony);
        SphereDistance = imageState.distance/100;
        SphereVisible = (imageState.visible == 1);
        SphereRadiusValid = (imageState.r_valid == 1);
    }
コード例 #6
0
    public void Update(PSMoveSharpState state)
    {
        gemState = state.gemStates[Num];
        sphereState = state.sphereStates[Num];
        imageState = state.imageStates[Num];

        Connected = (state.gemStatus[Num].connected == 1);

        _dirty = true;
    }
コード例 #7
0
    public void Update(PSMoveSharpGemState gemState,
                       PSMoveSharpSphereState sphereState,
                       PSMoveSharpImageState imageState)
    {
        // gem state
        Position     = PSMoveUtil.Float4ToVector3(gemState.pos) / 100;
        Velocity     = PSMoveUtil.Float4ToVector3(gemState.vel) / 100;
        Acceleration = PSMoveUtil.Float4ToVector3(gemState.accel) / 100;

        QOrientation        = PSMoveUtil.Float4ToQuaternion(gemState.quat);
        Orientation         = QOrientation.eulerAngles;
        AngularVelocity     = PSMoveUtil.Float4ToVector3(gemState.angvel) * Mathf.Rad2Deg;
        AngularAcceleration = PSMoveUtil.Float4ToVector3(gemState.angaccel) * Mathf.Rad2Deg;

        HandlePosition     = PSMoveUtil.Float4ToVector3(gemState.handle_pos) / 100;
        HandleVelocity     = PSMoveUtil.Float4ToVector3(gemState.handle_vel) / 100;
        HandleAcceleration = PSMoveUtil.Float4ToVector3(gemState.handle_accel) / 100;

        PrevButtons = Buttons;
        Buttons     = MoveButton.None;
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0)
        {
            Buttons |= MoveButton.Square;
        }
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0)
        {
            Buttons |= MoveButton.Cross;
        }
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0)
        {
            Buttons |= MoveButton.Circle;
        }
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0)
        {
            Buttons |= MoveButton.Triangle;
        }
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0)
        {
            Buttons |= MoveButton.Move;
        }
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0)
        {
            Buttons |= MoveButton.Start;
        }
        if ((gemState.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0)
        {
            Buttons |= MoveButton.Select;
        }

        ValueT = gemState.pad.analog_trigger;

        if (ValueT >= thresholdT)
        {
            Buttons |= MoveButton.T;
        }

        // sphere state
        SphereColor = new Color(sphereState.r, sphereState.g, sphereState.b);
        IsTracking  = (sphereState.tracking == 1);
        TrackingHue = (int)sphereState.tracking_hue;

        // image state
        SpherePixelPosition      = new Vector2(imageState.u, imageState.v);
        SpherePixelRadius        = imageState.r;
        SphereProjectionPosition = new Vector2(imageState.projectionx, imageState.projectiony);
        SphereDistance           = imageState.distance / 100;
        SphereVisible            = (imageState.visible == 1);
        SphereRadiusValid        = (imageState.r_valid == 1);
    }
コード例 #8
0
        private void updateTabPageMove(PSMoveSharpState state)
        {
            checkBoxMove1.Checked = (state.gemStatus[0].connected == 1);
            checkBoxMove2.Checked = (state.gemStatus[1].connected == 1);
            checkBoxMove3.Checked = (state.gemStatus[2].connected == 1);
            checkBoxMove4.Checked = (state.gemStatus[3].connected == 1);

            checkBoxMoveResetEnabled.Checked = Program.reset_enabled[Program.selected_move];
            buttonResetEnabled.Text          = Program.reset_enabled[Program.selected_move] ? "Disable" : "Enable";

            bool selected_move_connected     = (state.gemStatus[Program.selected_move].connected == 1);
            PSMoveSharpGemState selected_gem = state.gemStates[Program.selected_move];

            labelPosValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.pos.x).ToString() : "N/A";
            labelPosValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.pos.y).ToString() : "N/A";
            labelPosValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.pos.z).ToString() : "N/A";

            labelVelValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.vel.x).ToString() : "N/A";
            labelVelValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.vel.y).ToString() : "N/A";
            labelVelValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.vel.z).ToString() : "N/A";

            labelAccValX.Text = selected_move_connected || true?Convert.ToInt32(selected_gem.accel.x).ToString() : "N/A";

            labelAccValY.Text = selected_move_connected || true?Convert.ToInt32(selected_gem.accel.y).ToString() : "N/A";

            labelAccValZ.Text = selected_move_connected || true?Convert.ToInt32(selected_gem.accel.z).ToString() : "N/A";

            labelQuatValH.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).x).ToString() : "N/A";
            labelQuatValP.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).y).ToString() : "N/A";
            labelQuatValR.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * quatToEuler(selected_gem.quat).z).ToString() : "N/A";

            labelAngVelValH.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.x).ToString() : "N/A";
            labelAngVelValP.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.y).ToString() : "N/A";
            labelAngVelValR.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angvel.z).ToString() : "N/A";

            labelAngAccValH.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.x).ToString() : "N/A";
            labelAngAccValP.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.y).ToString() : "N/A";
            labelAngAccValR.Text = selected_move_connected ? Convert.ToInt32((180.0 / Math.PI) * selected_gem.angaccel.z).ToString() : "N/A";

            labelHandlePosValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_pos.x).ToString() : "N/A";
            labelHandlePosValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_pos.y).ToString() : "N/A";
            labelHandlePosValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_pos.z).ToString() : "N/A";

            labelHandleVelValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_vel.x).ToString() : "N/A";
            labelHandleVelValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_vel.y).ToString() : "N/A";
            labelHandleVelValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_vel.z).ToString() : "N/A";

            labelHandleAccValX.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_accel.x).ToString() : "N/A";
            labelHandleAccValY.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_accel.y).ToString() : "N/A";
            labelHandleAccValZ.Text = selected_move_connected ? Convert.ToInt32(selected_gem.handle_accel.z).ToString() : "N/A";

            tableLayoutPanelMoveMotion.Update();

            checkBoxMoveSquareVal.Checked   = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSquare) != 0);
            checkBoxMoveCrossVal.Checked    = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCross) != 0);
            checkBoxMoveCircleVal.Checked   = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlCircle) != 0);
            checkBoxMoveTriangleVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTriangle) != 0);

            checkBoxMoveMoveVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlTick) != 0);
            labelMoveTVal.Text          = selected_move_connected ? selected_gem.pad.analog_trigger.ToString() : "N/A";

            checkBoxMoveStartVal.Checked  = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlStart) != 0);
            checkBoxMoveSelectVal.Checked = ((selected_gem.pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0);

            tableLayoutPanelMoveInput.Update();

            if (Program.reset_enabled[Program.selected_move] && ((state.gemStates[Program.selected_move].pad.digitalbuttons & PSMoveSharpConstants.ctrlSelect) != 0))
            {
                Program.moveClient.SendRequestPacket(PSMoveClient.ClientRequest.PSMoveClientRequestControllerReset, Convert.ToUInt32(Program.selected_move));
            }
        }