// 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); }
//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); } } }
// 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); } }