mirror of
https://github.com/minetest/minetest.git
synced 2024-07-04 15:05:27 +02:00
Add ObjectRef:is_valid
method
This commit is contained in:
parent
0ad415c18d
commit
0810275640
@ -7815,6 +7815,10 @@ child will follow movement and rotation of that bone.
|
|||||||
|
|
||||||
### Methods
|
### Methods
|
||||||
|
|
||||||
|
* `is_valid()`: returns whether the object is valid.
|
||||||
|
Objects may be invalidated either through explicit removal,
|
||||||
|
or implicitly between server steps by the engine.
|
||||||
|
**The below methods should only be called for valid objects.**
|
||||||
* `get_pos()`: returns position as vector `{x=num, y=num, z=num}`
|
* `get_pos()`: returns position as vector `{x=num, y=num, z=num}`
|
||||||
* `set_pos(pos)`:
|
* `set_pos(pos)`:
|
||||||
* Sets the position of the object.
|
* Sets the position of the object.
|
||||||
|
@ -71,13 +71,13 @@ local function test_entity_lifecycle(_, pos)
|
|||||||
|
|
||||||
-- with binary in staticdata
|
-- with binary in staticdata
|
||||||
local obj = core.add_entity(pos, "unittests:callbacks", "abc\000def")
|
local obj = core.add_entity(pos, "unittests:callbacks", "abc\000def")
|
||||||
|
assert(obj:is_valid())
|
||||||
check_log({"on_activate(7)"})
|
check_log({"on_activate(7)"})
|
||||||
|
|
||||||
obj:set_hp(0)
|
obj:set_hp(0)
|
||||||
check_log({"on_death(nil)", "on_deactivate(true)"})
|
check_log({"on_death(nil)", "on_deactivate(true)"})
|
||||||
|
|
||||||
-- objectref must be invalid now
|
assert(not obj:is_valid())
|
||||||
assert(obj:get_velocity() == nil)
|
|
||||||
end
|
end
|
||||||
unittests.register("test_entity_lifecycle", test_entity_lifecycle, {map=true})
|
unittests.register("test_entity_lifecycle", test_entity_lifecycle, {map=true})
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
#include "lua_api/l_object.h"
|
#include "lua_api/l_object.h"
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
#include <lua.h>
|
||||||
#include "lua_api/l_internal.h"
|
#include "lua_api/l_internal.h"
|
||||||
#include "lua_api/l_inventory.h"
|
#include "lua_api/l_inventory.h"
|
||||||
#include "lua_api/l_item.h"
|
#include "lua_api/l_item.h"
|
||||||
@ -106,6 +107,13 @@ int ObjectRef::l_remove(lua_State *L)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// is_valid(self)
|
||||||
|
int ObjectRef::l_is_valid(lua_State *L)
|
||||||
|
{
|
||||||
|
lua_pushboolean(L, getobject(checkObject<ObjectRef>(L, 1)) != nullptr);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
// get_pos(self)
|
// get_pos(self)
|
||||||
int ObjectRef::l_get_pos(lua_State *L)
|
int ObjectRef::l_get_pos(lua_State *L)
|
||||||
{
|
{
|
||||||
@ -2646,6 +2654,7 @@ const char ObjectRef::className[] = "ObjectRef";
|
|||||||
luaL_Reg ObjectRef::methods[] = {
|
luaL_Reg ObjectRef::methods[] = {
|
||||||
// ServerActiveObject
|
// ServerActiveObject
|
||||||
luamethod(ObjectRef, remove),
|
luamethod(ObjectRef, remove),
|
||||||
|
luamethod(ObjectRef, is_valid),
|
||||||
luamethod_aliased(ObjectRef, get_pos, getpos),
|
luamethod_aliased(ObjectRef, get_pos, getpos),
|
||||||
luamethod_aliased(ObjectRef, set_pos, setpos),
|
luamethod_aliased(ObjectRef, set_pos, setpos),
|
||||||
luamethod(ObjectRef, add_pos),
|
luamethod(ObjectRef, add_pos),
|
||||||
|
@ -67,6 +67,9 @@ class ObjectRef : public ModApiBase {
|
|||||||
// remove(self)
|
// remove(self)
|
||||||
static int l_remove(lua_State *L);
|
static int l_remove(lua_State *L);
|
||||||
|
|
||||||
|
// is_valid(self)
|
||||||
|
static int l_is_valid(lua_State *L);
|
||||||
|
|
||||||
// get_pos(self)
|
// get_pos(self)
|
||||||
static int l_get_pos(lua_State *L);
|
static int l_get_pos(lua_State *L);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user