From 8b38d5796685fe356f230114d964ab7b59a4044b Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 22 Sep 2025 23:52:50 +0300 Subject: [PATCH] fix body:set_gravity_scale & fix docs --- doc/en/scripting/ecs.md | 4 ++-- doc/ru/scripting/ecs.md | 4 ++-- res/scripts/components/mob.lua | 2 +- src/logic/scripting/lua/libs/lib__rigidbody.cpp | 7 ++++++- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/doc/en/scripting/ecs.md b/doc/en/scripting/ecs.md index e72723af..7da294c2 100644 --- a/doc/en/scripting/ecs.md +++ b/doc/en/scripting/ecs.md @@ -86,9 +86,9 @@ body:get_size() -> vec3 body:set_size(size: vec3) -- Returns the gravity multiplier -body:get_gravity_scale() -> vec3 +body:get_gravity_scale() -> number -- Sets the gravity multiplier -body:set_gravity_scale(scale: vec3) +body:set_gravity_scale(scale: number) -- Returns the linear velocity attenuation multiplier (used to simulate air resistance and friction) body:get_linear_damping() -> number diff --git a/doc/ru/scripting/ecs.md b/doc/ru/scripting/ecs.md index ea217b00..6c1b041d 100644 --- a/doc/ru/scripting/ecs.md +++ b/doc/ru/scripting/ecs.md @@ -86,9 +86,9 @@ body:get_size() -> vec3 body:set_size(size: vec3) -- Возвращает множитель гравитации -body:get_gravity_scale() -> vec3 +body:get_gravity_scale() -> number -- Устанавливает множитель гравитации -body:set_gravity_scale(scale: vec3) +body:set_gravity_scale(scale: number) -- Возвращает множитель затухания линейной скорости (используется для имитации сопротивления воздуха и трения) body:get_linear_damping() -> number diff --git a/res/scripts/components/mob.lua b/res/scripts/components/mob.lua index f81658a9..91ddf026 100644 --- a/res/scripts/components/mob.lua +++ b/res/scripts/components/mob.lua @@ -159,7 +159,7 @@ local prev_angle = (vec2.angle({dir[3], dir[1]})) % 360 function on_physics_update(delta) local grounded = body:is_grounded() body:set_vdamping(flight) - body:set_gravity_scale({0, flight and 0.0 or props.gravity_scale, 0}) + body:set_gravity_scale(flight and 0.0 or props.gravity_scale) body:set_linear_damping( (flight or not grounded) and props.air_damping or props.ground_damping ) diff --git a/src/logic/scripting/lua/libs/lib__rigidbody.cpp b/src/logic/scripting/lua/libs/lib__rigidbody.cpp index 71b6987b..726b7193 100644 --- a/src/logic/scripting/lua/libs/lib__rigidbody.cpp +++ b/src/logic/scripting/lua/libs/lib__rigidbody.cpp @@ -54,7 +54,12 @@ static int l_get_gravity_scale(lua::State* L) { static int l_set_gravity_scale(lua::State* L) { if (auto entity = get_entity(L, 1)) { - entity->getRigidbody().hitbox.gravityScale = lua::tovec3(L, 2).y; + auto& hitbox = entity->getRigidbody().hitbox; + if (lua::istable(L, 2)) { + hitbox.gravityScale = lua::tovec3(L, 2).y; + } else { + hitbox.gravityScale = lua::tonumber(L, 2); + } } return 0; }