Размещу информацию тут, считаю ей здесь самое место
Синтаксис функции
GetGame().CreateObjectEx(string type, vector pos, int iFlags, int iRotation = RF_DEFAULT);
1й параметр - класснейм создаваемого объекта - обязательный параметр
2й параметр - координаты типа vector - обязательный параметр
3й параметр - флаг - тип установки объекта - обязательный параметр (ECE)
4й параметр - флаг - тип поворота создаваемого объекта - необязательный параметр (RF)
Флаги можно комбинировать через знак |
Например ECE_SETUP | ECE_PLACE_ON_SURFACE
Смысл обновленной функции - оптимизация создания обьектов в мире
Например, не нужно дополнительно, без особой необходимости сразу после создания вызывать функцию установки объекта на поверхность (PlaceOnSurface) или его поворота (SetOrientation)
или дополнительных функций генерации динамического navmesh для дополнения статического (спеченного) - добавляем флаг ECE_UPDATEPATHGRAPH и двиг все сделает как надо
Все можно указать флагами и двиг все сделает быстро и непринужденно
пример вызова
GetGame().CreateObjectEx("Apple", Vector(5000, 20, 3000), ECE_PLACE_ON_SURFACE);
GetGame().CreateObjectEx("Zmbm_dyadyaVasya", Vector(5000, 20, 3000), ECE_SETUP | ECE_PLACE_ON_SURFACE);
Собственно 3 и 4й параметр можно задавать как цифрами, так и константами
Список констант для флагов (думаю перевести описание не проблема)
const int ECE_NONE = 0;
const int ECE_SETUP = 2; // process full entity setup (when creating NEW entity)
const int ECE_TRACE = 4; // trace under entity when being placed (from the point of creation)
const int ECE_CENTER = 8; // use center from shape (model) for placement
const int ECE_UPDATEPATHGRAPH = 32; // update navmesh when object placed upon it
const int ECE_ROTATIONFLAGS = 512; // enable rotation flags for object placement
const int ECE_CREATEPHYSICS = 1024; // create collision envelope and related physics data (if object has them)
const int ECE_AIRBORNE = 4096; // create flying unit in the air
const int ECE_EQUIP_ATTACHMENTS = 8192; // equip with configured ATTACHMENTS
const int ECE_EQUIP_CARGO = 16384; // equip with configured CARGO
const int ECE_EQUIP = 24576; // equip with configured (ATTACHMENTS + CARGO)
const int ECE_EQUIP_CONTAINER = 2097152; // populate DE/ group CONTAINER during spawn
const int ECE_LOCAL = 1073741824; // create object locally
const int ECE_NOSURFACEALIGN = 262144; // do not align object on surface/ terrain
const int ECE_KEEPHEIGHT = 524288; // keep height when creating object (do not use trace or placement on surface)
// note: use predefined combination when not solving something specific
//
const int ECE_IN_INVENTORY = 787456; // ECE_CREATEPHYSICS|ECE_KEEPHEIGHT|ECE_NOSURFACEALIGN
const int ECE_PLACE_ON_SURFACE = 1060; // ECE_CREATEPHYSICS|ECE_UPDATEPATHGRAPH|ECE_TRACE
const int ECE_OBJECT_SWAP = 787488; // ECE_CREATEPHYSICS|ECE_UPDATEPATHGRAPH|ECE_KEEPHEIGHT|ECE_NOSURFACEALIGN
// -------------------------------------------------------------------------
// object (RF) Rotation Flags (use to force and/ or invoke placement rotation)
//
const int RF_NONE = 0;
const int RF_FRONT = 1; // front side placement
const int RF_TOP = 2; // top side placement
const int RF_LEFT = 4; // left side placement
const int RF_RIGHT = 8; // right side placement
const int RF_BACK = 16; // back side placement
const int RF_BOTTOM = 32; // bottom side placement
const int RF_ALL = 63; // RF_FRONT|RF_TOP|RF_LEFT|RF_RIGHT|RF_BACK|RF_BOTTOM
const int RF_IGNORE = 64; // ignore placement RF flags - object will spawn as model was created
const int RF_TOPBOTTOM = 34; // RF_TOP|RF_BOTTOM
const int RF_LEFTRIGHT = 12; // RF_LEFT|RF_RIGHT
const int RF_FRONTBACK = 17; // RF_FRONT|RF_BACK
const int RF_RANDOMROT = 64; // allow random rotation around axis when placing
const int RF_ORIGINAL = 128; // use default placement setuped on object in config
const int RF_DECORRECTION = 256; // angle correction when spawning InventoryItem at Building angle
const int RF_DEFAULT = 512; // use default placement setuped on object in config