CompileLadder

From Valve Developer Community
Revision as of 08:55, 20 November 2024 by Sirhephaestus (talk | contribs) (Add note about ladder $surfaceprop as workaround)
Jump to navigation Jump to search

Compiles the texture as a ladder texture, meaning players will be able to climb up it. However, the material should be applied to a func_ladder brush entity in order for the navigation mesh to recognize it and to allowing NPCs to climb the ladder.
Materials with this flag are visible to players, unless %compilenodraw is also used. All ladders found so far also make use of %CompilePassBullets, as this function is not inherited by %CompileLadder already.

Tip.pngTip:In Counter-Strike: Source[And others games?] a brush needs all faces to have this compile flag in order to be turned into a ladder. If only one brush face is desired, you can add the ladder $surfaceprop to a material which will make only that brush face climbable.

Examples

tools/ToolsInvisibleLadder.vmt is a ladder that is not visible to players.

"LightmappedGeneric"
{
	"$basetexture" "Tools/toolsinvisibleladder"
	"%compilenodraw" 1
	"%compilepassbullets" 1
	"%compileladder" 1
	"%keywords" "airexchange,borealis,c17downtown,c17industrial,c17sewers,c17skyscraper,c17trainstation,combine,kraken,wasteland"
}

An improved version that does not cut visleaves would look like so:

"LightmappedGeneric"
{
	"$basetexture" "Tools/toolsinvisibleladder"
	"$translucent" 1
	"%compileladder" 1
	"%compiledetail" 1
	"%compilenodraw" 1
	"%compilepassbullets" 1
}

Metal/MetalLadder001a.vmt is visible to players.

"LightmappedGeneric"
{
	"$basetexture" "Metal/metalladder001a"
	"$surfaceprop" "metal"
	"%compileladder" 1
	"$alphatest" 1
	"%compilepassbullets" 1
}

Left 4 Dead seriesLeft 4 Dead seriesTools/Climb_Versus.vmt is only visible to infected players, due to the proxies.

UnlitGeneric
{
	$basetexture "tools\climb"
	$additive 1
	"%compileTeam" 2
	"%compilepassbullets" 1
	"%compileladder" 1

	$proxRange 0.0

	$proxTeam 1.0

	$one 1.0
	Proxies
	{
		PlayerTeam
		{
			team 3 
			resultVar $proxTeam
		}
		Subtract
		{
			srcVar1 $one
			srcVar2 $proxRange
			resultVar $alpha
		}
		Multiply
		{
			srcVar1 $alpha
			srcVar2 $proxTeam
			resultVar $alpha
		}
		TextureScroll
		{
			texturescrollvar $baseTextureTransform
			texturescrollrate 1
			texturescrollangle 90.00
		}
	}
}