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(); }
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)); }; }