Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (m_playerManager == null || m_playerManager.Valid == false)
        {
            return;
        }

        UNISelectedPlayer player = m_playerManager.GetPlayer(m_playerNumber);

        if (player == null || player.Valid == false || player.Tracking == false)
        {
            RotateToCalibrationPose();             //don't have anything to worke with
            return;
        }
        Vector3 skelPos = Vector3.zero;
        SkeletonJointTransformation skelTrans;

        if (player.GetReferenceSkeletonJointTransform(SkeletonJoint.Torso, out skelTrans))
        {
            if (skelTrans.Position.Confidence < 0.5f)
            {
                player.RecalcReferenceJoints();                 //we NEED the torso to be good.
            }
            if (skelTrans.Position.Confidence >= 0.5f)
            {
                skelPos = UNIConvertCoordinates.ConvertPos(skelTrans.Position.Position);
            }
        }
        UpdateSkeleton(player, skelPos);
    }
Exemplo n.º 2
0
    //mono-behavior fixedUpdate
    //this is used to update the position for the previous frame.
    public override void FixedUpdate()
    {
        UNISelectedPlayer player = m_playerManager.GetPlayer(m_playerNum);

        if (player == null || player.Valid == false || player.Tracking == false)
        {
            return;            //no player to work
        }
        SkeletonJointPosition skeletJointPos;

        if (player.GetSkeletonJointPosition(m_jointToUse, out skeletJointPos))
        {
            m_lastFrameCurPoint.UpdatePoint(skeletJointPos.Position, skeletJointPos.Confidence);
        }
        if (m_startingPoseReferenceType == StartingPosReferenceType.StaticModifierToOtherJoint ||
            m_startingPoseReferenceType == StartingPosReferenceType.ScaledModifierToOtherJoint)
        {
            if (player.GetSkeletonJointPosition(m_referenceJoint, out skeletJointPos))
            {
                m_lastFrameReferenceJoint.UpdatePoint(skeletJointPos.Position, skeletJointPos.Confidence);
            }
        }
        if (m_startingPoseReferenceType == StartingPosReferenceType.ScaledModifierToOtherJoint)
        {
            SkeletonJointPosition skeletJointPos2;
            if (player.GetSkeletonJointPosition(m_referenceJointScale1, out skeletJointPos) &&
                player.GetSkeletonJointPosition(m_referenceJointScale2, out skeletJointPos2))
            {
                m_lastFrameScaleJoint1.UpdatePoint(skeletJointPos.Position, skeletJointPos.Confidence);
                m_lastFrameScaleJoint2.UpdatePoint(skeletJointPos2.Position, skeletJointPos2.Confidence);
            }
        }
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void OnGUI()
    {
        Rect curPos = m_basePos;

        if (m_playerManager == null || m_playerManager.Valid == false)
        {
            return;             //no player manager
        }
        int numTracking = m_playerManager.GetNumberOfTrackingPlayers();

        if (m_AllPlayersMessage && numTracking >= m_playerManager.m_maxNumberOfPlayers)
        {
            return;             //all player are tracking,noting to do here
        }
        if (!m_AllPlayersMessage && numTracking > 0)
        {
            return;            //at least one player is tracking and we don't want to show the message to the rest
        }
        int numUnselected = 0;

        for (int i = 0; i < m_playerManager.m_maxNumberOfPlayers; i++)
        {
            UNISelectedPlayer player = m_playerManager.GetPlayer(i);
            if (player == null || player.Valid == false)
            {
                GUI.Box(curPos, "Player " + i + " is unSelected.");
                numUnselected++;
            }
            else if (player.Tracking == false)
            {
                GUI.Box(curPos, "Player " + i + " is calibrating.");
            }
            else
            {
                continue;
            }
            curPos.y += 35;
        }
        if (numUnselected == 0)
        {
            return;
        }
        if (m_actionToSelect.CompareTo("") != 0)
        {
            curPos.width = m_actionToSelectRectWidth;
            GUI.Box(curPos, m_actionToSelect);
            curPos.y += 35;
        }
        if (m_Image != null)
        {
            curPos.width  = 128;
            curPos.height = 128;
            GUI.Box(curPos, m_Image);
        }
    }