private void Awake() { if (_instance != null) { Destroy(gameObject); return; } DontDestroyOnLoad(gameObject); FritzPoseManager.Configure(); bird.SendMessage("SetController", birdController); birdController.SendMessage("AllPause"); }
private void Update() { if (FritzPoseManager.Processing()) { return; } #if UNITY_ANDROID && !UNITY_EDITOR XRCameraImage image; if (!m_CameraManager.TryGetLatestImage(out image)) { image.Dispose(); return; } FritzPoseManager.ProcessPoseFromImageAsync(image); // You must dispose the CameraImage to avoid resource leaks. image.Dispose(); #elif UNITY_IOS && !UNITY_EDITOR var cameraParams = new XRCameraParams { zNear = m_Cam.nearClipPlane, zFar = m_Cam.farClipPlane, screenWidth = Screen.width, screenHeight = Screen.height, screenOrientation = Screen.orientation }; XRCameraFrame frame; if (!m_CameraManager.subsystem.TryGetLatestFrame(cameraParams, out frame)) { return; } FritzPoseManager.ProcessPoseFromFrameAsync(frame); #else var randomPosition = debugPoint; randomPosition.x = randomPosition.x * UnityEngine.Random.Range(-0.5f, 0.5f); randomPosition.y = randomPosition.y * UnityEngine.Random.Range(-0.5f, 0.5f); Debug.LogFormat("{0}", bird); MoveBirdToPoint(bird, randomPosition); if (trackedObject != null) { trackedObject.transform.position = randomPosition; } #endif }
public void UpdatePose(string message) { var poses = FritzPoseManager.ProcessEncodedPoses(message); foreach (FritzPose pose in poses) { FritzHumanTrackable trackable = humanTrackableManager.CreateOrUpdateTrackable(0, pose); var estimatedShoulder = trackable.GetEstimatedPosition(FritzPoseParts.LeftShoulder); if (estimatedShoulder.HasValue) { MoveBirdToPoint(bird, estimatedShoulder.Value); if (trackedObject != null) { trackedObject.transform.position = estimatedShoulder.Value; } } // Only handling one pose for right now. break; } }