Ejemplo n.º 1
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);
    }
Ejemplo n.º 2
0
 public void SetColorAndTrack(Color color)
 {
     SetColor(color);
     SetTrackingHue(PSMoveUtil.GetHueFromColor(color));
 }