コード例 #1
0
        private IEnumerator RegisterHand(bool isPrimaryHand)
        {
            // right is zero left is one
            // primary hand is right
            yield return(new WaitUntil(() => PS4Input.MoveIsConnected(0, isPrimaryHand?0:1)));

            var primaryhandles   = new int[1];
            var secondaryhandles = new int[1];

            PS4Input.MoveGetUsersMoveHandles(1, primaryhandles, secondaryhandles);

            handle = isPrimaryHand ? primaryhandles[0] : secondaryhandles[0];

            var result = Tracker.RegisterTrackedDevice(PlayStationVRTrackedDevice.DeviceMove, handle, trackingType, trackerUsageType);

            if (result == PlayStationVRResult.Ok)
            {
                //TODO: May have to have a separate tracking status for every hand separately?
                //Look at psvr Unity example
                // var trackingStatus = new PlayStationVRTrackingStatus();
                while (trackingStatus == PlayStationVRTrackingStatus.NotStarted)
                {
                    Tracker.GetTrackedDeviceStatus(handle, out trackingStatus);
                    yield return(null);
                }

                Tracker.GetTrackedDeviceLedColor(handle, out trackedColor);
            }
            else
            {
                Debug.LogError("Tracking failed for DeviceMove! This may be because you're trying to register too many devices at once.");
            }
        }