public bool scene_set_bg_png_orig(string filepng) { if (this.scene_get_bg_png_orig() != filepng) { // return self.studio.sceneInfo.background // print self.studio.m_BackgroundCtrl.Load(ffile) // for obj in GameObject.FindObjectOfType(BackgroundCtrl): BackgroundCtrl obj = (BackgroundCtrl)GameObject.FindObjectOfType(typeof(BackgroundCtrl)); return(obj.Load(filepng)); // print self.studio.m_BackgroundCtrl.Load(ffile) } return(true); }
protected override void OnSceneLoad(SceneOperationKind operation, ReadOnlyDictionary <int, ObjectCtrlInfo> loadedItems) { //Dispose of any textures when resetting the scene if (operation == SceneOperationKind.Clear) { FrameTex?.Dispose(); FrameTex = null; BGTex?.Dispose(); BGTex = null; return; } //On loading or importing a scene, check if the item has any patterns that exist in the pattern folder and use MaterialEditor to handle these textures instead foreach (var loadedItem in loadedItems.Values) { if (loadedItem is OCIItem item) { if (item.itemComponent != null) { for (int i = 0; i < 3; i++) { string filePath = item.GetPatternPath(i); SavePatternTex(item, i, filePath); } } if (item.panelComponent != null) { SaveBGTex(item, item.itemInfo.panel.filePath); } } } //On loading a scene load the saved frame texture, if any //Frames and BGs are not imported, only loaded if (operation == SceneOperationKind.Load) { FrameTex?.Dispose(); FrameTex = null; BGTex?.Dispose(); BGTex = null; var data = GetExtendedData(); if (data?.data != null) { if (data.data.TryGetValue("FrameData", out var frameObj) && frameObj != null) { FrameTex = new TextureContainer((byte[])frameObj); } if (data.data.TryGetValue("BGData", out var bgObj) && bgObj != null) { BGTex = new TextureContainer((byte[])bgObj); } } if (FrameTex != null) { var imageFrame = Traverse.Create(Studio.Studio.Instance.frameCtrl).Field("imageFrame").GetValue <RawImage>(); imageFrame.texture = FrameTex.Texture; imageFrame.enabled = true; var cameraUI = Traverse.Create(Studio.Studio.Instance.frameCtrl).Field("cameraUI").GetValue <Camera>(); cameraUI.enabled = true; } if (BGTex != null) { BackgroundCtrl m_BackgroundCtrl = Traverse.Create(Studio.Studio.Instance).Field("m_BackgroundCtrl").GetValue <BackgroundCtrl>(); MeshRenderer meshRenderer = Traverse.Create(m_BackgroundCtrl).Field("meshRenderer").GetValue <MeshRenderer>(); meshRenderer.material.SetTexture("_MainTex", BGTex.Texture); m_BackgroundCtrl.isVisible = true; } } }
private static bool Studio_InitScene(Studio.Studio __instance, bool _close, ref BackgroundCtrl ___m_BackgroundCtrl) { if (IsStudio) { return(true); } __instance.ChangeCamera(null, false, true); Traverse.Create(__instance).Property("cameraCount").SetValue(0); __instance.treeNodeCtrl.DeleteAllNode(); foreach (KeyValuePair <TreeNodeObject, ObjectCtrlInfo> item in __instance.dicInfo) { switch (item.Value.kind) { case 0: { OCIChar oCIChar = item.Value as OCIChar; oCIChar?.StopVoice(); break; } case 4: { OCIRoute oCIRoute = item.Value as OCIRoute; oCIRoute?.DeleteLine(); break; } } Destroy(item.Value.guideObject.transformTarget.gameObject); } __instance.dicInfo.Clear(); __instance.dicChangeAmount.Clear(); __instance.dicObjectCtrl.Clear(); Singleton <Map> .Instance.ReleaseMap(); __instance.cameraCtrl.CloerListCollider(); __instance.bgmCtrl.Stop(); __instance.envCtrl.Stop(); __instance.outsideSoundCtrl.Stop(); __instance.sceneInfo.Init(); __instance.cameraCtrl.Reset(0); __instance.cameraLightCtrl.Reflect(); __instance.onChangeMap?.Invoke(); if (_close) { Destroy(___m_BackgroundCtrl); ___m_BackgroundCtrl = null; } return(false); }
private static bool Studio_LoadScene(Studio.Studio __instance, string _path, ref bool __result, ref BackgroundCtrl ___m_BackgroundCtrl, ref Studio.CameraControl ___m_CameraCtrl) { if (IsStudio) { return(true); } if (!File.Exists(_path)) { __result = false; return(false); } __instance.InitScene(false); var sceneInfo = new SceneInfo(); Traverse.Create(__instance).Property("sceneInfo").SetValue(sceneInfo); if (!sceneInfo.Load(_path)) { __result = false; return(false); } LoadingScene = true; AddObjectAssist.LoadChild(sceneInfo.dicObject); ChangeAmount source = sceneInfo.caMap.Clone(); __instance.AddMap(sceneInfo.map, false, false); sceneInfo.caMap.Copy(source); Singleton <MapCtrl> .Instance.Reflect(); __instance.bgmCtrl.Play(__instance.bgmCtrl.no); __instance.envCtrl.Play(__instance.envCtrl.no); __instance.outsideSoundCtrl.Play(__instance.outsideSoundCtrl.fileName); //Add the component if it doesn't exist if (___m_BackgroundCtrl == null) { ___m_BackgroundCtrl = Camera.main.gameObject.AddComponent <BackgroundCtrl>(); } __instance.treeNodeCtrl.RefreshHierachy(); if (sceneInfo.cameraSaveData != null) { ___m_CameraCtrl.Import(sceneInfo.cameraSaveData); } __instance.cameraLightCtrl.Reflect(); sceneInfo.dataVersion = sceneInfo.version; LoadingScene = false; __result = true; return(false); }