some tidying
authorPerttu Ahola <celeron55@gmail.com>
Mon, 21 Feb 2011 14:50:05 +0000 (16:50 +0200)
committerPerttu Ahola <celeron55@gmail.com>
Mon, 21 Feb 2011 14:50:05 +0000 (16:50 +0200)
src/clientobject.cpp
src/mapnode.h
src/serverobject.cpp

index e6646eff1180e8cf1ba1796eea53ea7c00035591..bb4497e94ad23c4ffe39e5755fa8d9bc21fe28b3 100644 (file)
@@ -174,6 +174,23 @@ extern "C"{
 #include "lstring.h"
 }
 
+/*
+       Functions for calling from script:
+
+       object_set_position(self, x, y, z)
+       object_set_rotation(self, x, y, z)
+       object_add_to_mesh(self, image, corners, backface_culling)
+       object_clear_mesh(self)
+
+       Callbacks in script:
+
+       step(self, dtime)
+       process_message(self, data)
+       initialize(self, data)
+       TODO:
+       string status_text(self)
+*/
+
 /*
        object_set_position(self, x, y, z)
 */
index 7819d701d03e26fee322f2543ac4afc111be6a5b..03a294ad27bddc2b4fc6575540ab3c47439031df 100644 (file)
@@ -198,23 +198,6 @@ struct ContentFeatures
                }
        }
 
-       /*void setTexture(u16 i, AtlasPointer p, u8 alpha=255)
-       {
-               tiles[i].texture = p;
-               if(alpha != 255)
-               {
-                       tiles[i].alpha = alpha;
-                       tiles[i].material_type = MATERIAL_ALPHA_VERTEX;
-               }
-       }
-       void setAllTextures(AtlasPointer p, u8 alpha=255)
-       {
-               for(u16 i=0; i<6; i++)
-               {
-                       setTexture(i, p, alpha);
-               }
-       }*/
-
        void setTile(u16 i, const TileSpec &tile)
        {
                tiles[i] = tile;
index 2fd3a1bfb16e52a7e28239807749264b95dd7bde..8b41cef1684456d1861691439e87423e13c699cf 100644 (file)
@@ -88,10 +88,20 @@ extern "C"{
 }
 
 /*
+       Functions for calling from script:
+
        object_set_base_position(self, x,y,z)
        x,y,z = object_get_base_position(self)
        object_add_message(self, data)
+       n = object_get_node(self, x,y,z)
        object_remove(self)
+
+       Callbacks in script:
+       
+       step(self, dtime)
+       get_client_init_data(self)
+       get_server_init_data(self)
+       initialize(self, data)
 */
 
 /*
@@ -168,7 +178,7 @@ static int lf_object_add_message(lua_State *L)
 }
 
 /*
-       object_get_node(x,y,z)
+       object_get_node(self, x,y,z)
 */
 static int lf_object_get_node(lua_State *L)
 {
@@ -196,6 +206,76 @@ static int lf_object_get_node(lua_State *L)
        MapNode n(CONTENT_IGNORE);
        n = self->getEnv()->getMap().getNodeNoEx(pos);
 
+       // Create a table with some data about the node
+       lua_newtable(L);
+       lua_pushstring(L, "content");
+       lua_pushinteger(L, n.d);
+       lua_settable(L, -3);
+       lua_pushstring(L, "param1");
+       lua_pushinteger(L, n.param);
+       lua_settable(L, -3);
+       lua_pushstring(L, "param2");
+       lua_pushinteger(L, n.param2);
+       lua_settable(L, -3);
+       lua_pushstring(L, "walkable");
+       lua_pushboolean(L, content_features(n.d).walkable);
+       lua_settable(L, -3);
+       
+       // Return the table
+       return 1;
+}
+
+#if 0
+/*
+       object_set_node(self, x,y,z, n)
+*/
+static int lf_object_set_node(lua_State *L)
+{
+       MapNode n;
+
+       // 5: n
+       // Get fields of table
+
+       lua_pushinteger(L, "content");
+       lua_gettable(L, -2);
+       n.d = lua_tonumber(L, -1);
+       lua_pop(L, 1);
+
+       lua_pushinteger(L, "param1");
+       lua_gettable(L, -2);
+       n.param = lua_tonumber(L, -1);
+       lua_pop(L, 1);
+
+       lua_pushinteger(L, "param2");
+       lua_gettable(L, -2);
+       n.param2 = lua_tonumber(L, -1);
+       lua_pop(L, 1);
+
+       lua_pop(L, 1);
+       // 4: z
+       lua_Number z = lua_tonumber(L, -1);
+       lua_pop(L, 1);
+       // 3: y
+       lua_Number y = lua_tonumber(L, -1);
+       lua_pop(L, 1);
+       // 2: x
+       lua_Number x = lua_tonumber(L, -1);
+       lua_pop(L, 1);
+       // 1: self
+       LuaSAO *self = (LuaSAO*)lua_touserdata(L, -1);
+       lua_pop(L, 1);
+       
+       assert(self);
+
+       v3s16 pos = floatToInt(v3f(x,y,z), 1.0);
+
+       /*dstream<<"Checking node from pos=("<<pos.X<<","<<pos.Y<<","<<pos.Z
+                       <<")"<<std::endl;*/
+       
+       // Get the node
+       MapNode n(CONTENT_IGNORE);
+       n = self->getEnv()->getMap().getNodeNoEx(pos);
+
        // Create a table with some data about the node
        lua_newtable(L);
        lua_pushstring(L, "content");
@@ -208,6 +288,7 @@ static int lf_object_get_node(lua_State *L)
        // Return the table
        return 1;
 }
+#endif
 
 /*
        object_remove(x,y,z)