1
0
mirror of https://github.com/luanti-org/luanti.git synced 2025-10-12 08:05:18 +02:00

Drop content_sao.{cpp,h}

Move LuaEntitySAO to a new dedicated file
Drop TestSAO (useless object)
Drop the old static startup initialized SAO factory, which was pretty useless.
This factory was using a std::map for 2 elements, now just use a simple condition owned by ServerEnvironment, which will be lightweight, that will also drop a one time useful test on each LuaEntitySAO creation. This should reduce server load on massive SAO creation
This commit is contained in:
Loic Blot
2020-04-11 11:22:15 +02:00
committed by Loïc Blot
parent 894a34aef4
commit 5146086a64
25 changed files with 126 additions and 295 deletions

View File

@@ -1,4 +1,3 @@
/*
Minetest
Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
@@ -19,6 +18,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#pragma once
#include "constants.h"
#include "network/networkprotocol.h"
#include "unit_sao.h"
@@ -32,33 +33,31 @@ class LagPool
{
float m_pool = 15.0f;
float m_max = 15.0f;
public:
LagPool() = default;
void setMax(float new_max)
{
m_max = new_max;
if(m_pool > new_max)
if (m_pool > new_max)
m_pool = new_max;
}
void add(float dtime)
{
m_pool -= dtime;
if(m_pool < 0)
if (m_pool < 0)
m_pool = 0;
}
void empty()
{
m_pool = m_max;
}
void empty() { m_pool = m_max; }
bool grab(float dtime)
{
if(dtime <= 0)
if (dtime <= 0)
return true;
if(m_pool + dtime > m_max)
if (m_pool + dtime > m_max)
return false;
m_pool += dtime;
return true;
@@ -73,10 +72,8 @@ public:
PlayerSAO(ServerEnvironment *env_, RemotePlayer *player_, session_t peer_id_,
bool is_singleplayer);
ActiveObjectType getType() const
{ return ACTIVEOBJECT_TYPE_PLAYER; }
ActiveObjectType getSendType() const
{ return ACTIVEOBJECT_TYPE_GENERIC; }
ActiveObjectType getType() const { return ACTIVEOBJECT_TYPE_PLAYER; }
ActiveObjectType getSendType() const { return ACTIVEOBJECT_TYPE_GENERIC; }
std::string getDescription();
/*
@@ -111,10 +108,8 @@ public:
Interaction interface
*/
u16 punch(v3f dir,
const ToolCapabilities *toolcap,
ServerActiveObject *puncher,
float time_from_last_punch);
u16 punch(v3f dir, const ToolCapabilities *toolcap, ServerActiveObject *puncher,
float time_from_last_punch);
void rightClick(ServerActiveObject *clicker) {}
void setHP(s32 hp, const PlayerHPChangeReason &reason);
void setHPRaw(u16 hp) { m_hp = hp; }
@@ -144,10 +139,7 @@ public:
// Cheat prevention
v3f getLastGoodPosition() const
{
return m_last_good_position;
}
v3f getLastGoodPosition() const { return m_last_good_position; }
float resetTimeFromLastPunch()
{
float r = m_time_from_last_punch;
@@ -159,30 +151,17 @@ public:
m_nocheat_dig_pos = p;
m_nocheat_dig_time = 0;
}
v3s16 getNoCheatDigPos()
{
return m_nocheat_dig_pos;
}
float getNoCheatDigTime()
{
return m_nocheat_dig_time;
}
void noCheatDigEnd()
{
m_nocheat_dig_pos = v3s16(32767, 32767, 32767);
}
LagPool& getDigPool()
{
return m_dig_pool;
}
v3s16 getNoCheatDigPos() { return m_nocheat_dig_pos; }
float getNoCheatDigTime() { return m_nocheat_dig_time; }
void noCheatDigEnd() { m_nocheat_dig_pos = v3s16(32767, 32767, 32767); }
LagPool &getDigPool() { return m_dig_pool; }
void setMaxSpeedOverride(const v3f &vel);
// Returns true if cheated
bool checkMovementCheat();
// Other
void updatePrivileges(const std::set<std::string> &privs,
bool is_singleplayer)
void updatePrivileges(const std::set<std::string> &privs, bool is_singleplayer)
{
m_privs = privs;
m_is_singleplayer = is_singleplayer;
@@ -236,6 +215,7 @@ private:
s16 m_wanted_range = 0.0f;
Metadata m_meta;
public:
float m_physics_override_speed = 1.0f;
float m_physics_override_jump = 1.0f;
@@ -246,9 +226,10 @@ public:
bool m_physics_override_sent = false;
};
struct PlayerHPChangeReason {
enum Type : u8 {
struct PlayerHPChangeReason
{
enum Type : u8
{
SET_HP,
PLAYER_PUNCH,
FALL,
@@ -266,10 +247,7 @@ struct PlayerHPChangeReason {
// For NODE_DAMAGE
std::string node;
inline bool hasLuaReference() const
{
return lua_reference >= 0;
}
inline bool hasLuaReference() const { return lua_reference >= 0; }
bool setTypeFromString(const std::string &typestr)
{
@@ -311,15 +289,12 @@ struct PlayerHPChangeReason {
}
}
PlayerHPChangeReason(Type type):
type(type)
{}
PlayerHPChangeReason(Type type) : type(type) {}
PlayerHPChangeReason(Type type, ServerActiveObject *object):
PlayerHPChangeReason(Type type, ServerActiveObject *object) :
type(type), object(object)
{}
{
}
PlayerHPChangeReason(Type type, std::string node):
type(type), node(node)
{}
PlayerHPChangeReason(Type type, std::string node) : type(type), node(node) {}
};