private TextMeshPro SetupText(Vector2 size) { TextMeshPro text = new GameObject("Text").AddComponent <TextMeshPro>(); text.transform.SetParent(transform); text.transform.localPosition = Vector3.zero; text.transform.localRotation = Quaternion.identity; text.transform.localScale = Vector3.one; text.fontStyle = FontStyles.Bold; text.autoSizeTextContainer = true; MelonCoroutines.Start(SetSize(text.rectTransform, size)); text.enableAutoSizing = true; text.fontSize = 144f; text.fontSizeMax = 244f; text.alignment = TextAlignmentOptions.Midline; text.fontSizeMin = 55f; text.color = Color.white; text.outlineWidth = 0.2f; text.outlineColor = new Color32(0, 0, 0, 255); text.enableWordWrapping = true; text.overflowMode = TextOverflowModes.Overflow; text.fontSharedMaterial.shader = VRAssets.GetTextNoCull(); text.ForceMeshUpdate(false); return(text); }
public static void PrepareNavMarker(NavMarker n) { n.transform.SetParent(null); n.m_initScale *= 0.009f; SetTransformHierarchyLayer(n.transform); foreach (TextMeshPro p in n.transform.GetComponentsInChildren <TextMeshPro>(true)) { if (p == null || p.fontSharedMaterial == null) { return; } Log.Debug($"Prev shader = {p.fontMaterial.shader.name}"); p.fontSharedMaterial.shader = VRAssets.GetTextNoCull(); } if (n != null && n.m_distance != null && n.m_distance.fontSharedMaterial != null) { n.m_distance.fontSharedMaterial.shader = VRAssets.GetTextNoCull(); } if (n.m_trackingObj) { n.transform.position = n.m_trackingObj.transform.position; n.transform.rotation = Quaternion.LookRotation(HMD.GetFlatForwardDirection()); } }
public void Setup(FPSCamera camera, PlayerAgent agent) { FpsCamera = camera; PlayerAgent = agent; m_origin = new GameObject("Origin").AddComponent <PlayerOrigin>(); m_origin.Setup(PlayerAgent); m_snapTurn = gameObject.AddComponent <Snapturn>(); m_snapTurn.Setup(m_origin); gameObject.AddComponent <VRWorldSpaceUI>(); m_movementVignette = gameObject.AddComponent <MovementVignette>(); m_movementVignette.Setup(agent.Locomotion, GetComponent <PostProcessingBehaviour>()); m_weaponRadial = gameObject.AddComponent <WeaponRadialMenu>(); m_weaponRadial.Setup(m_origin.transform); m_weaponAmmoHolo = gameObject.AddComponent <WeaponAmmoHologram>(); m_weaponAmmoHolo.Setup(); GameObject laserPointer = new GameObject("LaserPointer"); m_pointer = laserPointer.AddComponent <LaserPointer>(); m_fade = FpsCamera.gameObject.AddComponent <CollisionFade>(); m_fade.Setup(PlayerAgent); FpsCamera.gameObject.AddComponent <SteamVR_Camera>(); FpsCamera.gameObject.AddComponent <VRRendering>(); FpsCamera.gameObject.AddComponent <SteamVR_Fade>(); m_watch = Instantiate(VRAssets.GetWatchPrefab(), Vector3.zero, Quaternion.identity, null).AddComponent <Watch>(); m_watch.Setup(m_origin.transform); m_haptics = gameObject.AddComponent <Haptics>(); m_haptics.Setup(); m_bhapticsIntegration = gameObject.AddComponent <BhapticsIntegration>(); m_bhapticsIntegration.Setup(agent); PlayerLocomotionEvents.OnPlayerEnterLadder += PlayerEnteredLadder; SteamVR_Events.NewPosesApplied.Listen(new Action(OnNewPoses)); VRConfig.configLightResMode.SettingChanged += LightResChanged; RefreshClusteredRenderingResolution(); }
internal static void UpdateAllNavMarkers(Il2CppSystem.Collections.Generic.List <NavMarker> m_markersActive) { float tempScale = 1f; bool inElevator = FocusStateManager.CurrentState.Equals(eFocusState.InElevator); foreach (NavMarker n in m_markersActive) { if (inElevator && n) { n.transform.localScale = Vector3.zero; return; } if (n != null && n.m_trackingObj != null) { n.transform.position = n.m_trackingObj.transform.position; float dotToCamera = Vector3.Dot((n.m_trackingObj.transform.position - HMD.GetWorldPosition()).normalized, HMD.GetWorldForward()); if (dotToCamera < 0) { n.SetState(NavMarkerState.Inactive); } else { float distanceToCamera = Vector3.Distance(n.m_trackingObj.transform.position, HMD.GetWorldPosition()); Vector3 hmdToTrackObj = (n.m_trackingObj.transform.position - HMD.GetWorldPosition()).normalized; Quaternion rotToCamera = Quaternion.LookRotation(hmdToTrackObj.normalized); n.transform.rotation = rotToCamera; if (distanceToCamera > 60) { n.transform.position = HMD.GetWorldPosition() + hmdToTrackObj * 60f; } if (dotToCamera > 0.94f) { if (n.m_currentState != NavMarkerState.InFocus) { n.SetState(NavMarkerState.InFocus); } } else if (n.m_currentState != NavMarkerState.Visible) { n.SetState(NavMarkerState.Visible); } if (n.m_distance != null && n.m_distance.fontSharedMaterial != null) { n.m_distance.fontSharedMaterial.shader = VRAssets.GetTextNoCull(); } n.SetDistance(distanceToCamera); // Scale up to camera culling distance // If nav marker is beyond that it will place itself back to 60m away tempScale = 1 + Mathf.Clamp(distanceToCamera / 25f, 0, 2.4f); n.transform.localScale = n.m_initScale * tempScale; } } } }