Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
luaentity_sao.h
Go to the documentation of this file.
1/*
2Minetest
3Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4Copyright (C) 2013-2020 Minetest core developers & community
5
6This program is free software; you can redistribute it and/or modify
7it under the terms of the GNU Lesser General Public License as published by
8the Free Software Foundation; either version 2.1 of the License, or
9(at your option) any later version.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU Lesser General Public License for more details.
15
16You should have received a copy of the GNU Lesser General Public License along
17with this program; if not, write to the Free Software Foundation, Inc.,
1851 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
19*/
20
21#pragma once
22
23#include "unit_sao.h"
24
25class LuaEntitySAO : public UnitSAO
26{
27public:
28 LuaEntitySAO() = delete;
29 // Used by the environment to load SAO
30 LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &data);
31 // Used by the Lua API
32 LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &name,
33 const std::string &state) :
34 UnitSAO(env, pos),
35 m_init_name(name), m_init_state(state)
36 {
37 }
39
42 virtual void addedToEnvironment(u32 dtime_s);
43 void step(float dtime, bool send_recommended);
44 std::string getClientInitializationData(u16 protocol_version);
45
46 bool isStaticAllowed() const { return m_prop.static_save; }
47 bool shouldUnload() const { return true; }
48 void getStaticData(std::string *result) const;
49
50 u32 punch(v3f dir, const ToolCapabilities *toolcap = nullptr,
51 ServerActiveObject *puncher = nullptr,
52 float time_from_last_punch = 1000000.0f,
53 u16 initial_wear = 0);
54
55 void rightClick(ServerActiveObject *clicker);
56
57 void setPos(const v3f &pos);
58 void moveTo(v3f pos, bool continuous);
60
61 std::string getDescription();
62
63 void setHP(s32 hp, const PlayerHPChangeReason &reason);
64 u16 getHP() const;
65
66 /* LuaEntitySAO-specific */
67 void setVelocity(v3f velocity);
68 void addVelocity(v3f velocity) { m_velocity += velocity; }
70 void setAcceleration(v3f acceleration);
72
73 void setTextureMod(const std::string &mod);
74 std::string getTextureMod() const;
75 void setSprite(v2s16 p, int num_frames, float framelength,
76 bool select_horiz_by_yawpitch);
77 std::string getName();
78 bool getCollisionBox(aabb3f *toset) const;
79 bool getSelectionBox(aabb3f *toset) const;
80 bool collideWithObjects() const;
81
82protected:
83 void dispatchScriptDeactivate(bool removal);
86
87private:
88 std::string getPropertyPacket();
89 void sendPosition(bool do_interpolate, bool is_movement_end);
90 std::string generateSetTextureModCommand() const;
91 static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames,
92 f32 framelength, bool select_horiz_by_yawpitch);
93
94 std::string m_init_name;
95 std::string m_init_state;
96 bool m_registered = false;
97
100
106
109};
ActiveObjectType
Definition: activeobject.h:29
@ ACTIVEOBJECT_TYPE_GENERIC
Definition: activeobject.h:43
@ ACTIVEOBJECT_TYPE_LUAENTITY
Definition: activeobject.h:39
static v2f dir(const v2f &pos_dist)
Definition: camera.cpp:204
Definition: luaentity_sao.h:26
v3f m_last_sent_rotation
Definition: luaentity_sao.h:103
std::string m_init_state
Definition: luaentity_sao.h:95
void setSprite(v2s16 p, int num_frames, float framelength, bool select_horiz_by_yawpitch)
Definition: luaentity_sao.cpp:492
v3f m_acceleration
Definition: luaentity_sao.h:99
void dispatchScriptDeactivate(bool removal)
Definition: luaentity_sao.cpp:126
std::string getName()
Definition: luaentity_sao.cpp:505
void setPos(const v3f &pos)
Definition: luaentity_sao.cpp:380
u32 punch(v3f dir, const ToolCapabilities *toolcap=nullptr, ServerActiveObject *puncher=nullptr, float time_from_last_punch=1000000.0f, u16 initial_wear=0)
Definition: luaentity_sao.cpp:323
std::string generateSetTextureModCommand() const
Definition: luaentity_sao.cpp:468
static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames, f32 framelength, bool select_horiz_by_yawpitch)
Definition: luaentity_sao.cpp:478
std::string getClientInitializationData(u16 protocol_version)
Definition: luaentity_sao.cpp:246
v3f m_velocity
Definition: luaentity_sao.h:98
void setAcceleration(v3f acceleration)
Definition: luaentity_sao.cpp:445
float getMinimumSavedMovement()
Definition: luaentity_sao.cpp:397
v3f m_last_sent_position
Definition: luaentity_sao.h:101
std::string getDescription()
Definition: luaentity_sao.cpp:402
bool collideWithObjects() const
Definition: luaentity_sao.cpp:576
v3f m_last_sent_velocity
Definition: luaentity_sao.h:102
LuaEntitySAO()=delete
float m_last_sent_position_timer
Definition: luaentity_sao.h:104
bool shouldUnload() const
Definition: luaentity_sao.h:47
virtual void onMarkedForRemoval()
Definition: luaentity_sao.h:85
~LuaEntitySAO()
Definition: luaentity_sao.cpp:88
void sendPosition(bool do_interpolate, bool is_movement_end)
Definition: luaentity_sao.cpp:515
ActiveObjectType getSendType() const
Definition: luaentity_sao.h:41
void getStaticData(std::string *result) const
Definition: luaentity_sao.cpp:290
bool isStaticAllowed() const
Definition: luaentity_sao.h:46
std::string getTextureMod() const
Definition: luaentity_sao.cpp:463
std::string m_init_name
Definition: luaentity_sao.h:94
bool getCollisionBox(aabb3f *toset) const
Definition: luaentity_sao.cpp:547
void moveTo(v3f pos, bool continuous)
Definition: luaentity_sao.cpp:388
bool m_registered
Definition: luaentity_sao.h:96
void setTextureMod(const std::string &mod)
Definition: luaentity_sao.cpp:455
bool m_texture_modifier_sent
Definition: luaentity_sao.h:108
void setHP(s32 hp, const PlayerHPChangeReason &reason)
Definition: luaentity_sao.cpp:411
std::string getPropertyPacket()
Definition: luaentity_sao.cpp:510
v3f getVelocity()
Definition: luaentity_sao.cpp:440
bool getSelectionBox(aabb3f *toset) const
Definition: luaentity_sao.cpp:564
std::string m_texture_modifier
Definition: luaentity_sao.h:107
LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &name, const std::string &state)
Definition: luaentity_sao.h:32
void setVelocity(v3f velocity)
Definition: luaentity_sao.cpp:435
void step(float dtime, bool send_recommended)
Definition: luaentity_sao.cpp:135
ActiveObjectType getType() const
Definition: luaentity_sao.h:40
virtual void onMarkedForDeactivation()
Definition: luaentity_sao.h:84
float m_last_sent_move_precision
Definition: luaentity_sao.h:105
virtual void addedToEnvironment(u32 dtime_s)
Definition: luaentity_sao.cpp:99
void addVelocity(v3f velocity)
Definition: luaentity_sao.h:68
u16 getHP() const
Definition: luaentity_sao.cpp:430
void rightClick(ServerActiveObject *clicker)
Definition: luaentity_sao.cpp:372
v3f getAcceleration()
Definition: luaentity_sao.cpp:450
Definition: serveractiveobject.h:55
Definition: serverenvironment.h:220
Definition: unit_sao.h:29
ObjectProperties m_prop
Definition: unit_sao.h:119
core::aabbox3d< f32 > aabb3f
Definition: irr_aabb3d.h:26
core::vector2d< s16 > v2s16
Definition: irr_v2d.h:27
core::vector3df v3f
Definition: irr_v3d.h:26
bool static_save
Definition: object_properties.h:71
Definition: player_sao.h:235
Definition: tool.h:61
static std::string p(std::string path)
Definition: test_filesys.cpp:64