コード例 #1
0
ファイル: l_vmanip.cpp プロジェクト: BobMikfillin/minetest
int LuaVoxelManip::l_set_lighting(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;
	
	LuaVoxelManip *o = checkobject(L, 1);
	if (!o->is_mapgen_vm)
		return 0;
	
	if (!lua_istable(L, 2))
		return 0;

	u8 light;
	light  = (getintfield_default(L, 4, "day",   0) & 0x0F);
	light |= (getintfield_default(L, 4, "night", 0) & 0x0F) << 8;
	
	ManualMapVoxelManipulator *vm = o->vm;
	
	Mapgen mg;
	mg.vm = vm;
	
	mg.setLighting(vm->m_area.MinEdge + v3s16(0, 1, 0) * MAP_BLOCKSIZE,
				   vm->m_area.MaxEdge - v3s16(0, 1, 0) * MAP_BLOCKSIZE,
				   light);

	return 0;
}
コード例 #2
0
ファイル: l_vmanip.cpp プロジェクト: Sokomine/minetest
int LuaVoxelManip::l_set_lighting(lua_State *L)
{
	NO_MAP_LOCK_REQUIRED;

	LuaVoxelManip *o = checkobject(L, 1);
	if (!o->is_mapgen_vm)
		return 0;

	if (!lua_istable(L, 2))
		return 0;

	u8 light;
	light  = (getintfield_default(L, 2, "day",   0) & 0x0F);
	light |= (getintfield_default(L, 2, "night", 0) & 0x0F) << 4;

	MMVManip *vm = o->vm;

	v3s16 yblock = v3s16(0, 1, 0) * MAP_BLOCKSIZE;
	v3s16 pmin = lua_istable(L, 3) ? check_v3s16(L, 3) : vm->m_area.MinEdge + yblock;
	v3s16 pmax = lua_istable(L, 4) ? check_v3s16(L, 4) : vm->m_area.MaxEdge - yblock;

	sortBoxVerticies(pmin, pmax);
	if (!vm->m_area.contains(VoxelArea(pmin, pmax)))
		throw LuaError("Specified voxel area out of VoxelManipulator bounds");

	Mapgen mg;
	mg.vm = vm;

	mg.setLighting(light, pmin, pmax);

	return 0;
}