Ru/Data Descriptions: Difference between revisions
m (Robot: Automated text replacement  (-\{\|\r +{| class=standard-table))  | 
				m (otherlang2'd)  | 
				||
| Line 1: | Line 1: | ||
{{otherlang2  | |||
|en=Data_Descriptions  | |||
}}  | |||
Таблица <i>описаний данных</i> является репозиторием описаний членов классов: данных и функций, который позволяет движку связывать, сохранять/восстанавливать и иным способом понимать назначение этих членов. Неудачное описание этих членов в таблице может привести к непредвиденным результатам во время выполнения.  | Таблица <i>описаний данных</i> является репозиторием описаний членов классов: данных и функций, который позволяет движку связывать, сохранять/восстанавливать и иным способом понимать назначение этих членов. Неудачное описание этих членов в таблице может привести к непредвиденным результатам во время выполнения.  | ||
| Line 222: | Line 225: | ||
*public\stdstring.h  | *public\stdstring.h  | ||
**DEFINE_STDSTRING  | **DEFINE_STDSTRING  | ||
[[Category:Russian]]  | [[Category:Russian]]  | ||
[[Category:Programming:ru]]  | [[Category:Programming:ru]]  | ||
Revision as of 09:38, 6 March 2011
Template:Otherlang2 Таблица описаний данных является репозиторием описаний членов классов: данных и функций, который позволяет движку связывать, сохранять/восстанавливать и иным способом понимать назначение этих членов. Неудачное описание этих членов в таблице может привести к непредвиденным результатам во время выполнения.
Элементы таблицы объявляются внутри блоков BEGIN_DATADESC и END_DATADESC.  Любое количество следующих макросов могут быть помещены внутри таблицы как это потребуется, вот пример:
BEGIN_DATADESC( CMyClass ) DEFINE_FIELD( . . . ) END_DATADESC()
Ниже приводится список наиболее часто используемые типы элементов.
DEFINE_FIELD
Это макро определение используется для сохранения и загрузки в движке. Любая переменная свойства определеямая в этом макросе сохраняется и восстанавливается автоматически. Макрос объявляется так:
DEFINE_FIELD( variableName, variableType )
Параметр dataMemberType может быть любого из нижеприведенных типов:
FIELD_VOID | 
Нет типа или значения (используется для параметров функций) | 
FIELD_FLOAT | 
Любой вещественный тип | 
FIELD_STRING | 
Строковой ID (фозвращается из ALLOC_STRING) | 
FIELD_VECTOR | 
Любой вектор, QAngle, и AngularImpulse | 
FIELD_QUATERNION | 
Кватернион | 
FIELD_INTEGER | 
Любой целый или перечисления | 
FIELD_BOOLEAN | 
Булевое значение (представлено как целое) | 
FIELD_SHORT | 
2 байтовое целое | 
FIELD_CHARACTER | 
Один байт | 
FIELD_COLOR32 | 
8-бит на канал [R,G,B,A] (32-битный цвет) | 
FIELD_EMBEDDED | 
класс/структура на основе дополнительного описания типа | 
FIELD_CUSTOM | 
Специальный тип который содержит указатели функции на функции чтения/записи/синтаксического анализа | 
FIELD_CLASSPTR | 
Указатель CBaseEntity | 
FIELD_EHANDLE | 
Дескриптор энтити | 
FIELD_EDICT | 
Указатель edict_t | 
FIELD_POSITION_VECTOR | 
Значение мировых координт, которое автоматически фиксируется через переходы между уровнями | 
FIELD_TIME | 
Вещественное значение времени, которое автоматически фиксируется через переходы между уровнями | 
FIELD_TICK | 
Целое значение счетчика, которое фиксировано подобно FIELD_TIME | 
FIELD_MODELNAME | 
Строка движка которая является названием модели (должно быть кеширована) | 
FIELD_SOUNDNAME | 
Строка движка которая является названием звука (должно быть кеширована) | 
FIELD_INPUT | 
Список введенных полей данных, все наследованы от CMultiInputVar | 
FIELD_FUNCTION | 
Указатель функции класса (Think, Use, и т.д.) | 
FIELD_VMATRIX | 
VMatrix (Примечание: output координаты НЕ ЯВЛЯЮТСЯ мировыми) | 
FIELD_VMATRIX_WORLDSPACE | 
VMatrix отображает некоторое локальное мировое пространство (автоматически фиксируется через переходы между уровнями) | 
FIELD_MATRIX3X4_WORLDSPACE | 
matrix3x4_t которая отображает некоторое локальное мировое пространство (автоматически фиксируется через переходы между уровнями) | 
FIELD_INTERVAL | 
Начало диапазона с точечной запятой (например, 3.2->3.6 == 3.2 и 0.4 ) | 
FIELD_MODELINDEX | 
Индекс модели | 
FIELD_MATERIALINDEX | 
Индекс материала (с использованием таблицы строк предзагрузки) | 
DEFINE_KEYFIELD
Этот макрос работает в такой же способ как DEFINE_FIELD который относится к сохранению и восстановлению данных членов. Он расширяет эту функциональность определяя кроме всего прочего ссылаемое имя для члена данных которое связано с его ключевым значением, идентификатор которого определен в записи FGD файла для класса энтити. Как только данное свойство объявляется, член данных инициализируется значением описанным в карте на момент создания этой энтити.
DEFINE_KEYFIELD( variableName, variableType, "keyvalueName" )
Для примера, нижеприведенное определение связывает член данных m_bEnabled с ключевым значением enabled идентификатора в Хаммере.
DEFINE_KEYFIELD( m_bEnabled, FIELD_BOOLEAN, "enabled" )
DEFINE_OUTPUT
Данный макрос используется для связи события вывода(output) с именованным идентификатором используемым в Хаммере. Он определяется так:
DEFINE_OUTPUT( outputVariable, outputName )
DEFINE_INPUTFUNC
Данный макрос используется для связи именованых вводов(inputs) в Хаммере с функциями движка. Также он описывает тип параметра передаваемого функции от системы ввода/вывода энтитей. Макрос определяется так:
DEFINE_INPUTFUNC( parameterType, "inputName", InputFunction )
parameterType может быть одним из нижеперечисленных FIELD_ типов:
FIELD_VOID
FIELD_INTEGER
FIELD_FLOAT
FIELD_STRING
FIELD_VECTOR
FIELD_COLOR32
FIELD_BOOLEAN
DEFINE_INPUT
Данный макрос урезанная версия DEFINE_INPUTFUNC. Он автоматически устаналивает описанный член данных к параметру полученному от функции Input(). Эти упрощения нужны для создания input-функции у которой единственное назначение - установить член данных в указзаное значение. Макрос определяется так:
DEFINE_INPUT( variableName, variableType, "keyvalueName" )
DEFINE_ARRAY AND DEFINE_AUTO_ARRAY
Как показывает их имена, эоти макросы взаимодействуют с сохранением и восстановлением значений массивов. Число элементов в массиве должно быть определено используя DEFINE_ARRAY, тогда как DEFINE_AUTO_ARRAY заставляет код автоматически определить размер массива во время выполнения программы.
Макросы определяются так:
DEFINE_ARRAY( variable, variableType, numElements )
DEFINE_AUTO_ARRAY( variable, variableType )
DEFINE_CUSTOM_FIELD
Данный макрос позволяет произвольную интерпретацию переменной с описанием того как будет произведиться сохранение/восстановелние. Передавая ссылку на класс-обработчик, пользователь может полностью управлять сериализацией данных.
Класс-обработчик должен наследоваться от CClassPtrSaveRestoreOps; он использует функции Save() и Restore() для сериализации.
Для дополнительной информации, смотрите использование CClassPtrSaveRestoreOps внутри кода.
DEFINE_THINKFUNC
Энтити использующие функцию Think() должны объявлять эту функцию через данный макрос.
Эти функции должны быть следующего типа:
typedef void (*ThinkFunc)( void);
DEFINE_ENTITYFUNC
Энтити использующие пользовательскую функцию должны объявить эту функцию через данный макрос.
Эти функции должны быть следующего типа:
typedef void (CBaseEntity::*ENTITYFUNCPTR)(CBaseEntity *pOther );
DEFINE_USEFUNC
Энтити использующие пользовательскую функцию Use() должны объявлять эту функцию через данный макрос.
Эти функции должны быть следующего типа:
typedef void (*UseFunc)(
	CBaseEntity *pActivator,
	CBaseEntity *pCaller,
	USE_TYPE useType,
	float value
);
Другие
- dlls\simtimer.h
- DEFINE_SIMTIMER - Определяет SimTimer
 
 
- game_shared\physics_saverestore.h
- DEFINE_PHYSPTR - Определяет физические указатели
 
- DEFINE_PHYSPTR_ARRAY - Определяет массив физических указателей
 
 
- game_shared\saverestore_bitstring.h
- DEFINE_BITSTRING - Определяет CBitStringT, CBitString, или CFixedBitString
 
 
- game_shared\saverestore_utlmap.h
- DEFINE_UTLMAP - Определяет CUtlMap
 
 
- game_shared\saverestore_utlrbtree.h
- DEFINE_UTLRBTREE - Определяет CUtlRBTree
 
 
- game_shared\saverestore_utlvector.h
- DEFINE_UTLVECTOR - Определяет CUtlVector
 
 
- game_shared\soundenvelope.h
- DEFINE_SOUNDPATCH
 
 
- public\saverestore.h
- DEFINE_KEYFIELD_NOT_SAVED
 
- DEFINE_ENTITY_FIELD
 
- DEFINE_ENTITY_GLOBAL_FIELD
 
- DEFINE_GLOBAL_FIELD
 
- DEFINE_GLOBAL_KEYFIELD
 
- DEFINE_CUSTOM_FIELD
 
- DEFINE_CUSTOM_KEYFIELD
 
- DEFINE_AUTO_ARRAY2D
 
- DEFINE_EMBEDDED
 
- DEFINE_EMBEDDED_OVERRIDE
 
- DEFINE_EMBEDDEDBYREF
 
- DEFINE_EMBEDDED_ARRAY
 
- DEFINE_EMBEDDED_AUTO_ARRAY
 
- DEFINE_PRED_TYPEDESCRIPTION
 
- DEFINE_PRED_TYPEDESCRIPTION_PTR
 
- DEFINE_PRED_FIELD
 
- DEFINE_PRED_ARRAY
 
- DEFINE_FIELD_NAME
 
- DEFINE_PRED_FIELD_TOL
 
- DEFINE_PRED_ARRAY_TOL
 
- DEFINE_FIELD_NAME_TOL
 
 
- public\stdstring.h
- DEFINE_STDSTRING