{"id":21105283,"url":"https://github.com/aristurtledev/autopipeline","last_synced_at":"2025-10-27T10:12:28.428Z","repository":{"id":242776943,"uuid":"810534898","full_name":"AristurtleDev/AutoPipeline","owner":"AristurtleDev","description":"Automating the MonoGame Content Pipeline so you don't have to.","archived":false,"fork":false,"pushed_at":"2024-06-07T14:47:41.000Z","size":385,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2024-10-30T00:10:52.235Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AristurtleDev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-04T22:11:12.000Z","updated_at":"2024-07-17T23:58:55.000Z","dependencies_parsed_at":"2024-06-04T23:57:43.815Z","dependency_job_id":"6450ad7d-b769-4324-903e-8321f4f1056a","html_url":"https://github.com/AristurtleDev/AutoPipeline","commit_stats":null,"previous_names":["aristurtledev/autopipeline"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AristurtleDev%2FAutoPipeline","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AristurtleDev%2FAutoPipeline/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AristurtleDev%2FAutoPipeline/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AristurtleDev%2FAutoPipeline/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AristurtleDev","download_url":"https://codeload.github.com/AristurtleDev/AutoPipeline/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225444525,"owners_count":17475355,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-20T00:05:01.551Z","updated_at":"2025-10-27T10:12:23.379Z","avatar_url":"https://github.com/AristurtleDev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003e\n\n\u003cimg src=\"https://github.com/AristurtleDev/AutoPipeline/blob/develop/images/banner.png?raw=true\" alt=\"AutoPipeline\" width=\"256\"/\u003e\n\u003cbr/\u003e\nAutomating the MonoGame Content Pipeline So You Don't Have To!\n\u003c/h1\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![License: MIT](https://img.shields.io/badge/📃%20license-MIT-blue?style=flat)](LICENSE)\n\n\n\u003c/div\u003e\n\n**AutoPipeline** is a project that automates the generation of your **Content.mgcb** file simply based on the files you have in your Content directory.  No need to open the MGCB Editor to add and remove content, just add and remove it directly from the `/Content` directory.\n\n\u003e [!WARNING]\n\u003e This project is in a really early stage at the moment and may change rapidly as I continue to finish it. Please refer to documentation below for using the version currently in the `develop` branch.\n\n## Installation\nYou can install this in your MonoGame project either manually from source or via the NuGet package.\n\n### NuGet Package Installation\nAdd the NuGet package to your MonoGame project\n\n```\ndotnet add package AutoPipeline --version 0.0.2\n```\n\n### Manual Installation\n1. Download the [AutoPipeline.targets](/source/AutoPipeline/AutoPipeline.targets) file\n2. Add it to the same directory as your MonoGame .csproj\n3. Add the following import statement to your MonoGame .csproj:\n\n```xml\n\u003cImport Project=\"AutoPipeline.targets\" /\u003e\n```\n\n## Usage\nThis project is an MSBuild `.targets` file that contains a task that is configured to run before the `MonoGame.Content.Builder.Task` tasks run.  The task will generate the `Content.mgcb` file automatically for you based on the contents of the files in your `Content/` directory **each time you do a project build**.\n\nFor each type of asset, it will automatically configure it to be processed using the default processor settings.  You can find the properties of each one and the default values below:\n\n### DirectX Model Files\nThese are model files with the extension `.x`.  \n\nThe Build Action type for these files is `MonoGameDirectXAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `XImporter` | - |\n| Processor | string | `ModelProcessor` | - |\n| ColorKeyColor | string | `255,255,255,255` | - |\n| ColorKeyEnabled | bool | `True` | - |\n| GenerateMipMaps | bool | `True` | - |\n| GenerateTangentFrames | bool | `False` | - |\n| PremultiplyTextureAlpha | bool | `True` | - |\n| PremultiplyVertexColors | bool | `True` | - |\n| ResizeTexturesToPowerOfTwo | bool | `False` | - |\n| RotationX | number | `0` | - |\n| RotationY | number | `0` | - |\n| RotationZ | number | `0` | - |\n| Scale | number | `1` | - |\n| SwapWindingOrder | bool | `False` | - |\n| TextureFormat | enum | `Color` | `AtcCompressed`, `Color`, `Color16Bit`, `Compressed`, `DxtCompressed`, `Etc1Compressed`, `NoChange` or `PvrCompressed` |\n\n### Effect Files\nThese are shader effect files with the extension `.fx`\n\nThe Build Action type for these files is `MonoGameEffectAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `EffectImporter` | - |\n| Processor | string | `EffectProcessor` | - |\n| DebugMode | string | `Auto` | `Auto`, `Debug` or `Optimize` |\n| Defines | string |  | - |\n\n### FBX Model Files\nThese are model files that end with the `.fbx` extension\n\nThe Build Action type for these files is `MonoGameFbxAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `FbxImporter` | - |\n| Processor | string | `ModelProcessor` | - |\n| ColorKeyColor | string | `255,255,255,255` | - |\n| ColorKeyEnabled | bool | `True` | - |\n| GenerateMipMaps | bool | `True` | - |\n| GenerateTangentFrames | bool | `False` | - |\n| PremultiplyTextureAlpha | bool | `True` | - |\n| PremultiplyVertexColors | bool | `True` | - |\n| ResizeTexturesToPowerOfTwo | bool | `False` | - |\n| RotationX | number | `0` | - |\n| RotationY | number | `0` | - |\n| RotationZ | number | `0` | - |\n| Scale | number | `1` | - |\n| SwapWindingOrder | bool | `False` | - |\n| TextureFormat | enum | `Color` | `AtcCompressed`, `Color`, `Color16Bit`, `Compressed`, `DxtCompressed`, `Etc1Compressed`, `NoChange` or `PvrCompressed` |\n\n### H.246 Video Files\nThese are video files that end with the `.mp4` extension.\n\nThe Build Action type for these files is `MonoGameH264Asset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `H264Importer` | - |\n| Processor | string | `VideoProcessor` | - |\n\n### Mp3 Audio Files\nThese are audio files that end with the `.mp3` extension.\n\nThe Build Action type for these files is `MonoGameMp3Asset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `Mp3Importer` | - |\n| Processor | string | `SoundEffectProcessor` | - |\n| Quality | enun | `Best` | `Best`, `Low`, or `Medium` |\n\n### Ogg Audio Files\nThese are audio files that end with the `.ogg` extension.\n\nThe Build Action type for these files is `MonoGameOggAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `OggImporter` | - |\n| Processor | string | `SoundEffectProcessor` | - |\n| Quality | enun | `Best` | `Best`, `Low`, or `Medium` |\n\n### Open Asset Library Model Files\nThese are model files that can be loaded with the Open Asset Import Library.  This includes files with following extensions: \n\n`.3d`, `.3ds`, `.ac`, `.ase`, `.b3d`, `.blend`,`.bvh`, `.cob`,`.csm`, `.dae`,`.dxf`, `.glb`, `.gltf`,`.hmp`, `.ifc`, `.irr`, `.irrmesh`, `.lwo`, `.lws`, `.lxo`, `.mdc`, `.mdl`, `.md2`, `.md3`, `.md5`, `.ms3d`, `.ndo`, `.nff`, `.obj`, `.off`, `.ogex`, `.pk3`, `.ply`, `.q3d`,`.q3s`, `.scn`, `.smd`,`.stl`, `.ter`, `.vta`, `.xgl`, `.zgl`\n\nThe Build Action type for these files is `MonoGameOpenAssetLibraryAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `OpenAssetImporter` | - |\n| Processor | string | `ModelProcessor` | - |\n| ColorKeyColor | string | `255,255,255,255` | - |\n| ColorKeyEnabled | bool | `True` | - |\n| GenerateMipMaps | bool | `True` | - |\n| GenerateTangentFrames | bool | `False` | - |\n| PremultiplyTextureAlpha | bool | `True` | - |\n| PremultiplyVertexColors | bool | `True` | - |\n| ResizeTexturesToPowerOfTwo | bool | `False` | - |\n| RotationX | number | `0` | - |\n| RotationY | number | `0` | - |\n| RotationZ | number | `0` | - |\n| Scale | number | `1` | - |\n| SwapWindingOrder | bool | `False` | - |\n| TextureFormat | enum | `Color` | `AtcCompressed`, `Color`, `Color16Bit`, `Compressed`, `DxtCompressed`, `Etc1Compressed`, `NoChange` or `PvrCompressed` |\n\n### Image Files\nThese are images file that are loaded as textures. This includes files with the following extensions:\n\n`.3fr`, `.ari`, `.arw`, `.bay`, `.bmp`, `.bw`, `.cap`, `.cr2`, `.crw`, `.cut`, `.dcr`, `.dcs`, `.dds`, `.dng`, `.drf`, `.eip`, `.erf`, `.fff`, `.g3`, `.gg`, `.gif`, `.hdp`, `.hdr`, `.ico`, `.iff`, `.iiq`, `.int`, `.inta`, `.j2k`, `.jbg`, `.jbig`, `.jfi`, `.jfif`, `.jif`, `.jng`, `.jp2`, `.jpe`, `.jpeg`, `.jpf`, `.jpg`, `.jpm`, `.jpx`, `.jxr`, `.k25`, `.kdc`, `.koa`, `.mdc`, `.mef`, `.mj2`, `.mng`, `.mos`, `.mrw`, `.nef`, `.nrw`, `.obm`, `.orf`, `.pbm`, `.pcd`, `.pct`, `.pcx`, `.pef`, `.pfm`, `.pgm`, `.pic`, `.pict`, `.png`, `.pnm`, `.ppm`, `.psd`, `.ptx`, `.pxn`, `.r3d`, `.raf`, `.ras`, `.raw`, `.rgba`, `.rwl`, `.rw2`, `.rwz`, `.sgi`, `.sr2`, `.srf`, `.srw`, `.sun`, `.tga`, `.tif`, `.tiff`, `.wbmp`, `.wdp`, `.webp`, `.xbm`, `.xpm`, `.x3f`\n\nThe Build Action type for these files is `MonoGameTextureAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `TextureImporter` | - |\n| Processor | string | `TextureProcessor` | - |\n| ColorKeyColor | string | 255,0,255,255 | - |\n| ColorKeyEnabled | bool | `false` | - |\n| GenerateMipMaps | bool | `false` | - |\n| MakeSquare | bool | `false` | - |\n| PremultiplyAlpha | bool | `false` | - |\n| ResizeToPowerOfTwo | bool | `false` | - |\n| TextureFormat | enum | `Color` | `AtcCompressed`, `Color`, `Color16Bit`, `Compressed`, `DxtCompressed`, `Etc1Compressed`, `NoChange` or `PvrCompressed` |\n\n### SpriteFont Files\nThese are sprite fonts that end with the `.spritefont` extension.\n\nThe Build Action type for these files is `MonoGameSpriteFontAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `FontDescriptionImporter` | - |\n| Processor | string | `FontDescriptionProcessor` | - |\n| PremultiplyAlpha | bool | `True` | - |\n| TextureFormat | enum | `Color` | `AtcCompressed`, `Color`, `Color16Bit`, `Compressed`, `DxtCompressed`, `Etc1Compressed`, `NoChange` or `PvrCompressed` |\n\n### Wav Audio Files\nThese are audio files that end with the `.wav` extension.\n\nThe Build Action type for these files is `MonoGameWavAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `WavImporter` | - |\n| Processor | string | `SoundEffectProcessor` | - |\n| Quality | enun | `Best` | `Best`, `Low`, or `Medium` |\n\n### Wma Audio Files\nThese are audio files that end with the `.wma` extension.\n\nThe Build Action type for these files is `MonoGameWmaAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `WmaImporter` | - |\n| Processor | string | `SoundEffectProcessor` | - |\n| Quality | enun | `Best` | `Best`, `Low`, or `Medium` |\n\n### Wmv Videos Files\nThese are video files that end with the `.wmv` extension.\n\nThe Build Action type for these files is `MonoGameWmvAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `WmvImporter` | - |\n| Processor | string | `VideoProcessor` | - |\n\n### Xml Files\nThese are for eXtensible Markup Language files that end with the `.xml` extension.\n\nThe Build Action type for these files is `MonoGameXmlAsset`\n\n| Property | Type | Default Value | Enum Values |\n| --- | --- | --- | --- |\n| Importer | string | `XmlImporter` | - |\n| Processor | string | `PassThroughProcessor` | - |\n\n## Customizing Parameters\nAll files in the content directory of a given Build Action type will use the defaults listed in the section above.  Though, there may be times when you need to adjust the processing parameters for a particular file.  \n\n\u003e ![Note]\n\u003e The overrides can be added directly inside your .csproj file, however I personally wouldn't recommend this as it can make your csproj file cluttered depending on the number of overrides you need to make.\n\nTo create overrides, first create a file called `ContentOverrides.targets` in the same directory as your csproj file.  Then add the following content to the file\n\n```xml\n\u003cProject xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"\u003e\n\t\n\u003c/Project\u003e\n```\n\nNext, open your csproj file and add the following import statement \n\n```xml\n\u003cImport Project=\"ContentOverrides.targets\" /\u003e\n```\n\nFinally, in the `ContentOverrides.targets` file, add the overrides for each specific content file. For example, if you wanted to override the processing parameters for a texture your `ContentOverrides.targets` would contain the following\n\n```xml\n\u003cProject xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"\u003e\n\t\u003cTarget Name=\"AutoPipelineOverrides\" AfterTargets=\"SetDefaultProperties\"\u003e\n\t\t\u003cItemGroup\u003e\n\t\t\t\u003cMonoGameTextureAsset Update=\"Content\\aristurtle.png\"\u003e\n\t\t\t\t\u003cColorKeyEnabled\u003etrue\u003c/ColorKeyEnabled\u003e\n\t\t\t\t\u003cGenerateMipMaps\u003etrue\u003c/GenerateMipMaps\u003e\n\t\t\t\u003c/MonoGameTextureAsset\u003e\n\t\t\u003c/ItemGroup\u003e\n\t\u003c/Target\u003e\n\u003c/Project\u003e\n\n```\n\n1. A `\u003cTarget\u003e` must be defined that executes `AfterTargets=\"SetDefaultProperties\"`.\n1. Overrides must be children inside the `\u003cItemGroup\u003e` node.\n2. Use the Build Action type, for instance `MonoGameTextureAsset` is used in the example.  See the sections under Usage above for the build action type of the various content files\n3. The `Update` attribute must be used, and should point to the path of the content file relative from the root of the project directory\n\nYou can see an example of this in the examples directory of this repository.\n\n\n## Known Limitations\nCurrently this only works for the default asset types that can be processed by the MonoGame Content Builder (mgcb).  This means this project **does not work if you use third-party content pipeline extensions**.  I do plan to support this, it is just not in there yet.\n\n\n## Special Thanks\nI would like to give a special thanks to [@MrGrak](https://github.com/mrgrak) for letting me use the name AutoPipeline even though he already has a lib for MonoGame called this.\n\n## License\nAutoPipeline is licensed under the MIT License. Please refer to the [LICENSE](LICENSE) file for full license text.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faristurtledev%2Fautopipeline","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faristurtledev%2Fautopipeline","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faristurtledev%2Fautopipeline/lists"}