Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
luaentity_sao.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2010-2013 celeron55, Perttu Ahola <celeron55@gmail.com>
4// Copyright (C) 2013-2020 Minetest core developers & community
5
6#pragma once
7
8#include "unit_sao.h"
9#include "util/guid.h"
10
11class LuaEntitySAO : public UnitSAO
12{
13public:
14 LuaEntitySAO() = delete;
15 // Used by the environment to load SAO
16 LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &data);
17 // Used by the Lua API
18 LuaEntitySAO(ServerEnvironment *env, v3f pos, const std::string &name,
19 const std::string &state);
21
24 virtual void addedToEnvironment(u32 dtime_s);
25 void step(float dtime, bool send_recommended);
26 std::string getClientInitializationData(u16 protocol_version);
27
28 bool isStaticAllowed() const { return m_prop.static_save; }
29 bool shouldUnload() const { return true; }
30 void getStaticData(std::string *result) const;
31
32 u32 punch(v3f dir, const ToolCapabilities &toolcap,
33 ServerActiveObject *puncher = nullptr,
34 float time_from_last_punch = 1000000.0f,
35 u16 initial_wear = 0);
36
37 void rightClick(ServerActiveObject *clicker);
38
39 void setPos(const v3f &pos);
40 void moveTo(v3f pos, bool continuous);
42
43 std::string getDescription();
44
45 void setHP(s32 hp, const PlayerHPChangeReason &reason);
46 u16 getHP() const;
47 std::string getGUID() const;
48
49 /* LuaEntitySAO-specific */
50 void setVelocity(v3f velocity);
51 void addVelocity(v3f velocity) { m_velocity += velocity; }
53 void setAcceleration(v3f acceleration);
55
56 void setTextureMod(const std::string &mod);
57 std::string getTextureMod() const;
58 void setSprite(v2s16 p, int num_frames, float framelength,
59 bool select_horiz_by_yawpitch);
60 std::string getName();
61 bool getCollisionBox(aabb3f *toset) const;
62 bool getSelectionBox(aabb3f *toset) const;
63 bool collideWithObjects() const;
64
65protected:
66 void dispatchScriptDeactivate(bool removal);
75
76private:
77 std::string getPropertyPacket();
78 void sendPosition(bool do_interpolate, bool is_movement_end);
79 std::string generateSetTextureModCommand() const;
80 static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames,
81 f32 framelength, bool select_horiz_by_yawpitch);
82
83 std::string m_init_name;
84 std::string m_init_state;
85 bool m_registered = false;
86
88
91
97
98 std::string m_texture_modifier;
100};
ActiveObjectType
Definition activeobject.h:14
@ ACTIVEOBJECT_TYPE_GENERIC
Definition activeobject.h:28
@ ACTIVEOBJECT_TYPE_LUAENTITY
Definition activeobject.h:24
static v2f dir(const v2f &pos_dist)
Definition camera.cpp:207
Definition luaentity_sao.h:12
v3f m_last_sent_rotation
Definition luaentity_sao.h:94
std::string m_init_state
Definition luaentity_sao.h:84
void setSprite(v2s16 p, int num_frames, float framelength, bool select_horiz_by_yawpitch)
Definition luaentity_sao.cpp:499
v3f m_acceleration
Definition luaentity_sao.h:90
void dispatchScriptDeactivate(bool removal)
Definition luaentity_sao.cpp:127
std::string getName()
Definition luaentity_sao.cpp:512
void setPos(const v3f &pos)
Definition luaentity_sao.cpp:382
std::string generateSetTextureModCommand() const
Definition luaentity_sao.cpp:475
static std::string generateSetSpriteCommand(v2s16 p, u16 num_frames, f32 framelength, bool select_horiz_by_yawpitch)
Definition luaentity_sao.cpp:485
std::string getClientInitializationData(u16 protocol_version)
Definition luaentity_sao.cpp:246
v3f m_velocity
Definition luaentity_sao.h:89
void setAcceleration(v3f acceleration)
Definition luaentity_sao.cpp:452
float getMinimumSavedMovement()
Definition luaentity_sao.cpp:399
v3f m_last_sent_position
Definition luaentity_sao.h:92
std::string getDescription()
Definition luaentity_sao.cpp:404
bool collideWithObjects() const
Definition luaentity_sao.cpp:583
v3f m_last_sent_velocity
Definition luaentity_sao.h:93
LuaEntitySAO()=delete
float m_last_sent_position_timer
Definition luaentity_sao.h:95
bool shouldUnload() const
Definition luaentity_sao.h:29
u32 punch(v3f dir, const ToolCapabilities &toolcap, ServerActiveObject *puncher=nullptr, float time_from_last_punch=1000000.0f, u16 initial_wear=0)
Definition luaentity_sao.cpp:325
virtual void onMarkedForRemoval()
Definition luaentity_sao.h:71
~LuaEntitySAO()
Definition luaentity_sao.cpp:89
void sendPosition(bool do_interpolate, bool is_movement_end)
Definition luaentity_sao.cpp:522
ActiveObjectType getSendType() const
Definition luaentity_sao.h:23
void getStaticData(std::string *result) const
Definition luaentity_sao.cpp:290
bool isStaticAllowed() const
Definition luaentity_sao.h:28
std::string getTextureMod() const
Definition luaentity_sao.cpp:470
std::string m_init_name
Definition luaentity_sao.h:83
bool getCollisionBox(aabb3f *toset) const
Definition luaentity_sao.cpp:554
void moveTo(v3f pos, bool continuous)
Definition luaentity_sao.cpp:390
bool m_registered
Definition luaentity_sao.h:85
void setTextureMod(const std::string &mod)
Definition luaentity_sao.cpp:462
bool m_texture_modifier_sent
Definition luaentity_sao.h:99
void setHP(s32 hp, const PlayerHPChangeReason &reason)
Definition luaentity_sao.cpp:413
std::string getPropertyPacket()
Definition luaentity_sao.cpp:517
v3f getVelocity()
Definition luaentity_sao.cpp:447
std::string getGUID() const
Returns an unique ID for this object (persistent across unload, server restarts).
Definition luaentity_sao.cpp:435
bool getSelectionBox(aabb3f *toset) const
Definition luaentity_sao.cpp:571
std::string m_texture_modifier
Definition luaentity_sao.h:98
void setVelocity(v3f velocity)
Definition luaentity_sao.cpp:442
void step(float dtime, bool send_recommended)
Definition luaentity_sao.cpp:136
ActiveObjectType getType() const
Definition luaentity_sao.h:22
virtual void onMarkedForDeactivation()
Definition luaentity_sao.h:67
float m_last_sent_move_precision
Definition luaentity_sao.h:96
virtual void addedToEnvironment(u32 dtime_s)
Definition luaentity_sao.cpp:100
void addVelocity(v3f velocity)
Definition luaentity_sao.h:51
u16 getHP() const
Definition luaentity_sao.cpp:430
MyGUID m_guid
Definition luaentity_sao.h:87
void rightClick(ServerActiveObject *clicker)
Definition luaentity_sao.cpp:374
v3f getAcceleration()
Definition luaentity_sao.cpp:457
Definition serveractiveobject.h:41
Definition serverenvironment.h:113
Definition unit_sao.h:14
virtual void onMarkedForRemoval() override
Definition unit_sao.h:117
ObjectProperties m_prop
Definition unit_sao.h:105
virtual void onMarkedForDeactivation() override
Definition unit_sao.h:113
core::aabbox3d< f32 > aabb3f
Definition irr_aabb3d.h:11
core::vector2d< s16 > v2s16
Definition irr_v2d.h:12
core::vector3df v3f
Definition irr_v3d.h:11
A global unique identifier.
Definition guid.h:20
bool static_save
Definition object_properties.h:73
Definition player_sao.h:235
Definition tool.h:53
static std::string p(std::string path)
Definition test_filesys.cpp:64