Manchmal kann es praktisch sein, einen Button oder eine Textur auf Knopfdruck zu verändern oder bei einer bestimmten Aktion die Textur eines Brushes anzupassen. Das einfachste Beispiel ist ein Aufzug, bei dem die Stockwerk-Nummern angezeigt werden oder ein Button, der seine Textur ändert, sobald man diesen drückt.
..\Steam\SteamApps\[UserName]\sourcesdk_content\[GameName]\materialsrc abgespeichert, allerdings durchnummeriert: Angefangen bei *001.TGA bis zur letzten Datei. Am Beispiel eines Aufzugs mit 4 Stockwerken erhält man folgende Dateien:LiftSign001.tga LiftSign002.tga LiftSign003.tga LiftSign004.tga
"startframe" "1" "endframe" "4"
..\Steam\SteamApps\[UserName]\sourcesdk_content\[GameName]\[GameShortname]\materials eine .VTF-Datei, die alle 4 .TGA-Dateien enthält."LightmappedGeneric"
{
"$baseTexture" "LiftSign"
"$surfaceprop" "metal"
"Proxies"
{
"ToggleTexture"
{
"toggleTextureVar" "$baseTexture"
"toggleTextureFrameNumVar" "$frame"
}
}
}
Nachdem wir das Material erstellt haben, können wir es bereits im Hammer verwenden. Allerdings tut sich noch nicht allzu viel, wenn wir uns die Map anschauen. Daher müssen nun einige Entities erstellt werden. Folgendes wird benötigt:
Um das ganze etwas einfacher zu erklären, wird hier nur ein func_button und ein env_texturetoggle erklärt. Alle weiteren funktionieren entsprechend genauso:
| Output | Target Entity | Target Input | Parameter | Delay |
|---|---|---|---|---|
| OnPressed | „LiftSignTexToggle“ | SetTextureIndex | 2 | 0.00 |
Dies bedeutet: Beim drücken des Buttons wird unser env_texturetoggle getriggert und gibt unserem Button automatisch die Textur mit dem Index „2“.
Achtung: Der TexturenIndex fängt bei „0“ an, das heisst in diesem Beispiel wären die Indizes 0,1,2 und 3 möglich.
Alle weiteren Texturenindizes könnten über weitere func_buttons oder z.B. durch einen path_track bei OnPass getriggert werden. Lasst Euch was einfallen!