Beispiel #1
0
        public void SetRotation(VideoPlacement placement)
        {
            var rotation = VideoPlacementSetting.Rotation(placement);

            container.transform.eulerAngles = rotation;
            Logger.Instance.Log($"Player rotated to {rotation.ToString()}", Logger.LogSeverity.DEBUG);
        }
        void CreateScreen()
        {
            screen = new GameObject("Screen");
            screen.AddComponent <BoxCollider>().size = new Vector3(16f / 9f + 0.1f, 1.1f, 0.1f);
            screen.transform.parent = transform;

            GameObject body = GameObject.CreatePrimitive(PrimitiveType.Cube);

            if (body.GetComponent <Collider>() != null)
            {
                Destroy(body.GetComponent <Collider>());
            }
            body.transform.parent        = screen.transform;
            body.transform.localPosition = new Vector3(0, 0, 0.1f);
            body.transform.localScale    = new Vector3(16f / 9f + 0.1f, 1.1f, 0.1f);
            Renderer bodyRenderer = body.GetComponent <Renderer>();

            bodyRenderer.material = new Material(Resources.FindObjectsOfTypeAll <Material>()
                                                 .Last(x =>
                                                       x.name == "DarkEnvironmentSimple")); // finding objects is wonky because platforms hides them

            GameObject videoScreen = GameObject.CreatePrimitive(PrimitiveType.Quad);

            if (videoScreen.GetComponent <Collider>() != null)
            {
                Destroy(videoScreen.GetComponent <Collider>());
            }
            videoScreen.transform.parent        = screen.transform;
            videoScreen.transform.localPosition = Vector3.zero;
            videoScreen.transform.localScale    = new Vector3(16f / 9f, 1, 1);
            vsRenderer          = videoScreen.GetComponent <Renderer>();
            vsRenderer.material = new Material(GetShader())
            {
                color = Color.clear
            };

            screen.transform.position    = VideoPlacementSetting.Position(placement);
            screen.transform.eulerAngles = VideoPlacementSetting.Rotation(placement);
            screen.transform.localScale  = VideoPlacementSetting.Scale(placement) * Vector3.one;
            screenSoftParentRotation     = screen.AddComponent <SoftParent>();

            videoPlayer                        = gameObject.AddComponent <VideoPlayer>();
            videoPlayer.isLooping              = true;
            videoPlayer.renderMode             = VideoRenderMode.MaterialOverride;
            videoPlayer.targetMaterialProperty = "_MainTex";
            videoPlayer.playOnAwake            = false;
            videoPlayer.targetMaterialRenderer = vsRenderer;
            vsRenderer.material.SetTexture("_MainTex", videoPlayer.texture);
            videoPlayer.errorReceived    += VideoPlayerErrorReceived;
            videoPlayer.prepareCompleted += source => source.Pause();
            videoPlayer.waitForFirstFrame = true;

            OnMenuSceneLoaded();
            BSEvents.levelQuit      += unsetTransformParent;
            BSEvents.levelCleared   += unsetTransformParent;
            BSEvents.levelFailed    += unsetTransformParent;
            BSEvents.levelRestarted += unsetTransformParent;
        }
 public static void SetPlacement(VideoPlacement placement)
 {
     ScreenManager.placement = placement;
     if (Instance.screen == null)
     {
         return;
     }
     Instance.screen.transform.position    = VideoPlacementSetting.Position(placement);
     Instance.screen.transform.eulerAngles = VideoPlacementSetting.Rotation(placement);
     Instance.screen.transform.localScale  = VideoPlacementSetting.Scale(placement) * Vector3.one;
 }
 public void SetPlacement(VideoPlacement placement)
 {
     this.placement = placement;
     if (Instance.screen == null)
     {
         return;
     }
     // screen.GetComponent<SoftParent>() !=
     screen.transform.position    = VideoPlacementSetting.Position(placement);
     screen.transform.eulerAngles = VideoPlacementSetting.Rotation(placement);
     screen.transform.localScale  = VideoPlacementSetting.Scale(placement) * Vector3.one;
 }
        void CreateScreen()
        {
            screen = new GameObject("Screen");
            screen.AddComponent <BoxCollider>().size = new Vector3(16f / 9f + 0.1f, 1.1f, 0.1f);
            screen.transform.parent = transform;

            GameObject body = GameObject.CreatePrimitive(PrimitiveType.Cube);

            if (body.GetComponent <Collider>() != null)
            {
                Destroy(body.GetComponent <Collider>());
            }
            body.transform.parent        = screen.transform;
            body.transform.localPosition = new Vector3(0, 0, 0.1f);
            body.transform.localScale    = new Vector3(16f / 9f + 0.1f, 1.1f, 0.1f);
            Renderer bodyRenderer = body.GetComponent <Renderer>();

            bodyRenderer.material = new Material(Resources.FindObjectsOfTypeAll <Renderer>().First(x => x.name == "Column").material); // finding objects is wonky because platforms hides them

            GameObject videoScreen = GameObject.CreatePrimitive(PrimitiveType.Quad);

            if (videoScreen.GetComponent <Collider>() != null)
            {
                Destroy(videoScreen.GetComponent <Collider>());
            }
            videoScreen.transform.parent        = screen.transform;
            videoScreen.transform.localPosition = Vector3.zero;
            videoScreen.transform.localScale    = new Vector3(16f / 9f, 1, 1);
            vsRenderer                = videoScreen.GetComponent <Renderer>();
            vsRenderer.material       = new Material(GetShader());
            vsRenderer.material.color = Color.clear;

            screen.transform.position    = VideoPlacementSetting.Position(placement);
            screen.transform.eulerAngles = VideoPlacementSetting.Rotation(placement);
            screen.transform.localScale  = VideoPlacementSetting.Scale(placement) * Vector3.one;

            _customBloomPrePass = videoScreen.AddComponent <CustomBloomPrePass>();

            videoPlayer                        = gameObject.AddComponent <VideoPlayer>();
            videoPlayer.isLooping              = true;
            videoPlayer.renderMode             = VideoRenderMode.MaterialOverride;
            videoPlayer.targetMaterialProperty = "_MainTex";
            videoPlayer.playOnAwake            = false;
            videoPlayer.targetMaterialRenderer = vsRenderer;
            vsRenderer.material.SetTexture("_MainTex", videoPlayer.texture);
            videoPlayer.errorReceived += VideoPlayerErrorReceived;

            OnMenuSceneLoaded();
        }