2024-07-13 04:48:03 +03:00

133 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сущности и компоненты
## Обозначения типов, используемые далее
- vec3 - 3D вектор (массив из трех чисел)
- mat4 - матрица 4x4 (массив из 16 чисел)
Аннотации типов добавлены в целях документации и не являются частью синтаксиса
Lua.
## Сущность
Объект сущности доступен в компонентах как глобальная переменная **entity**.
```lua
-- Удаляет сущность (сущность может продолжать существовать до завершения кадра, но не будет отображена в этом кадре)
entity:despawn()
-- Возращает имя скелета сущности
entity:get_skeleton() -> str
-- Заменяет скелет сущности
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:get_texture(key: str) -> str
-- Назначает текстуру по ключу
rig:set_texture(key: str, value: str)
```