mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Help modders deal with object invalidation (#14769)
* Skip invalid objects in raycasts * Add `ObjectRef:is_valid` method * Add object inside radius / area iterators which skip invalid objects * Update docs to clarify object invalidation and how to deal with it --------- Co-authored-by: sfan5 <sfan5@live.de>
This commit is contained in:
parent
d5444e1172
commit
8ed55b3aff
6 changed files with 134 additions and 12 deletions
|
@ -19,6 +19,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||
|
||||
#include "lua_api/l_object.h"
|
||||
#include <cmath>
|
||||
#include <lua.h>
|
||||
#include "lua_api/l_internal.h"
|
||||
#include "lua_api/l_inventory.h"
|
||||
#include "lua_api/l_item.h"
|
||||
|
@ -106,6 +107,13 @@ int ObjectRef::l_remove(lua_State *L)
|
|||
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)
|
||||
int ObjectRef::l_get_pos(lua_State *L)
|
||||
{
|
||||
|
@ -2646,6 +2654,7 @@ const char ObjectRef::className[] = "ObjectRef";
|
|||
luaL_Reg ObjectRef::methods[] = {
|
||||
// ServerActiveObject
|
||||
luamethod(ObjectRef, remove),
|
||||
luamethod(ObjectRef, is_valid),
|
||||
luamethod_aliased(ObjectRef, get_pos, getpos),
|
||||
luamethod_aliased(ObjectRef, set_pos, setpos),
|
||||
luamethod(ObjectRef, add_pos),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue