mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-04 18:41:51 +00:00
Merge branch 'main' of https://github.com/Xertis/VoxelEngine-Cpp
This commit is contained in:
commit
d4e5bc99a0
61 changed files with 1209 additions and 534 deletions
|
|
@ -95,6 +95,23 @@ Example:
|
|||
0. A rectangular area with a width, height and length of 0.4 m, centered at 0.0.
|
||||
1. Radial area with a radius of 1.6 m.
|
||||
|
||||
### *solid*
|
||||
|
||||
Makes the entity's hitbox an obstacle. When enabling this property for `dynamic` body, a mass must be specified.
|
||||
|
||||
### *mass*
|
||||
|
||||
Defines the entity's mass. Kilograms are used as the default.
|
||||
For `kinematic` bodies, an infinite mass is used instead.
|
||||
|
||||
### *elasticity*
|
||||
|
||||
Defines the entity's elasticity (affects the bounce on collision).
|
||||
|
||||
### *step-height*
|
||||
|
||||
Defines the maximum height of an obstacle an entity can step onto without jumping.
|
||||
|
||||
## View
|
||||
|
||||
### *skeleton-name*
|
||||
|
|
|
|||
|
|
@ -4,14 +4,17 @@ A library for managing audio/visual weather effects.
|
|||
|
||||
Weather settings:
|
||||
|
||||
| Property | Description | Default |
|
||||
| ------------ | ------------------------------ | ------- |
|
||||
| fall | Precipitation (see table 2) | {} |
|
||||
| clouds | Cloudiness [0.0, 1.0] | 0.0 |
|
||||
| fog_opacity | Maximum fog density [0.0, 1.0] | 0.0 |
|
||||
| fog_dencity | Fog density | 1.0 |
|
||||
| fog_curve | Fog curve | 1.0 |
|
||||
| thunder_rate | Thunder rate [0.0, 1.0] | 0.0 |
|
||||
| Property | Description | Default |
|
||||
| ------------- | -------------------------------- | ----------------- |
|
||||
| fall | Precipitation (see table 2) | {} |
|
||||
| clouds | Cloudiness [0.0, 1.0] | 0.0 |
|
||||
| fog_opacity | Maximum fog density [0.0, 1.0] | 0.0 |
|
||||
| fog_dencity | Fog density | 1.0 |
|
||||
| fog_curve | Fog curve | 1.0 |
|
||||
| thunder_rate | Thunder rate [0.0, 1.0] | 0.0 |
|
||||
| sky_tint | Sky color multiplier | {1, 1, 1} |
|
||||
| clouds_tint | Cloud color multiplier | {1, 1, 1} |
|
||||
| min_sky_light | Minimum sky-emitted light (moon) | {0.2, 0.25, 0.33} |
|
||||
|
||||
Precipitation:
|
||||
|
||||
|
|
|
|||
|
|
@ -78,14 +78,14 @@ Returns the id of all base packages (non-removeable)
|
|||
|
||||
```lua
|
||||
pack.get_info(packid: str) -> {
|
||||
id: str,
|
||||
title: str,
|
||||
creator: str,
|
||||
description: str,
|
||||
version: str,
|
||||
path: str,
|
||||
icon: str, -- not available in headless mode
|
||||
dependencies: optional strings array
|
||||
id: str,
|
||||
title: str,
|
||||
creator: str,
|
||||
description: str,
|
||||
version: str,
|
||||
path: str,
|
||||
icon: str, -- not available in headless mode
|
||||
dependencies: optional strings array
|
||||
}
|
||||
```
|
||||
|
||||
|
|
@ -95,6 +95,7 @@ Returns information about the pack (not necessarily installed).
|
|||
- `!` - required
|
||||
- `?` - optional
|
||||
- `~` - weak
|
||||
|
||||
for example `!teal`
|
||||
|
||||
To obtain information about multiple packs, use table of ids to avoid re-scanning:one
|
||||
|
|
|
|||
|
|
@ -114,6 +114,21 @@ body:set_crouching(enabled: bool)
|
|||
body:get_body_type() -> str
|
||||
-- Sets the physical body type
|
||||
body:set_body_type(type: str)
|
||||
|
||||
-- Returns the body material (same as for blocks)
|
||||
body:get_material() -> str
|
||||
-- Sets the body material
|
||||
body:set_material(material: str)
|
||||
|
||||
-- Returns the body's mass
|
||||
body:get_mass() -> number
|
||||
-- Sets the body's mass
|
||||
body:set_mass(mass: number)
|
||||
|
||||
-- Returns the body's elasticity
|
||||
body:get_elasticity() -> number
|
||||
-- Sets the body's elasticity
|
||||
body:set_elasticity(elasticity: number)
|
||||
```
|
||||
|
||||
### Skeleton
|
||||
|
|
|
|||
|
|
@ -98,6 +98,7 @@ A panel that controls the size and position of two elements. Allows the user to
|
|||
|
||||
Inner text is a button text.
|
||||
|
||||
- `font` - font name
|
||||
- `text-align` - inner text alignment (*left/center/right*). Type: string.
|
||||
|
||||
## *checkbox*
|
||||
|
|
@ -108,6 +109,7 @@ Inner text is a button text.
|
|||
|
||||
## *label*
|
||||
|
||||
- `font` - font name
|
||||
- `text-align` - text alignment (*left/center/right*). Type: string.
|
||||
- `valign` - vertical text alignment: top/center/bottom.
|
||||
- `supplier` - text supplier (called every frame).
|
||||
|
|
@ -131,6 +133,7 @@ Inner text is a button text.
|
|||
|
||||
Inner text - initially entered text
|
||||
|
||||
- `font` - font name
|
||||
- `placeholder` - placeholder text (used if the text field is empty)
|
||||
- `hint` - text displayed if the text field is empty (not sent to consumer, sub-consumer and validator).
|
||||
- `supplier` - text supplier (called every frame)
|
||||
|
|
@ -190,6 +193,14 @@ Example of list description:
|
|||
- `selected` - initially selected value. Default: "".
|
||||
- `onselect` - function to which the user-selected value is passed
|
||||
|
||||
## *bindbox*
|
||||
|
||||
An element for displaying and editing key or mouse button bindings.
|
||||
|
||||
- `font` - font name. Type: string.
|
||||
- `binding` - binding name. Type: string.
|
||||
- `padding` - padding between text and element borders. Type: number. Default: 6
|
||||
|
||||
# Inventory elements
|
||||
|
||||
## *inventory*
|
||||
|
|
@ -213,9 +224,6 @@ Element must be in direct sub-element of *inventory*.
|
|||
## *slots-grid*
|
||||
|
||||
- `start-index` - inventory slot index of the first slot. Type: integer
|
||||
- `rows` - number of grid rows (unnecessary if *cols* and *count* specified). Type: integer
|
||||
- `cols` - number of grid columns (unnecessary if *rows* and *count* specified). Type: integer
|
||||
- `count` - total number of slots in grid (unnecessary if *rows* and *cols* specified). Type: integer
|
||||
- `interval` - visual slots interval. Type: number
|
||||
- `padding` - grid padding (not slots interval). Type: number. (*deprecated*)
|
||||
- `sharefunc` - Lua event called on <btn>LMB</btn> + <btn>Shift</btn>. Inventory id and slot index passed as arguments.
|
||||
|
|
@ -223,3 +231,8 @@ Element must be in direct sub-element of *inventory*.
|
|||
- `onrightclick` - Lua event called on <btn>RMB</btn> click. Inventory id and slot index passed as arguments.
|
||||
- `taking` - the ability to take an item from a slot.
|
||||
- `placing` - the ability to put an item in a slot.
|
||||
|
||||
Slots configuration (just specify two attributes):
|
||||
- `rows` - number of rows. Type: integer
|
||||
- `cols` - number of columns. Type: integer
|
||||
- `count` - total number of slots. Type: integer
|
||||
|
|
|
|||
|
|
@ -95,6 +95,23 @@
|
|||
0. Прямоугольная область шириной, высотой и длиной в 0.4 м. с центром в 0.0.
|
||||
1. Радиальная область с радиусом 1.6 м.
|
||||
|
||||
### Осязаемость - *solid*
|
||||
|
||||
Делает хитбокс сущности осязаемым препятствием. Вместе с включением данного свойства у `dynamic` тел следует указать массу (mass).
|
||||
|
||||
### Масса - *mass*
|
||||
|
||||
Определяет массу сущности. За стандарт приняты килограммы.
|
||||
В случае `kinematic` тела вместо указанной используется бесконечная масса.
|
||||
|
||||
### Эластичность - *elasticity*
|
||||
|
||||
Определяет упругость сущности.
|
||||
|
||||
### Высота шага - *step-height*
|
||||
|
||||
Определяет максимальную высоту препятствия, на которое сущность может шагнуть без прыжка.
|
||||
|
||||
## Вид
|
||||
|
||||
### Имя скелета - *skeleton-name*
|
||||
|
|
|
|||
|
|
@ -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
|
||||
```
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
```
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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-режима
|
||||
|
|
|
|||
|
|
@ -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` - общее число слотов. Тип: число.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue