Inheritance: MonoBehaviour
Exemple #1
0
 static void Postfix(ref float ___currentZoomVelocity, float ___zoomInTime, float ___zoomOutTime, float ___normalFOV, float ___zoomedFOV)
 {
     try
     {
         if (thisModEntry.Active && VRManager.IsVREnabled())
         {
             VRTK_ControllerEvents secondaryEvents = VRTK_DeviceFinder.GetControllerRightHand(false).GetComponent <VRTK_ControllerEvents>();
             Vector2 axis = secondaryEvents.GetAxis(
                 VRTK_DeviceFinder.GetHeadsetType() == SDK_BaseHeadset.HeadsetType.WindowsMixedReality
                                             ? VRTK_ControllerEvents.Vector2AxisAlias.TouchpadTwo
                                             : VRTK_ControllerEvents.Vector2AxisAlias.Touchpad
                 );
             float zoomedFactor = ___normalFOV / ___zoomedFOV;
             if (axis.y < 0.625f && XRDevice.fovZoomFactor > 1f)
             {
                 XRDevice.fovZoomFactor = Mathf.SmoothDamp(XRDevice.fovZoomFactor, 1.0f, ref ___currentZoomVelocity, ___zoomOutTime);
             }
             if (axis.y > 0.625f && XRDevice.fovZoomFactor < zoomedFactor)
             {
                 XRDevice.fovZoomFactor = Mathf.SmoothDamp(XRDevice.fovZoomFactor, zoomedFactor, ref ___currentZoomVelocity, ___zoomInTime);
             }
         }
     }
     catch (Exception e)
     {
         Debug.LogError(string.Format("Exception thrown during CameraZoom.ZoomMechanic postfix patch:\n{0}", e.Message));
         OnCriticalFailure();
     }
 }
Exemple #2
0
        /// <summary>
        /// VRデバイスのロード。
        /// </summary>
        IEnumerator LoadDevice(string newDevice)
        {
            bool vrMode = newDevice != DeviceNone;

            // 指定されたデバイスの読み込み.
            UnityEngine.VR.VRSettings.LoadDeviceByName(newDevice);
            // 次のフレームまで待つ.
            yield return(null);

            // VRモードを有効にする.
            UnityEngine.VR.VRSettings.enabled = vrMode;
            // 次のフレームまで待つ.
            yield return(null);

            // デバイスの読み込みが完了するまで待つ.
            while (UnityEngine.VR.VRSettings.loadedDeviceName != newDevice || UnityEngine.VR.VRSettings.enabled != vrMode)
            {
                yield return(null);
            }


            if (vrMode)
            {
                // Boot VRManager!
                // Note: Use your own implementation of GameInterpreter to gain access to a few useful operatoins
                // (e.g. characters, camera judging, colliders, etc.)
                VRManager.Create <GameInterpreter>(CreateContext("VRContext.xml"));
                VR.Manager.SetMode <GenericStandingMode>();
            }
        }
Exemple #3
0
        private static void Loaded()
        {
            if (!VRManager.IsVREnabled())
            {
                return;
            }

            var belt = FindObjectOfType <VRTK_HipTracking>();

            // copy the belt to make head tracked slots
            var head = Instantiate(belt, belt.transform.parent, true);

            head.HeadOffset = 0;

            // disable all except for the center one
            for (int i = 1; i < head.transform.childCount; i++)
            {
                head.transform.GetChild(i).gameObject.SetActive(false);
            }

            head.transform.GetChild(0).localPosition = Vector3.up * 0.3f + Vector3.forward * 0.1f;

            // delete possible items in the slot, that shouldn't be there
            var drop = head.transform.GetChild(0).GetChild(0);

            for (int i = 1; i < drop.childCount; i++)
            {
                Destroy(drop.GetChild(i).gameObject);
            }

            belt.gameObject.AddComponent <BeltLoader>();            // marker to differentiate this
        }
Exemple #4
0
 void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Exemple #5
0
 void OnDestroy()
 {
     if (instance == this)
     {
         instance = null;
     }
 }
Exemple #6
0
        /// <summary>
        /// Determines when to boot the VR code. In most cases, it makes sense to do the check as described here.
        /// </summary>
        public void OnApplicationStart()
        {
            bool vrDeactivated = Environment.CommandLine.Contains("--novr");
            bool vrActivated   = Environment.CommandLine.Contains("--vr");

            VRLog.Info("Start VRMOD");

#if UNITY_2018_3_OR_NEWER
            foreach (var s in UnityEngine.XR.XRSettings.supportedDevices)
            {
                VRLog.Info($"Supported VR Device :{s}");
            }
            if (vrActivated || (!vrDeactivated && UnityEngine.XR.XRSettings.isDeviceActive))
            {
                UnityEngine.XR.XRSettings.enabled = true;
                VRLog.Info("Create VR Manager");
                var Manager = VRManager.Create(VRSettings.Load <VRSettings>("VRSettings.xml"));
                VRLog.Info("VR Manager Created");
            }
#else
            foreach (var s in UnityEngine.VR.VRSettings.supportedDevices)
            {
                VRLog.Info($"Supported VR Device :{s}");
            }
            VRLog.Info($"VR Device Is Status:{UnityEngine.VR.VRSettings.isDeviceActive}");
            VRLog.Info($"VR Mode Enabled Status:{UnityEngine.VR.VRSettings.enabled}");
            if (vrActivated || (!vrDeactivated && UnityEngine.VR.VRSettings.isDeviceActive))
            {
                UnityEngine.VR.VRSettings.enabled = true;
                VRLog.Info("Create VR Manager");
                var Manager = VRManager.Create(VRSettings.Load <VRSettings>("VRSettings.xml"));
                VRLog.Info("VR Manager Created");
            }
#endif
        }
 public static void ShowFloatVR(string text)
 {
     HideFloatVR();
     if (!string.IsNullOrEmpty(text))
     {
         // TODO: Check if PlayerCamera is nullable.
         Transform eyesTransform = PlayerManager.PlayerCamera?.transform;
         if (eyesTransform == null)
         {
             return;
         }
         Vector3   position = eyesTransform.position + eyesTransform.forward * 1.5f;
         Transform parent;
         if (VRManager.IsVREnabled())
         {
             parent = VRTK_DeviceFinder.PlayAreaTransform();
         }
         else
         {
             parent = (PlayerManager.Car ? PlayerManager.Car.interior : (SingletonBehaviour <WorldMover> .Exists ? SingletonBehaviour <WorldMover> .Instance.originShiftParent : null));
         }
         floatieVR = (Object.Instantiate(Resources.Load("tutorial_floatie"), position, Quaternion.identity, parent) as GameObject);
         floatieVR.GetComponent <TutorialFloatie>().UpdateTextExternally(text);
     }
 }
Exemple #8
0
        public static void SetupSmoothedCamera()
        {
            if (!VRManager.IsVREnabled())
            {
                Main.LogWarning("[SmoothCamera] >>> Game running in non-VR mode. Skipping camera setup.");
                return;
            }

            if (GameObject.Find("SmoothCamera") != null)
            {
                Main.LogWarning("[SmoothCamera] >>> SmoothCamera already exists. Skipping camera setup.");
                return;
            }

            var veggieSys = UnityEngine.Object.FindObjectOfType <VegetationSystemPro>();

            if (Camera.main == null || veggieSys == null)
            {
                Main.Log("[SmoothCamera] >>> Delaying camera setup...");
                WorldStreamingInit.LoadingFinished += MainCamSetup;
                return;
            }

            MainCamSetup();
        }
 public void OnApplicationStart()
 {
     if (Environment.CommandLine.Contains("--vr"))
     {
         VRManager.Create <HoneyInterpreter>(new HoneyContext());
         VR.Manager.SetMode <HoneySeatedMode>();
     }
 }
 private static MonoBehaviour GetGrabbableComponent(Collider col)
 {
     if (VRManager.IsVREnabled())
     {
         return(col.GetComponentInParent <Telegrabbable>());
     }
     return(col.GetComponentInParent <ItemBase>());
 }
Exemple #11
0
        public static void StorageBase_RequestStorageSaveGameData_Postfix(StorageBase __instance, List <StorageItemData> __result)
        {
            _savingStorage = false;

            if (__instance.storageType != StorageType.World)
            {
                return;
            }

            var vr = VRManager.IsVREnabled();

            var go  = -1;
            var num = 0;

            foreach (var item in __instance.itemList)
            {
                if (StorageBase.itemTypesExcludedFromSave.Any(t => item.GetComponent(t)))
                {
                    continue;
                }

                if (vr)
                {
                    if (item.GetComponentInParent <BeltLoader>())
                    {
                        go = num;
                        break;
                    }
                }
                else
                {
                    var flashLight = item.GetComponent <FlashlightNonVR>();
                    if (!flashLight)
                    {
                        continue;
                    }
                    if (flashLight.IsHeadAttached)
                    {
                        go = num;
                        break;
                    }
                }
                num++;
            }

            if (go == -1)
            {
                return;
            }
            if (Array.IndexOf(Inventory.Instance.items, null) == -1)
            {
                return;
            }

            Log.Debug("Removing head-attached item from world");

            __result.RemoveAt(go);
        }
Exemple #12
0
        /// <summary>
        /// VRデバイスのロード。
        /// </summary>
        IEnumerator LoadDevice(string newDevice)
        {
            bool vrMode = newDevice != DeviceNone;

            // 指定されたデバイスの読み込み.
            UnityEngine.XR.XRSettings.LoadDeviceByName(newDevice);
            // 次のフレームまで待つ.
            yield return(null);

            // VRモードを有効にする.
            UnityEngine.XR.XRSettings.enabled = vrMode;
            // 次のフレームまで待つ.
            yield return(null);

            // デバイスの読み込みが完了するまで待つ.
            while (UnityEngine.XR.XRSettings.loadedDeviceName != newDevice || UnityEngine.XR.XRSettings.enabled != vrMode)
            {
                yield return(null);
            }


            //UnityEngine.XR.XRSettings.gameViewRenderMode = UnityEngine.XR.GameViewRenderMode.BothEyes;

            List <UnityEngine.XR.XRNodeState> states = new List <UnityEngine.XR.XRNodeState>();

            UnityEngine.XR.InputTracking.GetNodeStates(states);
            foreach (UnityEngine.XR.XRNodeState state in states)
            {
                string  name    = UnityEngine.XR.InputTracking.GetNodeName(state.uniqueID);
                Vector3 pos     = new Vector3();
                bool    got_pos = state.TryGetPosition(out pos);
                VRLog.Info("XRNode {0}, position available {1} {2}", name, got_pos, pos);
            }

            if (vrMode)
            {
                VRPatcher.Patch();

                // Boot VRManager!
                // Note: Use your own implementation of GameInterpreter to gain access to a few useful operatoins
                // (e.g. characters, camera judging, colliders, etc.)
                VRManager.Create <HS2Interpreter>(CreateContext("VRContext.xml"));
                if (((HS2VRSettings)VR.Settings).DefaultMode.Equals("Seated"))
                {
                    VR.Manager.SetMode <GenericSeatedMode>();
                }
                else
                {
                    VR.Manager.SetMode <GenericStandingMode>();
                }

                if (((HS2VRSettings)VR.Settings).PrivacyMode.Equals(true))
                {
                    PrivacyMode.Enable();
                }
            }
        }
        public void OnApplicationStart()
        {
            var manager = VRManager.Create <PlayClubInterpreter>(new PlayClubContext());

            manager.SetMode <PlayClubSeatedMode>();
            if (Environment.CommandLine.Contains("--verbose"))
            {
                Logger.Level = Logger.LogMode.Debug;
            }
        }
Exemple #14
0
    void Start()
    {
        if (!VRManager.IsVREnabled())
        {
            Destroy(this);
            return;
        }

        _headset = VRTK_SDK_Bridge.GetHeadset();
    }
Exemple #15
0
 public void OnEnabled()
 {
     HarmonyHelper.DoOnHarmonyReady(Patcher.PatchAll);
     if (SteamVRDetector.IsRunning)
     {
         var context = new CSLVRContext();
         VRManager.Create <CSLVRInterpreter>(context);
         VR.Manager.SetMode <CSLMode>();
     }
 }
Exemple #16
0
    private void Awake()
    {
        UnityEngine.XR.XRSettings.enabled = true;

        if (instance == null)
        {
            instance = this;
        }

        print(UnityEngine.XR.XRSettings.isDeviceActive);
    }
Exemple #17
0
    void Start()
    {
        if (VRManager.IsVREnabled())
        {
            Destroy(this);
            return;
        }

        grabHandler = GetComponent <AGrabHandler>();
        grabber     = FindObjectOfType <Grabber>();
    }
Exemple #18
0
 public void OnApplicationStart()
 {
     if (Environment.CommandLine.Contains("--vr"))
     {
         var context = new AGHContext();
         VRManager.Create <AGHInterpreter>(context);
         VR.Manager.SetMode <AGHSeatedMode>();
     }
     //VRLog.Info("Layers: " + string.Join(", ", UnityHelper.GetLayerNames(int.MaxValue)));
     //UnityEngine.SceneManagement.SceneManager.LoadScene(7);
 }
 void Awake()
 {
     if (_instance == null)
     {
         _instance = this;
         DontDestroyOnLoad(this);
     }
     else if (this != _instance)
     {
         // There can be only one!
         Destroy(gameObject);
     }
 }
Exemple #20
0
        /// <summary>
        /// Determines when to boot the VR code. In most cases, it makes sense to do the check as described here.
        /// </summary>
        public void OnApplicationStart()
        {
            bool vrDeactivated = Environment.CommandLine.Contains("--novr");
            bool vrActivated   = Environment.CommandLine.Contains("--vr");

            if (vrActivated || (!vrDeactivated && SteamVRDetector.IsRunning))
            {
                // Boot VRManager!
                // Note: Use your own implementation of GameInterpreter to gain access to a few useful operatoins
                // (e.g. characters, camera judging, colliders, etc.)
                VRManager.Create <GameInterpreter>(CreateContext("VRContext.xml"));
                VR.Manager.SetMode <GenericSeatedMode>();
            }
        }
Exemple #21
0
        public static void Inventory_GetItemsArray_Postfix(ref GameObject[] __result)
        {
            if (!_savingStorage)
            {
                return;
            }

            var vr = VRManager.IsVREnabled();

            var go = default(GameObject);

            foreach (var item in StorageController.Instance.StorageWorld.itemList)
            {
                if (vr)
                {
                    if (item.GetComponentInParent <BeltLoader>())
                    {
                        go = item.gameObject;
                        break;
                    }
                }
                else
                {
                    var flashLight = item.GetComponent <FlashlightNonVR>();
                    if (!flashLight)
                    {
                        continue;
                    }
                    if (flashLight.IsHeadAttached)
                    {
                        go = flashLight.gameObject;
                        break;
                    }
                }
            }

            var empty = Array.IndexOf(__result, null);

            if (empty == -1)
            {
                return;
            }
            var copy = __result.ToArray();

            copy[empty] = go;
            __result    = copy;

            Log.Debug($"Adding head attached item to inventory {go}");
        }
Exemple #22
0
        public void OnApplicationStart()
        {
            bool steamVrRunning = Process.GetProcesses().Any(process => process.ProcessName == "vrserver");
            bool vrDeactivated  = Environment.CommandLine.Contains("--novr");
            bool vrActivated    = Environment.CommandLine.Contains("--vr");

            if (vrActivated || (!vrDeactivated && steamVrRunning))
            {
                var context = new VookaContext();
                VRManager.Create <RayleeInterpreter>(context);
                VR.Manager.SetMode <VookaSeatedMode>();

                SteamVR_Render.instance.lockPhysicsUpdateRateToRenderFrequency = false;
            }
        }
Exemple #23
0
 static void Postfix(Transform player, Camera camera)
 {
     try
     {
         // don't skip even if the mod is inactive; this setup only runs once!
         if (VRManager.IsVREnabled() && player != null && camera != null)
         {
             player.gameObject.AddComponent <CameraZoom>().cam = camera;
         }
     }
     catch (Exception e)
     {
         Debug.LogError(string.Format("Exception thrown during PlayerManager.SetPlayer postfix patch:\n{0}", e.Message));
         OnCriticalFailure();
     }
 }
 private void checkRecenterPose(float dt)
 {
     if (isInRecenterPose())
     {
         recenteringPoseDuration += dt;
         if (recenteringPoseDuration >= RECENTER_POSE_TIME)
         {
             LogDebug("Triggered Recenter pose action.");
             VRManager.tryRecenter();
             recenteringPoseDuration = 0f;
         }
     }
     else
     {
         recenteringPoseDuration = 0f;
     }
 }
Exemple #25
0
 public void OnApplicationStart()
 {
     if (Environment.CommandLine.Contains("--vr"))
     {
         Logger.Info("started");
         var manager = VRManager.Create <SexyStudioInterpreter>(new SexyStudioContext());
         manager.SetMode <SexyStudioSeatedMode>();
         if (Environment.CommandLine.Contains(_MaingameExecutable))
         {
             HSceneUI ui = HSceneUI.Create();
             ui.transform.SetParent(VRGUI.Instance.transform, false);
         }
     }
     if (Environment.CommandLine.Contains("--verbose"))
     {
         Logger.Level = Logger.LogMode.Debug;
     }
 }
 public static void handleItem(Packet _packet)
 {
     ItemData data = _packet.ReadItemData();
     if (data.playerControl != Client.myId)
     {
         if (ignoredItems.Contains(data.itemId)) return;
         if (Client.items.ContainsKey(data.networkId) && Client.items[data.networkId].clientsideItem != null)
         {
             if(Client.items[data.networkId].clientsideItem.data.id!=data.itemId)
             {
                 Client.items[data.networkId].clientsideItem.Despawn();
                 return;
             }
             Client.items[data.networkId].clientsideItem.transform.position = data.objectData.position;
             Client.items[data.networkId].clientsideItem.transform.rotation = data.objectData.rotation;
             Client.items[data.networkId].clientsideItem.rb.velocity = data.objectData.velocity;
             Client.items[data.networkId].clientsideItem.rb.angularVelocity = data.objectData.angularVelocity;
             Client.items[data.networkId].clientsideItem.rb.collisionDetectionMode = CollisionDetectionMode.ContinuousDynamic;
             Client.items[data.networkId].toDelete = DateTime.Now.AddMilliseconds(100);
         }
         else
         {
             if(Catalog.current.GetData<BS.ItemData>(data.itemId)!=null)
             {
                 data.clientsideItem = Catalog.current.GetData<BS.ItemData>(data.itemId).Spawn();
                 data.clientsideItem.data.forceLayer = LayerName.MovingObject;
                 data.clientsideItem.SetColliderAndMeshLayer(VRManager.GetLayer(LayerName.MovingObject));
                 data.clientsideItem.data.moduleAI = null;
                 data.clientsideItem.transform.position = data.objectData.position;
                 data.clientsideItem.transform.rotation = data.objectData.rotation;
                 data.clientsideItem.rb.velocity = data.objectData.velocity;
                 data.clientsideItem.rb.angularVelocity = data.objectData.angularVelocity;
                 data.toDelete = DateTime.Now.AddMilliseconds(100);
                 Client.items[data.networkId] = data;
                 Client.networkedItems[data.networkId] = data.clientsideItem;
             }
             else
             {
                 Debug.Log($"{data.itemId} failed to spawn, adding to ignored items list");
                 ignoredItems.Add(data.itemId);
             }
         }
     }
 }
Exemple #27
0
        public void OnApplicationStart()
        {
            if (Environment.CommandLine.Contains("--vr"))
            {
                var context  = new HoneyContext();
                var settings = context.Settings as HoneySettings;

                // Enforce new default
                if (!File.Exists(NEW_DEFAULT_TOKEN))
                {
                    File.Create(NEW_DEFAULT_TOKEN);

                    settings.ApplyShaders = true;
                    settings.Save();
                }
                VRManager.Create <HoneyInterpreter>(context);
                VR.Manager.SetMode <HoneySeatedMode>();
            }
        }
Exemple #28
0
    private void Start()
    {
        button               = buttonSpec.GetComponent <ButtonBase>();
        button.Used         += Button_Used;
        rotary               = rotarySpec.GetComponent <RotaryBase>();
        rotary.ValueChanged += Rotary_ValueChanged;
        item       = GetComponent <ItemBase>();
        item.Used += () => button.Use();

        if (VRManager.IsVREnabled())
        {
            itemScrolling = gameObject.AddComponent <ItemScrollingVR>();
        }
        else
        {
            itemScrolling = gameObject.AddComponent <ItemScrollingNonVR>();
        }
        itemScrolling.Scrolled += ItemScrolling_Scrolled;
    }
Exemple #29
0
 public static void Initialize()
 {
     pointerTexture = new Texture2D(256, 1);
     // Note: ImageConversion.LoadImage automatically invokes Apply.
     ImageConversion.LoadImage(pointerTexture, File.ReadAllBytes(Main.mod.Path + "tutorial_UI_gradient_opaque.png"));
     // Solely based on command line args, so fine to init ASAP.
     if (VRManager.IsVREnabled())
     {
         ChangeFloatieText        = ChangeFloatieTextVR;
         HideFloatie              = HideFloatVR;
         ShowFloatie              = ShowFloatVR;
         UpdateAttentionTransform = UpdateAttentionTransformVR;
     }
     else
     {
         ChangeFloatieText        = ChangeFloatieTextNonVR;
         HideFloatie              = HideFloatNonVR;
         ShowFloatie              = ShowFloatNonVR;
         UpdateAttentionTransform = UpdateAttentionTransformNonVR;
     }
 }
Exemple #30
0
        protected override void Awake()
        {
            if (Paths.ProcessName.Contains("KoikatuVR"))
            {
                Destroy(this);
                return;
            }

            base.Awake();

            VRLoader.OnVRSuccess += () =>
            {
                if (Paths.ProcessName == "CharaStudio")
                {
                    VRManager.Create <KKCharaStudioInterpreter>(StudioContext.CreateContext("KKCSVRContext.xml"));
                }
                else
                {
                    VRManager.Create <KoikatuInterpreter>(MainGameContext.CreateContext("VRContext.xml"));
                }
            };
        }