From 3a1ae57bbfc42c9c0c33b36d00fe0f61e76caf7f Mon Sep 17 00:00:00 2001 From: MihailRis Date: Wed, 31 Jul 2024 14:45:09 +0300 Subject: [PATCH] fix: mat4.decompose (-Wmaybe-uninitialized) --- doc/en/scripting/builtins/libmat4.md | 2 +- doc/ru/scripting/builtins/libmat4.md | 2 +- src/logic/scripting/lua/libmat4.cpp | 39 ++++++++++++++-------------- 3 files changed, 22 insertions(+), 21 deletions(-) diff --git a/doc/en/scripting/builtins/libmat4.md b/doc/en/scripting/builtins/libmat4.md index e652d2aa..0c4b437e 100644 --- a/doc/en/scripting/builtins/libmat4.md +++ b/doc/en/scripting/builtins/libmat4.md @@ -111,7 +111,7 @@ mat4.decompose(m: matrix) translation=vec3, skew=vec3, perspective=vec4 -} +} or nil ``` ## Look at point - *mat4.look_at(...)* diff --git a/doc/ru/scripting/builtins/libmat4.md b/doc/ru/scripting/builtins/libmat4.md index e30ca0b6..e6f3a3b1 100644 --- a/doc/ru/scripting/builtins/libmat4.md +++ b/doc/ru/scripting/builtins/libmat4.md @@ -111,7 +111,7 @@ mat4.decompose(m: matrix) translation=vec3, skew=vec3, perspective=vec4 -} +} или nil ``` ## Отслеживание точки *mat4.look_at(...)* diff --git a/src/logic/scripting/lua/libmat4.cpp b/src/logic/scripting/lua/libmat4.cpp index 8eaa3695..9ab0dde2 100644 --- a/src/logic/scripting/lua/libmat4.cpp +++ b/src/logic/scripting/lua/libmat4.cpp @@ -165,7 +165,7 @@ static int l_transpose(lua::State* L) { /// translation=float[3], /// skew=float[3], /// perspective=float[4] -/// } +/// } or nil static int l_decompose(lua::State* L) { auto matrix = lua::tomat4(L, 1); glm::vec3 scale; @@ -173,35 +173,36 @@ static int l_decompose(lua::State* L) { glm::vec3 translation; glm::vec3 skew; glm::vec4 perspective; - glm::decompose( + if (glm::decompose( matrix, scale, rotation, translation, skew, perspective - ); + )) { + lua::createtable(L, 0, 6); + + lua::pushvec3(L, scale); + lua::setfield(L, "scale"); - lua::createtable(L, 0, 6); - - lua::pushvec3(L, scale); - lua::setfield(L, "scale"); + lua::pushmat4(L, glm::toMat4(rotation)); + lua::setfield(L, "rotation"); - lua::pushmat4(L, glm::toMat4(rotation)); - lua::setfield(L, "rotation"); + lua::pushquat(L, rotation); + lua::setfield(L, "quaternion"); - lua::pushquat(L, rotation); - lua::setfield(L, "quaternion"); + lua::pushvec3(L, translation); + lua::setfield(L, "translation"); - lua::pushvec3(L, translation); - lua::setfield(L, "translation"); + lua::pushvec3(L, skew); + lua::setfield(L, "skew"); - lua::pushvec3(L, skew); - lua::setfield(L, "skew"); - - lua::pushvec4(L, perspective); - lua::setfield(L, "perspective"); - return 1; + lua::pushvec4(L, perspective); + lua::setfield(L, "perspective"); + return 1; + } + return 0; } static int l_look_at(lua::State* L) {