// These added to DarkLUA.h //J_C Light Control int GetEntityLightNumber(lua_State *L); int SetLightPosition(lua_State *L); int SetLightColor(lua_State *L); int SetLightRange(lua_State *L); int GetLightPositionX(lua_State *L); int GetLightPositionY(lua_State *L); int GetLightPositionZ(lua_State *L); // These added to DarkLUA.cpp // get the light number using entity e number // then use that in the other light functions int GetEntityLightNumber(lua_State *L) { lua = L; int n = lua_gettop(L); if (n < 1) return 0; int iReturnValue = 0; // get lightentity e number t.e = lua_tonumber(L, 1); if (t.e > 0) { for (t.l = 1; t.l <= g.infinilightmax; t.l++) { if (t.infinilight[t.l].used == 1) { if (t.infinilight[t.l].e == t.e) { iReturnValue = t.l; } } } } lua_pushinteger(L, iReturnValue); return 1; } // uses light number from above int SetLightPosition(lua_State *L) { lua = L; // get number of arguments int n = lua_gettop(L); // Not enough params, return out if (n < 4) return 0; // get light number t.l = lua_tointeger(L, 1); float x = lua_tonumber(L, 2); float y = lua_tonumber(L, 3); float z = lua_tonumber(L, 4); if (t.l > 0 && t.l <= g.infinilightmax) { if (t.infinilight[t.l].used == 1) { t.infinilight[t.l].x = x; t.infinilight[t.l].y = y; t.infinilight[t.l].z = z; return 1; } } return 0; } int SetLightColor(lua_State *L) { lua = L; // get number of arguments int n = lua_gettop(L); // Not enough params, return out if (n < 4) return 0; // get light number t.l = lua_tointeger(L, 1); int r = lua_tonumber(L, 2); int grn = lua_tonumber(L, 3); int b = lua_tonumber(L, 4); if (t.l > 0 && t.l <= g.infinilightmax) { if (t.infinilight[t.l].used == 1) { t.infinilight[t.l].colrgb.r = r; t.infinilight[t.l].colrgb.g = grn; t.infinilight[t.l].colrgb.b = b; return 1; } } return 0; } int SetLightRange(lua_State *L) { lua = L; // get number of arguments int n = lua_gettop(L); // Not enough params, return out if (n < 2) return 0; // get light number t.l = lua_tointeger(L, 1); float rng = lua_tonumber(L, 2); if (rng < 0.0f) rng = 1.0f; if (rng > 10000.0f) rng = 10000.0f; if (t.l > 0 && t.l <= g.infinilightmax) { if (t.infinilight[t.l].used == 1) { t.infinilight[t.l].range = rng; return 1; } } return 0; } int GetLightPositionX(lua_State *L) { lua = L; int n = lua_gettop(L); if (n < 1) return 0; // get light number t.l = lua_tointeger(L, 1); if (t.l > 0 && t.l <= g.infinilightmax) { lua_pushnumber(L, t.infinilight[t.l].x); } return 1; } int GetLightPositionY(lua_State *L) { lua = L; int n = lua_gettop(L); if (n < 1) return 0; // get light number t.l = lua_tointeger(L, 1); if (t.l > 0 && t.l <= g.infinilightmax) { lua_pushnumber(L, t.infinilight[t.l].y); } return 1; } int GetLightPositionZ(lua_State *L) { lua = L; int n = lua_gettop(L); if (n < 1) return 0; // get light number t.l = lua_tointeger(L, 1); if (t.l > 0 && t.l <= g.infinilightmax) { lua_pushnumber(L, t.infinilight[t.l].z); } return 1; } // // these added to addFunctions() routine // void addFunctions() { //=================== //J_C light control lua_register(lua, "GetEntityLightNumber", GetEntityLightNumber); lua_register(lua, "SetLightPosition", SetLightPosition); lua_register(lua, "SetLightColor", SetLightColor); lua_register(lua, "SetLightRange", SetLightRange); lua_register(lua, "GetLightPositionX", GetLightPositionX); lua_register(lua, "GetLightPositionY", GetLightPositionY); lua_register(lua, "GetLightPositionZ", GetLightPositionZ); //=================== }