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(); } }
/// <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>(); } }
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 }
void Awake() { if (instance == null) { instance = this; } }
void OnDestroy() { if (instance == this) { instance = null; } }
/// <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); } }
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>()); }
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); }
/// <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; } }
void Start() { if (!VRManager.IsVREnabled()) { Destroy(this); return; } _headset = VRTK_SDK_Bridge.GetHeadset(); }
public void OnEnabled() { HarmonyHelper.DoOnHarmonyReady(Patcher.PatchAll); if (SteamVRDetector.IsRunning) { var context = new CSLVRContext(); VRManager.Create <CSLVRInterpreter>(context); VR.Manager.SetMode <CSLMode>(); } }
private void Awake() { UnityEngine.XR.XRSettings.enabled = true; if (instance == null) { instance = this; } print(UnityEngine.XR.XRSettings.isDeviceActive); }
void Start() { if (VRManager.IsVREnabled()) { Destroy(this); return; } grabHandler = GetComponent <AGrabHandler>(); grabber = FindObjectOfType <Grabber>(); }
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); } }
/// <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>(); } }
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}"); }
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; } }
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; } }
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); } } } }
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>(); } }
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; }
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; } }
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")); } }; }