diff options
author | Perttu Ahola <celeron55@gmail.com> | 2011-02-21 16:10:36 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2011-02-21 16:10:36 +0200 |
commit | 69dbc046eb5a82b38c6d5c3302e9b3b0b3c1bcf1 (patch) | |
tree | e892b50187ba7343cb75f359ccbb55bdde19afd5 /src/clientobject.h | |
parent | c57637b4c39319e0c0d5d80d0ae2884aec66d691 (diff) | |
download | minetest-69dbc046eb5a82b38c6d5c3302e9b3b0b3c1bcf1.tar.gz minetest-69dbc046eb5a82b38c6d5c3302e9b3b0b3c1bcf1.tar.bz2 minetest-69dbc046eb5a82b38c6d5c3302e9b3b0b3c1bcf1.zip |
preliminary lua scripting framework for objects
Diffstat (limited to 'src/clientobject.h')
-rw-r--r-- | src/clientobject.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/clientobject.h b/src/clientobject.h index 454531aec..840fe5ede 100644 --- a/src/clientobject.h +++ b/src/clientobject.h @@ -53,6 +53,13 @@ public: // Process a message sent by the server side object virtual void processMessage(const std::string &data){} + /* + This takes the return value of getClientInitializationData + TODO: Usage of this + */ + virtual void initialize(const std::string &data){} + + // Create a certain type of ClientActiveObject static ClientActiveObject* create(u8 type); protected: @@ -84,5 +91,58 @@ private: v3f m_position; }; +extern "C"{ +#include "lua.h" +#include "lualib.h" +#include "lauxlib.h" +} + +class LuaCAO : public ClientActiveObject +{ +public: + LuaCAO(u16 id); + virtual ~LuaCAO(); + + u8 getType() const + { + return ACTIVEOBJECT_TYPE_LUA; + } + + void step(float dtime); + + void processMessage(const std::string &data); + + void initialize(const std::string &data); + + void loadScript(const std::string script); + + void addToScene(scene::ISceneManager *smgr); + void removeFromScene(); + void updateLight(u8 light_at_pos); + v3s16 getLightPosition(); + void updateNodePos(); + + void setPosition(v3f pos); + v3f getPosition(); + + void setRotation(v3f rot); + v3f getRotation(); + + // image: eg. "rat.png" + // corners: v3f corners[4] + void addToMesh(const char *image, v3f *corners, bool backface_culling); + void clearMesh(); + +private: + lua_State* L; + + scene::ISceneManager *m_smgr; + scene::IMeshSceneNode *m_node; + scene::SMesh *m_mesh; + + v3f m_position; + v3f m_rotation; +}; + #endif |