aboutsummaryrefslogtreecommitdiff
path: root/src/clientobject.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2011-02-21 16:10:36 +0200
committerPerttu Ahola <celeron55@gmail.com>2011-02-21 16:10:36 +0200
commit69dbc046eb5a82b38c6d5c3302e9b3b0b3c1bcf1 (patch)
treee892b50187ba7343cb75f359ccbb55bdde19afd5 /src/clientobject.h
parentc57637b4c39319e0c0d5d80d0ae2884aec66d691 (diff)
downloadminetest-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.h60
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