示例#1
0
        public override TileRegistryContent Process(TileRegistryContent input, ContentProcessorContext context)
        {
            if (!Directory.Exists("build"))
            {
                Directory.CreateDirectory("build");
            }

            input.TilePool = input.Project.TilePoolManager.Pools[TilesetId];
            input.Id       = TilesetId;

            string path  = "build\\" + ProjectKey + "_tileset_tex_" + TilesetId + ".png";
            Bitmap image = TextureResourceBitmapExt.CreateBitmap(input.TilePool.TileSource);

            image.Save(path, ImageFormat.Png);

            // the asset name is the entire path, minus extension, after the content directory
            string asset = string.Empty;

            if (path.StartsWith(Directory.GetCurrentDirectory()))
            {
                asset = path.Remove(path.LastIndexOf('.')).Substring(Directory.GetCurrentDirectory().Length + 1);
            }
            else
            {
                asset = Path.GetFileNameWithoutExtension(path);
            }

            // build the asset as an external reference
            OpaqueDataDictionary data = new OpaqueDataDictionary();

            data.Add("GenerateMipmaps", false);
            data.Add("ResizeToPowerOfTwo", false);
            data.Add("TextureFormat", TextureProcessorOutputFormat.Color);
            context.BuildAsset <TextureContent, TextureContent>(
                new ExternalReference <TextureContent>(path),
                "TextureProcessor",
                data,
                "TextureImporter",
                asset);

            input.TextureAsset = asset;

            return(input);
        }