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();
        }
Example #3
0
        private static void CreateSettingsUI()
        {
            var subMenu = SettingsUI.CreateSubMenu("VideoPlayer");

            var showVideoSetting = subMenu.AddBool("Show Video");

            showVideoSetting.GetValue += delegate
            {
                return(ScreenManager.showVideo);
            };
            showVideoSetting.SetValue += delegate(bool value)
            {
                ScreenManager.showVideo = value;
                ModPrefs.SetBool(Plugin.PluginName, "ShowVideo", ScreenManager.showVideo);
            };

            var placementSetting = subMenu.AddList("Screen Position", VideoPlacementSetting.Modes());

            placementSetting.GetValue += delegate
            {
                return((float)ScreenManager.placement);
            };
            placementSetting.SetValue += delegate(float value)
            {
                ScreenManager.SetPlacement((VideoPlacement)value);
                ModPrefs.SetInt(Plugin.PluginName, "ScreenPositionMode", (int)ScreenManager.placement);
            };
            placementSetting.FormatValue += delegate(float value) { return(VideoPlacementSetting.Name((VideoPlacement)value)); };


            var qualitySetting = subMenu.AddList("Video Download Quality", VideoQualitySetting.Modes());

            qualitySetting.GetValue += delegate
            {
                return((float)YouTubeDownloader.Instance.quality);
            };
            qualitySetting.SetValue += delegate(float value)
            {
                YouTubeDownloader.Instance.quality = (VideoQuality)value;
                ModPrefs.SetInt(Plugin.PluginName, "VideoDownloadQuality", (int)YouTubeDownloader.Instance.quality);
            };
            qualitySetting.FormatValue += delegate(float value) { return(VideoQualitySetting.Name((VideoQuality)value)); };
        }