Данная статья описывает публичный API, доступный через динамически подключаемые библиотеки (DLL).
API разделён на две основные части:
me_crypto.h— функции криптографии и строковых преобразований.me_engine.h— функции управления движком, окном, камерой и объектами.
Все типы переменных в API перечислены в файле «sources/API/me_interface.h»
// ... #define CONST const #define ME_DEF typedef #define ME_CALL __stdcall* #define ME_Int int #define ME_Bool bool #define ME_Char char #define ME_CharSign unsigned char* #define ME_Void void #define ME_String std::string #define ME_WString std::wstring #define ME_Size size_t #define ME_UInt unsigned int #define ME_Float float // ...
Разделяет строку на значения по указанному символу-разделителю.
Синтаксис:
size_t MESplit(CONST ME_String& txt, std::vector<ME_String>& strs, char ch)
Параметры:
txt— входная строка.strs— ссылка на вектор массив (результат: в массиве появятся разделенные строки).ch— символ-разделитель.
Возвращает: количество полученных подстрок.
Пример:
std::vector<std::string> list;
MESplit("a;b;c", list, ';');
std::cout << "a=" << list[0].c_str() << std::endl;
std::cout << "b=" << list[1].c_str() << std::endl;
std::cout << "c=" << list[2].c_str() << std::endl;
Читает содержимое файла и возвращает его как строку.
Синтаксис:
ME_String ReadFileME(CONST ME_String& str)
Параметры:
str— путь к файлу.
Возвращает: содержимое файла в виде строки текст или ошибку «error».
Возвращает уникальный идентификатор пользователя (User ID).
Синтаксис:
ME_String getRegisterAccount()
Возвращает: строку с идентификатором пользователя.
Преобразует тип строки ME_String в ME_WString'.
Синтаксис:
ME_WString ConvertToWSTR(const ME_String& str)
Параметры:
str— входная строка.
Возвращает: ME_WString.
Преобразует тип строки ME_WString в ME_String.
Синтаксис:
ME_String ConvertToString(const ME_WString& wstr)
Параметры:
wstr— исходная ME_WString строка.
Возвращает: строка ME_String.
Преобразует тип строки ME_String в ME_CharSign.
Синтаксис:
ME_CharSign ConvertToSign(CONST ME_String& str)
Параметры:
str— входная строка.
Возвращает: ME_CharSign.
Кодирует массив байтов в строку Base64.
Синтаксис:
ME_String ToBase64(ME_CharSign bytes_to_encode, ME_Size len, ME_Bool url)
Параметры:
bytes_to_encode— ME_CharSign.len— длина массива.url— если «true», используется URL-безопасный вариант Base64.
Возвращает: закодированная строка Base64.
Декодирует строку Base64 обратно в ME_String.
Синтаксис:
ME_String ofBase64(ME_String CONST& s, ME_Bool remove_linebreaks)
Параметры:
- s — строка ME_String в формате Base64.
- remove_linebreaks — если «true», удаляются символы переноса строк перед декодированием.
Возвращает: декодированная строка ME_String.
Преобразует 32-битное целое число в шестнадцатеричную строку, представляя его как последовательность байтов в младшем порядке (little-endian). Каждый байт кодируется двумя шестнадцатеричными символами в нижнем регистре без префикса `0x`.
Синтаксис:
ME_String ToHex(ME_UInt value)
Параметры:
value— число для преобразования.value— 32-битное целое число без знака для преобразования (тип ME_UInt).
Возвращает: строка ME_String в формате HEX (без префикса «0x», в нижнем регистре).
Вычисляет MD5-хеш от заданной строки ME_String.
Синтаксис:
ME_String ToMD5(ME_String str)
Параметры:
str— исходная строка ME_String.
Возвращает: MD5-хеш в виде 32-символьной шестнадцатеричной строки.
Генерирует случайный MD5-хеш.
Синтаксис:
ME_String genMD5()
Возвращает: случайный MD5-хеш с типом ME_String.
Инициализирует игровой движок.
Синтаксис:
ME_Int meInitialize(CONST ME_Int mode)
Параметры:
mode— режим инициализации (по умолчанию 0).- режим игры: 0
- режимы редактора: 1, 2
Возвращает: 0 при успехе.
Завершает работу движка.
Синтаксис:
ME_Void meExit()
Устанавливает окно для рендеринга.
Синтаксис:
ME_Int meSetWindow(HWND hWnd, ME_Int width, ME_Int height, ME_Bool noDops)
Параметры:
hWnd— указывается дескриптор окна Windows.width,height— размеры клиентской области.noDops— если «true», то происходит изменения размера как для редактора карт.
Возвращает: ME_Int: успешно = 0, если неудачно = 1.
Переключает полноэкранный режим.
Синтаксис:
ME_Void meSetFullscreen(ME_Bool fullscreen = true)
Параметры:
fullscreen— (по умолчанию «true») для включения полноэкранного режима.
Устанавливает callback-функцию для обработки событий сцены. Работает только при полностью запущеном игровом движке в режиме редактора.
Синтаксис:
ME_Int meSetSceneCallBack(EditorSceneCallback callback)
Параметры:
callback— указатель на функцию типа «EditorSceneCallback».
Тип callback:
ME_Void(ME_CALL EditorSceneCallback)(CONST ME_Char* id, ME_Int action)
Возвращает: ME_Int: успешно = 0, если неудачно = 1.
Загружает или очищает текущий уровень.
Синтаксис:
ME_Int meLoadLevel(CONST ME_Char* name)
Параметры:
name— имя уровня.- если «nullptr» — очищает текущий уровень.
- если функция «meLoadLevel» запускается в режиме редактора, и указанного уровня не существует, то возвращает 1.
Возвращает: ME_Int: 0 обычно.
Возвращает дескриптор окна, используемого движком.
Синтаксис:
HWND meGetHWND()
Возвращает: HWND дескриптор окна или «NULL».
Телепортирует камеру в заданную точку.
Синтаксис:
ME_Int meCameraAt(ME_Float x, ME_Float y, ME_Float z)
Параметры:
x,y,z— координаты позиции камеры.
Возвращает: ME_Int: успешно = 0, если неудачно = 1.
Получает текущие координаты и направление камеры.
Синтаксис:
ME_Int meGetCameraAt(ME_Float& x, ME_Float& y, ME_Float& z, ME_Float& yaw)
Параметры:
x,y,z— указываются ссылки куда будут записаны координаты камеры.yaw— угол поворота камеры в радианах.
Возвращает: ME_Int: успешно = 0, если неудачно = 1.
Возвращает список объектов в заданной области.
Синтаксис:
CONST ME_Char* GetObjectAt(ME_Float x, ME_Float y, ME_Float z, ME_Int radius)
Параметры:
x,y,z— центр области. Если все нули — используется позиция камеры.radius— радиус поиска (в условных единицах).
Возвращает: строка с идентификаторами объектов (разделённых символом «;»), иначе пустая строка.
Устанавливает позицию окна на экране. (работает в режиме редактора)
Синтаксис:
ME_Void meSetPos(ME_Int x, ME_Int y)
Параметры:
x,y— координаты левого верхнего угла окна.
Проверяет, открыто ли окно игрового движка.
Синтаксис:
ME_Bool meIsOpen()
Возвращает: «true», если окно открыто и активно.
Выполняет логическое действие (вкл/выкл) над системными функциями.
Синтаксис:
ME_Bool meBoolAction(meActions type, ME_Int set = -1)
Параметры:
type— тип действия (см. «enum class meActions»):UI_FPS— отображение FPS. (устарело)UI_FULLSCREEN— полноэкранный режим. (устарело)VM_LIGHTS— показывать освещение. (устарело)VW_WIREFRAME— каркасный режим отображения мира.VM_ACT— включение или отключение рендера (пауза).- set — если «0» = выкл, «1» = вкл, иначе переключает текущее состояние.
VM_TOOLS— показ технических объектов редактора.
set— применяется только дляVM_ACT.
Возвращает: ME_Bool: новое состояние («true»/«false»).
Выполняет создание скриншота
Синтаксис:
ME_Void meImgStream(ME_Bool answer)
Параметры:
answer— аргумент остался от старой реализации, но его нужно указывать «true»
Возвращает последний сделанный скриншот с помощью функции «meImgStream» в формате Base64.
Синтаксис:
CONST ME_Char* meImgData()
Возвращает: строка Base64 с изображением png, либо пустая строка.
Возвращает заголовок окна (Windows).
Синтаксис:
LPWSTR meGetTitle()
Возвращает: LPWSTR строка.
Возвращает заголовок окна который был присвоен с помощью скрипта.
Синтаксис:
CONST ME_Char* meGetTitleScript()
Возвращает: ME_Char строка.
Скрывает или показывает окно игрового движка.
Синтаксис:
ME_Void meWindowHide(ME_Bool visible)
Параметры:
visible— «true» для отображения, «false» для скрытия.
Включает/отключает управление камерой нажатием мыши.
Синтаксис:
ME_Void meClickCamera(ME_Bool enabled)
Параметры:
- enabled — `true` для включения режима управлением камеры (камеру поворачивать можно с помощью нажатия мыши).
Устанавливает состояние окна (свёрнуто, развёрнуто и т.д.).
Синтаксис:
ME_Void meWindowState(ME_Int mode)
Параметры:
mode— код состояния:- если 1 - показать окно
- если 0 - скрыть окно
Режим редактора на паузе или активен.
Синтаксис:
ME_Void mePauseEditor(ME_Bool paused)
Параметры:
paused— «true» для паузы.
Выполняет манипуляции с объектами сцены (в режиме редактора).
Синтаксис:
ME_Void meManipulate(ME_Int type, CONST ME_Char* arguments)
Параметры:
type— тип манипуляции.arguments— строка с параметрами, указывается в формате «<под тип>;<параметры для манипуляции>».
Работа с параметрами [type = 0 — Взаимодействие с объектами, type = 1 — Взаимодействие с миром]
type | <подтип> | описание | формат |
|---|---|---|---|
| 0 | 1 | режим выделения (если <id-объекта> = -1, убрать выделение) | 1;<группа>;<id-объекта> |
| 0 | 2 | изменение оси вращения | 2;<цифра: X = 0, Y = 1, Z = 2> |
| 0 | 3 | новый или изменить объект подгрузить из файла objects.json | 3;<id-объекта> |
| 0 | 5 | удалить объект | 5;<id-объекта> |
| 0 | 6 | удалить группу вместе с объектами | 6;<группа |
| 0 | 7 | создать новую группу с названием | 7;<название группы> |
| 0 | 8 | обновить трансформацию у объекта | 8;<id-объекта> |
| 1 | 1 | ambient | 1;0.1 |
| 1 | 2 | _color | 2;0.5;0.5;0.5 |
| 1 | 3 | sunColor | 3;0.75;0.901961;1.0 |
| 1 | 4 | sunLight | 4;0.6 |
| 1 | 5 | sunRadiosity | 5;0.6 |
| 1 | 6 | sunDiffuseColor | 6;0.5;0.5;0.5 |
| 1 | 7 | diffuseFraction | 7;0.583333 |
| 1 | 8 | sunDirection | 8;-30.0;42.0;0.0 |
| 1 | 9 | sunIsPrimaryLight | 9;1 |
| 1 | 10 | radiosityScale | 10;0.8 |
| 1 | 11 | contrastGain | 11;1.0 |
| 1 | 12 | shadowIsOutdoor | 12;1 |
| 1 | 13 | shadowSize | 13;2.0 |
| 1 | 14 | shadowOpacity | 14;0.5 |
Получает трансформацию объекта: позицию, поворот, масштаб.
Синтаксис:
CONST ME_Char* meGetObjData(ME_Int type, CONST ME_Char* id)
Параметры:
type— группа объектов.- если знаем группу в которой состоит объект, указываем (обычно начинается с нуля).
- если не знаем в какой существует объект группе, указываем «-1».
id— идентификатор объекта.
Возвращает: ME_Char*: строка с данными в формате,
например: «position.x;position.y;position.z;rotation.x;rotation.y;rotation.z;scale.x;scale.y;scale.z»
или пустой ответ: «0;0;0;0;0;0;0;0;0».
- Все типы `ME_*` (например, `ME_String`, `ME_Int`, `ME_Bool`) определены в
me_interface.h. - На Windows используется
HWND,LPWSTRи другие типы Windows API. - Для использования API необходимо подключить соответствующие заголовочные файлы и линковать с DLL движка.