Difference between revisions of "Category:Interfaces"

From Valve Developer Community
Jump to: navigation, search
 
 
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
An indebth analysis of each interface found in the SDK.
+
{{otherlang2
 +
|de=Category:Interfaces:de
 +
|ru=Category:Interfaces:ru
 +
}}
 +
'''[[Wikipedia:Interface (computer science)|Interfaces]]''' are C++ classes that other parts of the engine access when your mod is running.
 +
 
 +
Some interface objects are very important, and are required for game DLLs to function; to use these you inherit from them for implementation, then cast back to the interface class in a global [[pointer]] with a predefined name.
 +
 
 +
{{note|If you try to construct an interface directly, your mod will crash. This is done deliberately.}}
 +
 
 +
{{warning|It is important to create ''all'' objects listed when exposing a vital interface, even if your mod can be compiled and run without one or another of them. If you try to cut corners you are likely to encounter weird, almost impossible to debug errors either today or after a future engine update!}}
 +
 
 +
{{warning|'''''Never, ever''''' modify an interface class itself. You must always inherit then cast back.}}
 +
 
 +
== Example ==
 +
 
 +
<source lang=cpp>static CInput g_Input;
 +
IInput* input = (IInput*)&g_Input;</source>
 +
 
 +
This creates the <code>[[IInput]]* input</code> and <code>g_Input</code> objects the engine expects, placing behind them Valve's basic input code from <code>[[CInput]]</code>.
 +
 
 +
You are free to modify <code>CInput</code>, or to create your own inherited class and use that instead; just remember that only the members of <code>IInput</code> will be accessed by the engine.
 +
 
 +
[[Category:Programming]]

Latest revision as of 05:34, 28 November 2016

Deutsch Русский

Interfaces are C++ classes that other parts of the engine access when your mod is running.

Some interface objects are very important, and are required for game DLLs to function; to use these you inherit from them for implementation, then cast back to the interface class in a global pointer with a predefined name.

Note.png Note: If you try to construct an interface directly, your mod will crash. This is done deliberately.
Warning.png Warning: It is important to create all objects listed when exposing a vital interface, even if your mod can be compiled and run without one or another of them. If you try to cut corners you are likely to encounter weird, almost impossible to debug errors either today or after a future engine update!
Warning.png Warning: Never, ever modify an interface class itself. You must always inherit then cast back.

Example

static CInput g_Input;
IInput* input = (IInput*)&g_Input;

This creates the IInput* input and g_Input objects the engine expects, placing behind them Valve's basic input code from CInput.

You are free to modify CInput, or to create your own inherited class and use that instead; just remember that only the members of IInput will be accessed by the engine.

Subcategories

This category has the following 5 subcategories, out of 5 total.

I