CompileTeam: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
mNo edit summary
Line 48: Line 48:
== Code ==
== Code ==
First, add this to the appropriate section of PrintBrushContentsToString in csg.cpp
First, add this to the appropriate section of PrintBrushContentsToString in csg.cpp
<source>
<syntaxhighlight lang=cpp>
 
ADD_CONTENTS(CONTENTS_TEAM1)
ADD_CONTENTS(CONTENTS_TEAM1)
ADD_CONTENTS(CONTENTS_TEAM2)
ADD_CONTENTS(CONTENTS_TEAM2)
</source>
</syntaxhighlight>
Next, add the following to the appropriate section of FindMiptex in textures.cpp:
Next, add the following to the appropriate section of FindMiptex in textures.cpp:
<source lang=cpp>
<syntaxhighlight lang=cpp>
// Handle L4D-style %CompileTeam (no leaked code used)
// Handle L4D-style %CompileTeam (no leaked code used)
if ( propVal = GetMaterialVar( matID, "%compileTeam" ) )
if ( propVal = GetMaterialVar( matID, "%compileTeam" ) )
Line 67: Line 66:
}
}
}
}
</source>
</syntaxhighlight>


[[Category:Material System]]
[[Category:Material System]]
[[Category:Shader parameters]]
[[Category:Shader parameters]]

Revision as of 11:55, 14 April 2025

(in all games since Left 4 Dead seriesLeft 4 Dead series) Compiles the texture to only affect a specific team. For example, the climb texture is a ladder that only lets infected climb up it.
However, making a texture visible to only one team requires Proxies. As seen in the example below.

Example:

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 //Note: "%compileTeam" and this "team" use different numbers. Because that's just how it is coded.
			resultVar $proxTeam
		}
		Subtract
		{
			srcVar1 $one
			srcVar2 $proxRange
			resultVar $alpha
		}
		Multiply
		{
			srcVar1 $alpha
			srcVar2 $proxTeam
			resultVar $alpha
		}
		TextureScroll
		{
			texturescrollvar $baseTextureTransform
			texturescrollrate 1
			texturescrollangle 90.00
		}
	}
}

Code

First, add this to the appropriate section of PrintBrushContentsToString in csg.cpp

	ADD_CONTENTS(CONTENTS_TEAM1)
	ADD_CONTENTS(CONTENTS_TEAM2)

Next, add the following to the appropriate section of FindMiptex in textures.cpp:

// Handle L4D-style %CompileTeam (no leaked code used)
if ( propVal = GetMaterialVar( matID, "%compileTeam" ) )
{
	if ( ( atoi(propVal) ) == 1 )
	{
				textureref[i].contents |= CONTENTS_TEAM1;
	}
	else if ( ( atoi(propVal) ) == 2 )
	{
		textureref[i].contents |= CONTENTS_TEAM2;
	}
}