Player: New get_look, set_look API
authorraymoo <uguu@installgentoo.com>
Fri, 17 Jun 2016 19:57:27 +0000 (12:57 -0700)
committerparamat <mat.gregory@virginmedia.com>
Fri, 24 Jun 2016 01:13:09 +0000 (02:13 +0100)
Deprecate get_look / set_look pitch / yaw

doc/lua_api.txt
src/player.h
src/script/lua_api/l_object.cpp
src/script/lua_api/l_object.h

index ed8f8504e9a7d3a98a0badea67e2115912aa81e1..6d359379e6842b3b1fc9e5672037d2d24497ade4 100644 (file)
@@ -2679,10 +2679,20 @@ This is basically a reference to a C++ `ServerActiveObject`
 * `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_pitch()`: pitch in radians
-* `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
+* `get_look_vertical()`: pitch in radians
+     * Angle ranges between -pi/2 and pi/2, which are straight up and down respectively.
+* `get_look_horizontal()`: yaw in radians
+     * Angle is counter-clockwise from the +z direction.
+* `set_look_vertical(radians)`: sets look pitch
+     * radians - Angle from looking forward, where positive is downwards.
+* `set_look_horizontal(radians)`: sets look yaw
+     * radians - Angle from the +z direction, where positive is counter-clockwise.
+* `get_look_pitch()`: pitch in radians - Deprecated as broken. Use get_look_vertical.
+     * Angle ranges between -pi/2 and pi/2, which are straight down and up respectively.
+* `get_look_yaw()`: yaw in radians - Deprecated as broken. Use get_look_horizontal.
+     * Angle is counter-clockwise from the +x direction.
+* `set_look_pitch(radians)`: sets look pitch - Deprecated. Use set_look_vertical.
+* `set_look_yaw(radians)`: sets look yaw - Deprecated. Use set_look_horizontal.
 * `get_breath()`: returns players breath
 * `set_breath(value)`: sets players breath
      * values:
index 6687ca86e6ac57a8d00210b40fce3ed35ded6ae2..e6fcf388acc0da0acdc35ba75fa5adf3b969c0c7 100644 (file)
@@ -188,16 +188,28 @@ public:
                m_breath = breath;
        }
 
-       f32 getRadPitch()
+       // Deprecated
+       f32 getRadPitchDep()
        {
                return -1.0 * m_pitch * core::DEGTORAD;
        }
 
-       f32 getRadYaw()
+       // Deprecated
+       f32 getRadYawDep()
        {
                return (m_yaw + 90.) * core::DEGTORAD;
        }
 
+       f32 getRadPitch()
+       {
+               return m_pitch * core::DEGTORAD;
+       }
+
+       f32 getRadYaw()
+       {
+               return m_yaw * core::DEGTORAD;
+       }
+
        const char *getName() const
        {
                return m_name;
index 6d6614e7da9e3a36d3518c5eddf275d4db3524c0..befae42539e0d7ffc00fcd9e2f2df3605eb0f521 100644 (file)
@@ -1016,27 +1016,61 @@ int ObjectRef::l_get_look_dir(lua_State *L)
        Player *player = getplayer(ref);
        if (player == NULL) return 0;
        // Do it
-       float pitch = player->getRadPitch();
-       float yaw = player->getRadYaw();
+       float pitch = player->getRadPitchDep();
+       float yaw = player->getRadYawDep();
        v3f v(cos(pitch)*cos(yaw), sin(pitch), cos(pitch)*sin(yaw));
        push_v3f(L, v);
        return 1;
 }
 
+// DEPRECATED
 // get_look_pitch(self)
 int ObjectRef::l_get_look_pitch(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
+
+       log_deprecated(L,
+               "Deprecated call to get_look_pitch, use get_look_vertical instead");
+
        ObjectRef *ref = checkobject(L, 1);
        Player *player = getplayer(ref);
        if (player == NULL) return 0;
        // Do it
-       lua_pushnumber(L, player->getRadPitch());
+       lua_pushnumber(L, player->getRadPitchDep());
        return 1;
 }
 
+// DEPRECATED
 // get_look_yaw(self)
 int ObjectRef::l_get_look_yaw(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+
+       log_deprecated(L,
+               "Deprecated call to get_look_yaw, use get_look_horizontal instead");
+
+       ObjectRef *ref = checkobject(L, 1);
+       Player *player = getplayer(ref);
+       if (player == NULL) return 0;
+       // Do it
+       lua_pushnumber(L, player->getRadYawDep());
+       return 1;
+}
+
+// get_look_pitch2(self)
+int ObjectRef::l_get_look_vertical(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+       ObjectRef *ref = checkobject(L, 1);
+       Player *player = getplayer(ref);
+       if (player == NULL) return 0;
+       // Do it
+       lua_pushnumber(L, player->getRadPitch());
+       return 1;
+}
+
+// get_look_yaw2(self)
+int ObjectRef::l_get_look_horizontal(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
        ObjectRef *ref = checkobject(L, 1);
@@ -1047,10 +1081,41 @@ int ObjectRef::l_get_look_yaw(lua_State *L)
        return 1;
 }
 
+// set_look_vertical(self, radians)
+int ObjectRef::l_set_look_vertical(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+       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_horizontal(self, radians)
+int ObjectRef::l_set_look_horizontal(lua_State *L)
+{
+       NO_MAP_LOCK_REQUIRED;
+       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;
+}
+
+// DEPRECATED
 // set_look_pitch(self, radians)
 int ObjectRef::l_set_look_pitch(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
+
+       log_deprecated(L,
+               "Deprecated call to set_look_pitch, use set_look_vertical instead.");
+
        ObjectRef *ref = checkobject(L, 1);
        PlayerSAO* co = getplayersao(ref);
        if (co == NULL) return 0;
@@ -1060,10 +1125,15 @@ int ObjectRef::l_set_look_pitch(lua_State *L)
        return 1;
 }
 
+// DEPRECATED
 // set_look_yaw(self, radians)
 int ObjectRef::l_set_look_yaw(lua_State *L)
 {
        NO_MAP_LOCK_REQUIRED;
+
+       log_deprecated(L,
+               "Deprecated call to set_look_yaw, use set_look_horizontal instead.");
+
        ObjectRef *ref = checkobject(L, 1);
        PlayerSAO* co = getplayersao(ref);
        if (co == NULL) return 0;
@@ -1754,6 +1824,10 @@ const luaL_reg ObjectRef::methods[] = {
        luamethod(ObjectRef, get_look_dir),
        luamethod(ObjectRef, get_look_pitch),
        luamethod(ObjectRef, get_look_yaw),
+       luamethod(ObjectRef, get_look_vertical),
+       luamethod(ObjectRef, get_look_horizontal),
+       luamethod(ObjectRef, set_look_horizontal),
+       luamethod(ObjectRef, set_look_vertical),
        luamethod(ObjectRef, set_look_yaw),
        luamethod(ObjectRef, set_look_pitch),
        luamethod(ObjectRef, get_breath),
index a4457cc051e5c81ca54989914323422c7ce9f1b7..a37d29535accfeccfc0abaec09de55df784a0a24 100644 (file)
@@ -189,15 +189,31 @@ private:
        // get_look_dir(self)
        static int l_get_look_dir(lua_State *L);
 
+       // DEPRECATED
        // get_look_pitch(self)
        static int l_get_look_pitch(lua_State *L);
 
+       // DEPRECATED
        // get_look_yaw(self)
        static int l_get_look_yaw(lua_State *L);
 
+       // get_look_pitch2(self)
+       static int l_get_look_vertical(lua_State *L);
+
+       // get_look_yaw2(self)
+       static int l_get_look_horizontal(lua_State *L);
+
+       // set_look_vertical(self, radians)
+       static int l_set_look_vertical(lua_State *L);
+
+       // set_look_horizontal(self, radians)
+       static int l_set_look_horizontal(lua_State *L);
+
+       // DEPRECATED
        // set_look_pitch(self, radians)
        static int l_set_look_pitch(lua_State *L);
 
+       // DEPRECATED
        // set_look_yaw(self, radians)
        static int l_set_look_yaw(lua_State *L);