diff --git a/doc/en/3d-text.md b/doc/en/3d-text.md new file mode 100644 index 00000000..3f3dc7f1 --- /dev/null +++ b/doc/en/3d-text.md @@ -0,0 +1,86 @@ +# 3D Text + +2D text displayed in 3D space. + +The appearance of 3D text, is configured via a table, like [particles](particles.md). All fields are optional. + +| Field | Description | Default | +| -------------- | ---------------------------- | ---------------- | +| display | Display format | static_billboard | +| color | Text color | {1, 1, 1, 1} | +| scale | Text scale | 1 | +| renderDistance | Text rendering distance | 32 | +| xray_opacity | Visibility through obstacles | 0 | +| perspective | Perspective coefficient | 1 | + +Available display formats: + +| Format | Description | +| ----------------- | ----------------------------------------------------------------- | +| static_billboard | Simple 3D text in the world with manual size and rotation control | +| y_free_billboard | Freely rotating text on the Y axis facing the camera | +| xy_free_billboard | Freely rotating text facing the camera | +| projected | Projected text (displayed in screen coordinates) | + +## *gfx.text3d* library + +```lua +gfx.text3d.show( + -- text position + position: vec3, + -- text to display + text: str, + -- text display settings table + preset: table, + -- additional text display settings table + [optional] extension: table +) -> int +``` + +Creates 3D text, returning its id. + +```lua +gfx.text3d.hide(id: int) +``` + +Removes 3D text. + +```lua +gfx.text3d.get_text(id: int) -> str +gfx.text3d.set_text(id: int, text: str) +``` + +Text getter and setter. + +```lua +gfx.text3d.get_pos(id: int) -> vec3 +gfx.text3d.set_pos(id: int, pos: vec3) +``` + +Text position getter and setter. + +```lua +gfx.text3d.get_axis_x(id: int) -> vec3 +gfx.text3d.set_axis_x(id: int, pos: vec3) +``` + +Getter and setter of vector X. + +```lua +gfx.text3d.get_axis_y(id: int) -> vec3 +gfx.text3d.set_axis_y(id: int, pos: vec3) +``` + +Getter and setter of vector Y. + +```lua +gfx.text3d.set_rotation(id: int, rotation: mat4) +``` + +Sets the text rotation (Sets the rotated vectors X,Y). + +```lua +gfx.text3d.update_settings(id: int, preset: table) +``` + +Updates text display settings. diff --git a/doc/en/scripting.md b/doc/en/scripting.md index 7f5f3dda..6b33f7d9 100644 --- a/doc/en/scripting.md +++ b/doc/en/scripting.md @@ -9,10 +9,14 @@ Subsections: - [UI properties and methods](scripting/ui.md) - [Entities and components](scripting/ecs.md) - [Libraries](#) + - [base64](scripting/builtins/libbase64.md) + - [bjson, json, toml](scripting/filesystem.md) - [block](scripting/builtins/libblock.md) - [cameras](scripting/builtins/libcameras.md) - [entities](scripting/builtins/libentities.md) - [file](scripting/builtins/libfile.md) + - [gfx.particles](particles.md#gfxparticles-library) + - [gfx.text3d](3d-text.md#gfxtext3d-library) - [gui](scripting/builtins/libgui.md) - [hud](scripting/builtins/libhud.md) - [inventory](scripting/builtins/libinventory.md) diff --git a/doc/en/scripting/builtins/libbase64.md b/doc/en/scripting/builtins/libbase64.md new file mode 100644 index 00000000..fdfd467e --- /dev/null +++ b/doc/en/scripting/builtins/libbase64.md @@ -0,0 +1,11 @@ +# *base64* library + +Library for base64 encoding/decoding. + +```lua +-- Encode bytes to base64 string +base64.encode(bytes: table|ByteArray) -> str + +-- Decode base64 string to ByteArray or lua table if second argument is set to true +base64.decode(base64string: str, [optional]usetable: bool=false) -> table|ByteArray +``` diff --git a/doc/ru/3d-text.md b/doc/ru/3d-text.md new file mode 100644 index 00000000..ac6affd3 --- /dev/null +++ b/doc/ru/3d-text.md @@ -0,0 +1,86 @@ +# 3D Текст + +2D текст отображаемый в 3D пространстве. + +Вид 3D текста, как и [частицы](particles.md), настраивается через таблицу, все поля которой опциональны. + +| Поле | Описание | По-умолчанию | +| --------------- | ------------------------------------------------------- | ----------------- | +| display | Формат отображения | static_billboard | +| color | Цвет текста | {1, 1, 1, 1} | +| scale | Масштаб | 1 | +| renderDistance | Дистанция отрисовки текста | 32 | +| xray_opacity | Коэффициент видимости через препятствия (просвечивание) | 0 | +| perspective | Коэффициент перспективы | 1 | + +Доступные форматы отображения: + +| Формат | Описание | +| ----------------- | ----------------------------------------------------------------- | +| static_billboard | Простой 3D текст в мире с ручным управлением размером и вращением | +| y_free_billboard | Свободно вращающийся по оси Y текст, направляющийся на камеру | +| xy_free_billboard | Свободно вращающийся текст, направляющийся на камеру | +| projected | Проецируемый текст (отображается в экранной системе координат) | + +## Библиотека *gfx.text3d* + +```lua +gfx.text3d.show( + -- позиция текста + position: vec3, + -- отображаемый текст + text: str, + -- таблица настроек отображение текста + preset: table, + -- дополнительная таблица настроек отображения текста + [опционально] extension: table +) -> int +``` + +Создаёт 3D текст, возвращая его id. + +```lua +gfx.text3d.hide(id: int) +``` + +Удаляет 3D текст. + +```lua +gfx.text3d.get_text(id: int) -> str +gfx.text3d.set_text(id: int, text: str) +``` + +Геттер и сеттер текста. + +```lua +gfx.text3d.get_pos(id: int) -> vec3 +gfx.text3d.set_pos(id: int, pos: vec3) +``` + +Геттер и сеттер позиции текста. + +```lua +gfx.text3d.get_axis_x(id: int) -> vec3 +gfx.text3d.set_axis_x(id: int, pos: vec3) +``` + +Геттер и сеттер вектора X. + +```lua +gfx.text3d.get_axis_y(id: int) -> vec3 +gfx.text3d.set_axis_y(id: int, pos: vec3) +``` + +Геттер и сеттер вектора Y. + +```lua +gfx.text3d.set_rotation(id: int, rotation: mat4) +``` + +Устанавливает вращение текста (Устанавливает повернутые вектора X,Y). + +```lua +gfx.text3d.update_settings(id: int, preset: table) +``` + +Обновляет настройки отображения текста. diff --git a/doc/ru/scripting.md b/doc/ru/scripting.md index 6f092570..19f4570a 100644 --- a/doc/ru/scripting.md +++ b/doc/ru/scripting.md @@ -9,10 +9,14 @@ - [Свойства и методы UI элементов](scripting/ui.md) - [Сущности и компоненты](scripting/ecs.md) - [Библиотеки](#) + - [base64](scripting/builtins/libbase64.md) + - [bjson, json, toml](scripting/filesystem.md) - [block](scripting/builtins/libblock.md) - [cameras](scripting/builtins/libcameras.md) - [entities](scripting/builtins/libentities.md) - [file](scripting/builtins/libfile.md) + - [gfx.particles](particles.md#библиотека-gfxparticles) + - [gfx.text3d](3d-text.md#библиотека-gfxtext3d) - [gui](scripting/builtins/libgui.md) - [hud](scripting/builtins/libhud.md) - [inventory](scripting/builtins/libinventory.md) diff --git a/doc/ru/scripting/builtins/libbase64.md b/doc/ru/scripting/builtins/libbase64.md new file mode 100644 index 00000000..7078fa0b --- /dev/null +++ b/doc/ru/scripting/builtins/libbase64.md @@ -0,0 +1,11 @@ +# Библиотека *base64* + +Библиотека для base64 кодирования/декодирования. + +```lua +-- Кодирует массив байт в base64 строку +base64.encode(bytes: table|ByteArray) -> str + +-- Декодирует base64 строку в ByteArray или таблицу чисел, если второй аргумент установлен на true +base64.decode(base64string: str, [опционально]usetable: bool=false) -> table|ByteArray +``` diff --git a/res/presets/text3d/player_name.toml b/res/presets/text3d/player_name.toml index 7942ff48..8946128c 100644 --- a/res/presets/text3d/player_name.toml +++ b/res/presets/text3d/player_name.toml @@ -1,3 +1,4 @@ display = "projected" xray_opacity = 0.3 render_distance = 128 +perspective = 0.0 diff --git a/src/presets/NotePreset.hpp b/src/presets/NotePreset.hpp index c2a1a88b..6c3f548e 100644 --- a/src/presets/NotePreset.hpp +++ b/src/presets/NotePreset.hpp @@ -20,9 +20,9 @@ struct NotePreset : public Serializable { NoteDisplayMode displayMode = NoteDisplayMode::STATIC_BILLBOARD; glm::vec4 color {1.0f}; float scale = 1.0f; - float renderDistance = 10.0f; + float renderDistance = 32.0f; float xrayOpacity = 0.0f; - float perspective = 0.0f; + float perspective = 1.0f; dv::value serialize() const override; void deserialize(const dv::value& src) override;