コード例 #1
0
        private static int RunComposite(CompositeOptions options)
        {
            Directory.CreateDirectory(options.TargetDir);
            ContentDefinition cd;

            using (var ifs = new FileStream(options.ContentDefinition, FileMode.Open, FileAccess.Read)) {
                cd = AuthoringUtil.JsonDeserialize <ContentDefinition>(ifs);
            }

            var rm = new DataManager();

            rm.RegisterDataProvider(
                new FileDataProvider(options.ContentDir ?? Path.GetDirectoryName(options.ContentDefinition)));
            var opts = new LiveLoadOptions(loadTextures: true);
            var lc   = ContentUtil.LoadLiveContent(cd, rm, opts);

            foreach (var(name, image) in lc.RenderedCoTextures)
            {
                using (var ofs = new FileStream(Path.Combine(options.TargetDir, name + ".png"), FileMode.Create,
                                                FileAccess.Write))
                    image.SaveAsPng(ofs);
            }

            return(0);
        }
コード例 #2
0
        private static int RunMakeMesh(MakeMeshOptions options)
        {
            LiveMesh mesh;

            using (var ifs = new FileStream(options.SourceFile, FileMode.Open, FileAccess.Read)) {
                Dictionary <string, BoneType>        boneRegexs        = null;
                Dictionary <string, AttachPointType> attachPointRegexs = null;
                if (options.MatchFile != null)
                {
                    MatchRules mf;
                    using (var mfFs = new FileStream(options.MatchFile, FileMode.Open, FileAccess.Read))
                        mf = AuthoringUtil.JsonDeserialize <MatchRules>(mfFs);
                    boneRegexs        = mf.Bones;
                    attachPointRegexs = mf.AttachPoints;
                }

                Console.WriteLine("Parsing...");
                mesh = options.DebugLog
                    ? AuthoringUtil.GenerateLiveMesh(ifs, boneRegexs, attachPointRegexs, Console.WriteLine)
                    : AuthoringUtil.GenerateLiveMesh(ifs, boneRegexs, attachPointRegexs);
            }

            mesh.UniqueName      = options.UniqueName;
            mesh.VariantTypeName = options.VariantTypeName;
            mesh.FitUniqueName   = options.FitUniqueName;

            Stream ofs = new FileStream(options.TargetFile, FileMode.Create, FileAccess.Write);

            try {
                if (options.Compress)
                {
                    ofs = new DeflateStream(ofs, CompressionLevel.Optimal, false);
                }
                Console.WriteLine("Serializing...");
                Serializer.Serialize(ofs, mesh);
            }
            finally {
                ofs.Dispose();
            }

            return(0);
        }
コード例 #3
0
        private static int RunUnpack(UnpackOptions options)
        {
            Directory.CreateDirectory(options.TargetDir);
            using (var ifs = new FileStream(options.SourceFile, FileMode.Open, FileAccess.Read)) {
                var box = CzBox.Load(ifs);
                var def = box.GetContentDefinition();
                if (def != null)
                {
                    using (var cnBoxFs = new FileStream(Path.Combine(options.TargetDir, "contentDefinition.json"),
                                                        FileMode.Create, FileAccess.Write))
                        AuthoringUtil.JsonSerialize(def, cnBoxFs);
                }
                foreach (var(name, srcResFs) in box.GetDataEnumerator())
                {
                    using (var resFs = new FileStream(Path.Combine(options.TargetDir, name), FileMode.Create,
                                                      FileAccess.Write))
                        srcResFs.CopyTo(resFs);
                }
            }

            return(0);
        }
コード例 #4
0
        private static int RunMakeTl(MakeTlOptions options)
        {
            Dictionary <string, string> dict;

            using (var ifs = new FileStream(options.SourceFile, FileMode.Open, FileAccess.Read))
                dict = AuthoringUtil.JsonDeserialize <Dictionary <string, string> >(ifs);
            Stream ofs = new FileStream(options.TargetFile, FileMode.Create, FileAccess.Write);

            try {
                if (options.Compress)
                {
                    ofs = new DeflateStream(ofs, CompressionLevel.Optimal, false);
                }
                Console.WriteLine("Serializing...");
                Serializer.Serialize(ofs, dict);
            }
            finally {
                ofs.Dispose();
            }

            return(0);
        }
コード例 #5
0
        private static int RunPack(PackOptions options)
        {
            ContentDefinition def = null;

            if (options.ContentDefinition != null)
            {
                using (var defFs = new FileStream(options.ContentDefinition, FileMode.Open, FileAccess.Read))
                    def = AuthoringUtil.JsonDeserialize <ContentDefinition>(defFs);
            }

            var bList = new List <FileInfo>();

            if (options.Resources != null)
            {
                foreach (var res in options.Resources)
                {
                    bList.Add(new FileInfo(res));
                }
            }
            var metaList = new List <MutableKeyValuePair <string, int> >();

            foreach (var ent in bList)
            {
                metaList.Add(new MutableKeyValuePair <string, int>(ent.Name, (int)ent.Length));
            }
            using (var ofs = new FileStream(options.TargetFile, FileMode.Create, FileAccess.Write)) {
                CzBox.WriteHead(ofs, def, metaList);
                foreach (var ent in bList)
                {
                    using (var eStream = ent.OpenRead())
                        eStream.CopyTo(ofs);
                }
            }

            return(0);
        }
コード例 #6
0
        private static int RunTemplate(TemplateOptions options)
        {
            switch (options.Type.ToLowerInvariant())
            {
            case "definition":
                var def = new ContentDefinition();
                def.MeshConfigs.Add("yourConfigName", new MeshConfig {
                    Mesh      = "yourMeshName",
                    Materials = new List <Material> {
                        new Material {
                            Textures = new Dictionary <string, string>
                            {
                                { "yourShaderParameterName", "yourTextureName" }
                            }
                        }
                    },
                    CustomAttachPoints = new List <AttachPoint> {
                        new AttachPoint {
                            BoneName = "yourBoneName"
                        }
                    }
                });
                def.MeshPaths.Add("yourMeshName", "yourPath");
                def.ResourcePaths.Add("yourResourceName", "yourPath");
                def.TexturePaths.Add("yourTextureName", "yourPath");
                def.TranslationPaths.Add("yourTranslationName", "yourPath");
                def.CoTextures.Add("yourCoTextureName", new CoTextureDefinition {
                    Height   = 1024,
                    Width    = 1024,
                    Textures = new List <SubTextureDefinition>
                    {
                        new SubTextureDefinition {
                            Mask = "yourTextureName", Texture = "yourTextureName"
                        }
                    }
                });
                using (var ofs = new FileStream(options.TargetFile, FileMode.Create, FileAccess.Write))
                    AuthoringUtil.JsonSerialize(def, ofs);
                break;

            case "matchfile":
                var matchFile = new MatchRules();
                foreach (var t in (BoneType[])Enum.GetValues(typeof(BoneType)))
                {
                    matchFile.Bones.Add($"boneRegex{t.ToString()}", t);
                }

                foreach (var t in (AttachPointType[])Enum.GetValues(typeof(AttachPointType)))
                {
                    matchFile.AttachPoints.Add($"boneRegex{t.ToString()}", t);
                }

                using (var ofs = new FileStream(options.TargetFile, FileMode.Create, FileAccess.Write))
                    AuthoringUtil.JsonSerialize(matchFile, ofs);
                break;

            default:
                Console.Error.WriteLine("Template type not recognized");
                return(0x10103040);
            }

            return(0);
        }