-
Notifications
You must be signed in to change notification settings - Fork 3
Multi Layered Apparel Graphics
By adding CompProperties_AdditionalApparelGraphics to your apparel, you can make it display additional textures when worn.
public class CompProperties_AdditionalApparelGraphics : CompProperties
{
// Displayed graphic. This graphic is drawn above the pawn at MoteOverhead altitude layer by default
public GraphicData graphicData;
// Altitude for graphic rendering
public AltitudeLayer altitude = AltitudeLayer.MoteOverhead;
// Mote attached to the equipment piece
public ThingDef attachedMoteDef;
// Effecter attached to the equipment piece
public EffecterDef attachedEffecterDef;
// Offset of the attached mote
public Vector3 attachedMoteOffset = new Vector3();
// Scale of the attached mote
public float attachedMoteScale = 1f;
// If graphics should only be rendered when the pawn is drafted
public bool onlyRenderWhenDrafted = false;
// Additional graphic layers with precise controls
public List<ApparelGraphicPackage> additionalGraphics;
// If any packages use primary/secondary color picker fields, these fields determine apparel's initial primary/secondary colors
public ColorPackageGenerator primaryGenerator = ColorPackageGenerator.Default;
public ColorPackageGenerator secondaryGenerator = ColorPackageGenerator.Default;
// Default colors in case generator(s) is set to none
public Color defaultPrimary = Color.white;
public Color defaultSecondary = Color.white;
}You can precisely control each layer via ApparelGraphicPackage objects. These layers can be used with normal, transparent or masked graphic classes and shaders. You can also dynamically change the texture's color(in case of graphics without masks) or mask colors by using firstMask and secondMask. These can be set to any value of ApparelPackageColor in order to dynamically change graphics' colors based on the apparel and it's wearer.
// Graphic data for this package.
public GraphicData graphicData;
// List of offsets. Specific for every direction if 4 are specified, else applies to all directions
// Y dimension determines layer offset, use negative values to render the texture below the pawn
public List<Vector3> offsets;
// Coloring for the first and second masks respectively
// In case chosen shader does not support masks, first mask acts as color
public ApparelPackageColor firstMask = ApparelPackageColor.None;
public ApparelPackageColor secondMask = ApparelPackageColor.None;
// Gradient points. Requires firstMask to be set to either SeverityGradient or HealthGradient
public List<GradientPoint> gradient;
// Determines the amount of graphics generated for the gradient. Higher numbers increase RAM usage but provide a smoother transition.
public int gradientVariants = 10;
// If this graphic should be rendered only when the pawn is drafted. Overrides the props field
public bool onlyRenderWhenDrafted = false;
// If this graphic adds owner's bodytype (if such exists) to its path, similarly to apparel
public bool useBodytype = false;
}
public enum ApparelPackageColor
{
None,
ApparelColor, //Apparel's material color
FactionColor,
IdeoColor,
FavoriteColor,
PrimaryColor,
ParentColor,
SecondaryColor,
HealthGradient,
ParentGradient,
}If at least one package uses PrimaryColor or SecondaryColor, the apparel will also have a gizmo that allows the player to choose the desired colors. Use SecondaryColor only when PrimaryColor is already in use.
ParentColor and ParentGradient only work when the package is used on certain comps (currently only used on advanced equipment shields)
If any packages use primary or secondary colors, primaryGenerator and secondaryGenerator can be set to any number of flags from ColorPackageGenerator (example: <primaryGenerator>Favorite, Faction, Default</primaryGenerator>) to control which colors are picked when apparel initially spawns.
public enum ColorPackageGenerator
{
// If multiple flags are selected at the same time, pawn generation flags take priority over others
Default = 1, // Default to pre-selected color
Faction = 2, // If generated on a pawn, use their faction color. Also uses faction color if apparel itself is assigned a faction
Ideology = 4, // If generated on a pawn, use their ideology color
Favorite = 8, // If generated on a pawn, default to their favorite color
Random = 16, // Default to a random color
White = 32, // Defaults to white
}- Stats
- Gene Templates
- Pawn Group Utility
- Under Group Combat Pressure Think Node
- Min Prey Body Size
- Modular Things
- Gene Locked Recipes and Buildings
- Additional Gene Drops
- Angle Based Shotguns
- Following ("Running") Beams
- Pawn Turret Extensions
- Damage Modification
- Advanced Tools
- Shockwave Attacks
- Miniguns
- Elite Shot
- AOE Hediff Explosion Projectiles
- Frag Grenades
- Cooldown Graphics
- Scatter Things Ability
- Abilities on Equipment
- Burst Projectile Abilities
- Reloadable Abilities
- Shockwave Ability
- Projectile Comps
- Projectile Impact Effects
- Projectile Trails
- Bouncy Projectiles
- Spawner Projectiles
- Roof Collapse Projectiles
- Scattershot Projectiles
- Custom Body Graphic For Apparel
- Multi Layered Apparel Graphics
- Advanced Equipment Shields
- Equipment with Prerequisites
- Advanced Armor
- Gene-based Apparel Textures
- Gene Locked Equipment
- Additional Apparel Graphics Comps
- Hediff Giver Extension
- Bomb Hediff Comp
- Remove On Severity Comp
- Renderable Hediffs
- Shield Hediffs
- Armored Hediffs
- Disableable Hediffs
- Modular Hediffs
- Hediffs with Prerequisites
- Singular Hediff Abilities
- Hediff On Damage
- Additional Hediff Graphics Comps
- Caching
- IArmored
- IDamageResponse
- IRenderable
- IStageOverride
- IStatModifier
- IProjectile
- IPreventEquip
- IHediffGraphicGiver and IEquippableGraphicGiver
- IDamageModifier
- IColorSelector
- IBodyModifier