LuaEntitySAO

## Описание

Любая сущность в игровом мире, кроме объектов Player.

Новые типы регистрируются методом register\_entity() и хранятся в глобальной таблице `minetest.registered_entities`.

Экземпляры создаются методом add\_entity() и хранятся в глобальной таблице `minetest.luaentities`
.

## Методы

Наследует все методы ObjectRef, кроме того имеет собственные:

```
Position = object:get_velocity()

```

Возвращает скорость объекта в виде 3D-вектора.

```
Position = object:add_velocity(Position vel)

```

Изменяет скорость объекта, прибавляя к ней 3D-вектор `vel`; должно уменьшить проблемы с синхронизацией по сравнению с использованием пары `object:get_velocity` и `object:set_velocity`.

```
nil = object:set_velocity(Position vel)

```

Задаёт скорость объекта в виде 3D-вектора.

```
Position = object:get_acceleration()

```

Возвращает ускорение объекта в виде 3D-вектора.

```
nil = object:set_acceleration(Position accel)

```

Задаёт ускорение объекта в виде 3D-вектора.

```
Position = object:get_rotation()

```

Возвращает поворот объекта в виде 3D-вектора.

```
nil = object:set_rotation(Position rot)

```

Задаёт поворот объекта в виде 3D-вектора.

```
number = object:get_yaw()

```

Возвращает поворот объекта в горизонтальной плоскости (в радианах).

```
nil = object:set_yaw(number radians)

```

Задаёт поворот объекта в горизонтальной плоскости (в радианах).

```
string = object:get_texture_mod()

```

Возвращает текущую строку-модификатор, применённую к текстуре объекта с помощью `object:set_texture_mod`.

```
nil = object:set_texture_mod(string mod)

```

Задаёт строку-модификатор к текстуре объекта (см. ImageString); например: `object:set_texture_mod("^[colorize:#009900:128")`.

```
unknown = object:set_sprite(
  table p = {x = 0, y = 0},
  number num_frames = 1,
  number framelength = 0.2,
  boolean select_horiz_by_yawpitch = false
)

```

Выбирает спрайт из таблицы спрайтов с дополнительной анимацией и выбором текстуры в стиле Dungeon Master на основе рыскания относительно камеры.

```
table = object:get_luaentity()

```

Возвращает таблицу из `minetest.luaentities`, соответствующую объекту.

## Устаревшие методы

Большая часть имён перечисленных выше методов раньше не содержала символа `"_"`; такая запись считается устаревшей и не должна использоваться (но может встретиться в старых модах).

Кроме того к устаревшим относится метод, возвращающий наименование, под которым зарегистрирован объект.

```
string = object:get_entity_name()

```

## Примечания

1. ↑ 1,0 1,1 TODO: на самом деле глобальная таблица `minetest.luaentities` является индексированной, каждый её элемент описывает активные в данный момент не-Player объекты, поле `object` каждой такой таблицы и содержит ссылку на объект типа **LuaEntitySAO**; возможно, это, а так же механизм активации/деактивации надо будет расписать подробнее здесь или в отдельной статье.
2. ↑ TODO: ранее вызов этих методов применительно к Player не порождал ошибки, а просто игнорировался, возвращая при этом `nil` (если в описании не указано иное), нужно перепроверить.
3. ↑ 3,0 3,1 TODO: проверить и расписать соответствие координат вектора и осей вращения.
4. ↑ TODO: указать соответствие между числовым значением и сторонами света.
5. ↑ TODO: необходимо уточнить возврат метода.
6. ↑ TODO: требуется проверка и подробное описание описание, т.к. в документации мало информации.
7. ↑ TODO: судя по всему, теперь для этого предполагается разбирать результат `object:get_luaentity`, нужно проверить.