diff --git a/doc/ru/scripting.md b/doc/ru/scripting.md index 50354335..c986dd88 100644 --- a/doc/ru/scripting.md +++ b/doc/ru/scripting.md @@ -7,6 +7,7 @@ - [Пользовательский ввод](scripting/user-input.md) - [Файловая система и сериализация](scripting/filesystem.md) - [Свойства и методы UI элементов](scripting/ui.md) +- [Сущности и компоненты](scripting/ecs.md) - [Библиотеки](#) - [mat4](scripting/builtins/libmat4.md) - [Модуль core:bit_converter](scripting/modules/core_bit_converter.md) diff --git a/doc/ru/scripting/components.md b/doc/ru/scripting/components.md deleted file mode 100644 index 015d0634..00000000 --- a/doc/ru/scripting/components.md +++ /dev/null @@ -1,59 +0,0 @@ -# Компоненты - -## Обозначения типов, используемые далее - -- vec3 - 3D вектор (массив из трех чисел) -- mat4 - матрица 4x4 (массив из 16 чисел) - -Аннотации типов добавлены в целях документации и не являются частью синтаксиса -Lua. - -## Встроенные компоненты - -### Transform - -Компонент отвечает за позицию, масштаб и вращение сущности. - -```lua --- Сокращение -local tsf = entity.transform - --- Возвращает позицию сущности -tsf:get_pos() -> vec3 --- Устанавливает позицию сущности -tsf:set_pos(pos: vec3) - --- Возвращает масштаб сущности -tsf:get_size() -> vec3 --- Устанавливает масштаб сущности -tsf:set_size(size: vec3) - --- Возвращает вращение сущности -tsf:get_rot() -> mat4 --- Устанавливает вращение сущности -tsf:set_rot(size: mat4) -``` - -### Rigidbody - -Компонент отвечает за физическое тело сущности. - -```lua --- Сокращение -local body = entity.rigidbody - --- Проверяет, включен ли рассчет физики тела -body:is_enabled() -> bool --- Включает/выключает рассчет физики тела -body:set_enabled(enabled: bool) - --- Возвращает линейную скорость -body:get_vel() -> vec3 --- Устанавливает линейную скорость -body:set_vel(vel: vec3) - --- Возвращает размер хитбокса -body:get_size() -> vec3 --- Устанавливает размер хитбокса -body:set_size(size: vec3) -``` diff --git a/doc/ru/scripting/ecs.md b/doc/ru/scripting/ecs.md new file mode 100644 index 00000000..137d340b --- /dev/null +++ b/doc/ru/scripting/ecs.md @@ -0,0 +1,130 @@ +# Сущности и компоненты + +## Обозначения типов, используемые далее + +- vec3 - 3D вектор (массив из трех чисел) +- mat4 - матрица 4x4 (массив из 16 чисел) + +Аннотации типов добавлены в целях документации и не являются частью синтаксиса +Lua. + +## Сущность + +Объект сущности доступен в компонентах как глобальная переменная **entity**. + +```lua +-- Удаляет сущность (сущность может продолжать существовать до завершения кадра, но не будет отображена в этом кадре) +entity:despawn() + +-- Заменяет скелет сущности +entity:set_skeleton(name: str) + +-- Возращает уникальный идентификатор сущности +entity:get_uid() -> int + +-- Возвращает компонент по имени +entity:get_component(name: str) -> компонент или nil + +-- Проверяет наличие компонента по имени +entity:has_component(name: str) -> bool +``` + +## Встроенные компоненты + +### Transform + +Компонент отвечает за позицию, масштаб и вращение сущности. + +```lua +-- Сокращение +local tsf = entity.transform + +-- Возвращает позицию сущности +tsf:get_pos() -> vec3 +-- Устанавливает позицию сущности +tsf:set_pos(pos: vec3) + +-- Возвращает масштаб сущности +tsf:get_size() -> vec3 +-- Устанавливает масштаб сущности +tsf:set_size(size: vec3) + +-- Возвращает вращение сущности +tsf:get_rot() -> mat4 +-- Устанавливает вращение сущности +tsf:set_rot(size: mat4) +``` + +### Rigidbody + +Компонент отвечает за физическое тело сущности. + +```lua +-- Сокращение +local body = entity.rigidbody + +-- Проверяет, включен ли рассчет физики тела +body:is_enabled() -> bool +-- Включает/выключает рассчет физики тела +body:set_enabled(enabled: bool) + +-- Возвращает линейную скорость +body:get_vel() -> vec3 +-- Устанавливает линейную скорость +body:set_vel(vel: vec3) + +-- Возвращает размер хитбокса +body:get_size() -> vec3 +-- Устанавливает размер хитбокса +body:set_size(size: vec3) + +-- Возвращает множитель гравитации +body:get_gravity_scale() -> vec3 +-- Устанавливает множитель гравитации +body:set_gravity_scale(scale: vec3) + +-- Возвращает множитель затухания линейной скорости (используется для имитации сопротивления воздуха и трения) +body:get_linear_damping() -> number +-- Устанавливает множитель затухания линейной скорости +body:set_linear_damping(value: number) + +-- Проверяет, включено ли вертикальное затухание скорости +body:is_vdamping() -> bool +-- Включает/выключает вертикальное затухание скорости +body:set_vdamping(enabled: bool) + +-- Проверяет, находится ли сущность на земле (приземлена) +body:is_grounded() -> bool + +-- Проверяет, находится ли сущность в "крадущемся" состоянии (не может упасть с блоков) +body:is_crouching() -> bool +-- Включает/выключает "крадущееся" состояние +body:set_crouching(enabled: bool) + +-- Возвращает тип физического тела (dynamic/kinematic) +body:get_body_type() -> str +-- Устанавливает тип физического тела +body:set_body_type(type: str) +``` + + +### Skeleton + +Компонент отвечает за скелет сущности. См. [риггинг](rigging.md). + +```lua +-- Сокращение +local rig = entity.skeleton + +-- Возвращает имя модели, назначенной на кость с указанным индексом +rig:get_model(index: int) -> str + +-- Возвращает матрицу трансформации кости с указанным индексом +rig:get_matrix(index: int) -> mat4 +-- Устанавливает матрицу трансформации кости с указанным индексом +rig:set_matrix(index: int, matrix: mat4) + +-- Назначает текстуру по ключу (динамически назначаемые текстуры - '$имя') +rig:set_texture(key: str, value: str) +``` +