lua methods set_look_pitch and set_look_yaw

master
RealBadAngel 2013-03-17 12:16:57 +01:00 committed by kwolekr
parent c00c8832c6
commit 7f51b2da28
5 changed files with 51 additions and 2 deletions

View File

@ -1228,6 +1228,8 @@ Player-only: (no-op for other objects)
- 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)
- set_look_pitch(radians): sets look pitch
- set_look_yaw(radians): sets look yaw
- set_inventory_formspec(formspec) - set_inventory_formspec(formspec)
^ Redefine player's inventory form ^ Redefine player's inventory form
^ Should usually be called in on_joinplayer ^ Should usually be called in on_joinplayer

View File

@ -1230,6 +1230,20 @@ void PlayerSAO::moveTo(v3f pos, bool continuous)
m_moved = true; m_moved = true;
} }
void PlayerSAO::setYaw(float yaw)
{
m_player->setYaw(yaw);
// Force change on client
m_moved = true;
}
void PlayerSAO::setPitch(float pitch)
{
m_player->setPitch(pitch);
// Force change on client
m_moved = true;
}
int PlayerSAO::punch(v3f dir, int PlayerSAO::punch(v3f dir,
const ToolCapabilities *toolcap, const ToolCapabilities *toolcap,
ServerActiveObject *puncher, ServerActiveObject *puncher,

View File

@ -147,6 +147,8 @@ public:
void setBasePosition(const v3f &position); void setBasePosition(const v3f &position);
void setPos(v3f pos); void setPos(v3f pos);
void moveTo(v3f pos, bool continuous); void moveTo(v3f pos, bool continuous);
void setYaw(float);
void setPitch(float);
/* /*
Interaction interface Interaction interface

View File

@ -27,7 +27,6 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "scriptapi_entity.h" #include "scriptapi_entity.h"
#include "scriptapi_common.h" #include "scriptapi_common.h"
/* /*
ObjectRef ObjectRef
*/ */
@ -582,6 +581,30 @@ int ObjectRef::l_get_look_yaw(lua_State *L)
return 1; return 1;
} }
// set_look_pitch(self, radians)
int ObjectRef::l_set_look_pitch(lua_State *L)
{
ObjectRef *ref = checkobject(L, 1);
PlayerSAO* co = getplayersao(ref);
if(co == NULL) return 0;
float pitch = luaL_checknumber(L, 2) * core::RADTODEG;
// Do it
co->setPitch(pitch);
return 1;
}
// set_look_yaw(self, radians)
int ObjectRef::l_set_look_yaw(lua_State *L)
{
ObjectRef *ref = checkobject(L, 1);
PlayerSAO* co = getplayersao(ref);
if(co == NULL) return 0;
float yaw = luaL_checknumber(L, 2) * core::RADTODEG;
// Do it
co->setYaw(yaw);
return 1;
}
// set_inventory_formspec(self, formspec) // set_inventory_formspec(self, formspec)
int ObjectRef::l_set_inventory_formspec(lua_State *L) int ObjectRef::l_set_inventory_formspec(lua_State *L)
{ {
@ -755,6 +778,8 @@ const luaL_reg ObjectRef::methods[] = {
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),
luamethod(ObjectRef, set_look_yaw),
luamethod(ObjectRef, set_look_pitch),
luamethod(ObjectRef, set_inventory_formspec), luamethod(ObjectRef, set_inventory_formspec),
luamethod(ObjectRef, get_inventory_formspec), luamethod(ObjectRef, get_inventory_formspec),
luamethod(ObjectRef, get_player_control), luamethod(ObjectRef, get_player_control),

View File

@ -1,5 +1,5 @@
/* /*
Minetest-c55 Minetest
Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com> Copyright (C) 2013 celeron55, Perttu Ahola <celeron55@gmail.com>
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
@ -169,6 +169,12 @@ private:
// get_look_yaw(self) // get_look_yaw(self)
static int l_get_look_yaw(lua_State *L); static int l_get_look_yaw(lua_State *L);
// set_look_pitch(self, radians)
static int l_set_look_pitch(lua_State *L);
// set_look_yaw(self, radians)
static int l_set_look_yaw(lua_State *L);
// set_inventory_formspec(self, formspec) // set_inventory_formspec(self, formspec)
static int l_set_inventory_formspec(lua_State *L); static int l_set_inventory_formspec(lua_State *L);