Example #1
0
        public static void Convert(byte[] data, string fileOut, string game)
        {
            dynamic        tgxBin       = loadTGXBin(data);
            List <dynamic> renderMeshes = Parsers.parseTGXAsset(tgxBin);
            List <dynamic> renderRaws   = new List <dynamic>();

            renderRaws.Add(tgxBin);
            dynamic renderModel = new ExpandoObject();

            renderModel.meshes   = renderMeshes;
            renderModel.textures = null;
            renderModel.raws     = renderRaws;
            renderModel.name     = "Model";
            renderModel.type     = "";
            renderModel.bucket   = 0;
            List <dynamic> renderModels = new List <dynamic>();

            renderModels.Add(renderModel);

            WriteCollada.WriteFile(renderModels, fileOut, game);
        }
Example #2
0
        static int Main(string[] args)
        {
            bool runMain = true;

            if (args.Length > 0)
            {
                runMain = false;
                if (args[0].ToLower() == "--help" || args[0].ToLower() == "-h")
                {
                    Console.WriteLine("Usage: DestinyColladaGenerator.exe [<GAME>] [-o|--output <OUTPUTPATH>] [<HASHES>]");
                }
                else if (args[0].ToLower() == "--version" || args[0].ToLower() == "-v")
                {
                    //Assembly[] assemblies = Thread.GetDomain().GetAssemblies();
                    //for (int i = 0; i < assemblies.Length; i++)
                    //{
                    //    if (string.Compare(assemblies[i].GetName().Name, "DestinyColladaGenerator") == 0)
                    //    {
                    //        assemblies[i].GetName().Version;
                    //    }
                    //}
                    Console.WriteLine(Assembly.GetExecutingAssembly().GetName().Version);
                    return(0);
                }
                if (args[0].ToLower() == "--shader" || args[0].ToLower() == "-s")
                {
                    string name = Regex.Replace(args[3], @"[^A-Za-z0-9\.]", "-");
                    GamePresets.generatePresets("2", args[1], name);
                    WriteCollada.WriteFile(new List <dynamic>(), args[2], "2");

                    DateTime lastHigh = new DateTime(1900, 1, 1);
                    string   highDir  = "";
                    foreach (string subdir in Directory.GetDirectories(args[2]))
                    {
                        DirectoryInfo fi1     = new DirectoryInfo(subdir);
                        DateTime      created = fi1.LastWriteTime;

                        if (created > lastHigh)
                        {
                            highDir  = subdir;
                            lastHigh = created;
                        }
                    }

                    Directory.CreateDirectory(Path.Combine(highDir, "Textures", name));
                    foreach (string file in Directory.GetFiles(Directory.GetParent(args[1]).FullName))
                    {
                        File.Copy(file, Path.Combine(highDir, "Textures", name, Path.GetFileName(file)));
                    }
                    Console.WriteLine("Shader scripts created.");
                }
                else
                {
                    int    firstHash = 1;
                    string output    = "";
                    if (Array.IndexOf(args, "-o") != -1)
                    {
                        output     = args[Array.IndexOf(args, "-o") + 1];
                        firstHash += 2;
                    }
                    else if (Array.IndexOf(args, "--output") != -1)
                    {
                        output     = args[Array.IndexOf(args, "--output") + 1];
                        firstHash += 2;
                    }

                    if (Array.IndexOf(args, "-m") != -1)
                    {
                        multipleFolderOutput = args[Array.IndexOf(args, "-m") + 1] == "true";
                        firstHash           += 2;
                    }
                    else if (Array.IndexOf(args, "--multiplefolders") != -1)
                    {
                        multipleFolderOutput = args[Array.IndexOf(args, "-m") + 1] == "true";
                        firstHash           += 2;
                    }

                    string   game   = args[0] != "2"?"":"2";
                    string[] hashes = new string[args.Length - firstHash];
                    Array.ConstrainedCopy(args, firstHash, hashes, 0, args.Length - firstHash);
                    apiSupport.convertByHash(game, hashes, output);
                }
            }

            while (runMain)
            {
                Console.Write("Select an action:\n" +
                              "[1] Convert local files\n" +
                              "[2] Convert item from API\n" +
                              "[3] Convert item from D1 API\n" +
                              "[4] Quit\n" +
                              "[5] Enable multiple output folders\n" +
                              "[6] Convert Shader.json\n" +
                              " > ");

                switch (Console.ReadLine().ToLower())
                {
                case ("1"):
                    ReadLocal.Read();
                    break;

                case ("2"):
                    apiSupport.convertByHash("2");
                    break;

                case ("3"):
                    apiSupport.convertByHash("");
                    break;

                case ("4"):
                    runMain = false;
                    break;

                case ("5"):
                    multipleFolderOutput = !multipleFolderOutput;
                    Console.WriteLine($"Multiple folder output is now {multipleFolderOutput}");
                    break;

                case ("6"):
                    Console.Write("Shader.json location > ");
                    string shaderLoc = Console.ReadLine();
                    Console.Write("Output location > ");
                    string outLoc = Console.ReadLine();
                    Console.Write("Shader name > ");
                    string name = Regex.Replace(Console.ReadLine(), @"[^A-Za-z0-9\.]", "-");
                    GamePresets.generatePresets("2", shaderLoc, name);
                    WriteCollada.WriteFile(new List <dynamic>(), outLoc, "2");

                    DateTime lastHigh = new DateTime(1900, 1, 1);
                    string   highDir  = "";
                    foreach (string subdir in Directory.GetDirectories(outLoc))
                    {
                        DirectoryInfo fi1     = new DirectoryInfo(subdir);
                        DateTime      created = fi1.LastWriteTime;

                        if (created > lastHigh)
                        {
                            highDir  = subdir;
                            lastHigh = created;
                        }
                    }

                    Directory.CreateDirectory(Path.Combine(highDir, "Textures", name));
                    foreach (string file in Directory.GetFiles(Directory.GetParent(shaderLoc).FullName))
                    {
                        File.Copy(file, Path.Combine(highDir, "Textures", name, Path.GetFileName(file)));
                    }
                    Console.WriteLine("Shader scripts created.");
                    break;

                case ("tor"):
                    useTor = !useTor;
                    Console.WriteLine("TOR proxying enabled.");
                    break;

                case ("debug"):
                    apiSupport.customCall();
                    break;

                case ("cm1"):
                    apiSupport.convertContentManifest("");
                    break;

                case ("cm2"):
                    multipleFolderOutput = true;
                    apiSupport.convertContentManifest("2");
                    multipleFolderOutput = false;
                    break;

                case ("lod"):
                    disableLodCulling = !disableLodCulling;
                    Console.WriteLine($"LOD culling is now {disableLodCulling}.");
                    break;

                case ("origins"):
                    trueOrigins = !trueOrigins;
                    Console.WriteLine($"True origins is now set to {trueOrigins}.");
                    break;

                case ("beep"):
                    Boop(Tone.Eflat4, Dura.EIGHTH3);
                    Boop(Tone.F4, Dura.EIGHTH);
                    Boop(Tone.Gflat4, Dura.EIGHTH);
                    Boop(Tone.Aflat3, Dura.EIGHTH);
                    Boop(Tone.Bflat4, Dura.HALF);

                    Sloop(Dura.SIXTEENTH5);

                    Boop(Tone.Aflat4, Dura.SIXTEENTH);
                    Boop(Tone.Gflat4, Dura.SIXTEENTH);
                    Boop(Tone.F4, Dura.EIGHTH);
                    Boop(Tone.Gflat4, Dura.EIGHTH);
                    Boop(Tone.Eflat4, Dura.HALF);
                    Boop(Tone.Gflat4, Dura.QUARTER);
                    Boop(Tone.Aflat4, Dura.WHOLE);

                    Sloop(Dura.HALF);

                    Boop(Tone.Eflat4, Dura.EIGHTH3);
                    Boop(Tone.F4, Dura.EIGHTH);
                    Boop(Tone.Gflat4, Dura.EIGHTH);
                    Boop(Tone.Aflat3, Dura.EIGHTH);
                    Boop(Tone.C5, Dura.HALF);

                    Sloop(Dura.SIXTEENTH5);

                    Boop(Tone.Gflat4, Dura.SIXTEENTH);
                    Boop(Tone.Aflat4, Dura.SIXTEENTH);
                    Boop(Tone.Bflat4, Dura.EIGHTH);
                    Boop(Tone.Gflat4, Dura.EIGHTH);
                    Boop(Tone.Dflat5, Dura.HALF);
                    Boop(Tone.Bflat4, Dura.QUARTER);
                    Boop(Tone.F5, Dura.HALF);
                    Boop(Tone.Aflat5, Dura.HALF);

                    Sloop(Dura.HALF);

                    Boop(Tone.C5, Dura.HALF);
                    Boop(Tone.Aflat4, Dura.QUARTER);
                    Boop(Tone.C5, Dura.QUARTER);
                    Boop(Tone.Dflat5, Dura.HALF);

                    Sloop(Dura.HALF);

                    Boop(Tone.Gflat4, Dura.EIGHTH);
                    Boop(Tone.Aflat4, Dura.EIGHTH);
                    Boop(Tone.Bflat4, Dura.HALF);
                    Boop(Tone.Dflat5, Dura.HALF);
                    Boop(Tone.Eflat5, Dura.QUARTER3);
                    Boop(Tone.Eflat5, Dura.QUARTER);
                    Boop(Tone.Eflat5, Dura.QUARTER3);
                    Boop(Tone.Dflat5, Dura.EIGHTH);
                    Boop(Tone.C5, Dura.EIGHTH);
                    Boop(Tone.Dflat5, Dura.QUARTER3);
                    Boop(Tone.Dflat5, Dura.EIGHTH);
                    Boop(Tone.C5, Dura.EIGHTH);
                    Boop(Tone.Bflat4, Dura.HALF);
                    Boop(Tone.Bflat4, Dura.QUARTER);
                    Boop(Tone.Aflat4, Dura.QUARTER);
                    Boop(Tone.Gflat4, Dura.WHOLE);
                    break;

                default:
                    Console.WriteLine("Invalid input.");
                    break;
                }
            }
            return(0);
        }