public override void Scene_ImportChara(MsgObject message) { using (var fileStream = new FileStream(message.path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var binaryReader = new BinaryReader(fileStream)) { long size = 0L; PngAssist.CheckPngData(binaryReader, ref size, true); var version = new Version(binaryReader.ReadString()); var sceneInfo = Studio.Studio.Instance.sceneInfo; var traverse = Traverse.Create(sceneInfo); traverse.Property("dicImport").SetValue(new Dictionary <int, ObjectInfo>()); traverse.Property("dicChangeKey").SetValue(new Dictionary <int, int>()); int num = binaryReader.ReadInt32(); for (int i = 0; i < num; i++) { int value = binaryReader.ReadInt32(); int type = binaryReader.ReadInt32(); if (type == 0) { var objectInfo = new OICharInfo(null, Studio.Studio.GetNewIndex()); objectInfo.Load(binaryReader, version, true, true); sceneInfo.dicObject.Add(objectInfo.dicKey, objectInfo); sceneInfo.dicImport.Add(objectInfo.dicKey, objectInfo); sceneInfo.dicChangeKey.Add(objectInfo.dicKey, value); } else { ObjectInfo objectInfo = null; switch (type) { case 1: objectInfo = new OIItemInfo(-1, Studio.Studio.GetNewIndex()); break; case 2: objectInfo = new OILightInfo(-1, Studio.Studio.GetNewIndex()); break; case 3: objectInfo = new OIFolderInfo(Studio.Studio.GetNewIndex()); break; default: Console.WriteLine($"対象外 : {type}"); break; } objectInfo.Load(binaryReader, version, true, true); } } } } AddObjectAssist.LoadChild(Studio.Studio.Instance.sceneInfo.dicImport, null, null); Studio.Studio.Instance.treeNodeCtrl.RefreshHierachy(); }
// Edited version of SceneInfo.Import void ImportSceneChara(string path) { using (var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) { using (var binaryReader = new BinaryReader(fileStream)) { PngFile.SkipPng(binaryReader); var version = new Version(binaryReader.ReadString()); var sceneInfo = Studio.Studio.Instance.sceneInfo; var traverse = Traverse.Create(sceneInfo); traverse.Property("dicImport").SetValue(new Dictionary <int, ObjectInfo>()); traverse.Property("dicChangeKey").SetValue(new Dictionary <int, int>()); int num = binaryReader.ReadInt32(); for (int i = 0; i < num; i++) { int value = binaryReader.ReadInt32(); int type = binaryReader.ReadInt32(); if (type == 0) { var objectInfo = new OICharInfo(null, Studio.Studio.GetNewIndex()); objectInfo.Load(binaryReader, version, true, true); sceneInfo.dicObject.Add(objectInfo.dicKey, objectInfo); sceneInfo.dicImport.Add(objectInfo.dicKey, objectInfo); sceneInfo.dicChangeKey.Add(objectInfo.dicKey, value); } else if (type == 1) { var objectInfo = new OIItemInfo(-1, -1, -1, Studio.Studio.GetNewIndex()); objectInfo.Load(binaryReader, version, true, true); foreach (var item in FindCharacters(objectInfo.child)) { sceneInfo.dicObject.Add(item.dicKey, item); sceneInfo.dicImport.Add(item.dicKey, item); sceneInfo.dicChangeKey.Add(item.dicKey, value); } } else if (type == 3) { var objectInfo = new OIFolderInfo(Studio.Studio.GetNewIndex()); objectInfo.Load(binaryReader, version, true, true); foreach (var item in FindCharacters(objectInfo.child)) { sceneInfo.dicObject.Add(item.dicKey, item); sceneInfo.dicImport.Add(item.dicKey, item); sceneInfo.dicChangeKey.Add(item.dicKey, value); } } else { ObjectInfo objectInfo = null; switch (type) { case 2: objectInfo = new OILightInfo(-1, Studio.Studio.GetNewIndex()); break; case 4: objectInfo = new OIRouteInfo(Studio.Studio.GetNewIndex()); break; case 5: objectInfo = new OICameraInfo(Studio.Studio.GetNewIndex()); break; } objectInfo.Load(binaryReader, version, true, true); } } } } AddObjectAssist.LoadChild(Studio.Studio.Instance.sceneInfo.dicImport, null, null); Studio.Studio.Instance.treeNodeCtrl.RefreshHierachy(); }