Пример #1
0
        private void SetToMostPreciseFingerPosition(Transform target, VRCPlayerApi.TrackingDataType trackingDataType, HumanBodyBones bone1, HumanBodyBones bone2, HumanBodyBones bone3)
        {
            Vector3 positionHead = _player.GetBonePosition(bone3);
            Vector3 positionTail = _player.GetBonePosition(bone2);

            if (positionHead != Vector3.zero)
            {
                target.position = positionHead;
                target.rotation = Quaternion.LookRotation(positionHead - positionTail);
                return;
            }
            positionHead = positionTail;
            positionTail = _player.GetBonePosition(bone1);
            if (positionHead != Vector3.zero)
            {
                target.position = positionHead;
                target.rotation = Quaternion.LookRotation(positionHead - positionTail);
                return;
            }
            VRCPlayerApi.TrackingData trackingData = _player.GetTrackingData(trackingDataType);
            positionHead = positionTail;
            positionTail = trackingData.position;
            if (positionHead != Vector3.zero)
            {
                target.position = positionHead;
                target.rotation = Quaternion.LookRotation(positionHead - positionTail);
                return;
            }
            target.position = trackingData.position;
            target.rotation = trackingData.rotation;
        }
Пример #2
0
        void Start()
        {
            //Find Height Tracker
            GameObject o = GameObject.Find("[Thry]AvatarHeightTracker");

            if (o == null)
            {
                Debug.LogError("Can't Find Left Thry Hand Collider");
                return;
            }
            _avatarHeightTracker = o.GetComponent <AvatarHeightTracker>();
            player = Networking.LocalPlayer;
            if (isRightHand)
            {
                hand             = HumanBodyBones.RightHand;
                finger           = HumanBodyBones.RightMiddleProximal;
                trackingDataType = VRCPlayerApi.TrackingDataType.RightHand;
            }
            else
            {
                hand             = HumanBodyBones.LeftHand;
                finger           = HumanBodyBones.LeftMiddleProximal;
                trackingDataType = VRCPlayerApi.TrackingDataType.LeftHand;
            }
            Scale();
        }
Пример #3
0
        [Button("Preset: Throttle")] private void PresetThlottle()
        {
            this.UpdateProxy();

            mode       = "Slider";
            targetHand = VRCPlayerApi.TrackingDataType.LeftHand;
            maxValue   = Vector3.one * 0.2f;
            keymap     = "l,h,j,k,left shift,left ctrl";

            this.ApplyProxyModifications();
        }
Пример #4
0
        [Button("Preset: Joystick")] private void PresetJoystick()
        {
            this.UpdateProxy();

            mode       = "Joystick";
            targetHand = VRCPlayerApi.TrackingDataType.RightHand;
            maxValue   = Vector3.one * 30.0f;
            keymap     = "w,s,e,q,a,d";

            this.ApplyProxyModifications();
        }
Пример #5
0
        public VRCPlayerApi.TrackingData GetTrackingData(VRCPlayerApi.TrackingDataType trackingDataType)
        {
            VRCPlayerApi.TrackingData data = new VRCPlayerApi.TrackingData();

            if (trackingDataType == VRCPlayerApi.TrackingDataType.Head)
            {
                data.position = playerCamera_.transform.position;
                data.rotation = playerCamera_.transform.rotation;
            }
            else if (trackingDataType == VRCPlayerApi.TrackingDataType.LeftHand)
            {
                data.position = leftArmPosition_.transform.position;
                data.rotation = leftArmPosition_.transform.rotation;
            }
            else if (trackingDataType == VRCPlayerApi.TrackingDataType.RightHand)
            {
                data.position = rightArmPosition_.transform.position;
                data.rotation = rightArmPosition_.transform.rotation;
            }

            return(data);
        }
Пример #6
0
 public static VRCPlayerApi.TrackingData GetTrackingData(VRCPlayerApi player, VRCPlayerApi.TrackingDataType trackingDataType)
 {
     return(player.GetPlayerController().GetTrackingData(trackingDataType));
 }
Пример #7
0
 public void gettracking(Transform visobj, VRCPlayerApi.TrackingDataType trackpoint, VRCPlayerApi PlayerApiref)
 {
     visobj.position = PlayerApiref.GetTrackingData(trackpoint).position;
     visobj.rotation = PlayerApiref.GetTrackingData(trackpoint).rotation;
 }