Example #1
0
 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;
 }
Example #2
0
        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();
        }
Example #3
0
        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();
        }
Example #4
0
        //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;
            }
        }
Example #5
0
        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();
        }