From 4f42d30f91900bd408e52781a0336cd36e334648 Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 15:49:25 +1000 Subject: [PATCH 1/9] fixed missing includes in EngineController.hpp --- src/logic/EngineController.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/logic/EngineController.hpp b/src/logic/EngineController.hpp index a46973cf3..baba7ba9e 100644 --- a/src/logic/EngineController.hpp +++ b/src/logic/EngineController.hpp @@ -3,6 +3,7 @@ #include #include #include +#include class Engine; class World; From 6644c505f00b5650fb623022aba0d40029bab937 Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 15:58:45 +1000 Subject: [PATCH 2/9] added quat.from_euler lua function --- src/logic/scripting/lua/libs/libquat.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/logic/scripting/lua/libs/libquat.cpp b/src/logic/scripting/lua/libs/libquat.cpp index 2316360a1..286c6e05a 100644 --- a/src/logic/scripting/lua/libs/libquat.cpp +++ b/src/logic/scripting/lua/libs/libquat.cpp @@ -44,8 +44,18 @@ static int l_tostring(lua::State* L) { return lua::pushstring(L, ss.str()); } +static int l_from_euler(lua::State *L) +{ + uint argc = lua::check_argc(L, 1, 2); + glm::vec3 euler = lua::tovec3(L, 1); + + if (argc == 1) return lua::pushquat(L, glm::quat(euler)); + return lua::setquat(L, 2, glm::quat(euler)); +} + const luaL_Reg quatlib[] = { {"from_mat4", lua::wrap}, + {"from_euler", lua::wrap}, {"slerp", lua::wrap}, {"tostring", lua::wrap}, {nullptr, nullptr} From a0963c5ee68e4245b7c7b65e3e3b244ffa0f2502 Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 16:30:12 +1000 Subject: [PATCH 3/9] added quat.from_euler function to docs & fixed mistake in same page --- doc/ru/scripting/builtins/libquat.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index 5a6495658..07b0b991c 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -2,7 +2,7 @@ Библиотека для работы с кватернионами. -## Кватернион из матрицы - *mat4.from_quat(...)* +## Кватернион из матрицы - *quat.from_mat4(...)* ```lua -- создает кватернион на основе матрицы вращения @@ -12,6 +12,16 @@ quat.from_mat4(m: matrix) -> quat 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(...)* Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью. From 3f5b194fcbcf19e62aa4811c2e4178d54061e01b Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 16:34:47 +1000 Subject: [PATCH 4/9] misc changed logic in quat.from_euler --- src/logic/scripting/lua/libs/libquat.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/logic/scripting/lua/libs/libquat.cpp b/src/logic/scripting/lua/libs/libquat.cpp index 286c6e05a..d08983fe4 100644 --- a/src/logic/scripting/lua/libs/libquat.cpp +++ b/src/logic/scripting/lua/libs/libquat.cpp @@ -49,8 +49,8 @@ static int l_from_euler(lua::State *L) uint argc = lua::check_argc(L, 1, 2); glm::vec3 euler = lua::tovec3(L, 1); - if (argc == 1) return lua::pushquat(L, glm::quat(euler)); - return lua::setquat(L, 2, glm::quat(euler)); + if (argc == 2) return lua::setquat(L, 2, glm::quat(euler)); + return lua::pushquat(L, glm::quat(euler)); } const luaL_Reg quatlib[] = { From 6936db8b461757278913b7b11735a8e8d7ba367f Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 16:42:29 +1000 Subject: [PATCH 5/9] =?UTF-8?q?replaced=20'=D0=B5'=20on=20'=D1=91'=20in=20?= =?UTF-8?q?some=20words?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/ru/scripting/builtins/libquat.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index 07b0b991c..81878fe90 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -5,7 +5,7 @@ ## Кватернион из матрицы - *quat.from_mat4(...)* ```lua --- создает кватернион на основе матрицы вращения +-- создаёт кватернион на основе матрицы вращения quat.from_mat4(m: matrix) -> quat -- записывает кватернион по матрице вращения в dst @@ -15,7 +15,7 @@ quat.from_mat4(m: matrix, dst: quat) ## Кватернион из углов Эйлера - *quat.from_euler(...)* ```lua --- создает кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) +-- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) quat.from_euler(euler: vec3) -> quat -- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) @@ -27,7 +27,7 @@ quat.from_euler(euler: vec3, dst: quat) Интерполяция всегда выполняется по короткому пути, а вращение выполняется с постоянной скоростью. ```lua --- создает кватернион как интерполяцию между a и b, +-- создаёт кватернион как интерполяцию между a и b, -- где t - фактор интерполяции quat.slerp(a: quat, b: quat, t: number) -> quat @@ -39,6 +39,6 @@ quat.slerp(a: quat, b: quat, t: number, dst: quat) ## Перевод в строку - *quat.tostring(...)* ```lua --- возвращает строку представляющую содержимое кватерниона +-- возвращает строку, представляющую содержимое кватерниона quat.tostring(q: quat) -> string ``` From 3bbc8427e74362a2514b1a0bbd80c9a7b62f6591 Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 19:20:26 +1000 Subject: [PATCH 6/9] changed formatting style in libquat.cpp --- src/logic/scripting/lua/libs/libquat.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/logic/scripting/lua/libs/libquat.cpp b/src/logic/scripting/lua/libs/libquat.cpp index d08983fe4..2f3fad9ff 100644 --- a/src/logic/scripting/lua/libs/libquat.cpp +++ b/src/logic/scripting/lua/libs/libquat.cpp @@ -44,8 +44,7 @@ static int l_tostring(lua::State* L) { return lua::pushstring(L, ss.str()); } -static int l_from_euler(lua::State *L) -{ +static int l_from_euler(lua::State *L) { uint argc = lua::check_argc(L, 1, 2); glm::vec3 euler = lua::tovec3(L, 1); From 415d5a87f7d0a8bbd7245b7cf3a8c2c84b68546c Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 19:37:31 +1000 Subject: [PATCH 7/9] fixed docs --- doc/ru/scripting/builtins/libquat.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index 81878fe90..e5b69e35e 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -16,9 +16,11 @@ quat.from_mat4(m: matrix, dst: quat) ```lua -- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) +-- (значения углов В РАДИАНАХ) quat.from_euler(euler: vec3) -> quat -- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) +-- (значения углов В РАДИАНАХ) quat.from_euler(euler: vec3, dst: quat) ``` From 1de10e751de6c0d45151c89a6f02cf79cf14ae99 Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 19:38:29 +1000 Subject: [PATCH 8/9] fixed docs x2 --- doc/ru/scripting/builtins/libquat.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index e5b69e35e..0cc05c98e 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -16,11 +16,11 @@ quat.from_mat4(m: matrix, dst: quat) ```lua -- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) --- (значения углов В РАДИАНАХ) +-- (значения углов строго в радианах) quat.from_euler(euler: vec3) -> quat -- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) --- (значения углов В РАДИАНАХ) +-- (значения углов строго в радианах) quat.from_euler(euler: vec3, dst: quat) ``` From 563b210500d16e7996acf6e39f6c64ca392cbbfb Mon Sep 17 00:00:00 2001 From: RomanDonw Date: Wed, 4 Mar 2026 19:45:21 +1000 Subject: [PATCH 9/9] replaced radians on degrees --- doc/ru/scripting/builtins/libquat.md | 4 ++-- src/logic/scripting/lua/libs/libquat.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/ru/scripting/builtins/libquat.md b/doc/ru/scripting/builtins/libquat.md index 0cc05c98e..e991de252 100644 --- a/doc/ru/scripting/builtins/libquat.md +++ b/doc/ru/scripting/builtins/libquat.md @@ -16,11 +16,11 @@ quat.from_mat4(m: matrix, dst: quat) ```lua -- создаёт кватернион на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) --- (значения углов строго в радианах) +-- (значения углов строго в градусах) quat.from_euler(euler: vec3) -> quat -- записывает кватернион в dst на основе вектора, содержащего углы Эйлера в порядке XYZ (pitch, yaw, roll) --- (значения углов строго в радианах) +-- (значения углов строго в градусах) quat.from_euler(euler: vec3, dst: quat) ``` diff --git a/src/logic/scripting/lua/libs/libquat.cpp b/src/logic/scripting/lua/libs/libquat.cpp index 2f3fad9ff..53757cb36 100644 --- a/src/logic/scripting/lua/libs/libquat.cpp +++ b/src/logic/scripting/lua/libs/libquat.cpp @@ -46,7 +46,7 @@ static int l_tostring(lua::State* L) { static int l_from_euler(lua::State *L) { uint argc = lua::check_argc(L, 1, 2); - glm::vec3 euler = lua::tovec3(L, 1); + glm::vec3 euler = glm::radians(lua::tovec3(L, 1)); if (argc == 2) return lua::setquat(L, 2, glm::quat(euler)); return lua::pushquat(L, glm::quat(euler));