tModLoader v2025.05
A mod to make and play Terraria mods
PlayerDrawLayer Class Referenceabstract

This class represents a DrawLayer for the player. Drawing should be done by adding Terraria.DataStructures.DrawData objects to drawInfo.DrawDataCache in the Draw method. More...

Inherits ModType< TEntity, TModType >.

Classes

class  AfterParent
 Places this layer immediately after (over) the provided parent layer. The visibility and draw order of the layer is also bound to the parent layer, if the parent layer is moved or hidden, this layer will also be moved or hidden. More...
 
class  BeforeParent
 Places this layer immediately before (under) the provided parent layer. The visibility and draw order of the layer is also bound to the parent layer, if the parent layer is moved or hidden, this layer will also be moved or hidden. More...
 
class  Between
 Places this layer between the two provided layers. This layer will draw over layer1 and under layer2. null can be used to indicate that the exact position of the layer doesn't matter aside from being before/after the other non-null argument. For example new Between(PlayerDrawLayers.HairBack, null) would place the layer anywhere after HairBack, while new Between(null, PlayerDrawLayers.HairBack) would be anywhere before HairBack. For ordering before or after all vanilla layers, the helper properties PlayerDrawLayers.BeforeFirstVanillaLayer and PlayerDrawLayers.AfterLastVanillaLayer can be used directly. The layer parameters used must have fixed positions, meaning that layers registered using either Multiple, BeforeParent, or AfterParent are not valid. For vanilla layers, this includes PlayerDrawLayers.FrontAccFront and PlayerDrawLayers.HeldItem. If ordering in relation to these layers, consider either using AfterParent or BeforeParent to draw at whatever positions that layer is actually drawn, or referencing a different layer for ordering instead. More...
 
class  Multiple
 Places this layer into multiple Positions. Use this as a helper for layers that need to move around in the draw order rather than making multiple PlayerDrawLayer 'slots' manually. An example of this can be seen in PlayerDrawLayers.tML.cs. Note how the conditions for FrontAccFront and HeldItem are mutually exclusive, ensuring that the layer will only be drawn once for a given player. More...
 
class  Position
 A PlayerDrawLayer's position in the player rendering draw order. When a player is drawn, each "layer" is drawn from back to front. More...
 
class  Transformation
 

Public Member Functions

void DrawWithTransformationAndChildren (ref PlayerDrawSet drawInfo)
 
abstract Position GetDefaultPosition ()
 Returns the layer's default position in regards to other layers. Make use of BeforeParent, AfterParent, Between, or Multiple to indicate the position. Use other layers as arguments, usually vanilla layers contained in the PlayerDrawLayers. PlayerDrawLayers.BeforeFirstVanillaLayer and PlayerDrawLayers.AfterLastVanillaLayer are also possible values.
 
virtual bool GetDefaultVisibility (PlayerDrawSet drawInfo)
 Returns the layer's default visibility. This is usually called as a layer is queued for drawing, but modders can call it too for information. More...
 
void Hide ()
 
sealed override void SetupContent ()
 If you make a new ModType, seal this override, and call SetStaticDefaults in it. More...
 
override string ToString ()
 
- Public Member Functions inherited from ModType< TEntity, TModType >
virtual TModType Clone (TEntity newEntity)
 Create a copy of this instanced global. Called when an entity is cloned. More...
 
virtual bool IsLoadingEnabled (Mod mod)
 Allows you to stop Mod.AddContent from actually adding this content. Useful for items that can be disabled by a config. More...
 
virtual void Load ()
 Allows you to perform one-time loading tasks. Beware that mod content has not finished loading here, things like ModContent lookup tables or ID Sets are not fully populated. More...
 
virtual TModType NewInstance (TEntity entity)
 Create a new instance of this ModType for a specific entity More...
 
string PrettyPrintName ()
 
virtual void SetStaticDefaults ()
 Allows you to modify the properties after initial loading has completed. More...
 
virtual void SetupContent ()
 If you make a new ModType, seal this override, and call SetStaticDefaults in it. More...
 
virtual void Unload ()
 Allows you to safely unload things you added in Load. More...
 
virtual bool IsLoadingEnabled (Mod mod)
 Whether or not this type should be loaded when it's told to. Returning false disables Mod.AddContent from actually loading this type. More...
 
abstract void Load (Mod mod)
 Called when loading the type. More...
 
abstract void Unload ()
 Called during unloading when needed. More...
 
- Public Member Functions inherited from ModType< TEntity >
virtual TModType Clone (TEntity newEntity)
 Create a copy of this instanced global. Called when an entity is cloned. More...
 
virtual bool IsLoadingEnabled (Mod mod)
 Allows you to stop Mod.AddContent from actually adding this content. Useful for items that can be disabled by a config. More...
 
virtual void Load ()
 Allows you to perform one-time loading tasks. Beware that mod content has not finished loading here, things like ModContent lookup tables or ID Sets are not fully populated. More...
 
virtual TModType NewInstance (TEntity entity)
 Create a new instance of this ModType for a specific entity More...
 
string PrettyPrintName ()
 
virtual void SetStaticDefaults ()
 Allows you to modify the properties after initial loading has completed. More...
 
virtual void SetupContent ()
 If you make a new ModType, seal this override, and call SetStaticDefaults in it. More...
 
virtual void Unload ()
 Allows you to safely unload things you added in Load. More...
 

Protected Member Functions

abstract void Draw (ref PlayerDrawSet drawInfo)
 Draws this layer. This will be called multiple times a frame if a player afterimage is being drawn. If this layer shouldn't draw with each afterimage, check More...
 
sealed override void Register ()
 If you make a new ModType, seal this override. More...
 
- Protected Member Functions inherited from ModType< TEntity, TModType >
abstract TEntity CreateTemplateEntity ()
 
virtual void InitTemplateInstance ()
 Create dummy objects for instanced mod-types More...
 
override void InitTemplateInstance ()
 Create dummy objects for instanced mod-types More...
 
abstract void Register ()
 If you make a new ModType, seal this override. More...
 
virtual void ValidateType ()
 Check for the correct overrides of different hook methods and fields and properties More...
 
- Protected Member Functions inherited from ModType< TEntity >
abstract TEntity CreateTemplateEntity ()
 
virtual void InitTemplateInstance ()
 Create dummy objects for instanced mod-types More...
 
override void InitTemplateInstance ()
 Create dummy objects for instanced mod-types
 
abstract void Register ()
 If you make a new ModType, seal this override. More...
 
virtual void ValidateType ()
 Check for the correct overrides of different hook methods and fields and properties More...
 

Properties

IReadOnlyList< PlayerDrawLayerChildrenAfter [get]
 
IReadOnlyList< PlayerDrawLayerChildrenBefore [get]
 
virtual bool IsHeadLayer [get]
 Returns whether or not this layer should be rendered for the minimap icon.
 
virtual Transformation Transform [get]
 
bool Visible = true [get]
 
- Properties inherited from ModType< TEntity, TModType >
virtual bool CloneNewInstances [get]
 Whether to create new instances of this mod type via Clone(TEntity) or via the default constructor Defaults to false (default constructor).
 
TEntity Entity [get, set]
 
string FullName [get]
 The internal name of this, including the mod it is from. More...
 
virtual bool IsCloneable [get]
 Whether or not this type is cloneable. Cloning is supported if
all reference typed fields in each sub-class which doesn't override Clone are marked with [CloneByReference]
 
Mod Mod [get, set]
 The mod this belongs to. More...
 
virtual string Name [get]
 The internal name of this. More...
 
- Properties inherited from IModType
string FullName [get]
 => $"{Mod.Name}/{Name}" More...
 
Mod Mod [get]
 The mod this belongs to. More...
 
string Name [get]
 The internal name of this instance. More...
 
- Properties inherited from ModType< TEntity >
virtual bool CloneNewInstances [get]
 Whether to create new instances of this mod type via Clone(TEntity) or via the default constructor Defaults to false (default constructor).
 
TEntity Entity [get, set]
 
string FullName [get]
 The internal name of this, including the mod it is from. More...
 
virtual bool IsCloneable [get]
 Whether or not this type is cloneable. Cloning is supported if
all reference typed fields in each sub-class which doesn't override Clone are marked with [CloneByReference]
 
Mod Mod [get, set]
 The mod this belongs to. More...
 
virtual string Name [get]
 The internal name of this. More...
 

Detailed Description

This class represents a DrawLayer for the player. Drawing should be done by adding Terraria.DataStructures.DrawData objects to drawInfo.DrawDataCache in the Draw method.

Member Function Documentation

◆ Draw()

abstract void PlayerDrawLayer.Draw ( ref PlayerDrawSet  drawInfo)
protectedpure virtual

Draws this layer. This will be called multiple times a frame if a player afterimage is being drawn. If this layer shouldn't draw with each afterimage, check

if(drawinfo.shadow == 0f) to only draw for the original player image.

◆ GetDefaultVisibility()

virtual bool PlayerDrawLayer.GetDefaultVisibility ( PlayerDrawSet  drawInfo)
virtual

Returns the layer's default visibility. This is usually called as a layer is queued for drawing, but modders can call it too for information.

Returns
Whether or not this layer will be visible by default. Modders can hide layers later, if needed.

◆ Register()

sealed override void PlayerDrawLayer.Register ( )
protectedvirtual

If you make a new ModType, seal this override.

Implements ModType< TEntity >.

◆ SetupContent()

sealed override void PlayerDrawLayer.SetupContent ( )
virtual

If you make a new ModType, seal this override, and call SetStaticDefaults in it.

Reimplemented from ModType< TEntity >.