Merge branch 'MihailRis:main' into main

This commit is contained in:
Xertis 2026-03-16 00:54:38 +03:00 • committed by GitHub
commit e049f4ae0c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
61 changed files with 1209 additions and 534 deletions

View file

@ -95,6 +95,23 @@
0. Прямоугольная область шириной, высотой и длиной в 0.4 м. с центром в 0.0.
1. Радиальная область с радиусом 1.6 м.
### Осязаемость - *solid*
Делает хитбокс сущности осязаемым препятствием. Вместе с включением данного свойства у `dynamic` тел следует указать массу (mass).
### Масса - *mass*
Определяет массу сущности. За стандарт приняты килограммы.
В случае `kinematic` тела вместо указанной используется бесконечная масса.
### Эластичность - *elasticity*
Определяет упругость сущности.
### Высота шага - *step-height*
Определяет максимальную высоту препятствия, на которое сущность может шагнуть без прыжка.
## Вид
### Имя скелета - *skeleton-name*

View file

@ -4,14 +4,17 @@
Настройки погоды:
| Свойство | Описание | По-умолчанию |
| ------------ | ---------------------------------------- | ------------ |
| fall | Осадки (см. таблица 2) | {} |
| clouds | Облачность [0.0, 1.0] | 0.0 |
| fog_opacity | Максимальная плотность тумана [0.0, 1.0] | 0.0 |
| fog_dencity | Плотность тумана | 1.0 |
| fog_curve | Кривая тумана | 1.0 |
| thunder_rate | Частота грома [0.0, 1.0] | 0.0 |
| Свойство | Описание | По-умолчанию |
| ------------- | ------------------------------------------ | ----------------- |
| fall | Осадки (см. таблица 2) | {} |
| clouds | Облачность [0.0, 1.0] | 0.0 |
| fog_opacity | Максимальная плотность тумана [0.0, 1.0] | 0.0 |
| fog_dencity | Плотность тумана | 1.0 |
| fog_curve | Кривая тумана | 1.0 |
| thunder_rate | Частота грома [0.0, 1.0] | 0.0 |
| sky_tint | Множитель цвета неба | {1, 1, 1} |
| clouds_tint | Множитель цвета облаков | {1, 1, 1} |
| min_sky_light | Минимальный свет излучаемый небом (лунный) | {0.2, 0.25, 0.33} |
Осадки:
@ -50,4 +53,4 @@ gfx.weather.get_fall_intensity() -> number
-- Проверяет, происходит ли в данный момент переключение погоды
gfx.weather.is_transition() -> boolean
```
```

View file

@ -114,15 +114,29 @@ mat4.decompose(m: matrix)
} или nil
```
## Отслеживание точки *mat4.look_at(...)*
## Отслеживание точки - *mat4.look_at(...)*
```lua
-- cоздает матрицу вида с точки 'eye' на точку 'center', где вектор 'up' определяет верх.
-- cоздаёт матрицу вида с точки 'eye' на точку 'center', где вектор 'up' определяет верх.
mat4.look_at(eye: vec3, center: vec3, up: vec3)
-- записывает матрицу вида в dst
mat4.look_at(eye: vec3, center: vec3, up: vec3, dst: matrix)
```
## Расчёт матрицы перспективы - *mat4.perspective*
```lua
-- возвращает расчитанную матрицу перспективы.
-- параметр fov принимает значение вертикального поля зрения в градусах.
-- параметр ratio задаёт отношение сторон (сторона X к стороне Y, пример: для монитора 800:600 отношение сторон равно 4 к 3, или 4 / 3).
-- параметр near задаёт расстояние от камеры до плоскости Near.
-- параметр far задаёт расстояние от камеры до плоскости Far.
mat4.perspective(fov: number, ratio: number, near: number, far: number) -> mat4
-- расчитывает матрицу перспективы на основе переданных значений и записывает её в переменную dst.
mat4.perspective(fov: number, ratio: number, near: number, far: number, dst: mat4) -> nil
```
## Перевод в строку - *mat4.tostring(...)*
```lua

View file

@ -82,6 +82,7 @@ pack.get_info(packid: string) -> {
- `!` - required
- `?` - optional
- `~` - weak
например `!teal`
Для получения информации о нескольких паках используйте таблицу id, чтобы не
@ -101,4 +102,4 @@ pack.assemble(packids: table<string>) -> table<string>
pack.request_writeable(packid: string, callback: function(string))
```
Запрашивает у пользователя право на модификацию пака. При подтвержении новая точка входа будет передана в callback.
Запрашивает у пользователя право на модификацию пака. При подтвержении новая точка входа будет передана в callback.

View file

@ -2,22 +2,34 @@
Библиотека для работы с кватернионами.
## Кватернион из матрицы - *mat4.from_quat(...)*
## Кватернион из матрицы - *quat.from_mat4(...)*
```lua
-- создает кватернион на основе матрицы вращения
-- создаёт кватернион на основе матрицы вращения
quat.from_mat4(m: matrix) -> quat
-- записывает кватернион по матрице вращения в dst
quat.from_mat4(m: matrix, dst: quat)
```
## Кватернион из углов Эйлера - *quat.from_euler(...)*
```lua
-- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll)
-- (значения углов строго в градусах)
quat.from_euler(euler: vec3) -> quat
-- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll)
-- (значения углов строго в градусах)
quat.from_euler(euler: vec3, dst: quat)
```
## Сферическая линейная интерполяция - *quat.slerp(...)*
Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью.
```lua
-- создает кватернион как интерполяцию между a и b,
-- создаёт кватернион как интерполяцию между a и b,
-- где t - фактор интерполяции
quat.slerp(a: quat, b: quat, t: number) -> quat
@ -29,6 +41,6 @@ quat.slerp(a: quat, b: quat, t: number, dst: quat)
## Перевод в строку - *quat.tostring(...)*
```lua
-- возвращает строку представляющую содержимое кватерниона
-- возвращает строку, представляющую содержимое кватерниона
quat.tostring(q: quat) -> string
```

View file

@ -114,6 +114,21 @@ body:set_crouching(enabled: bool)
body:get_body_type() -> str
-- Устанавливает тип физического тела
body:set_body_type(type: str)
-- Возвращает материал тела (то же, что и у блоков)
body:get_material() -> str
-- Устанавливает материал тела
body:set_material(material: str)
-- Возвращает массу тела
body:get_mass() -> number
-- Устанавливает массу тела
body:set_mass(mass: number)
-- Возвращает упругость тела
body:get_elasticity() -> number
-- Устанавливает упругость тела
body:set_elasticity(elasticity: number)
```
### Skeleton

View file

@ -137,6 +137,18 @@ io_stream:write_line(string)
io_stream:read_fully(
[опционально] useTable: boolean
) -> Bytearray | table<number> | table<string> | string
--[[
Устанавливает позицию в потоке
Режимы:
b - Задаёт позицию относительно начало файла
c - Задаёт позицию относительно текущей позиции
e - Задаёт позицию относительно конца файла
--]]
io_stream:seek(
mode: string
offset: number
)
```
## Методы Buffered-режима

View file

@ -100,6 +100,7 @@
Внутренний текст - текст кнопки.
- `font` - имя шрифта
- `text-align` - выравнивание текста ("left", "center" или "right"). Тип: строка.
## Флажок - *checkbox*
@ -110,6 +111,7 @@
## Метка - *label*
- `font` - имя шрифта
- `text-align` - выравнивание текста ("left", "center" или "right"). Тип: строка.
- `valign` - вертикальное выравнивание текста: top/center/bottom
- `supplier` - поставщик текста (вызывается каждый кадр)
@ -132,6 +134,7 @@
Внутренний текст - изначально введенный текст
- `font` - имя шрифта
- `placeholder` - текст подстановки (используется если текстовое поле пусто)
- `hint` - текст, отображаемый, если текстовое поле пусто (не отправляется в consumer, sub-consumer и validator).
- `supplier` - поставщик текста (вызывается каждый кадр)
@ -191,6 +194,14 @@
- `selected` - изначально выбранное значение. По-умолчанию: "".
- `onselect` - функция, в которую передаётся выбранное пользователем значение
## Привязка ввода - *bindbox*
Элемент для отображения и изменения привязки клавиш или кнопок мыши.
- `font` - имя шрифта. Тип: строка.
- `binding` - имя привязки. Тип: строка.
- `padding` - отступ между текстом и границами элемента. Тип: число. По-умолчанию: 6
# Элементы инвентаря
## Инвентарь - *inventory*
@ -214,10 +225,8 @@
## Сетка слотов - *slots-grid*
Элемент должен находиться внутри `inventory` элемента, без посредников.
- `start-index` - индекс первого слота
- `rows` - число рядов (не указывается, если указано cols).
- `cols` - число столбцов (не указывается, если указано rows).
- `count` - общее число слотов (не указывается, если указаны rows и cols).
- `interval` - интервал между слотами. Тип: число.
- `padding` - отступ вокруг решетки слотов. Тип: число. (*атрибут будет удален*)
- `sharefunc` - lua событие вызываемое при использовании ЛКМ + Shift. Передается id инвентаря и индекс слота
@ -225,3 +234,8 @@
- `onrightclick` - lua событие вызываемое при использовании ПКМ. Передается id инвентаря и индекс слота
- `taking` - возможность взять предмет из слота.
- `placing` - возможность положить предмет в слот.
Конфигурация слотов (достаточно указать два атрибута):
- `rows` - число рядов. Тип: число.
- `cols` - число столбцов. Тип: число.
- `count` - общее число слотов. Тип: число.