Func null: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
m (→‎FGD entry: inheriting info_null causes the dev cube to be drawn; also don't want the I/O associated with the Targetname BaseClass)
Line 16: Line 16:
If using func_null outside of Mapbase, add this FGD entry to the end of [[base.fgd]]:
If using func_null outside of Mapbase, add this FGD entry to the end of [[base.fgd]]:
<source lang=c>
<source lang=c>
@SolidClass base(info_null, Origin) = func_null :  
@SolidClass base(Origin) = func_null :  
"A nonexistent entity that gets ignored by the game (will cause an error in the console, but this can be ignored."  
"A nonexistent entity that gets ignored by the game (will cause an error in the console, but this can be ignored."  
+ "Useful for invisible texlights, such as those appearing to be cast by props or which accentuate the light coming in through a window."
+ "Useful for invisible texlights, such as those appearing to be cast by props or which accentuate the light coming in through a window."
[
[
targetname(target_source) : "Name" : : "Name to use if this is a target for lighting calculations"
vrad_brush_cast_shadows(choices) : "Cast Baked Shadows" : 0 : "Set this if this brush casts lightmap shadows." =
vrad_brush_cast_shadows(choices) : "Cast Baked Shadows" : 0 : "Set this if this brush casts lightmap shadows." =
[
[

Revision as of 05:18, 30 June 2024

C++ Class hierarchy
CNullEntity
CBaseEntity

func_null is a brush entity available in Mapbase Mapbase. It is a brush version of of info_null. This can be used for creating texlights that don't have a visible brush in-game, such as for prop-based lights or accentuating lighting coming in from a window.

Because this entity isn't removed on compile, it still counts toward the edict limit for a split second until removed on map spawn.

Cpp.pngCode:This entity uses the same C++ class as info_null. As such, the same behavior can be achieved in any game simply by manually setting a brush entity's classname to info_null.
Icon-Bug.pngBug:Hammer will strip brushes from entities which are defined in the FGD as point entities. It also does not allow a point entity and brush entity to share the same classname, as it will only use the most recently defined version.  [todo tested in ?]
Alternatively, add an func_null FGD entry to base.fgd; it will spit out an error in the console when loading the map, but will otherwise be ignored by the game, and will never count as an edict, unlike info_null.

Keyvalues

Origin:

Origin (X Y Z) (origin) <origin>
The position of this entity's center in the world. Rotating entities typically rotate around their origin.
Name (targetname) <string>[ Edit ]
The name that other entities refer to this entity by, via Inputs/Outputs or other keyvalues (e.g. parentname or target).
Also displayed in Hammer's 2D views and Entity Report.
See also:  Generic Keyvalues, Inputs and Outputs available to all entities

Internal keyvalues used by VRAD:

Shadows (vrad_brush_cast_shadows) <boolean> (in all games since Source 2007)
Determines if this entity will cast lightmap shadows.

FGD entry

If using func_null outside of Mapbase, add this FGD entry to the end of base.fgd:

@SolidClass base(Origin) = func_null : 
	"A nonexistent entity that gets ignored by the game (will cause an error in the console, but this can be ignored." 
	+ "Useful for invisible texlights, such as those appearing to be cast by props or which accentuate the light coming in through a window."
[
	targetname(target_source) : "Name" : : "Name to use if this is a target for lighting calculations"
	vrad_brush_cast_shadows(choices) : "Cast Baked Shadows" : 0 : "Set this if this brush casts lightmap shadows." =
	[
		0 : "No"
		1 : "Yes"
	]
]