aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLoic Blot <loic.blot@unix-experience.fr>2018-03-08 22:19:25 +0100
committerLoïc Blot <nerzhul@users.noreply.github.com>2018-03-08 23:00:17 +0100
commitc7c03ad7a60b77040d0dfc360a79f065e0c2c971 (patch)
tree148e6617ced494a4f1cae085666bcd06eb14a1d3 /src
parentc7656edaa57a951f2496d454a42cdf899459b572 (diff)
downloadminetest-c7c03ad7a60b77040d0dfc360a79f065e0c2c971.tar.gz
minetest-c7c03ad7a60b77040d0dfc360a79f065e0c2c971.tar.bz2
minetest-c7c03ad7a60b77040d0dfc360a79f065e0c2c971.zip
Cleanup & bugfix
* ObjectRef::set_local_animation: fix wrong lua return (should push a boolean, currently returns nil) * ObjectRef::set_eye_offset: fix wrong lua return (should push a boolean, currently returns nil) * Fix various Server functions which depends on RemotePlayer objet and return true/false when player object is nil whereas it's a caller implementation error. Change those bool functions to void and add sanitize_check call instead. Current callers are always checking player object validity * Optimize Server::setClouds : use CloudParams object ref instead of attribute deserialization from structure & perform RemotePlayer::setCloudParams directly in server class like many other calls * Optimize Server::SendCloudParams: use CloudParams object ref instead of deserialized attributes
Diffstat (limited to 'src')
-rw-r--r--src/script/lua_api/l_object.cpp25
-rw-r--r--src/server.cpp50
-rw-r--r--src/server.h21
3 files changed, 25 insertions, 71 deletions
diff --git a/src/script/lua_api/l_object.cpp b/src/script/lua_api/l_object.cpp
index 03bd84d52..f72a81d32 100644
--- a/src/script/lua_api/l_object.cpp
+++ b/src/script/lua_api/l_object.cpp
@@ -493,11 +493,9 @@ int ObjectRef::l_set_local_animation(lua_State *L)
if (!lua_isnil(L, 6))
frame_speed = lua_tonumber(L, 6);
- if (!getServer(L)->setLocalPlayerAnimations(player, frames, frame_speed))
- return 0;
-
+ getServer(L)->setLocalPlayerAnimations(player, frames, frame_speed);
lua_pushboolean(L, true);
- return 0;
+ return 1;
}
// get_local_animation(self)
@@ -544,11 +542,9 @@ int ObjectRef::l_set_eye_offset(lua_State *L)
/* TODO: if possible: improve the camera colision detetion to allow Y <= -1.5) */
offset_third.Y = rangelim(offset_third.Y,-10,15); //1.5*BS
- if (!getServer(L)->setPlayerEyeOffset(player, offset_first, offset_third))
- return 0;
-
+ getServer(L)->setPlayerEyeOffset(player, offset_first, offset_third);
lua_pushboolean(L, true);
- return 0;
+ return 1;
}
// get_eye_offset(self)
@@ -1559,9 +1555,7 @@ int ObjectRef::l_set_sky(lua_State *L)
if (lua_isboolean(L, 5))
clouds = lua_toboolean(L, 5);
- if (!getServer(L)->setSky(player, bgcolor, type, params, clouds))
- return 0;
-
+ getServer(L)->setSky(player, bgcolor, type, params, clouds);
lua_pushboolean(L, true);
return 1;
}
@@ -1631,14 +1625,7 @@ int ObjectRef::l_set_clouds(lua_State *L)
}
lua_pop(L, 1);
- if (!getServer(L)->setClouds(player, cloud_params.density,
- cloud_params.color_bright, cloud_params.color_ambient,
- cloud_params.height, cloud_params.thickness,
- cloud_params.speed))
- return 0;
-
- player->setCloudParams(cloud_params);
-
+ getServer(L)->setClouds(player, cloud_params);
lua_pushboolean(L, true);
return 1;
}
diff --git a/src/server.cpp b/src/server.cpp
index 75547c60b..9e1db6c61 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -1775,17 +1775,11 @@ void Server::SendSetSky(session_t peer_id, const video::SColor &bgcolor,
Send(&pkt);
}
-void Server::SendCloudParams(session_t peer_id, float density,
- const video::SColor &color_bright,
- const video::SColor &color_ambient,
- float height,
- float thickness,
- const v2f &speed)
+void Server::SendCloudParams(session_t peer_id, const CloudParams &params)
{
NetworkPacket pkt(TOCLIENT_CLOUD_PARAMS, 0, peer_id);
- pkt << density << color_bright << color_ambient
- << height << thickness << speed;
-
+ pkt << params.density << params.color_bright << params.color_ambient
+ << params.height << params.thickness << params.speed;
Send(&pkt);
}
@@ -3113,54 +3107,36 @@ Address Server::getPeerAddress(session_t peer_id)
return m_con->GetPeerAddress(peer_id);
}
-bool Server::setLocalPlayerAnimations(RemotePlayer *player,
+void Server::setLocalPlayerAnimations(RemotePlayer *player,
v2s32 animation_frames[4], f32 frame_speed)
{
- if (!player)
- return false;
-
+ sanity_check(player);
player->setLocalAnimations(animation_frames, frame_speed);
SendLocalPlayerAnimations(player->getPeerId(), animation_frames, frame_speed);
- return true;
}
-bool Server::setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third)
+void Server::setPlayerEyeOffset(RemotePlayer *player, const v3f &first, const v3f &third)
{
- if (!player)
- return false;
-
+ sanity_check(player);
player->eye_offset_first = first;
player->eye_offset_third = third;
SendEyeOffset(player->getPeerId(), first, third);
- return true;
}
-bool Server::setSky(RemotePlayer *player, const video::SColor &bgcolor,
+void Server::setSky(RemotePlayer *player, const video::SColor &bgcolor,
const std::string &type, const std::vector<std::string> &params,
bool &clouds)
{
- if (!player)
- return false;
-
+ sanity_check(player);
player->setSky(bgcolor, type, params, clouds);
SendSetSky(player->getPeerId(), bgcolor, type, params, clouds);
- return true;
}
-bool Server::setClouds(RemotePlayer *player, float density,
- const video::SColor &color_bright,
- const video::SColor &color_ambient,
- float height,
- float thickness,
- const v2f &speed)
+void Server::setClouds(RemotePlayer *player, const CloudParams &params)
{
- if (!player)
- return false;
-
- SendCloudParams(player->getPeerId(), density,
- color_bright, color_ambient, height,
- thickness, speed);
- return true;
+ sanity_check(player);
+ player->setCloudParams(params);
+ SendCloudParams(player->getPeerId(), params);
}
bool Server::overrideDayNightRatio(RemotePlayer *player, bool do_override,
diff --git a/src/server.h b/src/server.h
index 3b9b72021..8d5cd6da4 100644
--- a/src/server.h
+++ b/src/server.h
@@ -59,6 +59,7 @@ class EmergeManager;
class ServerScripting;
class ServerEnvironment;
struct SimpleSoundSpec;
+struct CloudParams;
class ServerThread;
enum ClientDeletionReason {
@@ -295,19 +296,14 @@ public:
Address getPeerAddress(session_t peer_id);
- bool setLocalPlayerAnimations(RemotePlayer *player, v2s32 animation_frames[4],
+ void setLocalPlayerAnimations(RemotePlayer *player, v2s32 animation_frames[4],
f32 frame_speed);
- bool setPlayerEyeOffset(RemotePlayer *player, v3f first, v3f third);
+ void setPlayerEyeOffset(RemotePlayer *player, const v3f &first, const v3f &third);
- bool setSky(RemotePlayer *player, const video::SColor &bgcolor,
+ void setSky(RemotePlayer *player, const video::SColor &bgcolor,
const std::string &type, const std::vector<std::string> &params,
bool &clouds);
- bool setClouds(RemotePlayer *player, float density,
- const video::SColor &color_bright,
- const video::SColor &color_ambient,
- float height,
- float thickness,
- const v2f &speed);
+ void setClouds(RemotePlayer *player, const CloudParams &params);
bool overrideDayNightRatio(RemotePlayer *player, bool do_override, float brightness);
@@ -389,12 +385,7 @@ private:
void SendSetSky(session_t peer_id, const video::SColor &bgcolor,
const std::string &type, const std::vector<std::string> &params,
bool &clouds);
- void SendCloudParams(session_t peer_id, float density,
- const video::SColor &color_bright,
- const video::SColor &color_ambient,
- float height,
- float thickness,
- const v2f &speed);
+ void SendCloudParams(session_t peer_id, const CloudParams &params);
void SendOverrideDayNightRatio(session_t peer_id, bool do_override, float ratio);
void broadcastModChannelMessage(const std::string &channel,
const std::string &message, session_t from_peer);