Пример #1
0
        public static Vector3 GetWorldCameraPosition()
        {
            VRCVrCamera camera = GetVRCVrCamera();
            var         type   = camera.GetIl2CppType();

            if (type == Il2CppType.Of <VRCVrCameraSteam>())
            {
                VRCVrCameraSteam steam      = camera.Cast <VRCVrCameraSteam>();
                Transform        transform1 = steam.field_Private_Transform_0;
                Transform        transform2 = steam.field_Private_Transform_1;
                if (transform1.name == "Camera (eye)")
                {
                    return(transform1.position);
                }
                else if (transform2.name == "Camera (eye)")
                {
                    return(transform2.position);
                }
            }
            else if (type == Il2CppType.Of <VRCVrCameraUnity>())
            {
                VRCVrCameraUnity unity = camera.Cast <VRCVrCameraUnity>();
                return(unity.CameraStereo.transform.position);
            }
            else if (type == Il2CppType.Of <VRCVrCameraWave>())
            {
                VRCVrCameraWave wave = camera.Cast <VRCVrCameraWave>();
                return(wave.transform.position);
            }
            return(camera.transform.parent.TransformPoint(GetLocalCameraPosition()));
        }
Пример #2
0
        private void OnUiManagerInit()
        {
            foreach (var vrcTracking in VRCTrackingManager.field_Private_Static_VRCTrackingManager_0
                     .field_Private_List_1_VRCTracking_0)
            {
                var trackingSteam = vrcTracking.TryCast <VRCTrackingSteam>();
                if (trackingSteam == null)
                {
                    continue;
                }

                ourSteamCamera     = trackingSteam.GetComponentInChildren <VRCVrCameraSteam>();
                ourCameraTransform = trackingSteam.transform.Find("SteamCamera/[CameraRig]/Neck/Camera (head)/Camera (eye)");

                return;
            }
        }
Пример #3
0
        public static Vector3 GetLocalCameraPosition()
        {
            VRCVrCamera camera = GetVRCVrCamera();
            var         type   = camera.GetIl2CppType();

            if (type == Il2CppType.Of <VRCVrCameraGoogle>())
            {
                return(camera.transform.localPosition);
            }
            else if (type == Il2CppType.Of <VRCVrCameraSteam>())
            {
                VRCVrCameraSteam steam      = camera.Cast <VRCVrCameraSteam>();
                Transform        transform1 = steam.field_Private_Transform_0;
                Transform        transform2 = steam.field_Private_Transform_1;
                if (transform1.name == "Camera (eye)")
                {
                    return(camera.transform.parent.InverseTransformPoint(transform1.position));
                }
                else if (transform2.name == "Camera (eye)")
                {
                    return(camera.transform.parent.InverseTransformPoint(transform2.position));
                }
                else
                {
                    return(Vector3.zero);
                }
            }
            else if (type == Il2CppType.Of <VRCVrCameraUnity>())
            {
                if (IsInVR())
                {
                    return(camera.transform.localPosition + InputTracking.GetLocalPosition(XRNode.CenterEye));
                }
                VRCVrCameraUnity unity = camera.Cast <VRCVrCameraUnity>();
                return(camera.transform.parent.InverseTransformPoint(unity.CameraStereo.transform.position));
            }
            else if (type == Il2CppType.Of <VRCVrCameraWave>())
            {
                VRCVrCameraWave wave = camera.Cast <VRCVrCameraWave>();
                return(wave.trackingRoot.InverseTransformPoint(camera.transform.position));
            }
            return(Vector3.zero);
        }