public static void CleanData() { FrameNameTable = null; FrameResource = null; VertexBufferPool = null; IndexBufferPool = null; SoundSector = null; Actors = null; ItemDescs = null; Collisions = null; CityAreas = null; CityShops = null; roadMap = null; ATLoader = null; AIWorlds = null; OBJData = null; }
public static void BuildData() { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDescLoader> ids = new List <ItemDescLoader>(); List <Actor> act = new List <Actor>(); List <NAVData> aiw = new List <NAVData>(); List <NAVData> obj = new List <NAVData>(); DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); FileInfo[] files = dirInfo.GetFiles("*", SearchOption.AllDirectories); XmlDocument document = new XmlDocument(); document.Load(ScenePath + "/SDSContent.xml"); XPathNavigator nav = document.CreateNavigator(); var nodes = nav.Select("/SDSResource/ResourceEntry"); while (nodes.MoveNext() == true) { string type; string name; nodes.Current.MoveToFirstChild(); type = nodes.Current.Value; nodes.Current.MoveToNext(); name = ScenePath + "/" + nodes.Current.Value; if (type == "IndexBufferPool") { ibps.Add(new FileInfo(name)); } else if (type == "VertexBufferPool") { vbps.Add(new FileInfo(name)); } else if (type == "Actors") { try { act.Add(new Actor(name)); } catch (Exception ex) { Console.WriteLine("Failed to read actor {0}", name); } } else if (type == "FrameResource") { FrameResource = new FrameResource(name); } else if (type == "ItemDesc") { ids.Add(new ItemDescLoader(name)); } else if (type == "FrameNameTable") { FrameNameTable = new FrameNameTable(name); } else if (type == "Collisions") { Collisions = new Collision(name); } else if (type == "AnimalTrafficPaths") { try { ATLoader = new AnimalTrafficLoader(new FileInfo(name)); } catch (Exception ex) { Console.WriteLine("Failed to read AnimalTrafficPaths {0}", ATLoader); } } else if (nodes.Current.Value == "roadmap.gsd") { roadMap = new Roadmap(new FileInfo(name)); } else if (type == "NAV_OBJ_DATA") { obj.Add(new NAVData(new FileInfo(name))); } else if (type == "Translokator") { Translokator = new TranslokatorLoader(new FileInfo(name)); } } IndexBufferPool = new IndexBufferManager(ibps); VertexBufferPool = new VertexBufferManager(vbps); ItemDescs = ids.ToArray(); Actors = act.ToArray(); OBJData = obj.ToArray(); }
public static void BuildData(bool forceBigEndian) { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDescLoader> ids = new List <ItemDescLoader>(); List <Actor> act = new List <Actor>(); List <NAVData> aiw = new List <NAVData>(); List <NAVData> obj = new List <NAVData>(); isBigEndian = forceBigEndian; Utils.Models.VertexTranslator.IsBigEndian = forceBigEndian; if (isBigEndian) { MessageBox.Show("Detected 'Big Endian' formats. This will severely effect functionality!", "Toolkit", MessageBoxButtons.OK, MessageBoxIcon.Information); } DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); sdsContent = new SDSContentFile(); sdsContent.ReadFromFile(new FileInfo(Path.Combine(ScenePath + "/SDSContent.xml"))); //IndexBuffers var paths = sdsContent.GetResourceFiles("IndexBufferPool", true); foreach (var item in paths) { ibps.Add(BuildFileInfo(item)); } //Vertex Buffers paths = sdsContent.GetResourceFiles("VertexBufferPool", true); foreach (var item in paths) { vbps.Add(BuildFileInfo(item)); } //Actors if (!isBigEndian) { paths = sdsContent.GetResourceFiles("Actors", true); foreach (var item in paths) { try { act.Add(new Actor(item)); } catch (Exception ex) { Console.WriteLine("Failed to read actor {0}", item); } } } //FrameResource if (sdsContent.HasResource("FrameResource")) { var name = sdsContent.GetResourceFiles("FrameResource", true)[0]; FrameResource = new FrameResource(name, isBigEndian); } //Item Desc if (!isBigEndian) { paths = sdsContent.GetResourceFiles("ItemDesc", true); foreach (var item in paths) { ids.Add(new ItemDescLoader(item)); } } //FrameNameTable if (sdsContent.HasResource("FrameNameTable")) { var name = sdsContent.GetResourceFiles("FrameNameTable", true)[0]; FrameNameTable = new FrameNameTable(name, isBigEndian); } //Collisions if (!isBigEndian && sdsContent.HasResource("Collisions")) { var name = sdsContent.GetResourceFiles("Collisions", true)[0]; Collisions = new Collision(name); } //AnimalTrafficPaths if (!isBigEndian && sdsContent.HasResource("AnimalTrafficPaths")) { var name = sdsContent.GetResourceFiles("AnimalTrafficPaths", true)[0]; try { ATLoader = new AnimalTrafficLoader(new FileInfo(name)); } catch (Exception ex) { Console.WriteLine("Failed to read AnimalTrafficPaths {0}", ex.Message); } } if (!isBigEndian && sdsContent.HasResource("PREFAB")) { var name = sdsContent.GetResourceFiles("PREFAB", true)[0]; PrefabLoader loader = new PrefabLoader(new FileInfo(name)); Prefabs = loader; } //RoadMap if (!isBigEndian) { paths = sdsContent.GetResourceFiles("MemFile", true); foreach (var item in paths) { if (item.Contains("RoadMap") || item.Contains("roadmap")) { roadMap = new Roadmap(new FileInfo(item)); } } } //Translokator //if (!isBigEndian && sdsContent.HasResource("Translokator")) //{ // var name = sdsContent.GetResourceFiles("Translokator", true)[0]; // Translokator = new TranslokatorLoader(new FileInfo(name)); //} //Kynapse OBJ_DATA //if (!isBigEndian) //{ // //tis' broken for now // paths = sdsContent.GetResourceFiles("NAV_OBJ_DATA", true); // foreach (var item in paths) // { // obj.Add(new NAVData(new FileInfo(item))); // } // //for (int i = 0; i < obj.Count; i++) // //{ // // obj[i].WriteToFile(); // //} //} //if (!isBigEndian && sdsContent.HasResource("NAV_HPD_DATA")) //{ // var name = sdsContent.GetResourceFiles("NAV_HPD_DATA", true)[0]; // var data = new NAVData(new FileInfo(name)); // HPDData = (data.data as HPDData); // data.WriteToFile(); //} IndexBufferPool = new IndexBufferManager(ibps, dirInfo, isBigEndian); VertexBufferPool = new VertexBufferManager(vbps, dirInfo, isBigEndian); ItemDescs = ids.ToArray(); Actors = act.ToArray(); OBJData = obj.ToArray(); }
//Improve this, its bad. private void HandleFile(ListViewItem item) { if (ToolkitSettings.UseSDSToolFormat) { switch (item.SubItems[1].Text) { case "Directory": OpenDirectory((DirectoryInfo)item.Tag); return; case "SDS Archive": OpenSDS((FileInfo)item.Tag); break; default: Process.Start(((FileInfo)item.Tag).FullName); break; } return; } MaterialTool mTool; CollisionEditor cTool; ActorEditor aTool; PrefabLoader prefabs; SpeechEditor sTool; CutsceneLoader cutscene; IOFxFile iofx; EmitterFile emitterFile; TableEditor tTool; NAVData nav; ApexRenderMesh mesh; ApexClothingAssetLoader aca; CityAreaEditor caEditor; CityShopEditor csEditor; SoundSectorLoader soundSector; //DEBUG D3DForm d3dForm; //special case: if (item.SubItems[0].Text.Contains("SDSContent") && item.SubItems[1].Text == "XML") { new SDSContentEditor((FileInfo)item.Tag); return; } else if (item.SubItems[0].Text.Contains("cityareas") && item.SubItems[1].Text == "BIN") { caEditor = new CityAreaEditor((FileInfo)item.Tag); return; } else if (item.SubItems[0].Text.Contains("FrameProps") && item.SubItems[1].Text == "BIN") { FrameProps fProps = new FrameProps((FileInfo)item.Tag); return; } else if (item.SubItems[0].Text.Contains("cityshop") && item.SubItems[1].Text == "BIN") { csEditor = new CityShopEditor((FileInfo)item.Tag); return; } else if (item.SubItems[0].Text.Contains("roadmap") && item.SubItems[1].Text == "GSD") { Roadmap roadmap = new Roadmap((item.Tag as FileInfo)); return; } else if (item.SubItems[0].Text.Contains("shopmenu2") && item.SubItems[1].Text == "BIN") { ShopMenu2Editor editor = new ShopMenu2Editor((item.Tag as FileInfo)); return; } else if (item.SubItems[1].Text == "BIN" && HandleStreamMap((item.Tag as FileInfo))) { StreamEditor editor = new StreamEditor((item.Tag as FileInfo)); return; } else if (item.SubItems[1].Text == "BIN" && CGameData.CheckHeader((item.Tag as FileInfo))) { CGameData data = new CGameData((item.Tag as FileInfo)); return; } else if (item.SubItems[0].Text.Contains("sdsconfig") && item.SubItems[1].Text == "BIN") { using (BinaryReader reader = new BinaryReader(File.Open((item.Tag as FileInfo).FullName, FileMode.Open))) { SdsConfigFile sdsConfig = new SdsConfigFile(); sdsConfig.ReadFromFile(reader); } return; } switch (item.SubItems[1].Text) { case "ARM": mesh = new ApexRenderMesh((FileInfo)item.Tag); return; case "ATP": AnimalTrafficLoader loader = new AnimalTrafficLoader((FileInfo)item.Tag); return; case "ACA": aca = new ApexClothingAssetLoader((FileInfo)item.Tag); return; case "Directory": OpenDirectory((DirectoryInfo)item.Tag); return; case "Material Library": mTool = new MaterialTool((FileInfo)item.Tag); return; case "NAV": case "NOV": case "NHV": nav = new NAVData((FileInfo)item.Tag); return; case "Speech Data": sTool = new SpeechEditor((FileInfo)item.Tag); return; case "CUT": cutscene = new CutsceneLoader((FileInfo)item.Tag); return; case "SDS Archive": OpenSDS((FileInfo)item.Tag); break; case "PATCH Archive": OpenPATCH((FileInfo)item.Tag); break; case "FR": //fTool = new FrameResourceTool((FileInfo)item.Tag); d3dForm = new D3DForm((FileInfo)item.Tag); d3dForm.Dispose(); return; case "COL": cTool = new CollisionEditor((FileInfo)item.Tag); return; case "IOFX": iofx = new IOFxFile((FileInfo)item.Tag); return; case "AEA": emitterFile = new EmitterFile((FileInfo)item.Tag); return; case "Table": tTool = new TableEditor((FileInfo)item.Tag); return; case "TRA": TranslokatorEditor editor = new TranslokatorEditor((FileInfo)item.Tag); return; case "ACT": aTool = new ActorEditor((FileInfo)item.Tag); break; case "PRF": prefabs = new PrefabLoader((FileInfo)item.Tag); return; case "LUA": case "AP": case "SHP": HandleLuaFile((FileInfo)item.Tag); return; case "IFL": ResourceTypes.AnimatedTexture.AnimatedTextureLoader an = new ResourceTypes.AnimatedTexture.AnimatedTextureLoader((FileInfo)item.Tag); return; case "IDS": ResourceTypes.ItemDesc.ItemDescLoader itemDesc = new ResourceTypes.ItemDesc.ItemDescLoader((item.Tag as FileInfo).FullName); return; case "BIN": SoundSectorLoader sLoader = new SoundSectorLoader(item.Tag as FileInfo); return; default: Process.Start(((FileInfo)item.Tag).FullName); break; } }
public static void BuildData(bool forceBigEndian) { List <FileInfo> vbps = new List <FileInfo>(); List <FileInfo> ibps = new List <FileInfo>(); List <ItemDescLoader> ids = new List <ItemDescLoader>(); List <Actor> act = new List <Actor>(); List <NAVData> aiw = new List <NAVData>(); List <NAVData> obj = new List <NAVData>(); DirectoryInfo dirInfo = new DirectoryInfo(ScenePath); FileInfo[] files = dirInfo.GetFiles("*", SearchOption.AllDirectories); XmlDocument document = new XmlDocument(); document.Load(ScenePath + "/SDSContent.xml"); XPathNavigator nav = document.CreateNavigator(); var nodes = nav.Select("/SDSResource/ResourceEntry"); isBigEndian = forceBigEndian; Utils.Models.VertexTranslator.IsBigEndian = forceBigEndian; if (isBigEndian) { MessageBox.Show("Detected 'Big Endian' formats. This will severely effect functionality!", "Toolkit", MessageBoxButtons.OK, MessageBoxIcon.Information); } while (nodes.MoveNext() == true) { string type; string name; nodes.Current.MoveToFirstChild(); type = nodes.Current.Value; nodes.Current.MoveToNext(); name = ScenePath + "/" + nodes.Current.Value; if (type == "IndexBufferPool") { ibps.Add(new FileInfo(name)); } else if (type == "VertexBufferPool") { vbps.Add(new FileInfo(name)); } else if (type == "Actors" && !isBigEndian) { try { act.Add(new Actor(name)); } catch (Exception ex) { Console.WriteLine("Failed to read actor {0}", name); } } else if (type == "FrameResource") { FrameResource = new FrameResource(name, isBigEndian); } else if (type == "ItemDesc" && !isBigEndian) { ids.Add(new ItemDescLoader(name)); } else if (type == "FrameNameTable") { FrameNameTable = new FrameNameTable(name, isBigEndian); } else if (type == "Collisions" && !isBigEndian) { Collisions = new Collision(name); } else if (type == "AnimalTrafficPaths" && !isBigEndian) { try { ATLoader = new AnimalTrafficLoader(new FileInfo(name)); } catch (Exception ex) { Console.WriteLine("Failed to read AnimalTrafficPaths {0}", ex.Message); } } else if (nodes.Current.Value == "roadmap.gsd" && !isBigEndian) { roadMap = new Roadmap(new FileInfo(name)); } //else if (type == "NAV_OBJ_DATA" && !isBigEndian) // obj.Add(new NAVData(new FileInfo(name))); else if (type == "Translokator" && !isBigEndian) { Translokator = new TranslokatorLoader(new FileInfo(name)); } } IndexBufferPool = new IndexBufferManager(ibps, isBigEndian); VertexBufferPool = new VertexBufferManager(vbps, isBigEndian); ItemDescs = ids.ToArray(); Actors = act.ToArray(); OBJData = obj.ToArray(); }