Skip to content

Commit bcdb3d5

Browse files
committed
Variable name fix + structure creation unrolling in lighting code
1 parent 6036f86 commit bcdb3d5

File tree

2 files changed

+30
-25
lines changed

2 files changed

+30
-25
lines changed

src/map.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -2238,7 +2238,7 @@ void MMVManip::initialEmerge(v3s16 blockpos_min, v3s16 blockpos_max,
22382238
bool block_data_inexistent = false;
22392239
try
22402240
{
2241-
TimeTaker timer1("emerge load", &emerge_load_time);
2241+
TimeTaker timer2("emerge load", &emerge_load_time);
22422242

22432243
block = m_map->getBlockNoCreate(p);
22442244
if(block->isDummy())

src/voxelalgorithms.cpp

+29-24
Original file line numberDiff line numberDiff line change
@@ -995,21 +995,22 @@ void finish_bulk_light_update(Map *map, mapblock_v3 minblock,
995995
// --- STEP 2: Get all newly inserted light sources
996996

997997
// For each block:
998-
for (s16 b_x = minblock.X; b_x <= maxblock.X; b_x++)
999-
for (s16 b_y = minblock.Y; b_y <= maxblock.Y; b_y++)
1000-
for (s16 b_z = minblock.Z; b_z <= maxblock.Z; b_z++) {
1001-
const v3s16 blockpos(b_x, b_y, b_z);
998+
v3s16 blockpos;
999+
v3s16 relpos;
1000+
for (blockpos.X = minblock.X; blockpos.X <= maxblock.X; blockpos.X++)
1001+
for (blockpos.Y = minblock.Y; blockpos.Y <= maxblock.Y; blockpos.Y++)
1002+
for (blockpos.Z = minblock.Z; blockpos.Z <= maxblock.Z; blockpos.Z++) {
10021003
MapBlock *block = map->getBlockNoCreateNoEx(blockpos);
10031004
if (!block || block->isDummy())
10041005
// Skip not existing blocks
10051006
continue;
10061007
// For each node in the block:
1007-
for (s32 x = 0; x < MAP_BLOCKSIZE; x++)
1008-
for (s32 z = 0; z < MAP_BLOCKSIZE; z++)
1009-
for (s32 y = 0; y < MAP_BLOCKSIZE; y++) {
1010-
v3s16 relpos(x, y, z);
1011-
MapNode node = block->getNodeNoCheck(x, y, z, &is_valid);
1008+
for (relpos.X = 0; relpos.X < MAP_BLOCKSIZE; relpos.X++)
1009+
for (relpos.Z = 0; relpos.Z < MAP_BLOCKSIZE; relpos.Z++)
1010+
for (relpos.Y = 0; relpos.Y < MAP_BLOCKSIZE; relpos.Y++) {
1011+
MapNode node = block->getNodeNoCheck(relpos.X, relpos.Y, relpos.Y, &is_valid);
10121012
const ContentFeatures &f = ndef->get(node);
1013+
10131014
// For each light bank
10141015
for (size_t b = 0; b < 2; b++) {
10151016
LightBank bank = banks[b];
@@ -1088,14 +1089,15 @@ void blit_back_with_light(ServerMap *map, MMVManip *vm,
10881089
}
10891090

10901091
// --- STEP 2: Get nodes from borders to unlight
1092+
v3s16 blockpos;
1093+
v3s16 relpos;
10911094

10921095
// In case there are unloaded holes in the voxel manipulator
10931096
// unlight each block.
10941097
// For each block:
1095-
for (s16 b_x = minblock.X; b_x <= maxblock.X; b_x++)
1096-
for (s16 b_y = minblock.Y; b_y <= maxblock.Y; b_y++)
1097-
for (s16 b_z = minblock.Z; b_z <= maxblock.Z; b_z++) {
1098-
v3s16 blockpos(b_x, b_y, b_z);
1098+
for (blockpos.X = minblock.X; blockpos.X <= maxblock.X; blockpos.X++)
1099+
for (blockpos.Y = minblock.Y; blockpos.Y <= maxblock.Y; blockpos.Y++)
1100+
for (blockpos.Z = minblock.Z; blockpos.Z <= maxblock.Z; blockpos.Z++) {
10991101
MapBlock *block = map->getBlockNoCreateNoEx(blockpos);
11001102
if (!block || block->isDummy())
11011103
// Skip not existing blocks.
@@ -1104,15 +1106,17 @@ void blit_back_with_light(ServerMap *map, MMVManip *vm,
11041106
// For each border of the block:
11051107
for (const VoxelArea &a : block_pad) {
11061108
// For each node of the border:
1107-
for (s32 x = a.MinEdge.X; x <= a.MaxEdge.X; x++)
1108-
for (s32 z = a.MinEdge.Z; z <= a.MaxEdge.Z; z++)
1109-
for (s32 y = a.MinEdge.Y; y <= a.MaxEdge.Y; y++) {
1110-
v3s16 relpos(x, y, z);
1109+
for (relpos.X = a.MinEdge.X; relpos.X <= a.MaxEdge.X; relpos.X++)
1110+
for (relpos.Z = a.MinEdge.Z; relpos.Z <= a.MaxEdge.Z; relpos.Z++)
1111+
for (relpos.Y = a.MinEdge.Y; relpos.Y <= a.MaxEdge.Y; relpos.Y++) {
1112+
11111113
// Get old and new node
1112-
MapNode oldnode = block->getNodeNoCheck(x, y, z, &is_valid);
1114+
MapNode oldnode = block->getNodeNoCheck(relpos.X, relpos.Y, relpos.Z, &is_valid);
11131115
const ContentFeatures &oldf = ndef->get(oldnode);
11141116
MapNode newnode = vm->getNodeNoExNoEmerge(relpos + offset);
1115-
const ContentFeatures &newf = ndef->get(newnode);
1117+
const ContentFeatures &newf = oldnode == newnode ? oldf :
1118+
ndef->get(newnode);
1119+
11161120
// For each light bank
11171121
for (size_t b = 0; b < 2; b++) {
11181122
LightBank bank = banks[b];
@@ -1229,13 +1233,14 @@ void repair_block_light(ServerMap *map, MapBlock *block,
12291233

12301234
// For each border of the block:
12311235
for (const VoxelArea &a : block_pad) {
1236+
v3s16 relpos;
12321237
// For each node of the border:
1233-
for (s32 x = a.MinEdge.X; x <= a.MaxEdge.X; x++)
1234-
for (s32 z = a.MinEdge.Z; z <= a.MaxEdge.Z; z++)
1235-
for (s32 y = a.MinEdge.Y; y <= a.MaxEdge.Y; y++) {
1236-
v3s16 relpos(x, y, z);
1238+
for (relpos.X = a.MinEdge.X; relpos.X <= a.MaxEdge.X; relpos.X++)
1239+
for (relpos.Z = a.MinEdge.Z; relpos.Z <= a.MaxEdge.Z; relpos.Z++)
1240+
for (relpos.Y = a.MinEdge.Y; relpos.Y <= a.MaxEdge.Y; relpos.Y++) {
1241+
12371242
// Get node
1238-
MapNode node = block->getNodeNoCheck(x, y, z, &is_valid);
1243+
MapNode node = block->getNodeNoCheck(relpos.X, relpos.Y, relpos.Z, &is_valid);
12391244
const ContentFeatures &f = ndef->get(node);
12401245
// For each light bank
12411246
for (size_t b = 0; b < 2; b++) {

0 commit comments

Comments
 (0)