CompileTeam: Difference between revisions
		
		
		
		
		
		Jump to navigation
		Jump to search
		
				
		
		
	
| SirYodaJedi (talk | contribs) No edit summary | SirYodaJedi (talk | contribs)  m (→VBSP code) | ||
| Line 61: | Line 61: | ||
| 	if ( ( atoi(propVal) ) == 1 ) | 	if ( ( atoi(propVal) ) == 1 ) | ||
| 	{ | 	{ | ||
| 		textureref[i].contents |= CONTENTS_TEAM1; | |||
| 	} | 	} | ||
| 	else if ( ( atoi(propVal) ) == 2 ) | 	else if ( ( atoi(propVal) ) == 2 ) | ||
Latest revision as of 12:10, 14 April 2025
(in all games since 
 )
Compiles the texture to only affect a specific team. For example, the climb texture is a ladder that only lets infected climb up it.
)
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
		}
	}
}
VBSP code
While %CompileTeam only exists in  VBSP and newer, the contents flags it writes exist in all versions of Source. Adding the following to the SDK VBSP source code will allow
 VBSP and newer, the contents flags it writes exist in all versions of Source. Adding the following to the SDK VBSP source code will allow %CompileTeam to be used in  branches, without using leaked code.
 branches, without using leaked 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;
	}
}