<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.splashdamage.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JRAD</id>
	<title>Mod Wiki - User contributions [en-gb]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.splashdamage.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JRAD"/>
	<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php/Special:Contributions/JRAD"/>
	<updated>2026-04-27T19:06:03Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.31.0</generator>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=PROCB&amp;diff=3993</id>
		<title>PROCB</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=PROCB&amp;diff=3993"/>
		<updated>2007-12-12T10:40:13Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Simple Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Simple Types ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
'''These are all stored as little-endian'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* bool 	= 1 byte&lt;br /&gt;
* unsigned char = 1 byte&lt;br /&gt;
* int = 4 bytes&lt;br /&gt;
* float = 4 bytes&lt;br /&gt;
&lt;br /&gt;
=== Compound types ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* vec3 = float x, float y, float z&lt;br /&gt;
* bounds = vec3 mins, vec3 maxs&lt;br /&gt;
* string = int length, char[ length ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
  ...&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
&lt;br /&gt;
=== Chunks needed for loading geometry data ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Material Table ====&lt;br /&gt;
  material chunk {&lt;br /&gt;
    string id = &amp;quot;materials&amp;quot;;&lt;br /&gt;
    int numMaterials;&lt;br /&gt;
    string array[ numMaterials ];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Model Chunk ====&lt;br /&gt;
  model chunk {&lt;br /&gt;
    string id = &amp;quot;model&amp;quot;;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    string name;&lt;br /&gt;
    &lt;br /&gt;
    int numSurfaces;&lt;br /&gt;
    int numAreas;&lt;br /&gt;
    int array[ numAreas ];&lt;br /&gt;
    &lt;br /&gt;
    for each of numSurfaces {&lt;br /&gt;
        int materialIndex;&lt;br /&gt;
        bool hasVertexColor;&lt;br /&gt;
        bounds surfaceBounds;&lt;br /&gt;
        &lt;br /&gt;
        int numVerts;&lt;br /&gt;
        int numIndices;&lt;br /&gt;
        int __privateCount;&lt;br /&gt;
        &lt;br /&gt;
        for each of numVerts {&lt;br /&gt;
            int numVertexElements;  // should always be 12&lt;br /&gt;
            float vertex[ numVertexElements ];&lt;br /&gt;
            &lt;br /&gt;
            int numColorElements;   // should always be 4&lt;br /&gt;
            unsigned char color[ numColorElements ];&lt;br /&gt;
            // if hasVertexColor is true, use the color read above; otherwise the color is &amp;quot;255 255 255 255&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 0 ] - x&lt;br /&gt;
            // vertex[ 1 ] - y&lt;br /&gt;
            // vertex[ 2 ] - z&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 3 ] - s&lt;br /&gt;
            // vertex[ 4 ] - t&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 5 ] - normal x&lt;br /&gt;
            // vertex[ 6 ] - normal y&lt;br /&gt;
            // vertex[ 7 ] - normal z&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 8 ] - tangent x&lt;br /&gt;
            // vertex[ 9 ] - tangent y&lt;br /&gt;
            // vertex[ 10 ] - tangent z     &lt;br /&gt;
            // vertex[ 11 ] - bitangent sign&lt;br /&gt;
        }&lt;br /&gt;
        for each of numIndices {&lt;br /&gt;
            int index;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        for each of __privateCount {&lt;br /&gt;
            float __private[ 6 ];&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;      &lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  all_other_chunks {&lt;br /&gt;
    string id;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    &amp;lt;skip ahead by chunklength to get to the next chunk&amp;gt;&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=PROCB&amp;diff=3992</id>
		<title>PROCB</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=PROCB&amp;diff=3992"/>
		<updated>2007-12-12T10:40:01Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Simple Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Simple Types ===&lt;br /&gt;
&lt;br /&gt;
'''These are all stored as little-endian'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* bool 	= 1 byte&lt;br /&gt;
* unsigned char = 1 byte&lt;br /&gt;
* int = 4 bytes&lt;br /&gt;
* float = 4 bytes&lt;br /&gt;
&lt;br /&gt;
=== Compound types ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* vec3 = float x, float y, float z&lt;br /&gt;
* bounds = vec3 mins, vec3 maxs&lt;br /&gt;
* string = int length, char[ length ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
  ...&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
&lt;br /&gt;
=== Chunks needed for loading geometry data ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Material Table ====&lt;br /&gt;
  material chunk {&lt;br /&gt;
    string id = &amp;quot;materials&amp;quot;;&lt;br /&gt;
    int numMaterials;&lt;br /&gt;
    string array[ numMaterials ];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Model Chunk ====&lt;br /&gt;
  model chunk {&lt;br /&gt;
    string id = &amp;quot;model&amp;quot;;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    string name;&lt;br /&gt;
    &lt;br /&gt;
    int numSurfaces;&lt;br /&gt;
    int numAreas;&lt;br /&gt;
    int array[ numAreas ];&lt;br /&gt;
    &lt;br /&gt;
    for each of numSurfaces {&lt;br /&gt;
        int materialIndex;&lt;br /&gt;
        bool hasVertexColor;&lt;br /&gt;
        bounds surfaceBounds;&lt;br /&gt;
        &lt;br /&gt;
        int numVerts;&lt;br /&gt;
        int numIndices;&lt;br /&gt;
        int __privateCount;&lt;br /&gt;
        &lt;br /&gt;
        for each of numVerts {&lt;br /&gt;
            int numVertexElements;  // should always be 12&lt;br /&gt;
            float vertex[ numVertexElements ];&lt;br /&gt;
            &lt;br /&gt;
            int numColorElements;   // should always be 4&lt;br /&gt;
            unsigned char color[ numColorElements ];&lt;br /&gt;
            // if hasVertexColor is true, use the color read above; otherwise the color is &amp;quot;255 255 255 255&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 0 ] - x&lt;br /&gt;
            // vertex[ 1 ] - y&lt;br /&gt;
            // vertex[ 2 ] - z&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 3 ] - s&lt;br /&gt;
            // vertex[ 4 ] - t&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 5 ] - normal x&lt;br /&gt;
            // vertex[ 6 ] - normal y&lt;br /&gt;
            // vertex[ 7 ] - normal z&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 8 ] - tangent x&lt;br /&gt;
            // vertex[ 9 ] - tangent y&lt;br /&gt;
            // vertex[ 10 ] - tangent z     &lt;br /&gt;
            // vertex[ 11 ] - bitangent sign&lt;br /&gt;
        }&lt;br /&gt;
        for each of numIndices {&lt;br /&gt;
            int index;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        for each of __privateCount {&lt;br /&gt;
            float __private[ 6 ];&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;      &lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  all_other_chunks {&lt;br /&gt;
    string id;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    &amp;lt;skip ahead by chunklength to get to the next chunk&amp;gt;&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=File_Formats&amp;diff=3991</id>
		<title>File Formats</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=File_Formats&amp;diff=3991"/>
		<updated>2007-12-11T19:11:17Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=PROCB&amp;diff=3990</id>
		<title>PROCB</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=PROCB&amp;diff=3990"/>
		<updated>2007-12-11T19:10:48Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Simple Types ===&lt;br /&gt;
These are all stored as little-endian&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* bool 	= 1 byte&lt;br /&gt;
* unsigned char = 1 byte&lt;br /&gt;
* int = 4 bytes&lt;br /&gt;
* float = 4 bytes&lt;br /&gt;
&lt;br /&gt;
=== Compound types ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* vec3 = float x, float y, float z&lt;br /&gt;
* bounds = vec3 mins, vec3 maxs&lt;br /&gt;
* string = int length, char[ length ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
  ...&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
&lt;br /&gt;
=== Chunks needed for loading geometry data ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Material Table ====&lt;br /&gt;
  material chunk {&lt;br /&gt;
    string id = &amp;quot;materials&amp;quot;;&lt;br /&gt;
    int numMaterials;&lt;br /&gt;
    string array[ numMaterials ];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Model Chunk ====&lt;br /&gt;
  model chunk {&lt;br /&gt;
    string id = &amp;quot;model&amp;quot;;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    string name;&lt;br /&gt;
    &lt;br /&gt;
    int numSurfaces;&lt;br /&gt;
    int numAreas;&lt;br /&gt;
    int array[ numAreas ];&lt;br /&gt;
    &lt;br /&gt;
    for each of numSurfaces {&lt;br /&gt;
        int materialIndex;&lt;br /&gt;
        bool hasVertexColor;&lt;br /&gt;
        bounds surfaceBounds;&lt;br /&gt;
        &lt;br /&gt;
        int numVerts;&lt;br /&gt;
        int numIndices;&lt;br /&gt;
        int __privateCount;&lt;br /&gt;
        &lt;br /&gt;
        for each of numVerts {&lt;br /&gt;
            int numVertexElements;  // should always be 12&lt;br /&gt;
            float vertex[ numVertexElements ];&lt;br /&gt;
            &lt;br /&gt;
            int numColorElements;   // should always be 4&lt;br /&gt;
            unsigned char color[ numColorElements ];&lt;br /&gt;
            // if hasVertexColor is true, use the color read above; otherwise the color is &amp;quot;255 255 255 255&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 0 ] - x&lt;br /&gt;
            // vertex[ 1 ] - y&lt;br /&gt;
            // vertex[ 2 ] - z&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 3 ] - s&lt;br /&gt;
            // vertex[ 4 ] - t&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 5 ] - normal x&lt;br /&gt;
            // vertex[ 6 ] - normal y&lt;br /&gt;
            // vertex[ 7 ] - normal z&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 8 ] - tangent x&lt;br /&gt;
            // vertex[ 9 ] - tangent y&lt;br /&gt;
            // vertex[ 10 ] - tangent z     &lt;br /&gt;
            // vertex[ 11 ] - bitangent sign&lt;br /&gt;
        }&lt;br /&gt;
        for each of numIndices {&lt;br /&gt;
            int index;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        for each of __privateCount {&lt;br /&gt;
            float __private[ 6 ];&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;      &lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  all_other_chunks {&lt;br /&gt;
    string id;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    &amp;lt;skip ahead by chunklength to get to the next chunk&amp;gt;&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3989</id>
		<title>Enemy Territory: QUAKE Wars</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3989"/>
		<updated>2007-12-11T19:09:43Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* File Formats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Welcome to the Enemy Territory: QUAKE Wars section. Here you'll find a variety of reference documentation and tutorials related to editing ETQW, along with links to the SDK. To learn more about Enemy Territory: QUAKE Wars, visit [http://www.enemyterritory.com www.enemyterritory.com].&lt;br /&gt;
&lt;br /&gt;
==Software Development Kit==&lt;br /&gt;
&lt;br /&gt;
The Enemy Territory: QUAKE Wars Software Development kit is currently in BETA. A list of download locations is [http://community.enemyterritory.com/index.php?q=node/210 available here].&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Map]]''' - a step-by-step guide towards making a simple map.&lt;br /&gt;
* '''[[A Simple Second Map]]''' - a second step-by-step guide.&lt;br /&gt;
* '''[[Taking A Screenshot]]''' - Settings and options for making a great screenshot!&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Terrain]]''' - a step-by-step guide for terrains.&lt;br /&gt;
* '''[[A Simple First Megatexture]]''' - a step-by-step guide for basic Megatextures.&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - more detailed guide for terrain meshes.&lt;br /&gt;
* '''[[An Advanced Terrain and Megatexture]]''' - a comprehensive guide for making detailed terrain models with Megatextures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Tutorial]]''' - The whole thing! Click below for smaller segments.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 1|Step 1]]''' - Design considerations, before you do anything else!&lt;br /&gt;
** '''[[Vehicle Tutorial Part 2|Step 2]]''' - Initial rough model, rig and basic script.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 3|Step 3]]''' - More advanced rig and scripting.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 4|Step 4]]''' - Further technical setup ideas.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models &amp;amp; Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Adding Custom Textures]]''' - Create materials to add your own custom textures to the game.&lt;br /&gt;
* '''[[Making A Normal Map]]''' - Using Renderbump to generate a bump-map from a high-poly model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Script &amp;amp; Code==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Coding ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Windows Code Notes]]''' - General information about compiling on Windows.&lt;br /&gt;
* '''[[Linux Code Notes]]''' - General information about compiling on Linux systems.&lt;br /&gt;
* '''[[Generating Compiled Scripts]]''' - Information on building a compiledscript DLL.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Declarations ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Materials]]''' - All you need to know about material declarations.&lt;br /&gt;
* '''[[Templates]]''' - Setting up templates to save time and effort.&lt;br /&gt;
* '''[[Surface Types]]''' - Available surface types for particle &amp;amp; sound effects.&lt;br /&gt;
* '''[[Skins]]''' - Easily switch textures on surfaces.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicle Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Scripting: Basic_Overview|Basic Overview]]''' - Introduction to vehicle setup.&lt;br /&gt;
* '''[[Vehicle Scripting: Entity_Definition|Entity Definition]]''' - One definition to rule them all!&lt;br /&gt;
* '''[[Vehicle Scripting: Vehicle_Definition|Vehicle Definition]]''' - Introduction to the ''.vscript'' file.&lt;br /&gt;
* '''[[Vehicle Scripting: Positions_&amp;amp;_Views|Positions &amp;amp; Views]]''' - Configuring player positions &amp;amp; camera views.&lt;br /&gt;
* '''[[Vehicle Scripting: Components|Components]]''' - Details of various vehicle components.&lt;br /&gt;
* '''[[Vehicle Scripting: Weapons|Weapons]]''' - Things that go boom!&lt;br /&gt;
* '''[[Vehicle Scripting: IK|IK]]''' - Inverse Kinematics &amp;amp; you...&lt;br /&gt;
* '''[[Vehicle Scripting: Cockpits|Cockpits]]''' - Cockpit setup.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Entity Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[EntityClass:Overview|Classes]]''' - Tree of entity types.&lt;br /&gt;
* '''[[ScriptEvent:List|Events]]''' - List of all script events.&lt;br /&gt;
* '''[[Scripting:Examples|Examples]]''' - Some example walkthoughs of building up a scripted entity.&lt;br /&gt;
* '''[[Script:Files|Script Files]]''' - List of the script files used by the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[GUIs|GUI Overview]]''' - Overview of the GUI system.&lt;br /&gt;
* '''[[GUIs: Event Based Scripting|Event Based Scripting]]''' - GUIs are event-based.&lt;br /&gt;
* '''[[GUIs: Materials|Materials]]''' - Using materials in GUIs.&lt;br /&gt;
* '''[[GUIs: Transitions|Transitions]]''' - Transitions.&lt;br /&gt;
* '''[[GUIs: Templates|Templates]]''' - Using templates in GUIs.&lt;br /&gt;
* '''[[GUIs: List Enumeration|List Enumeration]]''' - List enumerations.&lt;br /&gt;
* '''[[GUIs: Properties|Properties]]''' - Player/Global properties and more.&lt;br /&gt;
* '''[[GUIs: Timelines|Timelines]]''' - GUI timelines.&lt;br /&gt;
* '''[[GUIs: Layouts|Layouts]]''' - Window layouts.&lt;br /&gt;
* '''[[Reference (GUIs)|Reference]]''' - GUI reference.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== File Formats ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[PROCB|PROCB Mesh Data]]''' - Loading mesh data from a procb file.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== The Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Map]]''' - step-by-step guide towards making a simple map&lt;br /&gt;
* '''[[A Simple Second Map]]''' - step-by-step guide towards making a simple map&lt;br /&gt;
* '''[[A Simple First Terrain]]''' - step-by-step guide creating a simple terrain&lt;br /&gt;
* '''[[An Advanced Map]]''' - includes terrain&lt;br /&gt;
* '''[[Design: How do I|How do I ...?]]''' - Common and useful tasks&lt;br /&gt;
* '''[[Map Troubleshooting]]''' - Common problems and fixes&lt;br /&gt;
----&lt;br /&gt;
* '''[[Brush Basics]]'''&lt;br /&gt;
* '''[[Entity Basics]]'''&lt;br /&gt;
* '''[[Lighting Basics]]'''&lt;br /&gt;
* '''[[Portal Basics]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Common Textures]]'''&lt;br /&gt;
* '''[[Decals]]'''&lt;br /&gt;
* '''[[Editor Groups]]'''&lt;br /&gt;
* '''[[Map Objects]]'''&lt;br /&gt;
* '''[[References]]'''&lt;br /&gt;
* '''[[Sound]]'''&lt;br /&gt;
* '''[[Texturesheets]]'''&lt;br /&gt;
* '''[[Water]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Ambient Light Editor]]'''&lt;br /&gt;
* '''[[Atmosphere Editor]]'''&lt;br /&gt;
* '''[[Texture Editor]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Advanced Stuff ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Batches]]'''&lt;br /&gt;
* '''[[Deployables]]'''&lt;br /&gt;
* '''[[Detail Groups]]'''&lt;br /&gt;
* '''[[Developer cheats]]'''&lt;br /&gt;
* '''[[List of Entities]]''' - Descriptions for all entities&lt;br /&gt;
* '''[[LOD Groups]]'''&lt;br /&gt;
* '''[[Locations]]'''&lt;br /&gt;
* '''[[Model Instancing]]'''&lt;br /&gt;
* '''[[Occlusion Tests]]'''&lt;br /&gt;
* '''[[Performance Optimizations]]'''&lt;br /&gt;
* '''[[Surface Tree]]'''&lt;br /&gt;
* '''[[Surface Types]]'''&lt;br /&gt;
* '''[[Terrain Editing]]'''&lt;br /&gt;
* '''[[Terrain Editor]]'''&lt;br /&gt;
* '''[[Vehicle Route Constraint System]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Art==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[In-Game Models]]''' - Making models for use in the engine.&lt;br /&gt;
* '''[[Collision Meshes]]''' - Optimized models for in-game physics collision.&lt;br /&gt;
* '''[[High-Poly Models]]''' - Making source models for baking normal maps.&lt;br /&gt;
* '''[[Renderbump]]''' - Create normal maps from high-poly geometry.&lt;br /&gt;
* '''[[Imposters]]''' - Sprites used for rendering complex models cheaply at a distance.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Animation ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[MD5 Export Process]]''' - How to export an animated MD5.&lt;br /&gt;
* '''[[Vehicle Setup]]''' - How to set up a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Basic Texture Overview]]''' - Supported texture types and implementations.&lt;br /&gt;
* '''[[Texturesheets]]''' - Overview of what texturesheets are, and when to use them.&lt;br /&gt;
* '''[[The Atlas Editor]]''' - Create environment texture sheets to improve performance.&lt;br /&gt;
* '''[[RenderBumpFlat]]''' - Create normal-maps from high-poly geometry.&lt;br /&gt;
* '''[[Detail Textures]]''' - Add high-frequency detail to your textures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain Editing ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Terrain]]''' - Simple steps to creating a terrain-based map.&lt;br /&gt;
* '''[[A Simple First Megatexture]]''' - Following on from the Simple First Terrain tutorial.&lt;br /&gt;
* '''[[Generate a MegaTexture]]''' - Render and compile your Megatexture.&lt;br /&gt;
* '''[[An Advanced Terrain and Megatexture]]''' - A detailed guide to making a realistic, natural terrain and Megatexture.&lt;br /&gt;
* '''[[Terrain Editor|EditWorld's Terrain Editor]]''' - Set up a Surface Tree for your Megatexture.&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - All aspects of terrain mesh creation including Out-of-Bounds geometry.&lt;br /&gt;
* '''[[Water Surfaces#Water Models|Water Surfaces]]''' - Create water to go with your landscape.&lt;br /&gt;
* '''[[STUFF System]]''' - Procedurally distribute models over your terrain mesh.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Atmospheres and Effects ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Atmosphere Editor|The Atmosphere Editor]]''' - Create and edit atmospheres for your map.&lt;br /&gt;
* '''[[Ambient Light Editor|The Ambient Light Editor]]''' - Create and edit ambient light setups.&lt;br /&gt;
* '''[[Environment Maps]]''' - Used for reflection effects.&lt;br /&gt;
* '''[[Water Surfaces]]''' - Creating water effects.&lt;br /&gt;
* '''[[Effects Editor|The Effects Editor]]''' - Create and edit particle effects.&lt;br /&gt;
* '''[[Cheap Decals]]''' - Bulletholes and other collision decals.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=File_Formats&amp;diff=3983</id>
		<title>File Formats</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=File_Formats&amp;diff=3983"/>
		<updated>2007-12-11T18:26:30Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Simple Types ===&lt;br /&gt;
These are all stored as little-endian&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* bool 	= 1 byte&lt;br /&gt;
* unsigned char = 1 byte&lt;br /&gt;
* int = 4 bytes&lt;br /&gt;
* float = 4 bytes&lt;br /&gt;
&lt;br /&gt;
=== Compound types ===&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
* vec3 = float x, float y, float z&lt;br /&gt;
* bounds = vec3 mins, vec3 maxs&lt;br /&gt;
* string = int length, char[ length ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== File Structure ===&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
  ...&lt;br /&gt;
  chunk id;&lt;br /&gt;
  chunk data;&lt;br /&gt;
&lt;br /&gt;
=== Chunks needed for loading geometry data ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== Material Table ====&lt;br /&gt;
  material chunk {&lt;br /&gt;
    string id = &amp;quot;materials&amp;quot;;&lt;br /&gt;
    int numMaterials;&lt;br /&gt;
    string array[ numMaterials ];&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
==== Model Chunk ====&lt;br /&gt;
  model chunk {&lt;br /&gt;
    string id = &amp;quot;model&amp;quot;;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    string name;&lt;br /&gt;
    &lt;br /&gt;
    int numSurfaces;&lt;br /&gt;
    int numAreas;&lt;br /&gt;
    int array[ numAreas ];&lt;br /&gt;
    &lt;br /&gt;
    for each of numSurfaces {&lt;br /&gt;
        int materialIndex;&lt;br /&gt;
        bool hasVertexColor;&lt;br /&gt;
        bounds surfaceBounds;&lt;br /&gt;
        &lt;br /&gt;
        int numVerts;&lt;br /&gt;
        int numIndices;&lt;br /&gt;
        int __privateCount;&lt;br /&gt;
        &lt;br /&gt;
        for each of numVerts {&lt;br /&gt;
            int numVertexElements;  // should always be 12&lt;br /&gt;
            float vertex[ numVertexElements ];&lt;br /&gt;
            &lt;br /&gt;
            int numColorElements;   // should always be 4&lt;br /&gt;
            unsigned char color[ numColorElements ];&lt;br /&gt;
            // if hasVertexColor is true, use the color read above; otherwise the color is &amp;quot;255 255 255 255&amp;quot;&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 0 ] - x&lt;br /&gt;
            // vertex[ 1 ] - y&lt;br /&gt;
            // vertex[ 2 ] - z&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 3 ] - s&lt;br /&gt;
            // vertex[ 4 ] - t&lt;br /&gt;
    &lt;br /&gt;
            // vertex[ 5 ] - normal x&lt;br /&gt;
            // vertex[ 6 ] - normal y&lt;br /&gt;
            // vertex[ 7 ] - normal z&lt;br /&gt;
            &lt;br /&gt;
            // vertex[ 8 ] - tangent x&lt;br /&gt;
            // vertex[ 9 ] - tangent y&lt;br /&gt;
            // vertex[ 10 ] - tangent z     &lt;br /&gt;
            // vertex[ 11 ] - bitangent sign&lt;br /&gt;
        }&lt;br /&gt;
        for each of numIndices {&lt;br /&gt;
            int index;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        for each of __privateCount {&lt;br /&gt;
            float __private[ 6 ];&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;&lt;br /&gt;
            int __private;      &lt;br /&gt;
        }&lt;br /&gt;
    }  &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  all_other_chunks {&lt;br /&gt;
    string id;&lt;br /&gt;
    int chunkLength;&lt;br /&gt;
    &amp;lt;skip ahead by chunklength to get to the next chunk&amp;gt;&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3981</id>
		<title>Enemy Territory: QUAKE Wars</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3981"/>
		<updated>2007-12-11T18:11:31Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Script &amp;amp; Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Welcome to the Enemy Territory: QUAKE Wars section. Here you'll find a variety of reference documentation and tutorials related to editing ETQW, along with links to the SDK. To learn more about Enemy Territory: QUAKE Wars, visit [http://www.enemyterritory.com www.enemyterritory.com].&lt;br /&gt;
&lt;br /&gt;
==Software Development Kit==&lt;br /&gt;
&lt;br /&gt;
The Enemy Territory: QUAKE Wars Software Development kit is currently in BETA. A list of download locations is [http://community.enemyterritory.com/index.php?q=node/210 available here].&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Map]]''' - a step-by-step guide towards making a simple map.&lt;br /&gt;
* '''[[A Simple Second Map]]''' - a second step-by-step guide.&lt;br /&gt;
* '''[[Taking A Screenshot]]''' - Settings and options for making a great screenshot!&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Terrain]]''' - a step-by-step guide for terrains.&lt;br /&gt;
* '''[[A Simple First Megatexture]]''' - a step-by-step guide for basic Megatextures.&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - more detailed guide for terrain meshes.&lt;br /&gt;
* '''[[An Advanced Terrain and Megatexture]]''' - a comprehensive guide for making detailed terrain models with Megatextures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Tutorial]]''' - The whole thing! Click below for smaller segments.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 1|Step 1]]''' - Design considerations, before you do anything else!&lt;br /&gt;
** '''[[Vehicle Tutorial Part 2|Step 2]]''' - Initial rough model, rig and basic script.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 3|Step 3]]''' - More advanced rig and scripting.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 4|Step 4]]''' - Further technical setup ideas.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models &amp;amp; Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Adding Custom Textures]]''' - Create materials to add your own custom textures to the game.&lt;br /&gt;
* '''[[Making A Normal Map]]''' - Using Renderbump to generate a bump-map from a high-poly model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Script &amp;amp; Code==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Coding ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Windows Code Notes]]''' - General information about compiling on Windows.&lt;br /&gt;
* '''[[Linux Code Notes]]''' - General information about compiling on Linux systems.&lt;br /&gt;
* '''[[Generating Compiled Scripts]]''' - Information on building a compiledscript DLL.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Declarations ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Materials]]''' - All you need to know about material declarations.&lt;br /&gt;
* '''[[Templates]]''' - Setting up templates to save time and effort.&lt;br /&gt;
* '''[[Surface Types]]''' - Available surface types for particle &amp;amp; sound effects.&lt;br /&gt;
* '''[[Skins]]''' - Easily switch textures on surfaces.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicle Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Scripting: Basic_Overview|Basic Overview]]''' - Introduction to vehicle setup.&lt;br /&gt;
* '''[[Vehicle Scripting: Entity_Definition|Entity Definition]]''' - One definition to rule them all!&lt;br /&gt;
* '''[[Vehicle Scripting: Vehicle_Definition|Vehicle Definition]]''' - Introduction to the ''.vscript'' file.&lt;br /&gt;
* '''[[Vehicle Scripting: Positions_&amp;amp;_Views|Positions &amp;amp; Views]]''' - Configuring player positions &amp;amp; camera views.&lt;br /&gt;
* '''[[Vehicle Scripting: Components|Components]]''' - Details of various vehicle components.&lt;br /&gt;
* '''[[Vehicle Scripting: Weapons|Weapons]]''' - Things that go boom!&lt;br /&gt;
* '''[[Vehicle Scripting: IK|IK]]''' - Inverse Kinematics &amp;amp; you...&lt;br /&gt;
* '''[[Vehicle Scripting: Cockpits|Cockpits]]''' - Cockpit setup.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Entity Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[EntityClass:Overview|Classes]]''' - Tree of entity types.&lt;br /&gt;
* '''[[ScriptEvent:List|Events]]''' - List of all script events.&lt;br /&gt;
* '''[[Scripting:Examples|Examples]]''' - Some example walkthoughs of building up a scripted entity.&lt;br /&gt;
* '''[[Script:Files|Script Files]]''' - List of the script files used by the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[GUIs|GUI Overview]]''' - Overview of the GUI system.&lt;br /&gt;
* '''[[GUIs: Event Based Scripting|Event Based Scripting]]''' - GUIs are event-based.&lt;br /&gt;
* '''[[GUIs: Materials|Materials]]''' - Using materials in GUIs.&lt;br /&gt;
* '''[[GUIs: Transitions|Transitions]]''' - Transitions.&lt;br /&gt;
* '''[[GUIs: Templates|Templates]]''' - Using templates in GUIs.&lt;br /&gt;
* '''[[GUIs: List Enumeration|List Enumeration]]''' - List enumerations.&lt;br /&gt;
* '''[[GUIs: Properties|Properties]]''' - Player/Global properties and more.&lt;br /&gt;
* '''[[GUIs: Timelines|Timelines]]''' - GUI timelines.&lt;br /&gt;
* '''[[GUIs: Layouts|Layouts]]''' - Window layouts.&lt;br /&gt;
* '''[[Reference (GUIs)|Reference]]''' - GUI reference.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== File Formats ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[File Formats|PROCB Mesh Data]]''' - Loading mesh data from a procb file.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== The Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Map]]''' - step-by-step guide towards making a simple map&lt;br /&gt;
* '''[[A Simple Second Map]]''' - step-by-step guide towards making a simple map&lt;br /&gt;
* '''[[A Simple First Terrain]]''' - step-by-step guide creating a simple terrain&lt;br /&gt;
* '''[[An Advanced Map]]''' - includes terrain&lt;br /&gt;
* '''[[Design: How do I|How do I ...?]]''' - Common and useful tasks&lt;br /&gt;
* '''[[Map Troubleshooting]]''' - Common problems and fixes&lt;br /&gt;
----&lt;br /&gt;
* '''[[Brush Basics]]'''&lt;br /&gt;
* '''[[Entity Basics]]'''&lt;br /&gt;
* '''[[Lighting Basics]]'''&lt;br /&gt;
* '''[[Portal Basics]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Common Textures]]'''&lt;br /&gt;
* '''[[Decals]]'''&lt;br /&gt;
* '''[[Editor Groups]]'''&lt;br /&gt;
* '''[[Map Objects]]'''&lt;br /&gt;
* '''[[References]]'''&lt;br /&gt;
* '''[[Sound]]'''&lt;br /&gt;
* '''[[Texturesheets]]'''&lt;br /&gt;
* '''[[Water]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Ambient Light Editor]]'''&lt;br /&gt;
* '''[[Atmosphere Editor]]'''&lt;br /&gt;
* '''[[Texture Editor]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Advanced Stuff ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Batches]]'''&lt;br /&gt;
* '''[[Deployables]]'''&lt;br /&gt;
* '''[[Detail Groups]]'''&lt;br /&gt;
* '''[[Developer cheats]]'''&lt;br /&gt;
* '''[[List of Entities]]''' - Descriptions for all entities&lt;br /&gt;
* '''[[LOD Groups]]'''&lt;br /&gt;
* '''[[Locations]]'''&lt;br /&gt;
* '''[[Model Instancing]]'''&lt;br /&gt;
* '''[[Occlusion Tests]]'''&lt;br /&gt;
* '''[[Performance Optimizations]]'''&lt;br /&gt;
* '''[[Surface Tree]]'''&lt;br /&gt;
* '''[[Surface Types]]'''&lt;br /&gt;
* '''[[Terrain Editing]]'''&lt;br /&gt;
* '''[[Terrain Editor]]'''&lt;br /&gt;
* '''[[Vehicle Route Constraint System]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Art==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[In-Game Models]]''' - Making models for use in the engine.&lt;br /&gt;
* '''[[Collision Meshes]]''' - Optimized models for in-game physics collision.&lt;br /&gt;
* '''[[High-Poly Models]]''' - Making source models for baking normal maps.&lt;br /&gt;
* '''[[Renderbump]]''' - Create normal maps from high-poly geometry.&lt;br /&gt;
* '''[[Imposters]]''' - Sprites used for rendering complex models cheaply at a distance.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Animation ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[MD5 Export Process]]''' - How to export an animated MD5.&lt;br /&gt;
* '''[[Vehicle Setup]]''' - How to set up a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Basic Texture Overview]]''' - Supported texture types and implementations.&lt;br /&gt;
* '''[[Texturesheets]]''' - Overview of what texturesheets are, and when to use them.&lt;br /&gt;
* '''[[The Atlas Editor]]''' - Create environment texture sheets to improve performance.&lt;br /&gt;
* '''[[RenderBumpFlat]]''' - Create normal-maps from high-poly geometry.&lt;br /&gt;
* '''[[Detail Textures]]''' - Add high-frequency detail to your textures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain Editing ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A Simple First Terrain]]''' - Simple steps to creating a terrain-based map.&lt;br /&gt;
* '''[[A Simple First Megatexture]]''' - Following on from the Simple First Terrain tutorial.&lt;br /&gt;
* '''[[Generate a MegaTexture]]''' - Render and compile your Megatexture.&lt;br /&gt;
* '''[[An Advanced Terrain and Megatexture]]''' - A detailed guide to making a realistic, natural terrain and Megatexture.&lt;br /&gt;
* '''[[Terrain Editor|EditWorld's Terrain Editor]]''' - Set up a Surface Tree for your Megatexture.&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - All aspects of terrain mesh creation including Out-of-Bounds geometry.&lt;br /&gt;
* '''[[Water Surfaces#Water Models|Water Surfaces]]''' - Create water to go with your landscape.&lt;br /&gt;
* '''[[STUFF System]]''' - Procedurally distribute models over your terrain mesh.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Atmospheres and Effects ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Atmosphere Editor|The Atmosphere Editor]]''' - Create and edit atmospheres for your map.&lt;br /&gt;
* '''[[Ambient Light Editor|The Ambient Light Editor]]''' - Create and edit ambient light setups.&lt;br /&gt;
* '''[[Environment Maps]]''' - Used for reflection effects.&lt;br /&gt;
* '''[[Water Surfaces]]''' - Creating water effects.&lt;br /&gt;
* '''[[Effects Editor|The Effects Editor]]''' - Create and edit particle effects.&lt;br /&gt;
* '''[[Cheap Decals]]''' - Bulletholes and other collision decals.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=A_Simple_First_Terrain&amp;diff=3888</id>
		<title>A Simple First Terrain</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=A_Simple_First_Terrain&amp;diff=3888"/>
		<updated>2007-12-05T10:33:51Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Assigning a Material */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the barebones guide towards creating your first simple terrain and adding it to a map. This terrain won't be as detailed or as attractive as a full terrain, but will demonstrate the basics of creating a terrain mesh, assigning a texture, and adding it in-game.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
'''For this tutorial you must:'''&lt;br /&gt;
* Have a modelling package that can export as OBJ&lt;br /&gt;
* Have basic modelling skills&lt;br /&gt;
* Have basic mapping skills&lt;br /&gt;
&lt;br /&gt;
If you can't do any of the above things, this tutorial is not for you!&lt;br /&gt;
&lt;br /&gt;
'''This tutorial covers:'''&lt;br /&gt;
* How to create a terrain mesh and caulk hull&lt;br /&gt;
* How to add a terrain mesh to a map&lt;br /&gt;
* How to assign a texture&lt;br /&gt;
* How to work with terrain meshes and map geometry&lt;br /&gt;
&lt;br /&gt;
'''This tutorial does not cover:'''&lt;br /&gt;
* How to use Blender/Maya/Lightwave/ZBrush/Mudbox/3DSMax&lt;br /&gt;
* How to create a megatexture&lt;br /&gt;
* How to create displacement maps&lt;br /&gt;
* Anything complicated&lt;br /&gt;
&lt;br /&gt;
== Building the Terrain Mesh ==&lt;br /&gt;
[[Image:simpleterrain_mesh.png|thumb|400px|A simple terrain mesh created in Blender]]&lt;br /&gt;
Use your preferred modelling package to create a basic terrain mesh that is exactly 32,768 units long and wide. &lt;br /&gt;
&lt;br /&gt;
It is preferable to keep the terrain as basic as possible, so it can be refined later on during the mapping process. For this reason, the terrain mesh here only contains a very very rough formation of bumps (or 'mountains' as they might be known)&lt;br /&gt;
&lt;br /&gt;
''While you can use any dimensions for your terrain mesh - it is strongly advised to stick to 8k*8k, 16*16k or 32k*32k''&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Creating a Caulk Hull ==&lt;br /&gt;
[[Image:simpleterrain_caulkhull.png|thumb|400px|The caulk hull]]&lt;br /&gt;
Since maps must be leak-free/sealed, maps with terrain must have a caulk hull to ensure this is the case.&lt;br /&gt;
&lt;br /&gt;
In this case, since the terrain is 32768 units long and wide, the caulk hull should also be the same dimensions. The caulk hull is quickly created from a brush 32768 units long, 32768 wide and 16384 units tall, which is then hollowed. The brushes are also assigned the 'editor/noimpactcaulk' texture, which prevents gunshots and projectiles from hitting the surfaces of the hull (they simply disappear instead.)&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Setting The Terrain ==&lt;br /&gt;
[[Image:simpleterrain_terraineditor.png|thumb|200px|The Terrain Editor]]&lt;br /&gt;
The mesh must be triangulated before it is exported as an .OBJ, and saved as {{filename|models/terrain/simpleterrain.obj}}. At this stage, a texture is not necessary, and can be set later.&lt;br /&gt;
&lt;br /&gt;
Terrains are set up in the Terrain Editor, accessible via {{accelkey|shift}}{{accelkey|N}}. This tool creates a Surface Tree file ({{filename|.sft}}) that contains all the information about the terrain, including roads, stamps, and detail texture information that MegaBuild needs to generate a Megatexture.&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
[[Image:simpleterrain_terraineditor2.png|thumb|200px|Root node set up to use the correct terrain mesh]]&lt;br /&gt;
To set the mesh to the map, first press 'Begin Editing' at the bottom of the Terrain Editor window. Then {{accelbtn|RMB}} on the left-hand pane and create a new Tree via the menu. This creates a Root node on which all the terrain information resides. Clicking on the Root node allows a model to be specified - set {{keyname|Model}} to the name of the terrain mesh, in this case {{keyvalue|models/terrain/simpleterrain.obj}}. Press {{accelkey|enter}} to confirm and the terrain should appear in the 3D view, with the red placeholder material.&lt;br /&gt;
&lt;br /&gt;
At this point you may add a player spawn, an atmosphere, and compile the level to check the terrain. However, since there is no material set, there will be rendering issues.&lt;br /&gt;
&lt;br /&gt;
''You may find the 3D terrain is partly covered or obscured by the base of caulk hull. This can be fixed by moving or resizing the caulk hull so it contains the terrain properly.''&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Assigning a Material ==&lt;br /&gt;
[[Image:simpleterrain_textured.png|thumb|200px|Textured terrain mesh]]&lt;br /&gt;
It is not possible to assign materials to terrain meshes in EditWorld, you must do this process in your modelling application.&lt;br /&gt;
&lt;br /&gt;
For testing purposes, terrain meshes are often assigned a temporary material until they are in a state that they can be textured properly. Traditionally, this has been one of the existing materials in the game, such as concrete - {{filename|textures/concrete/concrete10}} (although any valid material will work.)&lt;br /&gt;
&lt;br /&gt;
Due to an oddity with the OBJ format, the material name {{filename|textures/concrete/concrete10}} is not valid inside an OBJ file. Instead, the material should be named {{filename|textures__concrete__concrete10}}, where the slashes are replaced by double underscores (single underscores will not work!).&lt;br /&gt;
&lt;br /&gt;
Setting the mesh material differs between modelling packages. However, since OBJ files are text, they can be manually edited with a text editor instead of using the modelling application. The OBJ will contain a line (often about halfway through) starting with &amp;lt;tt&amp;gt;usemtl&amp;lt;/tt&amp;gt; followed by an arbitrary texture name. This line should be replaced with &amp;lt;tt&amp;gt;usemtl textures__concrete__concrete10&amp;lt;/tt&amp;gt; and the file saved.&lt;br /&gt;
&lt;br /&gt;
If you are using Lightwave, 3ds Max, or Maya, you should not have to text-edit any files, just set the material name in the relevant section of the material editor.&lt;br /&gt;
&lt;br /&gt;
editWorld can then be told to reload the OBJ (now with a proper material declaration) via ''Misc -&amp;gt; Reload -&amp;gt; Models'' or clicking the &amp;quot;Reload Models&amp;quot; button.&lt;br /&gt;
&lt;br /&gt;
''Instead of using the concrete texture, you can use one of the existing Megatextures. For example, to use Area22's megatexture, simply set the mesh's material name to {{filename|megatextures__area22}}.''&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Map Geometry ==&lt;br /&gt;
[[Image:simpleterrain_building.png|thumb|200px|Exported geometry used to help edit the terrain]]&lt;br /&gt;
The map and terrain are now in a state that they can be used for level design, however difficulty can arise ensuring the structures in the level fit to the terrain. &lt;br /&gt;
&lt;br /&gt;
This can be countered using editWorld's export tool, which exports map geometry for importing into the modelling package alongside the terrain. This can be done by selecting the geometry to export (such as a building or a reference, located anywhere in the map), and pressing {{accelkey|ctrl}}{{accelkey|e}}. This writes the geometry to {{filename|models/export.obj}}.&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
[[Image:simpleterrain_refinedmesh.png|thumb|200px|Exported geometry used to help edit the terrain]]&lt;br /&gt;
The exported geometry can then be used as a template to modify the terrain accordingly - such as flattening areas of land to fit buildings, cutting holes for entrances of simply adding more detail. The modified terrain mesh is then saved for further work in editWorld.&lt;br /&gt;
&lt;br /&gt;
Most often, terrain vertices are snapped to the corners of buildings and structures, such that the terrain faces now covered by the building can be deleted. This allows for buildings to sink into the terrain, and lead into underground areas of the map.&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
[[Image:simpleterrain_fixedterrain.png|thumb|200px|Terrain after being edited to fit the geometry.]]&lt;br /&gt;
This process of refinement is repeated many times throughout the life of the map, ensuring the terrain precisely fits the map geometry. &lt;br /&gt;
&lt;br /&gt;
''When working with terrained maps, most level geometry is stored in separate [[References]] to allow for easy editing.''&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== That's it! ==&lt;br /&gt;
[[Image:simpleterrain_ingame.png|thumb|400px|Terrain in-game]]&lt;br /&gt;
You've now created a map with your very own terrain!&lt;br /&gt;
&lt;br /&gt;
'''Things to try:'''&lt;br /&gt;
* Assign a different texture to the terrain mesh&lt;br /&gt;
* Make the terrain an island with [[Water Surfaces]]&lt;br /&gt;
* Cut a hole in the terrain to create an underground area&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Advanced Bits and Pieces ==&lt;br /&gt;
&lt;br /&gt;
=== Atmosphere ===&lt;br /&gt;
You may find your atmosphere doesn't project sunlight and shadow correctly. This is because the engine needs to know the area you have created is outside. The simplest way to do this is to create a brush in the corner of the caulk hull, textured with 'editor/outsideportal'.&lt;br /&gt;
&lt;br /&gt;
=== Terrain Mesh UVs ===&lt;br /&gt;
If you find your terrain is a constant grey, rather than showing a texture (as in the screenshots) it may mean your mesh UVs are incorrect. Consult your modelling package to find out how to reset or unwrap the UVs on the terrain mesh.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [[Making a Terrain Model]] - an advanced guide for complete terrain creation&lt;br /&gt;
* [[Design: How do I|How do I...?]] - how to do common tasks&lt;br /&gt;
* [[A Simple First Map]] - the first mapping tutorial&lt;br /&gt;
* [[A Simple Second Map]] - the second mapping tutorial&lt;br /&gt;
* [[An Advanced Map]] - a more complex guide to creating a map, including terrain&lt;br /&gt;
* [[Design: Troubleshooting]] - troubleshooting guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basic Level Design]]&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Vehicle_Scripting:_IK&amp;diff=3887</id>
		<title>Vehicle Scripting: IK</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Vehicle_Scripting:_IK&amp;diff=3887"/>
		<updated>2007-12-04T17:48:33Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Describes IK used for vehicle positions and suspension.&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{main|Vehicle Scripting: IK}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Vehicle Position IK =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Inverse kinematic (IK) systems can be added to vehicles, allowing joints to be manipulated based on the player's view direction, amongst other things. For example aiming a weapon by rotating a turret and elevating a barrel, or keeping the player's hands on the steering wheel.&lt;br /&gt;
&lt;br /&gt;
IK systems are added within positionDef blocks in the vehicleDef. &lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
* &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; - the name of the IK system, to identify it in the code.&lt;br /&gt;
* &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; - the code class to use, defines the behaviour of the IK system. Types detailed below.&lt;br /&gt;
* &amp;lt;tt&amp;gt;parms&amp;lt;/tt&amp;gt; - a block of key/value pairs, providing the parameters to the code class.&lt;br /&gt;
&lt;br /&gt;
The IK systems can also have pitch &amp;amp; yaw clamps.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
One key is common to all the IK types:&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;weapon&amp;quot;&amp;lt;/tt&amp;gt; - The name of the weapon associated with this IK. The player using this weapon is the player that will govern the IK. If not specified then the player in the position is the one that governs the IK. The name used here should be the value of the &amp;lt;tt&amp;gt;&amp;quot;weapon_name&amp;quot;&amp;lt;/tt&amp;gt; key in the stringMap of the desired weapon.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleIKArms ===&lt;br /&gt;
&lt;br /&gt;
This is used for weapons that are in an arm-like configuration - for example a gun on a tripod.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is yawed to aim&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointWrist&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is pitched to aim - this should be down the hierarchy from &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointMuzzle&amp;quot;&amp;lt;/tt&amp;gt; - Joint that needs to be pointed at the target - eg the muzzle of the weapon. This should be down the hierarchy from jointMuzzle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;pitchAxis&amp;quot;&amp;lt;/tt&amp;gt; - Selects which axis of the wrist joint is rotated to pitch towards the target. &lt;br /&gt;
*: 1 = x-axis, 2 = y-axis, 3 = z-axis. Making this value negative reverses the direction of the pitch. &lt;br /&gt;
*: Defaults to 2.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleSwivel===&lt;br /&gt;
&lt;br /&gt;
This IK type simply rotates the joint with the aim of the player associated.&lt;br /&gt;
&lt;br /&gt;
'''Keys'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint to be rotated.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleWeaponAimer ===&lt;br /&gt;
&lt;br /&gt;
This IK attempts to aim the muzzle joint at the player's target. This is the form of IK integrated into the &amp;lt;tt&amp;gt;sdVehicleWeaponFixedMinigun&amp;lt;/tt&amp;gt; weapon type, with differing key names.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointShoulder&amp;quot;&amp;lt;/tt&amp;gt; - Base joint for the aiming. If not specified, the parent joint of the elbow is used.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is yawed to aim&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointWrist&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is pitched to aim - this should be down the hierarchy from &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointMuzzle&amp;quot;&amp;lt;/tt&amp;gt; - Joint that needs to be pointed at the target - eg the muzzle of the weapon. This should be down the hierarchy from jointMuzzle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;deployed_anim&amp;quot;&amp;lt;/tt&amp;gt; - Animation that is used to gather initial calibration parameters (for models that have a differing animation at spawn)&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;fix_barrel&amp;quot;&amp;lt;/tt&amp;gt; - Re-orient a wayward muzzle joint&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;invert_pitch&amp;quot;&amp;lt;/tt&amp;gt; - Flips the pitching behaviour of the IK&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleJointAimer ===&lt;br /&gt;
&lt;br /&gt;
This aims a single joint at the player's target.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - Joint to be aimed&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;weapon2&amp;quot;&amp;lt;/tt&amp;gt; - Allows a second weapon to be associated with the IK, so that it also aims the joint when that weapon is in use.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleIK_Steering ===&lt;br /&gt;
&lt;br /&gt;
This IK is used to keep the player's hand joints attached to two joints on the vehicle - for example a steering wheel, or the handlebars of the Husky.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_left&amp;quot;&amp;lt;/tt&amp;gt; - The joint the left hand should be attached to&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_right&amp;quot;&amp;lt;/tt&amp;gt; - The joint the right hand should be attached to&lt;br /&gt;
&lt;br /&gt;
= Suspension IK =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Vehicle &amp;lt;tt&amp;gt;wheel&amp;lt;/tt&amp;gt; &amp;amp; &amp;lt;tt&amp;gt;suspension&amp;lt;/tt&amp;gt; parts can have a string map associated with them to give them IK. This allows joints to be specially animated, for example wishbone suspension or landing legs. They are provided with information from the vehicle part about the length of the suspension, and the suspension IK manipulate joints to make it look like the vehicle is reacting to the changing length.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
There are a number of different IK types that can be used, each providing a different appearance. The type is selected with the &amp;lt;tt&amp;gt;&amp;quot;type&amp;quot;&amp;lt;/tt&amp;gt; key of the string map. The types of IK are listed below.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;pivot&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
In this system the suspension offset is achieved by rotating a single joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint that is rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;reverse&amp;quot;&amp;lt;/tt&amp;gt; - Reverses the response to the changing length&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;double_wishbone&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This system rotates two joints, an upper joint and a lower joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_upper&amp;quot;&amp;lt;/tt&amp;gt; - The upper joint to be rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_lower&amp;quot;&amp;lt;/tt&amp;gt; - The lower joint to be rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;lerp_scale&amp;quot;&amp;lt;/tt&amp;gt; - How quickly the system responds to changes in suspension length. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; means it will instantly reach the new position, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; means it will never respond. Defaults to &amp;lt;tt&amp;gt;0.5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;vertical&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This type simply moves a single joint up and down as the suspension length changes.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint to be moved up and down.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;2jointleg&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This type rotates two joints - a &amp;quot;hip&amp;quot; joint and a &amp;quot;knee&amp;quot; joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_hip&amp;quot;&amp;lt;/tt&amp;gt; - The hip joint.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_knee&amp;quot;&amp;lt;/tt&amp;gt; - The knee joint.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;dir_hip&amp;quot;&amp;lt;/tt&amp;gt; - The direction (in the local space of the vehicle) the hip should rotate in. Defaults to &amp;lt;tt&amp;gt;&amp;quot;0 0 1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;lerp_scale&amp;quot;&amp;lt;/tt&amp;gt; - How quickly the system responds to changes in suspension length. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; means it will instantly reach the new position, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; means it will never respond. Defaults to &amp;lt;tt&amp;gt;0.5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;reverse&amp;quot;&amp;lt;/tt&amp;gt; - Reverses the response to the changing length&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Vehicle_Scripting:_IK&amp;diff=3886</id>
		<title>Vehicle Scripting: IK</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Vehicle_Scripting:_IK&amp;diff=3886"/>
		<updated>2007-12-04T17:48:24Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* sdVehicleWeaponAimer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Describes IK used for vehicle positions and suspension.&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{main|Vehicle Scripting: IK}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Vehicle Position IK =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Inverse kinematic (IK) systems can be added to vehicles, allowing joints to be manipulated based on the player's view direction, amongst other things. For example aiming a weapon by rotating a turret and elevating a barrel, or keeping the player's hands on the steering wheel.&lt;br /&gt;
&lt;br /&gt;
IK systems are added within positionDef blocks in the vehicleDef. &lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
* &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; - the name of the IK system, to identify it in the code.&lt;br /&gt;
* &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; - the code class to use, defines the behaviour of the IK system. Types detailed below.&lt;br /&gt;
* &amp;lt;tt&amp;gt;parms&amp;lt;/tt&amp;gt; - a block of key/value pairs, providing the parameters to the code class.&lt;br /&gt;
&lt;br /&gt;
The IK systems can also have pitch &amp;amp; yaw clamps. '''TODO: FLESH THIS OUT'''&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
One key is common to all the IK types:&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;weapon&amp;quot;&amp;lt;/tt&amp;gt; - The name of the weapon associated with this IK. The player using this weapon is the player that will govern the IK. If not specified then the player in the position is the one that governs the IK. The name used here should be the value of the &amp;lt;tt&amp;gt;&amp;quot;weapon_name&amp;quot;&amp;lt;/tt&amp;gt; key in the stringMap of the desired weapon.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleIKArms ===&lt;br /&gt;
&lt;br /&gt;
This is used for weapons that are in an arm-like configuration - for example a gun on a tripod.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is yawed to aim&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointWrist&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is pitched to aim - this should be down the hierarchy from &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointMuzzle&amp;quot;&amp;lt;/tt&amp;gt; - Joint that needs to be pointed at the target - eg the muzzle of the weapon. This should be down the hierarchy from jointMuzzle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;pitchAxis&amp;quot;&amp;lt;/tt&amp;gt; - Selects which axis of the wrist joint is rotated to pitch towards the target. &lt;br /&gt;
*: 1 = x-axis, 2 = y-axis, 3 = z-axis. Making this value negative reverses the direction of the pitch. &lt;br /&gt;
*: Defaults to 2.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleSwivel===&lt;br /&gt;
&lt;br /&gt;
This IK type simply rotates the joint with the aim of the player associated.&lt;br /&gt;
&lt;br /&gt;
'''Keys'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint to be rotated.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleWeaponAimer ===&lt;br /&gt;
&lt;br /&gt;
This IK attempts to aim the muzzle joint at the player's target. This is the form of IK integrated into the &amp;lt;tt&amp;gt;sdVehicleWeaponFixedMinigun&amp;lt;/tt&amp;gt; weapon type, with differing key names.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointShoulder&amp;quot;&amp;lt;/tt&amp;gt; - Base joint for the aiming. If not specified, the parent joint of the elbow is used.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is yawed to aim&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointWrist&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is pitched to aim - this should be down the hierarchy from &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointMuzzle&amp;quot;&amp;lt;/tt&amp;gt; - Joint that needs to be pointed at the target - eg the muzzle of the weapon. This should be down the hierarchy from jointMuzzle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;deployed_anim&amp;quot;&amp;lt;/tt&amp;gt; - Animation that is used to gather initial calibration parameters (for models that have a differing animation at spawn)&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;fix_barrel&amp;quot;&amp;lt;/tt&amp;gt; - Re-orient a wayward muzzle joint&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;invert_pitch&amp;quot;&amp;lt;/tt&amp;gt; - Flips the pitching behaviour of the IK&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleJointAimer ===&lt;br /&gt;
&lt;br /&gt;
This aims a single joint at the player's target.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - Joint to be aimed&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;weapon2&amp;quot;&amp;lt;/tt&amp;gt; - Allows a second weapon to be associated with the IK, so that it also aims the joint when that weapon is in use.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleIK_Steering ===&lt;br /&gt;
&lt;br /&gt;
This IK is used to keep the player's hand joints attached to two joints on the vehicle - for example a steering wheel, or the handlebars of the Husky.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_left&amp;quot;&amp;lt;/tt&amp;gt; - The joint the left hand should be attached to&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_right&amp;quot;&amp;lt;/tt&amp;gt; - The joint the right hand should be attached to&lt;br /&gt;
&lt;br /&gt;
= Suspension IK =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Vehicle &amp;lt;tt&amp;gt;wheel&amp;lt;/tt&amp;gt; &amp;amp; &amp;lt;tt&amp;gt;suspension&amp;lt;/tt&amp;gt; parts can have a string map associated with them to give them IK. This allows joints to be specially animated, for example wishbone suspension or landing legs. They are provided with information from the vehicle part about the length of the suspension, and the suspension IK manipulate joints to make it look like the vehicle is reacting to the changing length.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
There are a number of different IK types that can be used, each providing a different appearance. The type is selected with the &amp;lt;tt&amp;gt;&amp;quot;type&amp;quot;&amp;lt;/tt&amp;gt; key of the string map. The types of IK are listed below.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;pivot&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
In this system the suspension offset is achieved by rotating a single joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint that is rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;reverse&amp;quot;&amp;lt;/tt&amp;gt; - Reverses the response to the changing length&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;double_wishbone&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This system rotates two joints, an upper joint and a lower joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_upper&amp;quot;&amp;lt;/tt&amp;gt; - The upper joint to be rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_lower&amp;quot;&amp;lt;/tt&amp;gt; - The lower joint to be rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;lerp_scale&amp;quot;&amp;lt;/tt&amp;gt; - How quickly the system responds to changes in suspension length. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; means it will instantly reach the new position, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; means it will never respond. Defaults to &amp;lt;tt&amp;gt;0.5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;vertical&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This type simply moves a single joint up and down as the suspension length changes.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint to be moved up and down.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;2jointleg&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This type rotates two joints - a &amp;quot;hip&amp;quot; joint and a &amp;quot;knee&amp;quot; joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_hip&amp;quot;&amp;lt;/tt&amp;gt; - The hip joint.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_knee&amp;quot;&amp;lt;/tt&amp;gt; - The knee joint.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;dir_hip&amp;quot;&amp;lt;/tt&amp;gt; - The direction (in the local space of the vehicle) the hip should rotate in. Defaults to &amp;lt;tt&amp;gt;&amp;quot;0 0 1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;lerp_scale&amp;quot;&amp;lt;/tt&amp;gt; - How quickly the system responds to changes in suspension length. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; means it will instantly reach the new position, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; means it will never respond. Defaults to &amp;lt;tt&amp;gt;0.5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;reverse&amp;quot;&amp;lt;/tt&amp;gt; - Reverses the response to the changing length&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Vehicle_Scripting:_IK&amp;diff=3885</id>
		<title>Vehicle Scripting: IK</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Vehicle_Scripting:_IK&amp;diff=3885"/>
		<updated>2007-12-04T17:48:10Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* sdVehicleWeaponAimer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Describes IK used for vehicle positions and suspension.&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{main|Vehicle Scripting: IK}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Vehicle Position IK =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Inverse kinematic (IK) systems can be added to vehicles, allowing joints to be manipulated based on the player's view direction, amongst other things. For example aiming a weapon by rotating a turret and elevating a barrel, or keeping the player's hands on the steering wheel.&lt;br /&gt;
&lt;br /&gt;
IK systems are added within positionDef blocks in the vehicleDef. &lt;br /&gt;
&lt;br /&gt;
Properties:&lt;br /&gt;
* &amp;lt;tt&amp;gt;name&amp;lt;/tt&amp;gt; - the name of the IK system, to identify it in the code.&lt;br /&gt;
* &amp;lt;tt&amp;gt;type&amp;lt;/tt&amp;gt; - the code class to use, defines the behaviour of the IK system. Types detailed below.&lt;br /&gt;
* &amp;lt;tt&amp;gt;parms&amp;lt;/tt&amp;gt; - a block of key/value pairs, providing the parameters to the code class.&lt;br /&gt;
&lt;br /&gt;
The IK systems can also have pitch &amp;amp; yaw clamps. '''TODO: FLESH THIS OUT'''&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
One key is common to all the IK types:&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;weapon&amp;quot;&amp;lt;/tt&amp;gt; - The name of the weapon associated with this IK. The player using this weapon is the player that will govern the IK. If not specified then the player in the position is the one that governs the IK. The name used here should be the value of the &amp;lt;tt&amp;gt;&amp;quot;weapon_name&amp;quot;&amp;lt;/tt&amp;gt; key in the stringMap of the desired weapon.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleIKArms ===&lt;br /&gt;
&lt;br /&gt;
This is used for weapons that are in an arm-like configuration - for example a gun on a tripod.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is yawed to aim&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointWrist&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is pitched to aim - this should be down the hierarchy from &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointMuzzle&amp;quot;&amp;lt;/tt&amp;gt; - Joint that needs to be pointed at the target - eg the muzzle of the weapon. This should be down the hierarchy from jointMuzzle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;pitchAxis&amp;quot;&amp;lt;/tt&amp;gt; - Selects which axis of the wrist joint is rotated to pitch towards the target. &lt;br /&gt;
*: 1 = x-axis, 2 = y-axis, 3 = z-axis. Making this value negative reverses the direction of the pitch. &lt;br /&gt;
*: Defaults to 2.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleSwivel===&lt;br /&gt;
&lt;br /&gt;
This IK type simply rotates the joint with the aim of the player associated.&lt;br /&gt;
&lt;br /&gt;
'''Keys'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint to be rotated.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleWeaponAimer ===&lt;br /&gt;
&lt;br /&gt;
This IK attempts to aim the muzzle joint at the player's target. This is the form of IK integrated into the &amp;lt;tt&amp;gt;sdVehicleWeaponFixedMinigun&amp;lt;/tt&amp;gt; weapon type, with differing key names. '''TODO: Flesh this out more.'''&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointShoulder&amp;quot;&amp;lt;/tt&amp;gt; - Base joint for the aiming. If not specified, the parent joint of the elbow is used.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is yawed to aim&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointWrist&amp;quot;&amp;lt;/tt&amp;gt; - Joint that is pitched to aim - this should be down the hierarchy from &amp;lt;tt&amp;gt;&amp;quot;jointElbow&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;jointMuzzle&amp;quot;&amp;lt;/tt&amp;gt; - Joint that needs to be pointed at the target - eg the muzzle of the weapon. This should be down the hierarchy from jointMuzzle.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;deployed_anim&amp;quot;&amp;lt;/tt&amp;gt; - Animation that is used to gather initial calibration parameters (for models that have a differing animation at spawn)&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;fix_barrel&amp;quot;&amp;lt;/tt&amp;gt; - Re-orient a wayward muzzle joint&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;invert_pitch&amp;quot;&amp;lt;/tt&amp;gt; - Flips the pitching behaviour of the IK&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleJointAimer ===&lt;br /&gt;
&lt;br /&gt;
This aims a single joint at the player's target.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - Joint to be aimed&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;weapon2&amp;quot;&amp;lt;/tt&amp;gt; - Allows a second weapon to be associated with the IK, so that it also aims the joint when that weapon is in use.&lt;br /&gt;
&lt;br /&gt;
=== sdVehicleIK_Steering ===&lt;br /&gt;
&lt;br /&gt;
This IK is used to keep the player's hand joints attached to two joints on the vehicle - for example a steering wheel, or the handlebars of the Husky.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_left&amp;quot;&amp;lt;/tt&amp;gt; - The joint the left hand should be attached to&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_right&amp;quot;&amp;lt;/tt&amp;gt; - The joint the right hand should be attached to&lt;br /&gt;
&lt;br /&gt;
= Suspension IK =&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
&lt;br /&gt;
Vehicle &amp;lt;tt&amp;gt;wheel&amp;lt;/tt&amp;gt; &amp;amp; &amp;lt;tt&amp;gt;suspension&amp;lt;/tt&amp;gt; parts can have a string map associated with them to give them IK. This allows joints to be specially animated, for example wishbone suspension or landing legs. They are provided with information from the vehicle part about the length of the suspension, and the suspension IK manipulate joints to make it look like the vehicle is reacting to the changing length.&lt;br /&gt;
&lt;br /&gt;
== Types ==&lt;br /&gt;
&lt;br /&gt;
There are a number of different IK types that can be used, each providing a different appearance. The type is selected with the &amp;lt;tt&amp;gt;&amp;quot;type&amp;quot;&amp;lt;/tt&amp;gt; key of the string map. The types of IK are listed below.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;pivot&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
In this system the suspension offset is achieved by rotating a single joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint that is rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;reverse&amp;quot;&amp;lt;/tt&amp;gt; - Reverses the response to the changing length&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;double_wishbone&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This system rotates two joints, an upper joint and a lower joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_upper&amp;quot;&amp;lt;/tt&amp;gt; - The upper joint to be rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_lower&amp;quot;&amp;lt;/tt&amp;gt; - The lower joint to be rotated&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;lerp_scale&amp;quot;&amp;lt;/tt&amp;gt; - How quickly the system responds to changes in suspension length. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; means it will instantly reach the new position, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; means it will never respond. Defaults to &amp;lt;tt&amp;gt;0.5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;vertical&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This type simply moves a single joint up and down as the suspension length changes.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint&amp;quot;&amp;lt;/tt&amp;gt; - The joint to be moved up and down.&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;tt&amp;gt;&amp;quot;2jointleg&amp;quot;&amp;lt;/tt&amp;gt; ===&lt;br /&gt;
&lt;br /&gt;
This type rotates two joints - a &amp;quot;hip&amp;quot; joint and a &amp;quot;knee&amp;quot; joint.&lt;br /&gt;
&lt;br /&gt;
'''Keys:'''&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_hip&amp;quot;&amp;lt;/tt&amp;gt; - The hip joint.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;joint_knee&amp;quot;&amp;lt;/tt&amp;gt; - The knee joint.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;dir_hip&amp;quot;&amp;lt;/tt&amp;gt; - The direction (in the local space of the vehicle) the hip should rotate in. Defaults to &amp;lt;tt&amp;gt;&amp;quot;0 0 1&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;lerp_scale&amp;quot;&amp;lt;/tt&amp;gt; - How quickly the system responds to changes in suspension length. &amp;lt;tt&amp;gt;1&amp;lt;/tt&amp;gt; means it will instantly reach the new position, &amp;lt;tt&amp;gt;0&amp;lt;/tt&amp;gt; means it will never respond. Defaults to &amp;lt;tt&amp;gt;0.5&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* &amp;lt;tt&amp;gt;&amp;quot;reverse&amp;quot;&amp;lt;/tt&amp;gt; - Reverses the response to the changing length&lt;br /&gt;
&lt;br /&gt;
[[Category:Vehicles]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Texture_Editor&amp;diff=3474</id>
		<title>Texture Editor</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Texture_Editor&amp;diff=3474"/>
		<updated>2007-11-21T18:01:37Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Finding a texture: The Media Inspector */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finding a texture: The Media Inspector ==&lt;br /&gt;
[[Image:media_insp.jpg|frame|left|Media Inspector]]&lt;br /&gt;
&lt;br /&gt;
The first step in texturing a brush or patch mesh is to select a texture.&lt;br /&gt;
In this example {{filename|base\texturesheets\valley\valley_wall_10_ts_d}} is used.&lt;br /&gt;
Textures are selected in the '''Media Inspector'''. &lt;br /&gt;
Browse to the directory where the texture is stored and highlight it.&lt;br /&gt;
* Using the {{accelkey|arrow keys}} you can step down through the available textures which will be displayed in the lit texure window of the '''Media Inspector'''.&lt;br /&gt;
* You can zoom in and out of the texture by dragging {{accelkey|shift}}{{accelbtn|rmb}} left and right.&lt;br /&gt;
* The image in the texture preview window of the '''Media Inspector''' can be shifted by {{accelbtn|rmb}}-dragging. These can be useful when dealing with texture sheets which can be quite tall.&lt;br /&gt;
* If you know the name of the texture you want to use, typing its name in the filter will allow the inspector to show only materials with this text in it.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Viewing a texture: The Textures Inspector ==&lt;br /&gt;
[[Image:textures_insp.jpg|frame|left|Textures Inspector]]&lt;br /&gt;
Selecting a texture in the '''Media Inspector''' places it in the '''Textures Inspector'''. From here it can be applied to a brush or patch mesh.&lt;br /&gt;
&lt;br /&gt;
The '''Textures Inspector''' displays textures in a 2D view.&lt;br /&gt;
* Texture directories are indicated and can be collapsed by pressing it's name. This can be useful if there are a lot of textures used.&lt;br /&gt;
* The currently selected texture is highlighted with a red box.&lt;br /&gt;
* The 2Dtexture view can be scaled by pressing {{accelkey|alt}} and {{accelbtn|rmb}} and moving the  mouse left or right. This view can also be scrolled by holding '{{accelbtn|rmb}} and moving the mouse up or down or using the {{accelbtn|mouse wheel}}.&lt;br /&gt;
* You can add often used textures such as Caulk to a favourites panel at the bottom of the '''Textures Inspector''' by pressing the {{accelbtn|rmb}} over the texture and selecting  &amp;quot;Add to favourites&amp;quot; from the menu.&lt;br /&gt;
* If you know the name of the texture you want to use, typing it's name in the filter will allow the inspector to show only materials with this name&lt;br /&gt;
* It is possible to further filter textures by using the options in the &amp;quot;Materials&amp;quot; menu of  editworld. From here you can Show/Hide all textures which have been selected in the '''Media Inspector''', or show only those textures in use in the map.&lt;br /&gt;
* To view the material for a texture, press {{accelbtn|rmb}} over the texture and select  &amp;quot;View material&amp;quot; from the menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To apply a texture, select the brush, face, or patch and highlight the required texture in the Textures Inspector.&lt;br /&gt;
&lt;br /&gt;
{{clear}}&lt;br /&gt;
&lt;br /&gt;
== Texturing using the Texture Editor ==&lt;br /&gt;
[[Image:texture_editor_insp.jpg|frame|left|Texture Editor Inspector]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once a texture is applied to the face of a brush it must be aligned to fit correctly to that face. This can be done numerically in the '''Surfaces Inspector''' (as with in previous versions of Radiant) by using the shift, fit, scale and rotate options.&lt;br /&gt;
&lt;br /&gt;
* Note: if using the '''Surfaces Inspector''' for texturing it is useful to note that by activating any numerical field by highlighting it's value in the inspector, you can use the {{accelbtn|mouse wheel}} to shift, scale or rotate by the amount indicated.&lt;br /&gt;
&lt;br /&gt;
When texturing objects with [[Texturesheets]] it is often the case that only part of that texture is required to be fitted exactly to a face. It is possible to do this using the '''Surfaces Inspector''' but it is much more convenient to use the '''Texture Editor Inspector'''.&lt;br /&gt;
&lt;br /&gt;
Once applied, the texture on a selected face appears in the '''Texture Editor Inspector'''. The region of the texture which will be applied to the selected face is highlighted by the red box. This is the texture region and it's size in game units is indicated in the texture view.&lt;br /&gt;
Textures appear tiled in the texture view. In the centre, one instance of the texture is lit and surrounded by a white box.&lt;br /&gt;
&lt;br /&gt;
The scale and position of the texture region can be altered either numerically in the bounds section (based around the origin of the red region box which is it's bottom left corner) or by using the mouse to scale/shift the texture region box in the texture window. It's important to note that this inspector is used to fit the texture to the face and is not an indication of the uv's of that face. So for example if you fit a texture using the '''Texture Editor Inspector''' and then shift it on the brush face using the '''Surfaces Inspector''' the texture region box will not update to indicate this.&lt;br /&gt;
Double clicking in the red box will reset the texture region scale and position to that indicated by the red box.&lt;br /&gt;
&lt;br /&gt;
* Note: The movement/scaling amount of the texture region is defined by the grid size. So for example, for very precise shifts or scales of the texture region use lower grid sizes. These can be changed using the number keys.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basic Level Design]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3409</id>
		<title>Generating Compiled Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3409"/>
		<updated>2007-11-21T16:24:42Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Compiled scripts are automatically generated from the game's interpreted script files. They use less memory, and run more quickly than interpreted scripts. Interpreted scripts have the advantage of quick turnaround when developing. For a final release of a mod, you should consider using compiled scripts.&lt;br /&gt;
&lt;br /&gt;
==Exporting the Scripts==&lt;br /&gt;
Start the game up, and when it has finished loading and you are at the main menu, bring down the console and enter &amp;quot;exportScript&amp;quot;, minus the quotes. Make sure to check there are no errors on the console. If there are none, you can exit the game.&lt;br /&gt;
&lt;br /&gt;
This process will have added several .cpp and .h files to &amp;quot;base/src&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Compiling the Scripts==&lt;br /&gt;
Open the &amp;quot;base/src/base&amp;quot; folder. Inside this folder is a file called &amp;quot;compiledscriptx86.sln&amp;quot;, which you can open with Visual Studio.&lt;br /&gt;
&lt;br /&gt;
Once opened, there should be a drop down box on the toolbar, ensure this is set to &amp;quot;Release&amp;quot;. After this, select &amp;quot;Build Solution&amp;quot; from the &amp;quot;Build&amp;quot; menu. Once completed the build console should state that is is completed with 0 errors and warnings.&lt;br /&gt;
&lt;br /&gt;
If not, you should seek a programmer's help.The most likely case for this happening is that the project file is out of date when someone has added or removed a script class, but this should not be a common occurrence.&lt;br /&gt;
&lt;br /&gt;
==After Compiling the Scripts==&lt;br /&gt;
Assuming the compile process has completed successfully, you can find your compiled script DLL in base/src/base/build/win32/release/. Copy CompiledScriptx86.dll to your mod's base folder.&lt;br /&gt;
&lt;br /&gt;
==Using Compiled Scripts==&lt;br /&gt;
After you've placed CompiledScriptx86.dll where the game can find it, ensure that g_useCompiledScript is set to 1 before loading a map. The game should automatically load your custom script dll.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3408</id>
		<title>Generating Compiled Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3408"/>
		<updated>2007-11-21T16:23:36Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Compiled scripts are automatically generated from the game's interpreted script files. They use less memory, and run more quickly than interpreted scripts. Interpreted scripts have the advantage of quick turnaround when developing. For a final release of a mod, you should consider using compiled scripts.&lt;br /&gt;
&lt;br /&gt;
==Exporting the Scripts==&lt;br /&gt;
Start the game up, and when it has finished loading and you are at the main menu, bring down the console and enter &amp;quot;exportScript&amp;quot;, minus the quotes. Make sure to check there are no errors on the console. If there are none, you can exit the game.&lt;br /&gt;
&lt;br /&gt;
This process will have added several .cpp and .h files to &amp;quot;base/src&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Compiling the Scripts==&lt;br /&gt;
Open the &amp;quot;base/src/base&amp;quot; folder. Inside this folder is a file called &amp;quot;compiledscriptx86.sln&amp;quot;, which you can open with Visual Studio. Once opened, there should be a drop down box on the toolbar, ensure this is set to &amp;quot;Release&amp;quot;. After this, select &amp;quot;Build Solution&amp;quot; from the &amp;quot;Build&amp;quot; menu. Once completed the build console should state that is is completed with 0 errors and warnings. If not, you should seek a programmer's help. The most likely case for this happening is that the project file is out of date when someone has added or removed a script class, but this should not be a common occurance.&lt;br /&gt;
&lt;br /&gt;
==After Compiling the Scripts==&lt;br /&gt;
Assuming the compile process has completed successfully, you can find your compiled script DLL in base/src/base/build/win32/release/. Copy CompiledScriptx86.dll to your mod's base folder.&lt;br /&gt;
&lt;br /&gt;
==Using Compiled Scripts==&lt;br /&gt;
After you've placed CompiledScriptx86.dll where the game can find it, ensure that g_useCompiledScript is set to 1 before loading a map. The game should automatically load your custom script dll.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3407</id>
		<title>Generating Compiled Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3407"/>
		<updated>2007-11-21T16:23:28Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Overview==&lt;br /&gt;
Compiled scripts are automatically generated from the game's interpreted script files. They use less memory, and run more quickly than interpreted scripts. Interpreted scripts have the advantage of quick turnaround when developing. For a final release of a mod, you should consider using compiled scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exporting the Scripts==&lt;br /&gt;
Start the game up, and when it has finished loading and you are at the main menu, bring down the console and enter &amp;quot;exportScript&amp;quot;, minus the quotes. Make sure to check there are no errors on the console. If there are none, you can exit the game.&lt;br /&gt;
&lt;br /&gt;
This process will have added several .cpp and .h files to &amp;quot;base/src&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Compiling the Scripts==&lt;br /&gt;
Open the &amp;quot;base/src/base&amp;quot; folder. Inside this folder is a file called &amp;quot;compiledscriptx86.sln&amp;quot;, which you can open with Visual Studio. Once opened, there should be a drop down box on the toolbar, ensure this is set to &amp;quot;Release&amp;quot;. After this, select &amp;quot;Build Solution&amp;quot; from the &amp;quot;Build&amp;quot; menu. Once completed the build console should state that is is completed with 0 errors and warnings. If not, you should seek a programmer's help. The most likely case for this happening is that the project file is out of date when someone has added or removed a script class, but this should not be a common occurance.&lt;br /&gt;
&lt;br /&gt;
==After Compiling the Scripts==&lt;br /&gt;
Assuming the compile process has completed successfully, you can find your compiled script DLL in base/src/base/build/win32/release/. Copy CompiledScriptx86.dll to your mod's base folder.&lt;br /&gt;
&lt;br /&gt;
==Using Compiled Scripts==&lt;br /&gt;
After you've placed CompiledScriptx86.dll where the game can find it, ensure that g_useCompiledScript is set to 1 before loading a map. The game should automatically load your custom script dll.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3406</id>
		<title>Generating Compiled Scripts</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Generating_Compiled_Scripts&amp;diff=3406"/>
		<updated>2007-11-21T16:23:14Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Compiled Scripts==&lt;br /&gt;
Compiled scripts are automatically generated from the game's interpreted script files. They use less memory, and run more quickly than interpreted scripts. Interpreted scripts have the advantage of quick turnaround when developing. For a final release of a mod, you should consider using compiled scripts.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Exporting the Scripts==&lt;br /&gt;
Start the game up, and when it has finished loading and you are at the main menu, bring down the console and enter &amp;quot;exportScript&amp;quot;, minus the quotes. Make sure to check there are no errors on the console. If there are none, you can exit the game.&lt;br /&gt;
&lt;br /&gt;
This process will have added several .cpp and .h files to &amp;quot;base/src&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==Compiling the Scripts==&lt;br /&gt;
Open the &amp;quot;base/src/base&amp;quot; folder. Inside this folder is a file called &amp;quot;compiledscriptx86.sln&amp;quot;, which you can open with Visual Studio. Once opened, there should be a drop down box on the toolbar, ensure this is set to &amp;quot;Release&amp;quot;. After this, select &amp;quot;Build Solution&amp;quot; from the &amp;quot;Build&amp;quot; menu. Once completed the build console should state that is is completed with 0 errors and warnings. If not, you should seek a programmer's help. The most likely case for this happening is that the project file is out of date when someone has added or removed a script class, but this should not be a common occurance.&lt;br /&gt;
&lt;br /&gt;
==After Compiling the Scripts==&lt;br /&gt;
Assuming the compile process has completed successfully, you can find your compiled script DLL in base/src/base/build/win32/release/. Copy CompiledScriptx86.dll to your mod's base folder.&lt;br /&gt;
&lt;br /&gt;
==Using Compiled Scripts==&lt;br /&gt;
After you've placed CompiledScriptx86.dll where the game can find it, ensure that g_useCompiledScript is set to 1 before loading a map. The game should automatically load your custom script dll.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3405</id>
		<title>Enemy Territory: QUAKE Wars</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3405"/>
		<updated>2007-11-21T16:10:00Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Coding */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Enemy Territory: QUAKE Wars section. Here you'll find a variety of reference documentation and tutorials related to editing ETQW, along with links to the SDK. To learn more about Enemy Territory: QUAKE Wars, visit [http://www.enemyterritory.com www.enemyterritory.com].&lt;br /&gt;
&lt;br /&gt;
==Software Development Kit==&lt;br /&gt;
&lt;br /&gt;
The Enemy Territory: QUAKE Wars Software Development kit is currently in BETA. A list of download locations is [http://community.enemyterritory.com available here].&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Taking A Screenshot]]''' - Settings and options for making a great screenshot!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Tutorial]]''' - The whole thing! Click below for smaller segments.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 1|Step 1]]''' - Design considerations, before you do anything else!&lt;br /&gt;
** '''[[Vehicle Tutorial Part 2|Step 2]]''' - Initial rough model, rig and basic script.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 3|Step 3]]''' - More advanced rig and scripting.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 4|Step 4]]''' - Further technical setup ideas.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models &amp;amp; Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making A Normal Map]]''' - Using Renderbump to generate a bump-map from a high-poly model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Script &amp;amp; Code==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Coding ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Windows Code Notes]]''' - General information about compiling on Windows.&lt;br /&gt;
* '''[[Linux Code Notes]]''' - General information about compiling on Linux systems.&lt;br /&gt;
* '''[[Generating Compiled Scripts]]''' - Information on building a compiledscript DLL.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Declarations ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Materials]]''' - All you need to know about material declarations.&lt;br /&gt;
* '''[[Templates]]''' - Setting up templates to save time and effort.&lt;br /&gt;
* '''[[Surface Types]]''' - Available surface types for particle &amp;amp; sound effects.&lt;br /&gt;
* '''[[Skins]]''' - Easily switch textures on surfaces.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicle Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Scripting: Basic_Overview|Basic Overview]]''' - Introduction to vehicle setup.&lt;br /&gt;
* '''[[Vehicle Scripting: Entity_Definition|Entity Definition]]''' - One definition to rule them all!&lt;br /&gt;
* '''[[Vehicle Scripting: Vehicle_Definition|Vehicle Definition]]''' - Introduction to the ''.vscript'' file.&lt;br /&gt;
* '''[[Vehicle Scripting: Positions_&amp;amp;_Views|Positions &amp;amp; Views]]''' - Configuring player positions &amp;amp; camera views.&lt;br /&gt;
* '''[[Vehicle Scripting: Components|Components]]''' - Details of various vehicle components.&lt;br /&gt;
* '''[[Vehicle Scripting: Weapons|Weapons]]''' - Things that go boom!&lt;br /&gt;
* '''[[Vehicle Scripting: IK|IK]]''' - Inverse Kinematics &amp;amp; you...&lt;br /&gt;
* '''[[Vehicle Scripting: Cockpits|Cockpits]]''' - Cockpit setup.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Entity Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[EntityClass:Overview|Classes]]''' - Tree of entity types.&lt;br /&gt;
* '''[[ScriptEvent:List|Events]]''' - List of all script events.&lt;br /&gt;
* '''[[Scripting:Examples|Examples]]''' - Some example walkthoughs of building up a scripted entity.&lt;br /&gt;
* '''[[Script:Files|Script Files]]''' - List of the script files used by the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[GUIs|GUI Overview]]''' - Overview of the GUI system.&lt;br /&gt;
* '''[[GUIs: Event Based Scripting|Event Based Scripting]]''' - GUIs are event-based.&lt;br /&gt;
* '''[[GUIs: Materials|Materials]]''' - Using materials in GUIs.&lt;br /&gt;
* '''[[GUIs: Transitions|Transitions]]''' - Transitions.&lt;br /&gt;
* '''[[GUIs: Templates|Templates]]''' - Using templates in GUIs.&lt;br /&gt;
* '''[[GUIs: List Enumeration|List Enumeration]]''' - List enumerations.&lt;br /&gt;
* '''[[GUIs: Properties|Properties]]''' - Player/Global properties and more.&lt;br /&gt;
* '''[[GUIs: Timelines|Timelines]]''' - GUI timelines.&lt;br /&gt;
* '''[[GUIs: Layouts|Layouts]]''' - Window layouts.&lt;br /&gt;
* '''[[Reference (GUIs)|Reference]]''' - GUI reference.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== The Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A guide to your first map]]'''&lt;br /&gt;
* '''[[Ambient Light Editor]]'''&lt;br /&gt;
* '''[[Atmosphere Editor]]'''&lt;br /&gt;
* '''[[Brush Basics]]'''&lt;br /&gt;
* '''[[Common Textures]]'''&lt;br /&gt;
* '''[[Decals]]'''&lt;br /&gt;
* '''[[Editor Groups]]'''&lt;br /&gt;
* '''[[Entity Basics]]'''&lt;br /&gt;
* '''[[Lighting Basics]]'''&lt;br /&gt;
* '''[[Map Objects]]'''&lt;br /&gt;
* '''[[Portal Basics]]'''&lt;br /&gt;
* '''[[References]]'''&lt;br /&gt;
* '''[[Sound]]'''&lt;br /&gt;
* '''[[Texture Editor]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Design: How do I|How do I ...?]]''' - Common and useful tasks&lt;br /&gt;
* '''[[Design: Troubleshooting|Troubleshooting]]''' - Common problems and fixes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Advanced Stuff ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Batches]]'''&lt;br /&gt;
* '''[[Deployables]]'''&lt;br /&gt;
* '''[[Developer cheats]]'''&lt;br /&gt;
* '''[[List of Entities]]''' - Descriptions for all entities&lt;br /&gt;
* '''[[LOD Groups]]'''&lt;br /&gt;
* '''[[Locations]]'''&lt;br /&gt;
* '''[[Model Instancing]]'''&lt;br /&gt;
* '''[[Occlusion Tests]]'''&lt;br /&gt;
* '''[[Vehicle Route Constraint System]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Art==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[In-Game Models]]''' - Making models for use in the engine.&lt;br /&gt;
* '''[[High-Poly Models]]''' - Making source models for baking normal maps.&lt;br /&gt;
* '''[[Renderbump]]''' - Create normal maps from high-poly geometry.&lt;br /&gt;
* '''[[Imposters]]''' - Sprites used for rendering complex models cheaply at a distance.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Animation ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[MD5 Export Process]]''' - How to export an animated MD5.&lt;br /&gt;
* '''[[Vehicle Setup]]''' - How to set up a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Basic Texture Overview]]''' - Supported texture types and implementations.&lt;br /&gt;
* '''[[Texturesheets]]''' - Overview of what texturesheets are, and when to use them.&lt;br /&gt;
* '''[[The Atlas Editor]]''' - Create environment texture sheets to improve performance.&lt;br /&gt;
* '''[[RenderBumpFlat]]''' - Create normal-maps from high-poly geometry.&lt;br /&gt;
* '''[[Detail Textures]]''' - Add high-frequency detail to your textures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain Editing ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
* '''[[Terrain Editor|EditWorld's Terrain Editor]]''' - Set up a Surface Tree for your MegaTexture.&lt;br /&gt;
* '''[[MegaBuild]]''' - Render and compile your MegaTexture.&lt;br /&gt;
* '''[[Water Surfaces#Water Models|Water Surfaces]]''' - Create water to go with your landscape.&lt;br /&gt;
* '''[[STUFF System]]''' - Procedurally distribute models over your terrain mesh.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Atmospheres and Effects ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Atmosphere Editor|The Atmosphere Editor]]''' - Create and edit atmospheres for your map.&lt;br /&gt;
* '''[[Ambient Light Editor|The Ambient Light Editor]]''' - Create and edit ambient light setups.&lt;br /&gt;
* '''[[Environment Maps]]''' - Used for reflection effects.&lt;br /&gt;
* '''[[Water Surfaces]]''' - Creating water effects.&lt;br /&gt;
* '''[[Effects Editor|The Effects Editor]]''' - Create and edit particle effects.&lt;br /&gt;
* '''[[Cheap Decals]]''' - Bulletholes and other collision decals.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3404</id>
		<title>Windows Code Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3404"/>
		<updated>2007-11-21T16:07:44Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Build Environments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Build Environment==&lt;br /&gt;
You can use the free Visual Studio 2005 Express edition to compile the SDK. ''Please note that the newly-released Visual Studio 2008 Express is currently untested with the SDK.''&lt;br /&gt;
&lt;br /&gt;
==Running the Game==&lt;br /&gt;
You can find the final gamex86.dll in '''source\build\win32\&amp;lt;configuration name&amp;gt;\'''&lt;br /&gt;
Copy it to the same folder as your etqw.exe and the game will automatically load your new dll.&lt;br /&gt;
&lt;br /&gt;
We recommend setting up a post-build event to automatically copy the dll to the game folder.&lt;br /&gt;
&lt;br /&gt;
==Project Configurations==&lt;br /&gt;
The game project has three configurations:&lt;br /&gt;
===Debug with Edit and Continue===&lt;br /&gt;
Disable all optimizations and enable Edit and Continue so that code can be modified and the changes applied without restarting the game. Some operations like compiling scripts will take noticeably longer in this mode.&lt;br /&gt;
&lt;br /&gt;
===Debug with Inlines===&lt;br /&gt;
Optimizations are enabled; some functions will be inlined. You'll still be able to properly set breakpoints and inspect data.&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
All Optimizations are enabled. Breakpoints and data may not reliably match up to the source code.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3403</id>
		<title>Windows Code Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3403"/>
		<updated>2007-11-21T16:07:33Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Build Environments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Build Environments==&lt;br /&gt;
You can use the free Visual Studio 2005 Express edition to compile the SDK. ''Please note that the newly-released Visual Studio 2008 Express is currently untested with the SDK.''&lt;br /&gt;
&lt;br /&gt;
==Running the Game==&lt;br /&gt;
You can find the final gamex86.dll in '''source\build\win32\&amp;lt;configuration name&amp;gt;\'''&lt;br /&gt;
Copy it to the same folder as your etqw.exe and the game will automatically load your new dll.&lt;br /&gt;
&lt;br /&gt;
We recommend setting up a post-build event to automatically copy the dll to the game folder.&lt;br /&gt;
&lt;br /&gt;
==Project Configurations==&lt;br /&gt;
The game project has three configurations:&lt;br /&gt;
===Debug with Edit and Continue===&lt;br /&gt;
Disable all optimizations and enable Edit and Continue so that code can be modified and the changes applied without restarting the game. Some operations like compiling scripts will take noticeably longer in this mode.&lt;br /&gt;
&lt;br /&gt;
===Debug with Inlines===&lt;br /&gt;
Optimizations are enabled; some functions will be inlined. You'll still be able to properly set breakpoints and inspect data.&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
All Optimizations are enabled. Breakpoints and data may not reliably match up to the source code.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3402</id>
		<title>Windows Code Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3402"/>
		<updated>2007-11-21T16:07:21Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Build Environments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Build Environments==&lt;br /&gt;
You can use the free Visual Studio 2005 Express edition to compile the SDK. ''Please note that the newly-released Visual Studio 2008 Express is currently untested.''&lt;br /&gt;
&lt;br /&gt;
==Running the Game==&lt;br /&gt;
You can find the final gamex86.dll in '''source\build\win32\&amp;lt;configuration name&amp;gt;\'''&lt;br /&gt;
Copy it to the same folder as your etqw.exe and the game will automatically load your new dll.&lt;br /&gt;
&lt;br /&gt;
We recommend setting up a post-build event to automatically copy the dll to the game folder.&lt;br /&gt;
&lt;br /&gt;
==Project Configurations==&lt;br /&gt;
The game project has three configurations:&lt;br /&gt;
===Debug with Edit and Continue===&lt;br /&gt;
Disable all optimizations and enable Edit and Continue so that code can be modified and the changes applied without restarting the game. Some operations like compiling scripts will take noticeably longer in this mode.&lt;br /&gt;
&lt;br /&gt;
===Debug with Inlines===&lt;br /&gt;
Optimizations are enabled; some functions will be inlined. You'll still be able to properly set breakpoints and inspect data.&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
All Optimizations are enabled. Breakpoints and data may not reliably match up to the source code.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3401</id>
		<title>Windows Code Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3401"/>
		<updated>2007-11-21T16:06:59Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Build Environments==&lt;br /&gt;
You can use Visual Studio 2005 Express edition to compile the SDK. ''Please note that the newly-released Visual Studio 2008 Express is currently untested.''&lt;br /&gt;
&lt;br /&gt;
==Running the Game==&lt;br /&gt;
You can find the final gamex86.dll in '''source\build\win32\&amp;lt;configuration name&amp;gt;\'''&lt;br /&gt;
Copy it to the same folder as your etqw.exe and the game will automatically load your new dll.&lt;br /&gt;
&lt;br /&gt;
We recommend setting up a post-build event to automatically copy the dll to the game folder.&lt;br /&gt;
&lt;br /&gt;
==Project Configurations==&lt;br /&gt;
The game project has three configurations:&lt;br /&gt;
===Debug with Edit and Continue===&lt;br /&gt;
Disable all optimizations and enable Edit and Continue so that code can be modified and the changes applied without restarting the game. Some operations like compiling scripts will take noticeably longer in this mode.&lt;br /&gt;
&lt;br /&gt;
===Debug with Inlines===&lt;br /&gt;
Optimizations are enabled; some functions will be inlined. You'll still be able to properly set breakpoints and inspect data.&lt;br /&gt;
&lt;br /&gt;
===Release===&lt;br /&gt;
All Optimizations are enabled. Breakpoints and data may not reliably match up to the source code.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3400</id>
		<title>Windows Code Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3400"/>
		<updated>2007-11-21T16:02:06Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*You can use Visual Studio 2005 Express edition to compile the SDK.&lt;br /&gt;
*Visual Studio 2008 Express is currently untested.&lt;br /&gt;
&lt;br /&gt;
*You can find the final gamex86.dll in '''source\build\win32\&amp;lt;configuration name&amp;gt;\'''&lt;br /&gt;
**Copy it to the same folder as your etqw.exe and the game will automatically load your new dll.&lt;br /&gt;
&lt;br /&gt;
*We recommend setting up a post-build event to automatically copy the dll to the game folder.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3399</id>
		<title>Windows Code Notes</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Windows_Code_Notes&amp;diff=3399"/>
		<updated>2007-11-21T16:00:57Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;*You can use Visual Studio 2005 Express edition to compile the SDK.&lt;br /&gt;
*Visual Studio 2008 Express is currently untested.&lt;br /&gt;
&lt;br /&gt;
*You can find the final gamex86.dll in source\build\win32\&amp;lt;configuration name&amp;gt;\&lt;br /&gt;
**Copy it to the same folder as your etqw.exe and the game will automatically load your new dll.&lt;br /&gt;
&lt;br /&gt;
*We recommend setting up a post-build event to automatically copy the dll to the game folder.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3398</id>
		<title>Enemy Territory: QUAKE Wars</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3398"/>
		<updated>2007-11-21T15:59:39Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Script &amp;amp; Code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Enemy Territory: QUAKE Wars section. Here you'll find a variety of reference documentation and tutorials related to editing ETQW, along with links to the SDK. To learn more about Enemy Territory: QUAKE Wars, visit [http://www.enemyterritory.com www.enemyterritory.com].&lt;br /&gt;
&lt;br /&gt;
==Software Development Kit==&lt;br /&gt;
&lt;br /&gt;
The Enemy Territory: QUAKE Wars Software Development kit is currently in BETA. A list of download locations is [http://community.enemyterritory.com available here].&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Taking A Screenshot]]''' - Settings and options for making a great screenshot!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Tutorial]]''' - The whole thing! Click below for smaller segments.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 1|Step 1]]''' - Design considerations, before you do anything else!&lt;br /&gt;
** '''[[Vehicle Tutorial Part 2|Step 2]]''' - Initial rough model, rig and basic script.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 3|Step 3]]''' - More advanced rig and scripting.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 4|Step 4]]''' - Further technical setup ideas.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models &amp;amp; Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making A Normal Map]]''' - Using Renderbump to generate a bump-map from a high-poly model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Script &amp;amp; Code==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Coding ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Windows Code Notes]]''' - General information about compiling on Windows.&lt;br /&gt;
* '''[[Linux Code Notes]]''' - General information about compiling on Linux systems.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Declarations ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Materials]]''' - All you need to know about material declarations.&lt;br /&gt;
* '''[[Templates]]''' - Setting up templates to save time and effort.&lt;br /&gt;
* '''[[Surface Types]]''' - Available surface types for particle &amp;amp; sound effects.&lt;br /&gt;
* '''[[Skins]]''' - Easily switch textures on surfaces.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicle Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Scripting: Basic_Overview|Basic Overview]]''' - Introduction to vehicle setup.&lt;br /&gt;
* '''[[Vehicle Scripting: Entity_Definition|Entity Definition]]''' - One definition to rule them all!&lt;br /&gt;
* '''[[Vehicle Scripting: Vehicle_Definition|Vehicle Definition]]''' - Introduction to the ''.vscript'' file.&lt;br /&gt;
* '''[[Vehicle Scripting: Positions_&amp;amp;_Views|Positions &amp;amp; Views]]''' - Configuring player positions &amp;amp; camera views.&lt;br /&gt;
* '''[[Vehicle Scripting: Components|Components]]''' - Details of various vehicle components.&lt;br /&gt;
* '''[[Vehicle Scripting: Weapons|Weapons]]''' - Things that go boom!&lt;br /&gt;
* '''[[Vehicle Scripting: IK|IK]]''' - Inverse Kinematics &amp;amp; you...&lt;br /&gt;
* '''[[Vehicle Scripting: Cockpits|Cockpits]]''' - Cockpit setup.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Entity Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[EntityClass:Overview|Classes]]''' - Tree of entity types.&lt;br /&gt;
* '''[[ScriptEvent:List|Events]]''' - List of all script events.&lt;br /&gt;
* '''[[Scripting:Examples|Examples]]''' - Some example walkthoughs of building up a scripted entity.&lt;br /&gt;
* '''[[Script:Files|Script Files]]''' - List of the script files used by the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[GUIs|GUI Overview]]''' - Overview of the GUI system.&lt;br /&gt;
* '''[[GUIs: Event Based Scripting|Event Based Scripting]]''' - GUIs are event-based.&lt;br /&gt;
* '''[[GUIs: Materials|Materials]]''' - Using materials in GUIs.&lt;br /&gt;
* '''[[GUIs: Transitions|Transitions]]''' - Transitions.&lt;br /&gt;
* '''[[GUIs: Templates|Templates]]''' - Using templates in GUIs.&lt;br /&gt;
* '''[[GUIs: List Enumeration|List Enumeration]]''' - List enumerations.&lt;br /&gt;
* '''[[GUIs: Properties|Properties]]''' - Player/Global properties and more.&lt;br /&gt;
* '''[[GUIs: Timelines|Timelines]]''' - GUI timelines.&lt;br /&gt;
* '''[[GUIs: Layouts|Layouts]]''' - Window layouts.&lt;br /&gt;
* '''[[Reference (GUIs)|Reference]]''' - GUI reference.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== The Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[A guide to your first map]]'''&lt;br /&gt;
* '''[[Ambient Light Editor]]'''&lt;br /&gt;
* '''[[Atmosphere Editor]]'''&lt;br /&gt;
* '''[[Brush Basics]]'''&lt;br /&gt;
* '''[[Common Textures]]'''&lt;br /&gt;
* '''[[Decals]]'''&lt;br /&gt;
* '''[[Editor Groups]]'''&lt;br /&gt;
* '''[[Entity Basics]]'''&lt;br /&gt;
* '''[[Lighting Basics]]'''&lt;br /&gt;
* '''[[Map Objects]]'''&lt;br /&gt;
* '''[[Portal Basics]]'''&lt;br /&gt;
* '''[[References]]'''&lt;br /&gt;
* '''[[Sound]]'''&lt;br /&gt;
* '''[[Texture Editor]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Design: How do I|How do I ...?]]''' - Common and useful tasks&lt;br /&gt;
* '''[[Design: Troubleshooting|Troubleshooting]]''' - Common problems and fixes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Advanced Stuff ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Batches]]'''&lt;br /&gt;
* '''[[Deployables]]'''&lt;br /&gt;
* '''[[Developer cheats]]'''&lt;br /&gt;
* '''[[List of Entities]]''' - Descriptions for all entities&lt;br /&gt;
* '''[[LOD Groups]]'''&lt;br /&gt;
* '''[[Locations]]'''&lt;br /&gt;
* '''[[Model Instancing]]'''&lt;br /&gt;
* '''[[Occlusion Tests]]'''&lt;br /&gt;
* '''[[Vehicle Route Constraint System]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Art==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[In-Game Models]]''' - Making models for use in the engine.&lt;br /&gt;
* '''[[High-Poly Models]]''' - Making source models for baking normal maps.&lt;br /&gt;
* '''[[Renderbump]]''' - Create normal maps from high-poly geometry.&lt;br /&gt;
* '''[[Imposters]]''' - Sprites used for rendering complex models cheaply at a distance.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Animation ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[MD5 Export Process]]''' - How to export an animated MD5.&lt;br /&gt;
* '''[[Vehicle Setup]]''' - How to set up a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Basic Texture Overview]]''' - Supported texture types and implementations.&lt;br /&gt;
* '''[[Texturesheets]]''' - Overview of what texturesheets are, and when to use them.&lt;br /&gt;
* '''[[The Atlas Editor]]''' - Create environment texture sheets to improve performance.&lt;br /&gt;
* '''[[RenderBumpFlat]]''' - Create normal-maps from high-poly geometry.&lt;br /&gt;
* '''[[Detail Textures]]''' - Add high-frequency detail to your textures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain Editing ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
* '''[[Terrain Editor|EditWorld's Terrain Editor]]''' - Set up a Surface Tree for your MegaTexture.&lt;br /&gt;
* '''[[MegaBuild]]''' - Render and compile your MegaTexture.&lt;br /&gt;
* '''[[Water Surfaces#Water Models|Water Surfaces]]''' - Create water to go with your landscape.&lt;br /&gt;
* '''[[STUFF System]]''' - Procedurally distribute models over your terrain mesh.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Atmospheres and Effects ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Atmosphere Editor|The Atmosphere Editor]]''' - Create and edit atmospheres for your map.&lt;br /&gt;
* '''[[Ambient Light Editor|The Ambient Light Editor]]''' - Create and edit ambient light setups.&lt;br /&gt;
* '''[[Environment Maps]]''' - Used for reflection effects.&lt;br /&gt;
* '''[[Water Surfaces]]''' - Creating water effects.&lt;br /&gt;
* '''[[Effects Editor|The Effects Editor]]''' - Create and edit particle effects.&lt;br /&gt;
* '''[[Cheap Decals]]''' - Bulletholes and other collision decals.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=GUIs:_Properties&amp;diff=3284</id>
		<title>GUIs: Properties</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=GUIs:_Properties&amp;diff=3284"/>
		<updated>2007-11-21T12:27:46Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;== Overview ==&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
Global properties can be accessed from anywhere in the GUI and is used for communicating with the gamecode and game scripts.&amp;lt;includeonly&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{main|GUIs: Properties}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The global properties have been grouped together into a few groups:&lt;br /&gt;
* Player properties - Anything relating to the player.&lt;br /&gt;
* Limbo properties - Limbo menu properties should only used in the limbo menu.&lt;br /&gt;
* Admin properties - Used in the admin system tab in the limbo menu for enabling/disabling lists/buttons for the local player.&lt;br /&gt;
* Global properties - Communicating with the game scripts.&lt;br /&gt;
* SDNet properties - Used for session and account management.&lt;br /&gt;
&lt;br /&gt;
== Player Properties ==&lt;br /&gt;
These properties are always read only and are always related to the local player or the local view player (the one you're spectating), see the [[PlayerProperties|reference]] for the specifics and a description for each of the properties&lt;br /&gt;
&lt;br /&gt;
The type of properties found in this category are:&lt;br /&gt;
* Player - Health, view direction, XP, spectating, is dead, etc.&lt;br /&gt;
* Vehicle - in a vehicle, in siege mode, in third person, vehicle has been EMPed, etc.&lt;br /&gt;
* Weapon/Damage - ammo in clip, total ammo, last kill message,&lt;br /&gt;
* Fireteam/Missons - Last task received, task status, in a fireteam, is fireteam leader, etc.&lt;br /&gt;
* Match/Team - Team name, winning time, in warmup, current match time, etc.&lt;br /&gt;
* Voting properties&lt;br /&gt;
* Tooltip properties&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&lt;br /&gt;
The health bar is set like this (in ''guis/game/hud/hud.gui''), the position property will continually be updated whenever the player health updates.&lt;br /&gt;
 windowDef healthFill {&lt;br /&gt;
 	type progress;&lt;br /&gt;
 	properties {&lt;br /&gt;
 		float 	position = player.health / player.maxHealth;&lt;br /&gt;
 		...&lt;br /&gt;
 	}&lt;br /&gt;
 	...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Limbo Properties ==&lt;br /&gt;
These properties are always read only. See the [[LimboProperties|limbo propereties reference]] for a reference of all the limbo properties.&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
Whenever the limbo menu (in ''guis/game/limbo/limbo.gui'') is activated it saves the current team and class selection among other things:&lt;br /&gt;
 gui limbo {&lt;br /&gt;
 	...&lt;br /&gt;
 	events {&lt;br /&gt;
 		onActivate {&lt;br /&gt;
 			...&lt;br /&gt;
 			// Read the immediate value of limbo.teamName.&lt;br /&gt;
 			teamSelection 		= immediate( limbo.teamName );&lt;br /&gt;
 			if( icompare( teamSelection, &amp;quot;spec&amp;quot; ) == false ) {&lt;br /&gt;
 				lastTeamSelection	= immediate( teamSelection );&lt;br /&gt;
 			}&lt;br /&gt;
 &lt;br /&gt;
 			// Save the current class selection for the player.&lt;br /&gt;
 			classSelection 		= limbo.role;&lt;br /&gt;
 			...&lt;br /&gt;
 		}&lt;br /&gt;
 		...&lt;br /&gt;
 	}&lt;br /&gt;
 	...&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Admin Properties ==&lt;br /&gt;
These properties are always read only. See the [[AdminProperties|admin propereties reference]] for a reference of all the admin properties.&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&lt;br /&gt;
The visibility of the bot options in the admin menu (in ''guis/game/limbo/tabpages/admin.include'') depends on if the ''admin.canAdjustBots'' property is true.&lt;br /&gt;
 windowDef lytPlayComp {&lt;br /&gt;
 	type layoutVertical;&lt;br /&gt;
 	properties {&lt;br /&gt;
 		// Draw windows from bottom to top instead of top to bottom.&lt;br /&gt;
 		float flags = VLF_DRAW_REVERSED;&lt;br /&gt;
 		// Only visible if the player can adjust bot settings.&lt;br /&gt;
 		float visible = admin.canAdjustBots;&lt;br /&gt;
 		vec4 margins = 0, 0, 0, 0;&lt;br /&gt;
 		rect rect = 0, 0, gui.lytBotCommands.rect.w - $evalfloat( 2 * PADDING ), 100;&lt;br /&gt;
 	}&lt;br /&gt;
 	// Include all the bot settings.&lt;br /&gt;
 	#include &amp;lt;guis/common/bots.include&amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Global Properties ==&lt;br /&gt;
Found in ''guis/globals.gui'' these are mainly used for communicating between GUIs and to the game scripts. They may be set/modified from either the GUIs, gamecode or the game scripts.&lt;br /&gt;
&lt;br /&gt;
There are a few categories of global properties:&lt;br /&gt;
* ''game'' - game is running or not&lt;br /&gt;
* ''gameHud'' - Many properties related to updating the HUD, updated from the game scripts.&lt;br /&gt;
* ''mcpObjective'' - MCP objective  properties, updated from the game scripts.&lt;br /&gt;
* ''constructObjective'' - Constructible objective properties, updated from the game scripts.&lt;br /&gt;
* ''hackObjective'' - Hack objective properties, updated from the game scripts.&lt;br /&gt;
* ''docObjective'' - Carryable item objective properties, updated from the game scripts.&lt;br /&gt;
* ''goalObjective'' - Carryable item goal objective properties, updated from the game scripts.&lt;br /&gt;
* ''flyerhiveObjective'' - Flyer drone objective properties, updated from the game scripts.&lt;br /&gt;
* ''destroyObjective'' - Destructible objective properties, updated from the game scripts.&lt;br /&gt;
* ''weapons'' - Some weapon related properties like charge, is cooling, etc. Updated from the game scripts.&lt;br /&gt;
* ''armTool'' - arming tool. Updated from the game scripts.&lt;br /&gt;
* ''charge'' - Charge timer, updated from the game scripts.&lt;br /&gt;
* ''deployables'' - Deployable information, updated from the game scripts.&lt;br /&gt;
* ''vehicles'' - Vehicle information, updated from the game scripts.&lt;br /&gt;
* ''mapinfo'' - map/objective information updated by the game scripts.&lt;br /&gt;
* ''progressBar'' - Progress bar when liberating/arming/hacking, etc. Updated by the game scripts.&lt;br /&gt;
* ''messageBox'' - Used for messages boxes (connecting to a game, disconnected, etc.).&lt;br /&gt;
* ''introMovies'' - Intro movie properties.&lt;br /&gt;
* ''campaignInfo'' - Information about the campaign, updated from the gamecode.&lt;br /&gt;
&lt;br /&gt;
These properties may be accessed like this:&lt;br /&gt;
 globals.&amp;lt;category&amp;gt;.&amp;lt;property&amp;gt;&lt;br /&gt;
Like this used for checking if the data brain/briefcase is at home or not:&lt;br /&gt;
 if ( globals.docObjective.state == CARRYABLE_ITEM_HOME ) {&lt;br /&gt;
&lt;br /&gt;
''globals.gameHud.spawnHostActive'' is updated by the game scripts similar to this, where the GUI then makes sure to create/delete a notify icon on the HUD whenever the property changes:&lt;br /&gt;
 void spawn_host::OnSpawnPointSelected( float isDefault ) {&lt;br /&gt;
 	SetupCommandmapIcon();&lt;br /&gt;
 &lt;br /&gt;
 	sys.setGUIFloat( GUI_GLOBALS_HANDLE, &amp;quot;gameHud.spawnHostActive&amp;quot;, 1 );&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== SDNet Properties ==&lt;br /&gt;
SDNet properties are related to the current user.&lt;br /&gt;
[[Category:GUIs]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Design:_Troubleshooting&amp;diff=3283</id>
		<title>Design: Troubleshooting</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Design:_Troubleshooting&amp;diff=3283"/>
		<updated>2007-11-21T12:22:39Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page serves as a list of common issues that you may encounter while creating or editing a map of your own. Solutions or workarounds are provided wherever possible. '''Bugs and bug reports do not belong here!''' If you encounter an issue that is not answered or listed on this page, you are advised to try one of the [[#Additional Resources|support sites]] for guidance. Alternatively, try the [[Talk:Level Design Troubleshooting|talk page]] for this topic.&lt;br /&gt;
&lt;br /&gt;
* Note: This page assumes you are using the default key shortcuts.&lt;br /&gt;
* '''See also [[How do I]] page for a quick reference to common tasks.'''&lt;br /&gt;
&lt;br /&gt;
== General Questions ==&lt;br /&gt;
&lt;br /&gt;
=== How do I run the SDK? ===&lt;br /&gt;
After you've installed the ETQW SDK, you can launch it by running the 'SDK Launcher' shortcut from the Start Menu (it's usually found in 'Programs &amp;amp;gt; id Software &amp;amp;gt; Enemy Territory - QUAKE Wars(TM) SDK')&lt;br /&gt;
&lt;br /&gt;
=== How do I configure the SDK Launcher? ===&lt;br /&gt;
The SDK Launcher requires a retail path and a save path. These should typically be the place where you installed ETQW, for example 'C:\Program Files\id Software\Enemy Territory - QUAKE Wars'&lt;br /&gt;
&lt;br /&gt;
=== How do I launch the level editor, editWorld? ===&lt;br /&gt;
On the SDK Launcher, tick the 'editWorld' tickbox and then press 'Launch SDK'. This will load the game and it's built-in editor.&lt;br /&gt;
&lt;br /&gt;
Alternatively, you can run the SDK build of the game and use the {{consolecmd|editWorld}} console command.&lt;br /&gt;
&lt;br /&gt;
== Editor Issues ==&lt;br /&gt;
&lt;br /&gt;
=== I can't select a brush/surface ===&lt;br /&gt;
You're too close! '''Try moving the camera further away''' from the object you're trying to select. Otherwise the editor will assume you're intentionally inside the object and therefore don't want to select it.&lt;br /&gt;
&lt;br /&gt;
=== I can only select one object and not anything underneath it ===&lt;br /&gt;
Shift-clicking to select an object only lets you select the 'nearest' (or 'topmost') object, be it a brush, surface or entity. '''Use {{accelkey|Alt}}{{accelkey|Shift}}{{accelbtn|LMB}}''' to drill down through multiple objects, to the one you want to select.&lt;br /&gt;
&lt;br /&gt;
=== I pressed something and everything vanished ===&lt;br /&gt;
You may have accidentally hidden them. Pressing {{accelkey|H}} hides the selected objects. Pressing {{accelkey|Ctrl}}{{accelkey|Shift}}{{accelkey|H}} hides all the unselected objects. '''Pressing {{accelkey|Shift}}{{accelkey|H}} brings them all back.''' If that didn't do it, try {{accelkey|Ctrl}}{{accelkey|Z}} to undo the last edit you made.&lt;br /&gt;
&lt;br /&gt;
=== I can't stretch brushes anymore, only move them ===&lt;br /&gt;
You may have accidentally turned the 'Move selection mode (no size)' option on. '''Toggle it by pressing {{accelkey|W}}.'''&lt;br /&gt;
&lt;br /&gt;
=== 'Nothing to build' ===&lt;br /&gt;
Usually, you can stretch brushes by dragging from one of its surfaces using the mouse. However, if the surface you're trying to move is at a strange angle, or the brush is malformed, then you are not allowed to stretch it. '''This can often be overcome by selecting the brush and using {{accelkey|Ctrl}}{{accelkey|G}} to snap its vertices to the grid.'''&lt;br /&gt;
&lt;br /&gt;
=== editWorld crashes when I load big maps (or lots of small ones) ===&lt;br /&gt;
This is most often caused by low memory. '''Try using the 'Open Low Memory' command''' from the File menu instead and see if that works. It is advised to have at least 1GB of memory when editing large maps, and 2GB or more is preferable. &lt;br /&gt;
&lt;br /&gt;
=== A brush shows up as red in vertex manipulation mode ===&lt;br /&gt;
This indicates that '''the brush is malformed''', and hence editWorld will only let you fix or delete it. All brushes must have sides that are completely flat, and form a convex object (i.e. there aren't any holes or dents). Usually this can be fixed by selecting the object and pressing {{accelkey|Ctrl}}{{accelkey|G}}, which will snap its vertices to the grid and tries to fix any errors. If this doesn't work, you are best off deleting the brush and creating a new one.&lt;br /&gt;
&lt;br /&gt;
=== How do I compile my map? ===&lt;br /&gt;
From the 'Compile' menu of editWorld, select '1 - Compile'. Remember to watch the console ({{accelkey|O}}) for any warnings or errors - these will appear in yellow and red.&lt;br /&gt;
&lt;br /&gt;
== Compile Issues ==&lt;br /&gt;
&lt;br /&gt;
=== 'Warning: No entities in open -- no filling' ===&lt;br /&gt;
There aren't any entities in the map. You need at least one. Try adding an [[Entity info_player_start|info_player_start]] entity to get started.&lt;br /&gt;
&lt;br /&gt;
=== 'Warning: entity reached from outside -- no filling' ===&lt;br /&gt;
There is an entity on the outside of the map, in the void. This is the same problem as a leak (see below.)&lt;br /&gt;
&lt;br /&gt;
=== 'Warning: (entity name): Entity leaked' ===&lt;br /&gt;
This means either a) you have an entity outside your map, or b) you have a 'leak' in your map. When you get this error, editWorld will indicate in the 3D view which entity leaked, and the path it leaked through. If you follow the path, it should lead you to a hole in your map - which might be a missing wall or ceiling, or just a tiny gap between brushes that leads to the void outside. Any holes or gaps must be sealed. This error will occur once for each leak in your map.&lt;br /&gt;
&lt;br /&gt;
Remember that entities, patches and even some special textures do not seal the level - you need to have brushwork (even just using the caulk texture) to stop entities leaking into the void. Use the leak path to work out where the leak is occurring.&lt;br /&gt;
&lt;br /&gt;
== Game Issues ==&lt;br /&gt;
&lt;br /&gt;
=== The game can't see my map ===&lt;br /&gt;
First, ensure that your map has compiled correctly and is in the correct directory - there should be a few files named {{filename|''yourmap''.world}}, {{filename|''yourmap''.entities}}, {{filename|''yourmap''.cmb}}, and {{filename|''yourmap''.procb}} in the {{filename|base/maps}} folder of ETQW.&lt;br /&gt;
&lt;br /&gt;
=== {{consolecmd|devmap}} only lists campaign maps ===&lt;br /&gt;
Use {{consolecmd|si_rules sdGameRulesObjective}} to change the game mode. {{consolecmd|devmap}} will then show non-campaign maps. &lt;br /&gt;
&lt;br /&gt;
Alternatively, you can create a new campaign file in {{filename|base\def\campaigns\}} with your map specified in it, but this should only be used if you intend to create a campaign.&lt;br /&gt;
&lt;br /&gt;
=== I can't build constructibles or capture spawns ===&lt;br /&gt;
The game may still be in warmup mode - press {{accelkey|f3}} to confirm you're ready and the game should start after 30 seconds.&lt;br /&gt;
&lt;br /&gt;
== Lighting Issues ==&lt;br /&gt;
&lt;br /&gt;
=== My map is pitch-black ===&lt;br /&gt;
The area either lacks [[Lighting Basics|lights]], has no ambience set, or is completely in shadow. If there are no lights, try adding some. Make sure they work in editWorld in Render Mode (usually toggled with {{accelkey|F3}}).&lt;br /&gt;
&lt;br /&gt;
=== My map is multi-coloured green and purple ===&lt;br /&gt;
This indicates that an ambience ([[Entity light_ambient|light_ambient]]) has not been specified for the area, or has been given a bad ambience to use.  Check that there is exactly one [[Entity light_ambient|light_ambient]] entity in the affected area, and that it specifies an ambience ({{keyname|Ambient Cubemap}}) that is both valid and not meant to produce multicoloured lighting. Ambient Cubemaps {{keyvalue|_blank}} and {{keyvalue|_default}} produce this sort of lighting, so make sure you're not using those - try something like {{keyvalue|area22}} instead.&lt;br /&gt;
&lt;br /&gt;
== Collision Issues ==&lt;br /&gt;
TODO &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Graphical Issues ==&lt;br /&gt;
&lt;br /&gt;
=== How do I make sky ===&lt;br /&gt;
Texture the brushes you want to appear as sky with the '[[Common Textures#common/caulk|common/caulk]]' texture. You'll also need an '[[Entity atmosphere|atmosphere]]' entity in your level, specifying the atmosphere you wish to use.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
* [http://community.enemyterritory.com/forums/forumdisplay.php?f=24 QUAKE Wars Mods and Editing] for mapping issues&lt;br /&gt;
* [http://community.enemyterritory.com/forums/forumdisplay.php?f=28 QUAKE Wars Bugs &amp;amp; Tech Help] for suspected bugs&lt;br /&gt;
&lt;br /&gt;
[[Category:Level Design]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Design:_How_do_I&amp;diff=3282</id>
		<title>Design: How do I</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Design:_How_do_I&amp;diff=3282"/>
		<updated>2007-11-21T12:21:44Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''This is your quick reference guide for all those tasks you know are possible, but just can't quite remember how to do...'''&lt;br /&gt;
&lt;br /&gt;
The commands listed below assume default key shortcuts.&lt;br /&gt;
&lt;br /&gt;
== Views ==&lt;br /&gt;
* '''Move the 2D view''' - drag with the {{accelbtn|RMB}} in a 2D view&lt;br /&gt;
* '''Zoom the 2D view''' - use {{accelbtn|mouse wheel}} in a 2D view&lt;br /&gt;
* '''Change the grid size''' - use the {{accelkey|]}} and {{accelkey|[}} keys, numbers {{accelkey|1}} to {{accelkey|9}} on the keyboard, or the 'Grid' menu&lt;br /&gt;
* '''Place camera at cursor''' in 2D view - {{accelkey|ctrl}}{{accelbtn|LMB}} on new camera position&lt;br /&gt;
* '''Aim camera at cursor''' in 2D view - {{accelbtn|MMB}} at new camera target&lt;br /&gt;
&lt;br /&gt;
== General Editing ==&lt;br /&gt;
* '''Create a brush''' - {{accelbtn|LMB}}-drag in a 2D view&lt;br /&gt;
* '''Create an entity''' - {{accelbtn|RMB}}-click in a 2D view&lt;br /&gt;
* '''Select an object''' - use {{accelkey|shift}}{{accelbtn|LMB}} or {{accelkey|alt}}{{accelkey|shift}}{{accelbtn|LMB}}&lt;br /&gt;
* '''Select several objects''' (box-selection) - {{accelkey|alt}}{{accelbtn|LMB}}-drag a box around the objects to select.&lt;br /&gt;
* '''Move an object''' - select it, then click {{accelbtn|LMB}} inside the object to drag around&lt;br /&gt;
* '''Rotate an object''' - select it, then press {{accelkey|ctrl}}{{accelkey|R}} followed by {{accelkey|ctrl}}{{accelkey|X}}, {{accelkey|ctrl}}{{accelkey|Y}} or {{accelkey|ctrl}}{{accelkey|Z}} (depending on axis)&lt;br /&gt;
* '''Rotate an object arbitrarily''' - select it, then press {{accelkey|R}} for rotation mode&lt;br /&gt;
* '''Duplicate the selected object''' - press {{accelkey|space}}&lt;br /&gt;
* '''Delete the selected object''' - press {{accelkey|backspace}}&lt;br /&gt;
* '''Deselect an object''' - use {{accelkey|shift}}{{accelbtn|LMB}}&lt;br /&gt;
* '''Deselect all''' - press {{accelkey|Escape}}&lt;br /&gt;
* '''Stretch a brush''' - select it, then {{accelbtn|LMB}}-click outside the brush to drag the nearest face&lt;br /&gt;
* '''Shear a brush''' - select it, then use {{accelkey|ctrl}}{{accelbtn|LMB}} outside the brush to drag the nearest face.&lt;br /&gt;
* '''Vertex manipulate a brush or patch''' - select it, then press {{accelkey|E}} or {{accelkey|V}}&lt;br /&gt;
* '''Clip/Slice a brush''' - select it, then use {{accelkey|ctrl}}{{accelbtn|RMB}} to place clipping points (up to 3), and {{accelkey|enter}}/{{accelkey|shift}}{{accelkey|enter}}/{{accelkey|ctrl}}{{accelkey|enter}} to finish&lt;br /&gt;
* '''Select a face''' - in the 3D view, use {{accelkey|ctrl}}{{accelkey|shift}}{{accelbtn|RMB}}&lt;br /&gt;
* '''Copy texture from a face''' - in the 3D view, with a target face selected, {{accelbtn|MMB}}-click on the face with the texture to copy&lt;br /&gt;
* '''Copy texture to a face''' - in the 3D view, with a source face selected, {{accelkey|ctrl}}{{accelbtn|MMB}}-click on the face with the texture to overwrite&lt;br /&gt;
* '''Shift or rotate a texture''' - select the brush(es) or face(s) to modify, and press {{accelkey|S}} for the surface inspector&lt;br /&gt;
* '''Edit an entity's properties''' - select the entity and press {{accelkey|N}} for the entity inspector&lt;br /&gt;
* '''Export selected brushes as .obj''' - press {{accelkey|ctrl}}{{accelkey|E}}&lt;br /&gt;
* '''Snap selected objects to grid''' - press {{accelkey|ctrl}}{{accelkey|G}}&lt;br /&gt;
&lt;br /&gt;
== Map Features ==&lt;br /&gt;
* '''Spawn a player''' - place a player spawn entity, for example [[Entity info_team_gdf_spawn|info_team_gdf_spawn]]&lt;br /&gt;
* '''Spawn a vehicle''' - place a deployable entity, for example [[Entity deployable_spawn_icarus|deployable_spawn_icarus]]&lt;br /&gt;
&lt;br /&gt;
== Map Technicalities ==&lt;br /&gt;
* '''Create a [[LOD Group]]''' - go to the ''Groups Inspector'' ({{accelkey|L}}), press the ''LOD Groups'' button and press the green plus sign.&lt;br /&gt;
* '''Assign objects to a LOD Group''' - select the objects, then {{accelbtn|RMB}} on the LOD Group and choose 'Add Selection''&lt;br /&gt;
* '''Change the fade in/out distances of a LOD Group''' - select the LOD Group, then alter its {{keyname|MinVisDist}} and {{keyname|MaxVisDist}} settings&lt;br /&gt;
&lt;br /&gt;
== Map Organisation ==&lt;br /&gt;
* '''Hide unselected objects''' - press {{accelkey|ctrl}}{{accelkey|shift}}{{accelkey|h}}&lt;br /&gt;
* '''Hide selected objects''' - press {{accelkey|h}}&lt;br /&gt;
* '''Show hidden objects''' - press {{accelkey|shift}}{{accelkey|h}}&lt;br /&gt;
* '''Show/Hide Caulk''' - toggle with {{accelkey|Alt}}{{accelkey|6}}&lt;br /&gt;
* '''Show/Hide Clips''' - toggle with {{accelkey|Alt}}{{accelkey|7}}&lt;br /&gt;
* '''Show/Hide Entities''' - toggle with {{accelkey|Alt}}{{accelkey|2}}&lt;br /&gt;
* '''Show/Hide Patches''' - toggle with {{accelkey|ctrl}}{{accelkey|p}}&lt;br /&gt;
* '''Show/Hide References''' - toggle with {{accelkey|alt}}{{accelkey|r}}&lt;br /&gt;
&lt;br /&gt;
== Testing ==&lt;br /&gt;
* '''Toggle the real-time renderer''' - press {{accelkey|F3}}&lt;br /&gt;
* '''Load the game window''' - press {{accelkey|F2}}&lt;br /&gt;
* '''Load my map''' - get the game window up, go to the console, and use the {{consolecmd|devmap}} command (e.g. {{consolecmd|devmap mymap}})&lt;br /&gt;
&lt;br /&gt;
== In-game console commands ==&lt;br /&gt;
The console can be accessed by pressing the tilde button (above the TAB key). Also see [[Developer cheats]]&lt;br /&gt;
* '''Fly around''' - {{consolecmd|noclip}} toggles no clipping mode&lt;br /&gt;
* '''Be invincible''' - {{consolecmd|god}}&lt;br /&gt;
* '''Spawn a vehicle''' - {{consolecmd|spawn}}, e.g. {{consolecmd|spawn vehicle_husky}}&lt;br /&gt;
* '''Render portal outlines''' - {{consolecmd|r_showPortals}}&lt;br /&gt;
* '''Render face outline/wireframe''' - {{consolecmd|t_showTris}}&lt;br /&gt;
* '''Render coloured batch groups''' - {{consolecmd|r_showBatches}}&lt;br /&gt;
* '''Render occlusion tested objects''' - {{consolecmd|r_showOcclusions}}&lt;br /&gt;
* '''Test vis distances''' - {{consolecmd|r_visDistOfs}} e.g. {{consolecmd|r_visDistOfs 16384}} to be 16k units further away.&lt;br /&gt;
&lt;br /&gt;
[[Category:Level Design]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3281</id>
		<title>Enemy Territory: QUAKE Wars</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Enemy_Territory:_QUAKE_Wars&amp;diff=3281"/>
		<updated>2007-11-21T12:18:51Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Everything Else */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Welcome to the Enemy Territory: QUAKE Wars section. Here you'll find a variety of reference documentation and tutorials related to editing ETQW, along with links to the SDK. To learn more about Enemy Territory: QUAKE Wars, visit [http://www.enemyterritory.com www.enemyterritory.com].&lt;br /&gt;
&lt;br /&gt;
==Software Development Kit==&lt;br /&gt;
&lt;br /&gt;
The Enemy Territory: QUAKE Wars Software Development kit is currently in BETA. A list of download locations is [http://community.enemyterritory.com available here].&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Taking A Screenshot]]''' - Settings and options for making a great screenshot!&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Vehicles ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Tutorial]]''' - The whole thing! Click below for smaller segments.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 1|Step 1]]''' - Design considerations, before you do anything else!&lt;br /&gt;
** '''[[Vehicle Tutorial Part 2|Step 2]]''' - Initial rough model, rig and basic script.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 3|Step 3]]''' - More advanced rig and scripting.&lt;br /&gt;
** '''[[Vehicle Tutorial Part 4|Step 4]]''' - Further technical setup ideas.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models &amp;amp; Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making A Normal Map]]''' - Using Renderbump to generate a bump-map from a high-poly model.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Script &amp;amp; Code==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Declarations ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Materials]]''' - All you need to know about material declarations.&lt;br /&gt;
* '''[[Templates]]''' - Setting up templates to save time and effort.&lt;br /&gt;
* '''[[Surface Types]]''' - Available surface types for particle &amp;amp; sound effects.&lt;br /&gt;
* '''[[Skins]]''' - Easily switch textures on surfaces.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Vehicle Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Vehicle Scripting: Basic_Overview|Basic Overview]]''' - Introduction to vehicle setup.&lt;br /&gt;
* '''[[Vehicle Scripting: Entity_Definition|Entity Definition]]''' - One definition to rule them all!&lt;br /&gt;
* '''[[Vehicle Scripting: Vehicle_Definition|Vehicle Definition]]''' - Introduction to the ''.vscript'' file.&lt;br /&gt;
* '''[[Vehicle Scripting: Positions_&amp;amp;_Views|Positions &amp;amp; Views]]''' - Configuring player positions &amp;amp; camera views.&lt;br /&gt;
* '''[[Vehicle Scripting: Components|Components]]''' - Details of various vehicle components.&lt;br /&gt;
* '''[[Vehicle Scripting: Weapons|Weapons]]''' - Things that go boom!&lt;br /&gt;
* '''[[Vehicle Scripting: IK|IK]]''' - Inverse Kinematics &amp;amp; you...&lt;br /&gt;
* '''[[Vehicle Scripting: Cockpits|Cockpits]]''' - Cockpit setup.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Entity Scripting ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[EntityClass:Overview|Classes]]''' - Tree of entity types.&lt;br /&gt;
* '''[[ScriptEvent:List|Events]]''' - List of all script events.&lt;br /&gt;
* '''[[Scripting:Examples|Examples]]''' - Some example walkthoughs of building up a scripted entity.&lt;br /&gt;
* '''[[Script:Files|Script Files]]''' - List of the script files used by the game.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== GUIs ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[GUIs|GUI Overview]]''' - Overview of the GUI system.&lt;br /&gt;
* '''[[GUIs: Event Based Scripting|Event Based Scripting]]''' - GUIs are event-based.&lt;br /&gt;
* '''[[GUIs: Materials|Materials]]''' - Using materials in GUIs.&lt;br /&gt;
* '''[[GUIs: Transitions|Transitions]]''' - Transitions.&lt;br /&gt;
* '''[[GUIs: Templates|Templates]]''' - Using templates in GUIs.&lt;br /&gt;
* '''[[GUIs: List Enumeration|List Enumeration]]''' - List enumerations.&lt;br /&gt;
* '''[[GUIs: Properties|Properties]]''' - Player/Global properties and more.&lt;br /&gt;
* '''[[GUIs: Timelines|Timelines]]''' - GUI timelines.&lt;br /&gt;
* '''[[GUIs: Layouts|Layouts]]''' - Window layouts.&lt;br /&gt;
* '''[[Reference (GUIs)|Reference]]''' - GUI reference.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Design==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Introduction ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: New In ETQW|What's new in ETQW]]'''&lt;br /&gt;
* '''[[Design: ETQW from WET|Notes for W:ET mappers]]''' - for Wolfenstein: Enemy Territory mappers&lt;br /&gt;
* '''[[Design: editWorld from Radiant|Notes for Radiant users]]''' - for experienced Radiant users&lt;br /&gt;
* '''[[Design: editWorld from Worldcraft|Notes for Worldcraft users]]''' - for experienced Worldcraft users&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== The Basics ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: editWorld Basics|Editor Basics]]''' - start here&lt;br /&gt;
* '''[[Design: Brush Basics|Brush Basics]]''' - make your map&lt;br /&gt;
* '''[[Design: Entity Basics|Entity Basics]]''' - populate your map&lt;br /&gt;
* '''[[Design: Lighting Basics|Lighting Basics]]''' - light your map&lt;br /&gt;
* '''[[Design: Portal Basics|Portal Basics]]''' - portalise your map&lt;br /&gt;
* '''[[Design: References|Reference Basics]]''' - modularise your map&lt;br /&gt;
* '''[[Design: Map files|Map files]]'''&lt;br /&gt;
----&lt;br /&gt;
* '''[[Design: How do I|How do I ...?]]''' - Common and useful tasks&lt;br /&gt;
* '''[[Design: Troubleshooting|Troubleshooting]]''' - Common problems and fixes&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Advanced Stuff ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design:List of Entities|List of Entities]]''' - Descriptions for all entities&lt;br /&gt;
* '''[[Design: Geometry Optimisation|Optimising Geometry]]''' - How to increase performance&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=== Everything Else ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Design: editWorld Bugs and Fixes|Bugs and Fixes]]''' - Known and new bugs or issues&lt;br /&gt;
* '''[[Design: editWorld Customisation|Customising editWorld]]'''&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Art==&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Models ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[In-Game Models]]''' - Making models for use in the engine.&lt;br /&gt;
* '''[[High-Poly Models]]''' - Making source models for baking normal maps.&lt;br /&gt;
* '''[[Renderbump]]''' - Create normal maps from high-poly geometry.&lt;br /&gt;
* '''[[Imposters]]''' - Sprites used for rendering complex models cheaply at a distance.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Animation ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[MD5 Export Process]]''' - How to export an animated MD5.&lt;br /&gt;
* '''[[Vehicle Setup]]''' - How to set up a vehicle.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Textures ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Basic Texture Overview]]''' - Supported texture types and implementations.&lt;br /&gt;
* '''[[Texturesheets]]''' - Overview of what texturesheets are, and when to use them.&lt;br /&gt;
* '''[[The Atlas Editor]]''' - Create environment texture sheets to improve performance.&lt;br /&gt;
* '''[[RenderBumpFlat]]''' - Create normal-maps from high-poly geometry.&lt;br /&gt;
* '''[[Detail Textures]]''' - Add high-frequency detail to your textures.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
{| style=&amp;quot;border: 1px solid #AAAAAA;&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Terrain Editing ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Making a Terrain Model]]''' - Create a terrain mesh for your map.&lt;br /&gt;
* '''[[Terrain Editor|EditWorld's Terrain Editor]]''' - Set up a Surface Tree for your MegaTexture.&lt;br /&gt;
* '''[[MegaBuild]]''' - Render and compile your MegaTexture.&lt;br /&gt;
* '''[[Water Surfaces#Water Models|Water Surfaces]]''' - Create water to go with your landscape.&lt;br /&gt;
* '''[[STUFF System]]''' - Procedurally distribute models over your terrain mesh.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;border-bottom: 1px solid #AAAAAA;&amp;quot; |&lt;br /&gt;
=== Atmospheres and Effects ===&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
* '''[[Atmosphere Editor|The Atmosphere Editor]]''' - Create and edit atmospheres for your map.&lt;br /&gt;
* '''[[Ambient Light Editor|The Ambient Light Editor]]''' - Create and edit ambient light setups.&lt;br /&gt;
* '''[[Environment Maps]]''' - Used for reflection effects.&lt;br /&gt;
* '''[[Water Surfaces]]''' - Creating water effects.&lt;br /&gt;
* '''[[Effects Editor|The Effects Editor]]''' - Create and edit particle effects.&lt;br /&gt;
* '''[[Cheap Decals]]''' - Bulletholes and other collision decals.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Templates&amp;diff=3280</id>
		<title>Templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Templates&amp;diff=3280"/>
		<updated>2007-11-21T12:18:24Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Templates */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Templates ===&lt;br /&gt;
&lt;br /&gt;
'''This style of template should not be used. The preferred method is to use the parser-based $template instead.'''&lt;br /&gt;
&lt;br /&gt;
Templates provide away to avoid repetitive copy and paste of declarations such as materials and sound shaders.&lt;br /&gt;
Templates are defined in the templates folder, in files with &amp;quot;.template&amp;quot; as an extension. A template is basically a fancy way of replacing one piece of placeholder text with another.&lt;br /&gt;
&lt;br /&gt;
A sample template for a material is shown below:&lt;br /&gt;
&lt;br /&gt;
 template material/generic {&lt;br /&gt;
     parameters &amp;lt; '''TextureParm''', &lt;br /&gt;
                  '''BumpBehavior''' = &amp;quot;useTemplate hasHeightMap&amp;lt; '''TextureParm''', 1.0 &amp;gt;&amp;quot; &amp;gt;&lt;br /&gt;
     text {&lt;br /&gt;
         '''BumpBehavior'''&lt;br /&gt;
         diffusemap     '''TextureParm'''_d&lt;br /&gt;
         specularmap    '''TextureParm'''_s&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Keywords ====&lt;br /&gt;
===== template =====&lt;br /&gt;
First we have the keyword &amp;lt;i&amp;gt;template&amp;lt;/i&amp;gt;. This lets the engine know that we're defining a new template. Next is the name of the template. Templates follow the same naming rules as other declarations in the engine.&lt;br /&gt;
&lt;br /&gt;
===== parameters =====&lt;br /&gt;
Next we have the ''parameters'' block. This is a list of names that will be replaced when the template is evaluated. Think of them as placeholders for real information. Each name is separated by a comma (,) and can optionally have a ''default value''. The whole block is enclosed in &amp;lt; &amp;gt; to make it more readable.&lt;br /&gt;
&lt;br /&gt;
Default parameters allow you to specify things that aren't often changed. As soon as you specify a default value for a parameter, all parameters following it must also have defaults. If you leave off a default parameter when one is needed you will get a warning about it in the console.&lt;br /&gt;
&lt;br /&gt;
If you want to override a default parameter, but don't want to specify custom values for any preceding default parameters, give them a value of &amp;quot;__default&amp;quot; to automatically use their default value.&lt;br /&gt;
&lt;br /&gt;
===== text =====&lt;br /&gt;
The ''text'' block contains the actual text that is inserted into your declaration. Parameters that match text exactly (that is, case matters) will be replaced by the values that are passed into the template.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Terminology ====&lt;br /&gt;
 ''Parameter'' - This is a named placeholder that we use to mark where we want substitute in values.&lt;br /&gt;
&lt;br /&gt;
 ''Argument'' - This is the value that we give to the parameter. &lt;br /&gt;
                The argument is what is actually substituted into the the text.&lt;br /&gt;
&lt;br /&gt;
==== Using Templates ====&lt;br /&gt;
Using a template to insert text into your declarations a simple process. In this example we create a material.&lt;br /&gt;
&lt;br /&gt;
 material textures/jrad/templateTest {&lt;br /&gt;
     useTemplate material/generic&amp;lt; &amp;quot;textures/sand/dry_beach_sand_footprints&amp;quot; &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
When the material is loaded it will turn into this:&lt;br /&gt;
 material textures/jrad/templateTest {&lt;br /&gt;
     bumpmap addnormals ( '''textures/sand/dry_beach_sand_footprints'''_local.tga, &lt;br /&gt;
                          heightmap ( '''textures/sand/dry_beach_sand_footprints'''_h.tga, 1.0 ) )&lt;br /&gt;
     diffusemap     '''textures/sand/dry_beach_sand_footprints'''_d.tga&lt;br /&gt;
     specularmap    '''textures/sand/dry_beach_sand_footprints'''_s.tga&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ignore for the moment where the ''bumpmap'' line came from. You'll see that anywhere the first parameter &amp;quot;TextureParm&amp;quot; appeared it has been replaced by the first ( and only, in the case ) thing that we included in the useTemplate line.&lt;br /&gt;
&lt;br /&gt;
All arguments should be enclosed within quotes &amp;quot;&amp;quot;, even numbers. This is to ensure that the proper values are loaded into the appropriate arguments.&lt;br /&gt;
&lt;br /&gt;
==== Including Other Templates ====&lt;br /&gt;
You might have noticed that the bumpmap line in the above shader has come from &lt;br /&gt;
 '''BumpBehavior''' = &amp;quot;useTemplate hasHeightMap&amp;lt; '''TextureParm''', '''ScaleParm''' &amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When the template is evaluated, all of the arguments that you pass in are first applied to all of the other arguments that you pass in. Before we start replacing text in the main body of the material we evaluate '''BumpBehavior''' with the other arguments that are passed in and end up with&lt;br /&gt;
 useTemplate hasHeightMap&amp;lt; '''textures/sand/dry_beach_sand_footprints''', 1.0 &amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what is then used to replace text in the main body of the material.&lt;br /&gt;
&lt;br /&gt;
Before we get any further, here is the definition of the template ''hasHeightmap''&lt;br /&gt;
 template hasHeightmap {&lt;br /&gt;
     parameters &amp;lt; '''TextureParm''', '''ScaleParm''' &amp;gt;&lt;br /&gt;
     text {&lt;br /&gt;
         bumpmap addnormals ( '''TextureParm'''_local.tga, heightmap ( '''TextureParm'''_h.tga, '''ScaleParm''' ) )&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This is one of several behaviors that are available for the bumpmap stage of materials. This provides an easy way to customize the behavior of a single template in a flexible manner instead of having an excessive number of copy-pasted &amp;quot;almost-the-same&amp;quot; templates.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Templates&amp;diff=3279</id>
		<title>Templates</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Templates&amp;diff=3279"/>
		<updated>2007-11-21T12:13:49Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Templates ===&lt;br /&gt;
&lt;br /&gt;
This style of template should not be used. The preferred method is to use the parser-based $template instead.&lt;br /&gt;
&lt;br /&gt;
Templates provide away to avoid repetitive copy and paste of declarations such as materials and sound shaders.&lt;br /&gt;
Templates are defined in the templates folder, in files with &amp;quot;.template&amp;quot; as an extension. A template is basically a fancy way of replacing one piece of placeholder text with another.&lt;br /&gt;
&lt;br /&gt;
A sample template for a material is shown below:&lt;br /&gt;
&lt;br /&gt;
 template material/generic {&lt;br /&gt;
     parameters &amp;lt; '''TextureParm''', &lt;br /&gt;
                  '''BumpBehavior''' = &amp;quot;useTemplate hasHeightMap&amp;lt; '''TextureParm''', 1.0 &amp;gt;&amp;quot; &amp;gt;&lt;br /&gt;
     text {&lt;br /&gt;
         '''BumpBehavior'''&lt;br /&gt;
         diffusemap     '''TextureParm'''_d&lt;br /&gt;
         specularmap    '''TextureParm'''_s&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==== Keywords ====&lt;br /&gt;
===== template =====&lt;br /&gt;
First we have the keyword &amp;lt;i&amp;gt;template&amp;lt;/i&amp;gt;. This lets the engine know that we're defining a new template. Next is the name of the template. Templates follow the same naming rules as other declarations in the engine.&lt;br /&gt;
&lt;br /&gt;
===== parameters =====&lt;br /&gt;
Next we have the ''parameters'' block. This is a list of names that will be replaced when the template is evaluated. Think of them as placeholders for real information. Each name is separated by a comma (,) and can optionally have a ''default value''. The whole block is enclosed in &amp;lt; &amp;gt; to make it more readable.&lt;br /&gt;
&lt;br /&gt;
Default parameters allow you to specify things that aren't often changed. As soon as you specify a default value for a parameter, all parameters following it must also have defaults. If you leave off a default parameter when one is needed you will get a warning about it in the console.&lt;br /&gt;
&lt;br /&gt;
If you want to override a default parameter, but don't want to specify custom values for any preceding default parameters, give them a value of &amp;quot;__default&amp;quot; to automatically use their default value.&lt;br /&gt;
&lt;br /&gt;
===== text =====&lt;br /&gt;
The ''text'' block contains the actual text that is inserted into your declaration. Parameters that match text exactly (that is, case matters) will be replaced by the values that are passed into the template.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Terminology ====&lt;br /&gt;
 ''Parameter'' - This is a named placeholder that we use to mark where we want substitute in values.&lt;br /&gt;
&lt;br /&gt;
 ''Argument'' - This is the value that we give to the parameter. &lt;br /&gt;
                The argument is what is actually substituted into the the text.&lt;br /&gt;
&lt;br /&gt;
==== Using Templates ====&lt;br /&gt;
Using a template to insert text into your declarations a simple process. In this example we create a material.&lt;br /&gt;
&lt;br /&gt;
 material textures/jrad/templateTest {&lt;br /&gt;
     useTemplate material/generic&amp;lt; &amp;quot;textures/sand/dry_beach_sand_footprints&amp;quot; &amp;gt;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
When the material is loaded it will turn into this:&lt;br /&gt;
 material textures/jrad/templateTest {&lt;br /&gt;
     bumpmap addnormals ( '''textures/sand/dry_beach_sand_footprints'''_local.tga, &lt;br /&gt;
                          heightmap ( '''textures/sand/dry_beach_sand_footprints'''_h.tga, 1.0 ) )&lt;br /&gt;
     diffusemap     '''textures/sand/dry_beach_sand_footprints'''_d.tga&lt;br /&gt;
     specularmap    '''textures/sand/dry_beach_sand_footprints'''_s.tga&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ignore for the moment where the ''bumpmap'' line came from. You'll see that anywhere the first parameter &amp;quot;TextureParm&amp;quot; appeared it has been replaced by the first ( and only, in the case ) thing that we included in the useTemplate line.&lt;br /&gt;
&lt;br /&gt;
All arguments should be enclosed within quotes &amp;quot;&amp;quot;, even numbers. This is to ensure that the proper values are loaded into the appropriate arguments.&lt;br /&gt;
&lt;br /&gt;
==== Including Other Templates ====&lt;br /&gt;
You might have noticed that the bumpmap line in the above shader has come from &lt;br /&gt;
 '''BumpBehavior''' = &amp;quot;useTemplate hasHeightMap&amp;lt; '''TextureParm''', '''ScaleParm''' &amp;gt;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
When the template is evaluated, all of the arguments that you pass in are first applied to all of the other arguments that you pass in. Before we start replacing text in the main body of the material we evaluate '''BumpBehavior''' with the other arguments that are passed in and end up with&lt;br /&gt;
 useTemplate hasHeightMap&amp;lt; '''textures/sand/dry_beach_sand_footprints''', 1.0 &amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is what is then used to replace text in the main body of the material.&lt;br /&gt;
&lt;br /&gt;
Before we get any further, here is the definition of the template ''hasHeightmap''&lt;br /&gt;
 template hasHeightmap {&lt;br /&gt;
     parameters &amp;lt; '''TextureParm''', '''ScaleParm''' &amp;gt;&lt;br /&gt;
     text {&lt;br /&gt;
         bumpmap addnormals ( '''TextureParm'''_local.tga, heightmap ( '''TextureParm'''_h.tga, '''ScaleParm''' ) )&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
This is one of several behaviors that are available for the bumpmap stage of materials. This provides an easy way to customize the behavior of a single template in a flexible manner instead of having an excessive number of copy-pasted &amp;quot;almost-the-same&amp;quot; templates.&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UserInterfaceLocal&amp;diff=3278</id>
		<title>UserInterfaceLocal</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UserInterfaceLocal&amp;diff=3278"/>
		<updated>2007-11-21T12:09:26Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UserInterfaceLocal]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This is the GUI itself, all window defs must be inside it. You may set properties, flags, cache materials, cache sounds, set atmospheres and add events directly on the GUI. GUI script functions may be called from any event or timeline by using a &amp;quot;gui.&amp;quot; prefix to the function name.&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 gui guis/vehicles/edf_titan {&lt;br /&gt;
 	// Properties for the GUI.&lt;br /&gt;
 	properties {&lt;br /&gt;
 		float flags = immediate( flags ) | GUI_FULLSCREEN;&lt;br /&gt;
 	}&lt;br /&gt;
 	_class_icons&lt;br /&gt;
 &lt;br /&gt;
 	// Cache the titan icon material.&lt;br /&gt;
 	materials {&lt;br /&gt;
 		&amp;quot;icon&amp;quot;		&amp;quot;guis/assets/hud/gdf/vehicles/titan&amp;quot;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	_base_icon // Template: setup background material, player list, etc.&lt;br /&gt;
 	_hud_materials // Template: Cache all materials used in the HUD.&lt;br /&gt;
 	_position( 0, 2, 10 ) // Template: Setup icon for player position 0&lt;br /&gt;
 	_position( 1, 2, 24 ) // Template: Setup icon for player position 1&lt;br /&gt;
 &lt;br /&gt;
 	// Template: Draw a generic GDF missile sight.&lt;br /&gt;
 	_gdf_generic_missile_sight( &amp;quot;dontshowlines&amp;quot;, &amp;quot;0,0,0,1&amp;quot;, &amp;quot;0,0,0,1&amp;quot; )&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UserInterfaceLocal Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UserInterfaceLocal Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== Evaluator Functions ===&lt;br /&gt;
 [[UserInterfaceLocal:compare|compare]]                            String comparison.&lt;br /&gt;
 [[UserInterfaceLocal:icompare|icompare]]                           Case insensitive string comparison.&lt;br /&gt;
 [[UserInterfaceLocal:wcompare|wcompare]]                           Wide string comparison.&lt;br /&gt;
 [[UserInterfaceLocal:iwcompare|iwcompare]]                          Case insensitive string comparison. Ignores color codes.&lt;br /&gt;
 [[UserInterfaceLocal:hcompare|hcompare]]                           Compare handles.&lt;br /&gt;
 [[UserInterfaceLocal:toString|toString]]                           Float to string conversion.&lt;br /&gt;
 [[UserInterfaceLocal:toWString|toWString]]                          Float to wide string conversion.&lt;br /&gt;
 [[UserInterfaceLocal:toFloat|toFloat]]                            String value converted to a float.&lt;br /&gt;
 [[UserInterfaceLocal:localizeArgs|localizeArgs]]                       Localize text with additional string arguments.&lt;br /&gt;
 [[UserInterfaceLocal:localizeHandle|localizeHandle]]                     Localize text given a text declaration handle.&lt;br /&gt;
 [[UserInterfaceLocal:localize|localize]]                           Localize text.&lt;br /&gt;
 [[UserInterfaceLocal:square|square]]                             Squares the input value.&lt;br /&gt;
 [[UserInterfaceLocal:vec2Length|vec2Length]]                         Length of a 2D vector.&lt;br /&gt;
 [[UserInterfaceLocal:vec2Normalize|vec2Normalize]]                      Normalize a 2D vector.&lt;br /&gt;
 [[UserInterfaceLocal:abs|abs]]                                Absolute value of a float.&lt;br /&gt;
 [[UserInterfaceLocal:min|min]]                                Returns the minimum of two values.&lt;br /&gt;
 [[UserInterfaceLocal:max|max]]                                Returns the maximum of two values.&lt;br /&gt;
 [[UserInterfaceLocal:clamp|clamp]]                              Clamp value between min and max.&lt;br /&gt;
 [[UserInterfaceLocal:msToHMS|msToHMS]]                            Converts from milliseconds to hours, minutes, seconds.&lt;br /&gt;
 [[UserInterfaceLocal:sToHMS|sToHMS]]                             Converts from seconds to hours, minutes, seconds.&lt;br /&gt;
 [[UserInterfaceLocal:toggle|toggle]]                             Returns the opposite boolean value of the input value.&lt;br /&gt;
 [[UserInterfaceLocal:floor|floor]]                              The floor of the input value.&lt;br /&gt;
 [[UserInterfaceLocal:ceil|ceil]]                               The ceiling of the input value.&lt;br /&gt;
 [[UserInterfaceLocal:toUpper|toUpper]]                            Convert a string to upper case.&lt;br /&gt;
 [[UserInterfaceLocal:toLower|toLower]]                            Convert a string to lower case.&lt;br /&gt;
 [[UserInterfaceLocal:toWStr|toWStr]]                             Convert a string to a wide string.&lt;br /&gt;
 [[UserInterfaceLocal:toStr|toStr]]                              Convert a wide string to a string.&lt;br /&gt;
 [[UserInterfaceLocal:isValidHandle|isValidHandle]]                      Check if handle is valid.&lt;br /&gt;
 [[UserInterfaceLocal:floatToHandle|floatToHandle]]                      Convert a float to a handle.&lt;br /&gt;
 [[UserInterfaceLocal:color|color]]                              Convert a string to a color.&lt;br /&gt;
 [[UserInterfaceLocal:strLen|strLen]]                             Length of the string.&lt;br /&gt;
 [[UserInterfaceLocal:wstrLen|wstrLen]]                            Length of the wide string.&lt;br /&gt;
 [[UserInterfaceLocal:sin|sin]]                                Sine of the input value.&lt;br /&gt;
 [[UserInterfaceLocal:cos|cos]]                                Cosine of the input value.&lt;br /&gt;
 [[UserInterfaceLocal:colorForIndex|colorForIndex]]                      Color for the index where the index is between 0 and 31.&lt;br /&gt;
 [[UserInterfaceLocal:stringToVec4|stringToVec4]]                       Convert a string to a 4D vector.&lt;br /&gt;
=== Utility Functions ===&lt;br /&gt;
 [[UserInterfaceLocal:consoleCommand|consoleCommand]]                     Exectue a console command, append to the command buffer.&lt;br /&gt;
 [[UserInterfaceLocal:consoleCommandImmediate|consoleCommandImmediate]]            Exectue a console command, immediate execution of the command.&lt;br /&gt;
 [[UserInterfaceLocal:playSound|playSound]]                          Play a sound in the current sound world.&lt;br /&gt;
 [[UserInterfaceLocal:playGameSound|playGameSound]]                      Play a sound in the game sound world.&lt;br /&gt;
 [[UserInterfaceLocal:playMusic|playMusic]]                          Play a sound on the music channel.&lt;br /&gt;
 [[UserInterfaceLocal:stopMusic|stopMusic]]                          Stop any sound on the music channel.&lt;br /&gt;
 [[UserInterfaceLocal:querySpeakers|querySpeakers]]                      Desired number of speakers.&lt;br /&gt;
 [[UserInterfaceLocal:fadeSoundClass|fadeSoundClass]]                     Fade a sound class to a volume in X milliseconds.&lt;br /&gt;
 [[UserInterfaceLocal:cacheMaterial|cacheMaterial]]                      Store a material to the material cache.&lt;br /&gt;
 [[UserInterfaceLocal:activate|activate]]                           Activate the GUI if it is not active. Calls onActivate events for windows.&lt;br /&gt;
 [[UserInterfaceLocal:deactivate|deactivate]]                         Deactivate the GUI. Calls onDeactivate events for windows.&lt;br /&gt;
 [[UserInterfaceLocal:sendCommand|sendCommand]]                        Send a script command, The GUI must be attached to an entity. Script event OnNetworkMessage for the player will be called with the command data.&lt;br /&gt;
 [[UserInterfaceLocal:sendNetworkCommand|sendNetworkCommand]]                 Send a script command. Script event OnNetworkMessage for the player will be called with the command data.&lt;br /&gt;
 [[UserInterfaceLocal:postNamedEvent|postNamedEvent]]                     Call a named event.&lt;br /&gt;
 [[UserInterfaceLocal:postNamedEventOn|postNamedEventOn]]                   Call a named event on a window.&lt;br /&gt;
 [[UserInterfaceLocal:scriptCall|scriptCall]]                         Call a script event on the entity this GUI is bound to. The script parameters should be pushed.on the stack using scriptPush&amp;lt;type&amp;gt;() script calls.&lt;br /&gt;
 [[UserInterfaceLocal:setCookieString|setCookieString]]                    Set a key/val which will be saved in the user profile.&lt;br /&gt;
 [[UserInterfaceLocal:getCookieString|getCookieString]]                    Return value for the key.&lt;br /&gt;
 [[UserInterfaceLocal:setCookieInt|setCookieInt]]                       Set an integer key/val which will be saved in the user profile.&lt;br /&gt;
 [[UserInterfaceLocal:getCookieInt|getCookieInt]]                       Return integer value for the key.&lt;br /&gt;
 [[UserInterfaceLocal:setShaderParm|setShaderParm]]                      Sets a shader parameter value. This is for example used while drawing the command map so different material stages can be used depending on if the command map is drawn in a circle or a rectangle&lt;br /&gt;
 [[UserInterfaceLocal:getKeyBind|getKeyBind]]                         Get the key for a binding.&lt;br /&gt;
 [[UserInterfaceLocal:print|print]]                              Print a string to the console. _newline or _quote should be used instead of the escape characters \n and \&amp;quot; respectively.&lt;br /&gt;
 [[UserInterfaceLocal:getStringForProperty|getStringForProperty]]               Get string for a window property.&lt;br /&gt;
 [[UserInterfaceLocal:setPropertyFromString|setPropertyFromString]]              Set a property from a string.&lt;br /&gt;
 [[UserInterfaceLocal:broadcastEvent|broadcastEvent]]                     Broadcast a named event to a window. If no window is specified post the event on the GUI.&lt;br /&gt;
 [[UserInterfaceLocal:broadcastEventToChildren|broadcastEventToChildren]]           Broadcast an event only to immediate children.&lt;br /&gt;
 [[UserInterfaceLocal:broadcastEventToDescendants|broadcastEventToDescendants]]        Broadcast an event recursively to all children.&lt;br /&gt;
 [[UserInterfaceLocal:getParentName|getParentName]]                      Get parent name.&lt;br /&gt;
 [[UserInterfaceLocal:copyHandle|copyHandle]]                         Copy a handle. Should be used instead of immediate for integers.&lt;br /&gt;
 [[UserInterfaceLocal:activateMenuSoundWorld|activateMenuSoundWorld]]             Activates the menu sound world and pauses the game sound world or deactivates the menu sound world and unpauses the game sound world.&lt;br /&gt;
 [[UserInterfaceLocal:getStringMapValue|getStringMapValue]]                  Get value for a key for the give string map def. Used to cache crosshair material used by the player.&lt;br /&gt;
 [[UserInterfaceLocal:isBackgroundLoadComplete|isBackgroundLoadComplete]]           Check if loading of menu models (earth/stars/strogg fleet etc.) has been loaded.&lt;br /&gt;
 [[UserInterfaceLocal:copyText|copyText]]                           Copy the text to the clipboard.&lt;br /&gt;
 [[UserInterfaceLocal:pasteText|pasteText]]                          Copy the clipboard data.&lt;br /&gt;
 [[UserInterfaceLocal:uploadLevelShot|uploadLevelShot]]                    Upload an image to a target image. Used for map screenshots.&lt;br /&gt;
 [[UserInterfaceLocal:getGameTag|getGameTag]]                         Game build name.&lt;br /&gt;
 [[UserInterfaceLocal:getLoadTip|getLoadTip]]                         Get a load tooltip intended for the map loading screen.&lt;br /&gt;
 [[UserInterfaceLocal:cancelToolTip|cancelToolTip]]                      Set float property active to false for the toolTip window.&lt;br /&gt;
 [[UserInterfaceLocal:checkCVarsAgainstCFG|checkCVarsAgainstCFG]]               Used in game options to check the machine spec the user has chosen.&lt;br /&gt;
 [[UserInterfaceLocal:collapseColors|collapseColors]]                     Collapse all color codes.&lt;br /&gt;
=== Game Functions ===&lt;br /&gt;
 [[UserInterfaceLocal:getSpectatorList|getSpectatorList]]                   List of spectators separated with commas. Used with the marquee window type for scrolling.&lt;br /&gt;
 [[UserInterfaceLocal:getTeamPlayerCount|getTeamPlayerCount]]                 Get the number of players on a team.&lt;br /&gt;
 [[UserInterfaceLocal:getWeaponData|getWeaponData]]                      Get weapon value given a key. Mainly used for getting model and model/joint names for player in the limbo menu.&lt;br /&gt;
 [[UserInterfaceLocal:getNumWeaponPackages|getNumWeaponPackages]]               Get number of weapon packages for a class.&lt;br /&gt;
 [[UserInterfaceLocal:getWeaponBankForName|getWeaponBankForName]]               Get bank number for slot name.&lt;br /&gt;
 [[UserInterfaceLocal:updateLimboProficiency|updateLimboProficiency]]             Set new player class and update the proficiency related limbo properties. Used for updating limbo properties when selecting a class.&lt;br /&gt;
 [[UserInterfaceLocal:getRoleCountForTeam|getRoleCountForTeam]]                Number of players with a specific role on a team.&lt;br /&gt;
 [[UserInterfaceLocal:getEquivalentClass|getEquivalentClass]]                 Get the equivalent class on the target team to the class on the current team.&lt;br /&gt;
 [[UserInterfaceLocal:getClassSkin|getClassSkin]]                       Get skin name for class.&lt;br /&gt;
 [[UserInterfaceLocal:toggleReady|toggleReady]]                        Toggle the local player to be ready during warmup.&lt;br /&gt;
 [[UserInterfaceLocal:execVote|execVote]]                           Execute a vote on client or listen server. The vote index then the vote key should have been pushed on the GUI stack before calling this function.&lt;br /&gt;
 [[UserInterfaceLocal:getCommandMapTitle|getCommandMapTitle]]                 Get the command map title for a playzone on the current map.&lt;br /&gt;
 [[UserInterfaceLocal:getPersistentRankInfo|getPersistentRankInfo]]              Get the current rank or rank material name for the local player.&lt;br /&gt;
 [[UserInterfaceLocal:setSpawnPoint|setSpawnPoint]]                      Set the current spawn point for the local player. Send the name to the server if a client.&lt;br /&gt;
 [[UserInterfaceLocal:highlightSpawnPoint|highlightSpawnPoint]]                Call script event OnHighlight on the spawnpoint for the team.&lt;br /&gt;
 [[UserInterfaceLocal:mutePlayer|mutePlayer]]                         Toggle mute for a player.&lt;br /&gt;
 [[UserInterfaceLocal:spectateClient|spectateClient]]                     Spectate a specific client, works on client and listen server.&lt;br /&gt;
 [[UserInterfaceLocal:chatCommand|chatCommand]]                        Send a chat command.&lt;br /&gt;
=== CVar Functions ===&lt;br /&gt;
 [[UserInterfaceLocal:setCVar|setCVar]]                            Set a cvar.&lt;br /&gt;
 [[UserInterfaceLocal:getCVar|getCVar]]                            Get a cvar value.&lt;br /&gt;
 [[UserInterfaceLocal:resetCVar|resetCVar]]                          Reset a CVar, gives it the default value.&lt;br /&gt;
 [[UserInterfaceLocal:setCVarFloat|setCVarFloat]]                       Set a cvar.&lt;br /&gt;
 [[UserInterfaceLocal:getCVarFloat|getCVarFloat]]                       Get a cvar value.&lt;br /&gt;
 [[UserInterfaceLocal:setCVarInt|setCVarInt]]                         Set a cvar.&lt;br /&gt;
 [[UserInterfaceLocal:getCVarInt|getCVarInt]]                         Get a cvar value.&lt;br /&gt;
 [[UserInterfaceLocal:setCVarBool|setCVarBool]]                        Set a cvar.&lt;br /&gt;
 [[UserInterfaceLocal:getCVarBool|getCVarBool]]                        Get a cvar value.&lt;br /&gt;
 [[UserInterfaceLocal:getCVarColor|getCVarColor]]                       Get a cvar value.&lt;br /&gt;
 [[UserInterfaceLocal:isCVarLocked|isCVarLocked]]                       Check if a CVar has the CVAR_GUILOCKED flag set.&lt;br /&gt;
=== Stack Functions ===&lt;br /&gt;
 [[UserInterfaceLocal:scriptPushString|scriptPushString]]                   Push a string on the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptPushFloat|scriptPushFloat]]                    Push a float on the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptPushVec2|scriptPushVec2]]                     Push a vec2 on the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptPushVec3|scriptPushVec3]]                     Push a vec3 on the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptPushVec4|scriptPushVec4]]                     Push a vec4 on the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptGetWStringResult|scriptGetWStringResult]]             Pop a wide string from the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptGetStringResult|scriptGetStringResult]]              Pop a string from the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptGetFloatResult|scriptGetFloatResult]]               Pop a float from the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptGetVec2Result|scriptGetVec2Result]]                Pop a vec2 from the stack.&lt;br /&gt;
 [[UserInterfaceLocal:scriptGetVec4Result|scriptGetVec4Result]]                Pop a vec4 from the stack.&lt;br /&gt;
 [[UserInterfaceLocal:pushGeneralString|pushGeneralString]]                  Push a string on the stack with the given name. Any literal stack name is valid.&lt;br /&gt;
 [[UserInterfaceLocal:popGeneralString|popGeneralString]]                   Pop a string on the stack with the given name. Any literal stack name is valid.&lt;br /&gt;
 [[UserInterfaceLocal:getGeneralString|getGeneralString]]                   Get the string on the top of the stack with the given name, does not pop the stack. Any literal stack name is valid.&lt;br /&gt;
 [[UserInterfaceLocal:generalStringAvailable|generalStringAvailable]]             Check if a stack with the given name is available.&lt;br /&gt;
 [[UserInterfaceLocal:clearGeneralStrings|clearGeneralStrings]]                Clear the stack with the given name.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UserInterfaceLocal:onCreate|onCreate]]                           Called on window creation&lt;br /&gt;
 [[UserInterfaceLocal:onActivate|onActivate]]                         This happens when the GUI is activated.&lt;br /&gt;
 [[UserInterfaceLocal:onDeactivate|onDeactivate]]                       This happens when the GUI is activated.&lt;br /&gt;
 [[UserInterfaceLocal:onNamedEvent|onNamedEvent]]                       Called when one of the events specified occurs&lt;br /&gt;
 [[UserInterfaceLocal:onPropertyChanged|onPropertyChanged]]                  Called when one of the properties specified occurs&lt;br /&gt;
 [[UserInterfaceLocal:onCVarChanged|onCVarChanged]]                      Called when one of the CVars' value changes&lt;br /&gt;
 [[UserInterfaceLocal:onCancel|onCancel]]                           Called when any key bound to the _menuCancel is pressed&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRenderCamera_Animated&amp;diff=3277</id>
		<title>UIRenderCamera Animated</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRenderCamera_Animated&amp;diff=3277"/>
		<updated>2007-11-21T12:09:15Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIRenderWorld_Child]]&lt;br /&gt;
*** [[:UIRenderCamera_Animated]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIRenderWorld_Child]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type renderCameraAnim;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRenderCamera_Animated Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRenderCamera_Animated Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRenderCamera&amp;diff=3276</id>
		<title>UIRenderCamera</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRenderCamera&amp;diff=3276"/>
		<updated>2007-11-21T12:09:06Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIRenderWorld_Child]]&lt;br /&gt;
*** [[:UIRenderCamera]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIRenderWorld_Child]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type renderCamera;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRenderCamera Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRenderCamera Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRenderLight&amp;diff=3275</id>
		<title>UIRenderLight</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRenderLight&amp;diff=3275"/>
		<updated>2007-11-21T12:08:56Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIRenderWorld_Child]]&lt;br /&gt;
*** [[:UIRenderLight]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIRenderWorld_Child]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type renderLight;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRenderLight Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRenderLight Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRenderModel&amp;diff=3274</id>
		<title>UIRenderModel</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRenderModel&amp;diff=3274"/>
		<updated>2007-11-21T12:08:46Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIRenderWorld_Child]]&lt;br /&gt;
*** [[:UIRenderModel]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIRenderWorld_Child]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type renderModel;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRenderModel Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRenderModel Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRenderWorld_Child&amp;diff=3273</id>
		<title>UIRenderWorld Child</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRenderWorld_Child&amp;diff=3273"/>
		<updated>2007-11-21T12:08:36Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIRenderWorld_Child]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class is abstract and may not be used directly in the GUIs. Any classes deriving from this class will inherit all its properties, flags, functions and events. It will inherit all properties, flags, functions and events from [[UIObject]]&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRenderWorld_Child Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRenderWorld_Child Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UISlider&amp;diff=3272</id>
		<title>UISlider</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UISlider&amp;diff=3272"/>
		<updated>2007-11-21T12:08:25Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UISlider]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type slider;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UISlider Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UISlider Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UISlider:onMouseEnterThumb|onMouseEnterThumb]]                  Called when the mouse enters the thumb.&lt;br /&gt;
 [[UISlider:onMouseExitThumb|onMouseExitThumb]]                   Called when the mouse exits the thumb.&lt;br /&gt;
 [[UISlider:onMouseEnterUpArrow|onMouseEnterUpArrow]]                Called when the mouse enters the up arrow.&lt;br /&gt;
 [[UISlider:onMouseExitUpArrow|onMouseExitUpArrow]]                 Called when the mouse exits the up arrow.&lt;br /&gt;
 [[UISlider:onMouseEnterDownArrow|onMouseEnterDownArrow]]              Called when the mouse enters the down arrow.&lt;br /&gt;
 [[UISlider:onMouseExitDownArrow|onMouseExitDownArrow]]               Called when the mouse exits the down arrow.&lt;br /&gt;
 [[UISlider:onMouseEnterGutter|onMouseEnterGutter]]                 Called when the mouse enters the gutter.&lt;br /&gt;
 [[UISlider:onMouseExitGutter|onMouseExitGutter]]                  Called when the mouse exits the gutter.&lt;br /&gt;
 [[UISlider:onMouseDownUpArrow|onMouseDownUpArrow]]                 Called when the left mouse button is pressed on the up arrow.&lt;br /&gt;
 [[UISlider:onMouseUpUpArrow|onMouseUpUpArrow]]                   Called when the left mouse button is depressed on the up arrow.&lt;br /&gt;
 [[UISlider:onMouseDownDownArrow|onMouseDownDownArrow]]               Called when the left mouse button is pressed on the down arrow.&lt;br /&gt;
 [[UISlider:onMouseUpDownArrow|onMouseUpDownArrow]]                 Called when the left mouse button is depressed on the down arrow.&lt;br /&gt;
 [[UISlider:onMouseDownThumb|onMouseDownThumb]]                   Called when the left mouse button is pressed on the thumb.&lt;br /&gt;
 [[UISlider:onMouseUpThumb|onMouseUpThumb]]                     Called when the left mouse button is depressed on the thumb.&lt;br /&gt;
 [[UISlider:onMouseDownGutter|onMouseDownGutter]]                  Called when the left mouse button is pressed in the gutter.&lt;br /&gt;
 [[UISlider:onMouseUpGutter|onMouseUpGutter]]                    Called when the left mouse button is depressed in the gutter.&lt;br /&gt;
 [[UISlider:onBeginScroll|onBeginScroll]]                      Called when starting to drag the thumb.&lt;br /&gt;
 [[UISlider:onEndScroll|onEndScroll]]                        Called when stopped dragging the thumb.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRenderWorld&amp;diff=3271</id>
		<title>UIRenderWorld</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRenderWorld&amp;diff=3271"/>
		<updated>2007-11-21T12:08:15Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIRenderWorld]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type renderWorld;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRenderWorld Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRenderWorld Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIRadialMenu&amp;diff=3270</id>
		<title>UIRadialMenu</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIRadialMenu&amp;diff=3270"/>
		<updated>2007-11-21T12:08:05Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIRadialMenu]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type radialmenu;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIRadialMenu Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIRadialMenu Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIRadialMenu:insertItem|insertItem]]                         Insert an item into a page.&lt;br /&gt;
 [[UIRadialMenu:insertPage|insertPage]]                         Insert a new page.&lt;br /&gt;
 [[UIRadialMenu:getItemData|getItemData]]                        Get item data.&lt;br /&gt;
 [[UIRadialMenu:clear|clear]]                              Clear all pages.&lt;br /&gt;
 [[UIRadialMenu:clearPage|clearPage]]                          Clear all page items.&lt;br /&gt;
 [[UIRadialMenu:pushPage|pushPage]]                           Push page on stack, make it the current page and reset mouse position. Calls onPagePushed event.&lt;br /&gt;
 [[UIRadialMenu:popPage|popPage]]                            Pop the stack of pages. Current page is the page on the top after popping.&lt;br /&gt;
 [[UIRadialMenu:clearPageStack|clearPageStack]]                     Clear the page stack.&lt;br /&gt;
 [[UIRadialMenu:postCommand|postCommand]]                        Post a command with the command data for the item.&lt;br /&gt;
 [[UIRadialMenu:loadFromDef|loadFromDef]]                        Load a radial menu from def files.&lt;br /&gt;
 [[UIRadialMenu:appendFromDef|appendFromDef]]                      Load a radial menu page from def files.&lt;br /&gt;
 [[UIRadialMenu:fillFromEnumerator|fillFromEnumerator]]                 Fill menu from an enumerator.&lt;br /&gt;
 [[UIRadialMenu:transitionItemVec4|transitionItemVec4]]                 Transition for an item.&lt;br /&gt;
 [[UIRadialMenu:getItemTransitionVec4Result|getItemTransitionVec4Result]]        Get the result from a transition given a property type.&lt;br /&gt;
 [[UIRadialMenu:clearTransitions|clearTransitions]]                   Clear transitions.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIRadialMenu:onCommand|onCommand]]                          Called when the given input command occurs. The game script calls these commands to control navigation within the quick chat.&lt;br /&gt;
 [[UIRadialMenu:onMeasureItem|onMeasureItem]]                      Measure the item size before drawing.&lt;br /&gt;
 [[UIRadialMenu:onDrawItem|onDrawItem]]                         Draw a quick chat item.&lt;br /&gt;
 [[UIRadialMenu:onDrawContext|onDrawContext]]                      Draw the context button (centered in the radial menu).&lt;br /&gt;
 [[UIRadialMenu:onDrawDeadZone|onDrawDeadZone]]                     Not used.&lt;br /&gt;
 [[UIRadialMenu:onPagePushed|onPagePushed]]                       Called when the player enters a new page.&lt;br /&gt;
 [[UIRadialMenu:onPagePopped|onPagePopped]]                       Called when the player exits a page. currentPage will be -1 if there is no valid page.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIProgress&amp;diff=3269</id>
		<title>UIProgress</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIProgress&amp;diff=3269"/>
		<updated>2007-11-21T12:07:54Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIProgress]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type progress;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIProgress Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIProgress Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=Reference_(GUIs)&amp;diff=3268</id>
		<title>Reference (GUIs)</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=Reference_(GUIs)&amp;diff=3268"/>
		<updated>2007-11-21T12:07:40Z</updated>

		<summary type="html">&lt;p&gt;JRAD: /* Window Types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Properties ==&lt;br /&gt;
* [[AdminProperties]]&lt;br /&gt;
* [[LimboProperties]]&lt;br /&gt;
* [[PlayerProperties]]&lt;br /&gt;
* [[SDNet]]&lt;br /&gt;
&lt;br /&gt;
== Window Types ==&lt;br /&gt;
UIObject is the base window type from which all other window types inherit from.&lt;br /&gt;
&lt;br /&gt;
* [[UIObject|UIObject]]&lt;br /&gt;
** [[UIObject_Drawable|UIObject_Drawable]]&lt;br /&gt;
*** [[UILayout_Static|layoutStatic]]&lt;br /&gt;
**** [[UILayout_StaticBase|UILayout_StaticBase]]&lt;br /&gt;
***** [[UILayout_Vertical|layoutVertical]]&lt;br /&gt;
***** [[UILayout_Horizontal|layoutHorizontal]]&lt;br /&gt;
*** [[UIWindow|window]]&lt;br /&gt;
**** [[UIBinder|binder]]&lt;br /&gt;
**** [[UICinematic|cinematic]]&lt;br /&gt;
**** [[UICreditScroll|creditScroll]]&lt;br /&gt;
**** [[UIEdit|edit]]&lt;br /&gt;
**** [[UIEditW|editw]]&lt;br /&gt;
**** [[UIIconNotification|iconNotification]]&lt;br /&gt;
**** [[UIList|list]]&lt;br /&gt;
**** [[UIMarquee|marquee]]&lt;br /&gt;
**** [[UIProgress|progress]]&lt;br /&gt;
**** [[UIRadialMenu|radialmenu]]&lt;br /&gt;
**** [[UIRenderWorld|renderWorld]]&lt;br /&gt;
**** [[UISlider|slider]]&lt;br /&gt;
** [[UIRenderWorld_Child|UIRenderWorld_Child]]&lt;br /&gt;
*** [[UIRenderModel|renderModel]]&lt;br /&gt;
*** [[UIRenderLight|renderLight]]&lt;br /&gt;
*** [[UIRenderCamera|renderCamera]]&lt;br /&gt;
*** [[UIRenderCamera_Animated|renderCameraAnim]]&lt;br /&gt;
* [[UserInterfaceLocal|UserInterfaceLocal]]&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIMarquee&amp;diff=3267</id>
		<title>UIMarquee</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIMarquee&amp;diff=3267"/>
		<updated>2007-11-21T12:07:25Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIMarquee]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
Marquee window type is used for scrolling text vertically or horizontally. It is used for showing the message of the day in the main menu and the spectator list in the scoreboard and limbo menu.&lt;br /&gt;
&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type marquee;&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 	windowDef spectatorList {&lt;br /&gt;
 	type marquee;&lt;br /&gt;
 	properties {&lt;br /&gt;
 		rect rect = PADDING, _to_bottom_of( lblSpectating ) + 2, _fill_to_right_of( specInfoSurround ), 14;&lt;br /&gt;
 		float fontSize = 12;&lt;br /&gt;
 		color forecolor = 1,1,1,0.7;&lt;br /&gt;
 		vec2 textAlignment = TA_LEFT, TA_VCENTER;&lt;br /&gt;
 		float speed = 9;&lt;br /&gt;
 	}&lt;br /&gt;
 &lt;br /&gt;
 	timeline {&lt;br /&gt;
 		onTime 500 {&lt;br /&gt;
 		text = toWStr( gui.getSpectatorList() );&lt;br /&gt;
 		resetTime( 0 );&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIMarquee Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIMarquee Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIMarquee:resetScroll|resetScroll]]                        Reset scroll amount.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIList&amp;diff=3266</id>
		<title>UIList</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIList&amp;diff=3266"/>
		<updated>2007-11-21T12:07:13Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIList]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The list window type can be used if you want display a list in the GUI. It is the most complex window type in the GUI system. Some of the features of the list type are column headers, drawing of text or materials in headers and items, saving additional data in items, column sorting, variable row height, filling from enumerators, mouse and key events on header columns and items.&lt;br /&gt;
&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type list;&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 windowDef vPlayerList {&lt;br /&gt;
 	type list;&lt;br /&gt;
 	properties {&lt;br /&gt;
 		float 	fontSize 		= 48;&lt;br /&gt;
 		// Truncate player name to the item rectangle&lt;br /&gt;
 		float	flags			= immediate( flags ) | WF_TRUNCATE_TEXT;&lt;br /&gt;
 		rect 	rect 			= 24, 50, 590, 350;&lt;br /&gt;
 		color	backColor		= 0,0,0,0;&lt;br /&gt;
 	}&lt;br /&gt;
 	events {&lt;br /&gt;
 		onCreate {&lt;br /&gt;
 			insertColumn( gui.blankWStr, 0, 0 ); // Class icon column.&lt;br /&gt;
 			insertColumn( gui.blankWStr, 590, 1 ) // Player name column;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	timeLine {&lt;br /&gt;
 		onTime 250 {&lt;br /&gt;
 			// Have the gamecode update the list of players in the vehicle every 250 milliseconds.&lt;br /&gt;
 			fillFromEnumerator( &amp;quot;vehiclePlayerList&amp;quot; );&lt;br /&gt;
 			resetTime( 0 );&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIList Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIList Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIList:insertItem|insertItem]]                         Insert list item. Calls onItemAdded event.&lt;br /&gt;
 [[UIList:insertBlankItems|insertBlankItems]]                   Insert multiple blank items.&lt;br /&gt;
 [[UIList:setItemText|setItemText]]                        Set item text.&lt;br /&gt;
 [[UIList:setItemTextFlags|setItemTextFlags]]                   Set item text flags.&lt;br /&gt;
 [[UIList:setItemForeColor|setItemForeColor]]                   Set item forecolor.&lt;br /&gt;
 [[UIList:setItemBackColor|setItemBackColor]]                   Set item backcolor.&lt;br /&gt;
 [[UIList:setItemMaterialSize|setItemMaterialSize]]                Set iteam material size.&lt;br /&gt;
 [[UIList:setItemIcon|setItemIcon]]                        Set icon for item.&lt;br /&gt;
 [[UIList:transitionItemVec4|transitionItemVec4]]                 Transition a property for an item.&lt;br /&gt;
 [[UIList:getItemTransitionVec4Result|getItemTransitionVec4Result]]        Get the items immediate transition value.&lt;br /&gt;
 [[UIList:transitionColumnVec4|transitionColumnVec4]]               Transition a property for a column.&lt;br /&gt;
 [[UIList:getColumnTransitionVec4Result|getColumnTransitionVec4Result]]      Get the columns immediate transition value.&lt;br /&gt;
 [[UIList:clearTransitions|clearTransitions]]                   Clear transitions for an item.&lt;br /&gt;
 [[UIList:setColumnText|setColumnText]]                      Set column header text.&lt;br /&gt;
 [[UIList:setColumnWidth|setColumnWidth]]                     Set column width.&lt;br /&gt;
 [[UIList:setColumnTextFlags|setColumnTextFlags]]                 Set column header text flags.&lt;br /&gt;
 [[UIList:deleteItem|deleteItem]]                         Delete an item from the list. Calls onItemRemoved event.&lt;br /&gt;
 [[UIList:insertColumn|insertColumn]]                       Insert a column.&lt;br /&gt;
 [[UIList:deleteColumn|deleteColumn]]                       Delete a column. NOT IMPLEMENTED.&lt;br /&gt;
 [[UIList:clearItems|clearItems]]                         Delete all items.&lt;br /&gt;
 [[UIList:clearColumns|clearColumns]]                       Delete all columns.&lt;br /&gt;
 [[UIList:getItemText|getItemText]]                        Get item text. Returns header text if row is -1.&lt;br /&gt;
 [[UIList:getItemRect|getItemRect]]                        Get item rectangle.&lt;br /&gt;
 [[UIList:fillFromEnumerator|fillFromEnumerator]]                 Fill list using the specified enumerator.&lt;br /&gt;
 [[UIList:sort|sort]]                               Explicitly sort list.&lt;br /&gt;
 [[UIList:getItemAtPoint|getItemAtPoint]]                     Get item at position. Often used to get the list item under the cursor.&lt;br /&gt;
 [[UIList:findItem|findItem]]                           Finds first item in column which matches the search text.&lt;br /&gt;
 [[UIList:findItemDataInt|findItemDataInt]]                    Find the item with the item data.&lt;br /&gt;
 [[UIList:setItemDataInt|setItemDataInt]]                     Set item data.&lt;br /&gt;
 [[UIList:getItemDataInt|getItemDataInt]]                     Get item data.&lt;br /&gt;
 [[UIList:storeVisualState|storeVisualState]]                   Store the visual state, in essence the scroll amount.&lt;br /&gt;
 [[UIList:restoreVisualState|restoreVisualState]]                 Restore the visual state. Makes the layout dirty.&lt;br /&gt;
 [[UIList:drawItemMaterial|drawItemMaterial]]                   Draw a material in the given item.&lt;br /&gt;
 [[UIList:sizeLastColumn|sizeLastColumn]]                     Stretch the last column to fill any leftover space, minus the amount passed in.&lt;br /&gt;
 [[UIList:setItemFlags|setItemFlags]]                       Set item flags.&lt;br /&gt;
 [[UIList:setColumnFlags|setColumnFlags]]                     Set column header flags.&lt;br /&gt;
 [[UIList:ensureItemIsVisible|ensureItemIsVisible]]                Potentially scroll the list to make sure the item is visible.&lt;br /&gt;
 [[UIList:fillFromFile|fillFromFile]]                       Fill list from file. Supports UTF8 encoding.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIList:onSelectItem|onSelectItem]]                       Called when a list item is selected.&lt;br /&gt;
 [[UIList:onItemAdded|onItemAdded]]                        Called when an item is inserted into the list.&lt;br /&gt;
 [[UIList:onItemRemoved|onItemRemoved]]                      Called when an item is deleted from the list.&lt;br /&gt;
 [[UIList:onDrawSelectedBackground|onDrawSelectedBackground]]           If this event is valid in the GUI it will be called instead of onDrawItemBackGround for the currently selected item.&lt;br /&gt;
 [[UIList:onDrawItemBackGround|onDrawItemBackGround]]               Called when drawing an item background.&lt;br /&gt;
 [[UIList:onDrawItem|onDrawItem]]                         Called when drawing an item.&lt;br /&gt;
 [[UIList:onDrawColumn|onDrawColumn]]                       Called when drawing a column.&lt;br /&gt;
 [[UIList:onEnterColumnHeader|onEnterColumnHeader]]                Called when the mouse enters a column header.&lt;br /&gt;
 [[UIList:onExitColumnHeader|onExitColumnHeader]]                 Called when the mouse exits a column header.&lt;br /&gt;
 [[UIList:onClickColumnHeader|onClickColumnHeader]]                Called when there's a mouse click on the column header.&lt;br /&gt;
 [[UIList:onEnterItem|onEnterItem]]                        Called when the mouse enters the list item.&lt;br /&gt;
 [[UIList:onExitItem|onExitItem]]                         Called when the mouse exits the list item.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIIconNotification&amp;diff=3265</id>
		<title>UIIconNotification</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIIconNotification&amp;diff=3265"/>
		<updated>2007-11-21T12:07:03Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIIconNotification]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type iconNotification;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIIconNotification Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIIconNotification Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIIconNotification:addIcon|addIcon]]                            Add an icon to the list of notify icons.&lt;br /&gt;
 [[UIIconNotification:removeIcon|removeIcon]]                         Remove an icon from the list of notify icons.&lt;br /&gt;
 [[UIIconNotification:clear|clear]]                              Clear all notification icons.&lt;br /&gt;
 [[UIIconNotification:getFirstItem|getFirstItem]]                       Get the first notification icon.&lt;br /&gt;
 [[UIIconNotification:bumpIcon|bumpIcon]]                           Bump a notify icon.&lt;br /&gt;
 [[UIIconNotification:fillFromEnumerator|fillFromEnumerator]]                 Fill list of notify icons from an enumerator.&lt;br /&gt;
 [[UIIconNotification:setItemData|setItemData]]                        Set item data.&lt;br /&gt;
 [[UIIconNotification:getItemData|getItemData]]                        Get item data.&lt;br /&gt;
 [[UIIconNotification:getItemText|getItemText]]                        Get item text.&lt;br /&gt;
 [[UIIconNotification:setItemText|setItemText]]                        Set item text.&lt;br /&gt;
 [[UIIconNotification:getItemAtPoint|getItemAtPoint]]                     Get item at position. Often used to get the list item under the cursor.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIIconNotification:onIconAdded|onIconAdded]]                        Called when an item has been added.&lt;br /&gt;
 [[UIIconNotification:onIconRemoved|onIconRemoved]]                      Called when an item has been removed.&lt;br /&gt;
 [[UIIconNotification:onPreDrawIcon|onPreDrawIcon]]                      Called before drawing an icon with the item handle specified.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIEditW&amp;diff=3264</id>
		<title>UIEditW</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIEditW&amp;diff=3264"/>
		<updated>2007-11-21T12:06:52Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIEditW]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The wide edit window type has the same functionality as the regular edit window, but it supports wide strings for non ASCII input. It is mainly used when typing messages to friends or in the chat window.&lt;br /&gt;
&lt;br /&gt;
Templates are used to decrease the amount of text needed to create an edit box, the _editw/_editw_scroll and _end_edit/_end_editw_scroll templates should be used.&lt;br /&gt;
&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type editw;&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 _editw_scroll( MessageMemberMessage, 0, 0, 100, 60 )&lt;br /&gt;
 	properties {&lt;br /&gt;
 		vec2 textAlignment = TA_LEFT, TA_VCENTER;&lt;br /&gt;
 		float	maxTextLength = 512;&lt;br /&gt;
 	}&lt;br /&gt;
 _end_editw_scroll&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIEditW Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIEditW Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIEditW:clearText|clearText]]                          Clear all window text.&lt;br /&gt;
 [[UIEditW:isWhitespace|isWhitespace]]                       Check whitespaces, ignores all color codes.&lt;br /&gt;
 [[UIEditW:insertText|insertText]]                         Insert text into the edit box.&lt;br /&gt;
 [[UIEditW:surroundSelection|surroundSelection]]                  Select certain substring.&lt;br /&gt;
 [[UIEditW:anySelected|anySelected]]                        Check if any of the edit text is selected.&lt;br /&gt;
 [[UIEditW:selectAll|selectAll]]                          Select all text in the edit box.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIEditW:onInputFailed|onInputFailed]]                      Called if typing any characters that breaks the EF_ALLOW_DECIMAL/EF_INTEGERS_ONLY flags.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIEdit&amp;diff=3263</id>
		<title>UIEdit</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIEdit&amp;diff=3263"/>
		<updated>2007-11-21T12:06:29Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIEdit]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
An edit window should be used to get text input from the player. It is used for entering a server password, player name, clan tag, renaming the fireteam and chat text among other things. If the edit window should support non ASCII characters then editw should be used instead.&lt;br /&gt;
&lt;br /&gt;
Templates are used to decrease the amount of text needed to create an edit box, the _edit and _end_edit templates should be used.&lt;br /&gt;
&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type edit;&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 _edit( createServerName, 100, 0, 100, BUTTON_HEIGHT )&lt;br /&gt;
 	_cvar_set_edit( si_name )&lt;br /&gt;
 	_draw_left_edit_label( localize( &amp;quot;guis/mainmenu/servername&amp;quot; ), COLOR_TEXT, 100 )&lt;br /&gt;
 	properties {&lt;br /&gt;
 		float maxTextLength = 30;&lt;br /&gt;
 	}&lt;br /&gt;
 _end_edit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIEdit Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIEdit Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIEdit:clearText|clearText]]                          Clear all window text.&lt;br /&gt;
 [[UIEdit:isWhitespace|isWhitespace]]                       Check whitespaces, ignores all color codes.&lt;br /&gt;
 [[UIEdit:insertText|insertText]]                         Insert text into the edit box.&lt;br /&gt;
 [[UIEdit:surroundSelection|surroundSelection]]                  Select certain substring.&lt;br /&gt;
 [[UIEdit:anySelected|anySelected]]                        Check if any of the edit text is selected.&lt;br /&gt;
 [[UIEdit:selectAll|selectAll]]                          Select all text in the edit box.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIEdit:onInputFailed|onInputFailed]]                      Called if typing any characters that breaks the EF_ALLOW_DECIMAL/EF_INTEGERS_ONLY flags.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UICreditScroll&amp;diff=3262</id>
		<title>UICreditScroll</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UICreditScroll&amp;diff=3262"/>
		<updated>2007-11-21T12:06:18Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UICreditScroll]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type creditScroll;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UICreditScroll Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UICreditScroll Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UICreditScroll:resetScroll|resetScroll]]                        Reset scroll amount.&lt;br /&gt;
 [[UICreditScroll:loadFromFile|loadFromFile]]                       Load the text to scroll from a file. Supports UTF8.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UICinematic&amp;diff=3261</id>
		<title>UICinematic</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UICinematic&amp;diff=3261"/>
		<updated>2007-11-21T12:06:08Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UICinematic]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class is abstract and may not be used directly in the GUIs. Any classes deriving from this class will inherit all its properties, flags, functions and events. It will inherit all properties, flags, functions and events from [[UIWindow]]&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UICinematic Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UICinematic Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIBinder&amp;diff=3260</id>
		<title>UIBinder</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIBinder&amp;diff=3260"/>
		<updated>2007-11-21T12:05:50Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
**** [[:UIBinder]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIWindow]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type binder;&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIBinder Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIBinder Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIBinder:applyBinding|applyBinding]]                       Apply the current key registered with the binder window.&lt;br /&gt;
 [[UIBinder:unbindBinding|unbindBinding]]                      Unbind all keys bound to the bind command.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIBinder:onBindComplete|onBindComplete]]                     When a new key was bound to the bind command.&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
	<entry>
		<id>https://wiki.splashdamage.com/index.php?title=UIWindow&amp;diff=3259</id>
		<title>UIWindow</title>
		<link rel="alternate" type="text/html" href="https://wiki.splashdamage.com/index.php?title=UIWindow&amp;diff=3259"/>
		<updated>2007-11-21T12:05:35Z</updated>

		<summary type="html">&lt;p&gt;JRAD: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOEDITSECTION__&lt;br /&gt;
== Class Tree ==&lt;br /&gt;
* [[:UIObject]]&lt;br /&gt;
** [[:UIObject_Drawable]]&lt;br /&gt;
*** [[:UIWindow]]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
The most common window type can be used to draw text or materials within its rectangle.&lt;br /&gt;
&lt;br /&gt;
In many places it is also used just for managing other windows, handling events and timelines.&lt;br /&gt;
&lt;br /&gt;
This class may be used in the GUIs. It will inherit all properties, flags, functions and events from [[UIObject_Drawable]].&lt;br /&gt;
&lt;br /&gt;
Window type:&lt;br /&gt;
 type window;&lt;br /&gt;
&lt;br /&gt;
'''Example:'''&lt;br /&gt;
 // Define properties required to display the warmup text at the center of the screen.&lt;br /&gt;
 windowDef warmupLabel {&lt;br /&gt;
 	_big_text_props // Template: Sets the font size.&lt;br /&gt;
 	properties {&lt;br /&gt;
 		rect rect = 0, CENTER_Y - 28, SCREEN_WIDTH, 16;&lt;br /&gt;
 		wstring text = player.matchStatus; // The text we're displaying&lt;br /&gt;
 		float visible	= gui.respawnLabel.visible == false &amp;amp;&amp;amp; player.warmup &amp;amp;&amp;amp; player.commandmapstate == 0 &amp;amp;&amp;amp; player.commandmapstate == 0 &amp;amp;&amp;amp; player.scoreboardActive == false &amp;amp;&amp;amp; globals.gameHud.hideCrosshairCounter == 0;&lt;br /&gt;
 		float flags = immediate( flags ) | WF_DROPSHADOW;&lt;br /&gt;
 	}&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Properties ==&lt;br /&gt;
{{:UIWindow Properties}}&lt;br /&gt;
&lt;br /&gt;
== Flags ==&lt;br /&gt;
{{:UIWindow Flags}}&lt;br /&gt;
&lt;br /&gt;
== Functions ==&lt;br /&gt;
=== General Functions ===&lt;br /&gt;
 [[UIWindow:attachRenderCallback|attachRenderCallback]]               Attach a render callback to the drawing of the window.&lt;br /&gt;
 [[UIWindow:attachInputHandler|attachInputHandler]]                 Attach an input handler for the window.&lt;br /&gt;
 [[UIWindow:drawMaterial|drawMaterial]]                       Draw a material.&lt;br /&gt;
 [[UIWindow:drawRenderCallback|drawRenderCallback]]                 Call the draw render callback for the given render callback handle.&lt;br /&gt;
 [[UIWindow:drawCachedMaterial|drawCachedMaterial]]                 Draw cached material.&lt;br /&gt;
 [[UIWindow:getCachedMaterialDimensions|getCachedMaterialDimensions]]        Get the width and height of the material.&lt;br /&gt;
 [[UIWindow:drawMaterialInfo|drawMaterialInfo]]                   Draw material. Get data from the material info.&lt;br /&gt;
 [[UIWindow:drawMaterialArc|drawMaterialArc]]                    Draw an arc.&lt;br /&gt;
 [[UIWindow:drawTimer|drawTimer]]                          Draw a timer, used by the grenade indicator and progress indicators by the crosshair.&lt;br /&gt;
 [[UIWindow:drawText|drawText]]                           Draw text.&lt;br /&gt;
 [[UIWindow:measureText|measureText]]                        Measure the text.&lt;br /&gt;
 [[UIWindow:measureLocalizedText|measureLocalizedText]]               Measure the text.&lt;br /&gt;
 [[UIWindow:drawTiledMaterial|drawTiledMaterial]]                  Draw a tiled material.&lt;br /&gt;
 [[UIWindow:drawLocalizedText|drawLocalizedText]]                  Text to be drawn.&lt;br /&gt;
 [[UIWindow:drawLine|drawLine]]                           Draw a line.&lt;br /&gt;
 [[UIWindow:requestLayout|requestLayout]]                      Request the window layout to be calculated again.&lt;br /&gt;
 [[UIWindow:drawRect|drawRect]]                           Draw a rectangle.&lt;br /&gt;
 [[UIWindow:nextTabStop|nextTabStop]]                        Get the next tab stop for the specified window.&lt;br /&gt;
 [[UIWindow:prevTabStop|prevTabStop]]                        Get the previous tab stop for the specified window.&lt;br /&gt;
 [[UIWindow:setTabStop|setTabStop]]                         Focuses the nth tab stop.&lt;br /&gt;
 [[UIWindow:containsPoint|containsPoint]]                      Checks if the (world-based) point is in the client rectangle.&lt;br /&gt;
 [[UIWindow:cacheRenderCallback|cacheRenderCallback]]                Return a reference to a render callback.&lt;br /&gt;
 [[UIWindow:clipToRect|clipToRect]]                         Clip subsequent drawing to the clipping rectangle. Must be ended with unclipRect after clipped drawing is finished.&lt;br /&gt;
 [[UIWindow:unclipRect|unclipRect]]                         Remove clipping to rectangle specified in clipToRect.&lt;br /&gt;
 [[UIWindow:pushColor|pushColor]]                          Push a color on the GUI's color stack.&lt;br /&gt;
 [[UIWindow:pushColorComponents|pushColorComponents]]                Push a color on the GUI's color stack.&lt;br /&gt;
 [[UIWindow:popColor|popColor]]                           Pop a color from the GUI's color stack.&lt;br /&gt;
 [[UIWindow:drawShaderParm|drawShaderParm]]                     Set a shader parm value.&lt;br /&gt;
 [[UIWindow:isVisible|isVisible]]                          Check if self is visible.&lt;br /&gt;
&lt;br /&gt;
== Events ==&lt;br /&gt;
 [[UIWindow:onPreDraw|onPreDraw]]                          Called before the window is about to draw. The event is often used for doing custom text and material drawing instead of the default drawing.&lt;br /&gt;
 [[UIWindow:onPostDraw|onPostDraw]]                         Called after gamecode has finished drawing.&lt;br /&gt;
 [[UIWindow:onPostChildDraw|onPostChildDraw]]                    Called after all descendants have finished drawing.&lt;br /&gt;
 [[UIWindow:onMouseMove|onMouseMove]]                        Called when the mouse moves.&lt;br /&gt;
 [[UIWindow:onMouseEnter|onMouseEnter]]                       Called when the mouse enters the window.&lt;br /&gt;
 [[UIWindow:onMouseExit|onMouseExit]]                        Called when the mouse exits the window.&lt;br /&gt;
 [[UIWindow:onKeyUp|onKeyUp]]                            Called when a key is depressed.&lt;br /&gt;
 [[UIWindow:onKeyDown|onKeyDown]]                          Called when a key is pressed.&lt;br /&gt;
 [[UIWindow:onKeyUpBind|onKeyUpBind]]                        Called when keys using the bind is depressed.&lt;br /&gt;
 [[UIWindow:onKeyDownBind|onKeyDownBind]]                      Called when keys usng the bind is pressed&lt;br /&gt;
 [[UIWindow:onShow|onShow]]                             When the visible property is changed to true.&lt;br /&gt;
 [[UIWindow:onHide|onHide]]                             When The hide property is changed to false.&lt;br /&gt;
 [[UIWindow:onGainFocus|onGainFocus]]                        The window has gained focus.&lt;br /&gt;
 [[UIWindow:onLoseFocus|onLoseFocus]]                        The window has lost focus&lt;br /&gt;
 [[UIWindow:onDoubleClick|onDoubleClick]]                      Mouse is double clicked within the window's rectangle.&lt;br /&gt;
 [[UIWindow:onActivate|onActivate]]                         This happens when the GUI is activated.&lt;br /&gt;
 [[UIWindow:onQueryToolTip|onQueryToolTip]]                     Used to set a tooltip which will be shown when the mouse os hovering over the window.&lt;br /&gt;
 [[UIWindow:onNavForward|onNavForward]]                       Called when any key bound to the _menuNavForward is pressed&lt;br /&gt;
 [[UIWindow:onNavBackward|onNavBackward]]                      Called when any key bound to the _menuNavBackward is pressed&lt;br /&gt;
 [[UIWindow:onAccept|onAccept]]                           Called when any key bound to the _menuAccept is pressed&lt;br /&gt;
 [[UIWindow:onCancel|onCancel]]                           Called when any key bound to the _menuCancel is pressed&lt;br /&gt;
&lt;br /&gt;
[[Category:GUIs]]&lt;/div&gt;</summary>
		<author><name>JRAD</name></author>
		
	</entry>
</feed>