Added get_player_velocity() method. Fixes #1176

This commit is contained in:
Elia Argentieri 2015-06-25 14:57:10 +02:00 committed by est31
parent 7bbb9b066a
commit 5ebb4237e2
3 changed files with 92 additions and 72 deletions

@ -2470,6 +2470,7 @@ This is basically a reference to a C++ `ServerActiveObject`
##### Player-only (no-op for other objects) ##### Player-only (no-op for other objects)
* `get_player_name()`: returns `""` if is not a player * `get_player_name()`: returns `""` if is not a player
* `get_player_velocity()`: returns `nil` if is not a player otherwise a table {x, y, z} representing the player's instantaneous velocity in nodes/s
* `get_look_dir()`: get camera direction as a unit vector * `get_look_dir()`: get camera direction as a unit vector
* `get_look_pitch()`: pitch in radians * `get_look_pitch()`: pitch in radians
* `get_look_yaw()`: yaw in radians (wraps around pretty randomly as of now) * `get_look_yaw()`: yaw in radians (wraps around pretty randomly as of now)

@ -945,6 +945,21 @@ int ObjectRef::l_get_player_name(lua_State *L)
return 1; return 1;
} }
// get_player_velocity(self)
int ObjectRef::l_get_player_velocity(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;
ObjectRef *ref = checkobject(L, 1);
Player *player = getplayer(ref);
if (player == NULL) {
lua_pushnil(L);
return 1;
}
// Do it
push_v3f(L, player->getSpeed() / BS);
return 1;
}
// get_look_dir(self) // get_look_dir(self)
int ObjectRef::l_get_look_dir(lua_State *L) int ObjectRef::l_get_look_dir(lua_State *L)
{ {
@ -1706,6 +1721,7 @@ const luaL_reg ObjectRef::methods[] = {
luamethod(ObjectRef, is_player), luamethod(ObjectRef, is_player),
luamethod(ObjectRef, is_player_connected), luamethod(ObjectRef, is_player_connected),
luamethod(ObjectRef, get_player_name), luamethod(ObjectRef, get_player_name),
luamethod(ObjectRef, get_player_velocity),
luamethod(ObjectRef, get_look_dir), luamethod(ObjectRef, get_look_dir),
luamethod(ObjectRef, get_look_pitch), luamethod(ObjectRef, get_look_pitch),
luamethod(ObjectRef, get_look_yaw), luamethod(ObjectRef, get_look_yaw),

@ -183,6 +183,9 @@ private:
// get_player_name(self) // get_player_name(self)
static int l_get_player_name(lua_State *L); static int l_get_player_name(lua_State *L);
// get_player_velocity(self)
static int l_get_player_velocity(lua_State *L);
// get_look_dir(self) // get_look_dir(self)
static int l_get_look_dir(lua_State *L); static int l_get_look_dir(lua_State *L);