Ru/Generalities On Entities

== Введение ==
Эта статья кратко описывает сущности в Source engine и пытается объяснить все про сущности.
Каждый объект, даже мир, является сущностью в Source Engine. Все сущности являются производными от CBaseEntity.
== Соглашения имён ==
В Source SDK, класс server начинается с большой буквы С (C), в то время как класс client начинается с большой буквы С с последующим подчеркиванием (C_) - это помогает различать две базы кода.
Пример:
 Server: CMyEntity
 Client: C_MyEntity
Стиль (соглашение) имён, которому следует основной код SDK, известен как . Начинающим рекомендуется придерживаться того же стиля, что и в основном коде, для устранения недоразумений.
== Базовые классы ==
Каждая сущность основана на базовом классе CBaseEntity, однако есть много производных классов. Ниже приведен список наиболее распространенных производных классов.
=== CBaseAnimating ===
Каждая сущность, имеющая модель, должна использовать класс CBaseAnimating. Классы, производные от CBaseAnimating могут использовать модели и анимацию.
=== CBaseTrigger ===
 - это сущности-кисти, которые, в основном, размещаются в процессе создания карты.
=== CBasePlayer ===
Эта сущность описывает игрока. Каждая сущность-игрок является экземпляром класса CBasePlayer или его класса-потомка.
=== CGameRules ===
Эта сущность описывает правила игры. В основном используется для описания логики игры.
=== CBaseCombatCharacter ===
Все сущности-NPC и игроки являются производными от этого класса.
== Функции Think ==
Think functions are a group of functions comprising the main way to have an entity act without input. 
An entity's Think() is run once after it spawns, and can be told when to call itself again using SetNextThink(). Using SetThink() can change between several Think() functions, and GetLastThink() returns the time of the last think function. See for detailed description.
== Макросы ==
Badly set up macros will give error messages, crash the game and cause erratic behavior. Далее следует список определений наиболее часто используемых макросов и некоторые проблемы, возникающие в процессе их использования.
=== () ===
This is one of the main macros. An entity cannot be created without this macro being used to define the entity's classname (as returned from GetClassname() on the server). However, on the client, an entity will not return its classname unless there is a matching data description (DATADESC).
=== () ===
This is used to tell the engine that it needs to precache the entity when it loads. This is provided with the name of the entity (the same name as passed to () ).
=== () ===
This should be placed in the public section of an entities Class definition. This provides access to the BaseClass Macro.
=== DECLARE_(), BEGIN_(), END_(), and DEFINE_XXX() ===
The Data Description macros provide for a number of different features;
* Specifying Think and Touch functions
* Providing Inputs and Outputs for mappers
* Providing external variable inputs (such as setting a model or the health of an item)
Подробная информация доступна на странице .
=== Networking сущности ===
См. раздел Networking для получения подробной информации о networking сущностях, так как их описание выходит за рамки данной статьи.