AssGen 3.0.0
See the version list below for details.
dotnet add package AssGen --version 3.0.0
NuGet\Install-Package AssGen -Version 3.0.0
<PackageReference Include="AssGen" Version="3.0.0" />
<PackageVersion Include="AssGen" Version="3.0.0" />
<PackageReference Include="AssGen" />
paket add AssGen --version 3.0.0
#r "nuget: AssGen, 3.0.0"
#:package AssGen@3.0.0
#addin nuget:?package=AssGen&version=3.0.0
#tool nuget:?package=AssGen&version=3.0.0
Installation and usage
Add a package refference
To get started with AssGen, you will first need to add a package refference to the .csproj file for your mod. This file will be located in the root folder of your mod and very likely have the same name as it. For example, if your mod is "MyEpicMod", you're looking for "MyEpicMod.cs".
Once open, you'll want to add the following line to the <ItemGroup> containing refferences
<PackageReference Include="AssGen" OutputItemType="Analyzer" ReferenceOutputAssembly="false" />
This will tell compilers and IDEs to refference the AssGen NuGet package for your mod! You'll have to add this manually to mark it as an Analyzer, which is important because AssGen is a Source Generator.
Create a configuration file
The next step is to create a file named AssGenConfig.txt in your mod folder. This file tells AssGen where your assets actually are!
Next we need to populate the file, currently it takes a single option AssetRoot. In most cases, this will just be the name of your mod folder, but if you have a seperate assets folder within your mod, you can use that instead. As an example, the config file for Starlight River looks like this:
AssetRoot:StarlightRiver\Assets
Your mod's may look more like
AssetRoot:MyModName
Use the autogenerated assets
Now that you've installed and configured AssGen, you should be able to start using it after a rebuild of your project. Whenever you add a new .png file to your asset path, AssGen will automatically update.
In order to access an asset, lets say for example MyMod/Stuff/CoolImage.png, you can get a ReLogic.Content.Asset<Texture2D> via the code:
Assets.Stuff.CoolImage
Since AssGen generates a Global Using, you dont need to do anything to import the generated namespace in your mod. This makes AssGen virtually plug-and-play after setup.
A more contextual example follows below:
using System;
using Terraria;
using Terraria.ModLoader;
using Microsoft.Xna.Framework;
// No need to import AssGen!
namespace MyMod.Stuff
{
// Lets create a simple ModItem to act as an example
public class MyThing : ModItem
{
// Common hooks like SetDefaults have been omitted here for the sake of relevance and brevity
// We'll override a drawing method for the purpose of demonstration
public override bool PreDrawInWorld(SpriteBatch spriteBatch, Color lightColor, Color alphaColor, ref float rotation, ref float scale, int whoAmI)
{
// Lets get our texture located at MyMod/Stuff/CoolImage.png
var tex = Assets.Stuff.CoolImage.Value; // Use AssGen to get our asset, then load it via .Value;
spriteBatch.Draw(tex, Item.Center - Main.screenPosition, Color.White); // Now we draw our image in the world
}
}
}
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on AssGen:
| Repository | Stars |
|---|---|
|
ProjectStarlight/StarlightRiver
Starlight River mod
|
Now utilizes Lazy/<T /> to lazy load your asset handles! Should result in faster startups and less frontloaded memory consumption.