Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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());
            }
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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;
                    }
                }
            }
        }