private void AutoSaveModification(Scene arg0, LoadSceneMode arg1) { if (SceneItemData.TryGetValue(arg0.name, out var setting)) { setting.AutoSave(); } }
static void Postfix(SceneItemData data) { Dbgl("SIMB InitFromData zyx"); foreach (BoardItemSeat bis in ((SceneItemMissionBoardData)data).allBoardItemSeat) { Dbgl(bis.modelPath + " " + bis.pos.x + " " + bis.pos.y + " " + bis.pos.z + " " + bis.missionId); } }
private void SaveJson() { ItemData.mod_version = Version; SerializeHelper.SaveGlobalSettings(ItemData); if (GM != null) { if (SceneItemData.TryGetValue(GM.sceneName, out var currentSetting)) { currentSetting.AutoSave(); } } Logger.LogDebug("Save Json"); }
private void OnSaveButton() { Debug.Log("Save Scene Data"); var fileName = CheckFileName(saveInput.text); if (!string.IsNullOrEmpty(fileName)) { // Hack:由于复制构造不经过ScenePlayer,因此数据也不从ScenePlayer获得 var data = new SceneData(); var items = FindObjectsOfType <MapItem>(); var cubes = FindObjectsOfType <TerrainCube>(); var itemDataList = new List <SceneItemData>(); var cubeDatalist = new List <TerrainCubeData>(); for (int i = 0; i < items.Length; i++) { // Hack:复制构造没有typeData var sceneItemData = new SceneItemData(); sceneItemData.mapItemId = 1; sceneItemData.position = items[i].transform.position.ToSerilizable(); sceneItemData.rotation = items[i].transform.rotation.ToSerilizable(); itemDataList.Add(sceneItemData); } for (int i = 0; i < cubes.Length; i++) { var cubeItemData = new TerrainCubeData(); cubeItemData.terrainId = 1; var bounds = cubes[i].GetComponent <BoxCollider>().bounds; cubeItemData.minValue = bounds.min.ToSerilizable(); cubeItemData.maxValue = bounds.max.ToSerilizable(); cubeDatalist.Add(cubeItemData); } data.itemData = itemDataList; data.terrainData = cubeDatalist; using (var fs = File.Open(fileName, FileMode.Create, FileAccess.Write)) { var serializer = new XmlSerializer(typeof(SceneData)); serializer.Serialize(fs, data); } } }
public void OnObjectDropped(ReorderableList.ReorderableListEventStruct e) { RectTransform droppedTransform = e.DroppedObject.transform as RectTransform; Canvas parentCanvas = (e.DroppedObject.transform as RectTransform).GetParentCanvas(); Camera parentCamera = parentCanvas.worldCamera; Vector2 canvasSize = parentCanvas.pixelRect.size * parentCanvas.scaleFactor; Vector2 pivot = droppedTransform.anchorMin * droppedTransform.anchorMax; Vector2 screenOffset = pivot * canvasSize; Vector3 screenPosition = screenOffset + droppedTransform.anchoredPosition * parentCanvas.scaleFactor; screenPosition.z = 1; Ray ray = new Ray(parentCamera.ScreenToWorldPoint(screenPosition), parentCamera.transform.forward); Plane plane = new Plane(-parentCamera.transform.forward, Vector3.zero); plane.Raycast(ray, out float d); Vector3 worldPos = ray.GetPoint(d); SceneItemElementViewController controller = e.DroppedObject.GetComponent <SceneItemElementViewController>(); if ((e.FromList.transform as RectTransform).rect.Contains(e.DroppedObject.transform.position)) { Destroy(e.DroppedObject); return; } // create scene item SceneItemData data = SceneItemData.Empty; data.position = worldPos; data.payloadType = controller.sceneItemTemplateData.payloadType; data.payload = data.payloadType == PayloadType.Primitive ? controller.sceneItemTemplateData.itemName : controller.payload; ISceneItem item = m_SceneItemFactory.Create(data); e.DroppedObject.transform.parent = null; Destroy(e.DroppedObject); }
// Spawn Object from Json files private void SpawnFromSettings(Scene arg0, LoadSceneMode arg1) { //Logger.LogDebug($"Item Count:{ItemData.items.Count}"); if (arg0.name.Contains("Menu_Title")) { return; } IEnumerator SpawnGlobal(Scene arg0) { int count = 0; Logger.LogDebug("Try to spawn setting"); string sceneName = arg0.name; yield return(new WaitUntil(() => (arg0.isLoaded))); var spawnlist = ItemData.items.Where(x => x.sceneName == sceneName).ToArray(); foreach (var r in spawnlist) { try { if (ObjectLoader.CloneDecoration(r.pname, r) != null) { count++; } } catch { Logger.LogError($"Spawn Failed When Try to Spawn {r?.pname}"); } } Modding.Logger.LogDebug($"All Fine,Spawn {count} in {sceneName}"); yield break; } IEnumerator SpawnLocal(Scene arg0, ItemSettings setting) { int count = 0; Logger.LogDebug("Try to spawn setting"); string sceneName = arg0.name; yield return(new WaitUntil(() => (arg0.isLoaded))); var spawnlist = setting.items; foreach (var r in spawnlist) { try { if (ObjectLoader.CloneDecoration(r.pname, r) != null) { count++; } } catch { Logger.LogError($"Spawn Failed When Try to Spawn {r?.pname}"); } } Modding.Logger.LogDebug($"All Fine,Spawn {count} in {sceneName}"); yield break; } if (ItemData.items.Count > 0) { GameManager.instance.StartCoroutine(SpawnGlobal(arg0)); } if (SceneItemData.TryGetValue(arg0.name, out var sceneSetting)) { GameManager.instance.StartCoroutine(SpawnLocal(arg0, sceneSetting)); } else { var _scene_setting = SerializeHelper.LoadSceneSettings <ItemSettings>(arg0.name); if (_scene_setting != null) { SceneItemData.Add(arg0.name, _scene_setting); GameManager.instance.StartCoroutine(SpawnLocal(arg0, _scene_setting)); } } }
static void Prefix(ref SceneItemData data) { }
public void DuplicateTarget() { SceneItemData data = m_DataFactory.Create(m_ParentHandle.target); m_ItemFactory.Create(data); }