forked from Mirrorlandia_minetest/minetest
Use memset for flag initialization (compiler optimization is way better)
use temp variables instead of recalculating array index
This commit is contained in:
parent
496cb115b1
commit
56bf867874
@ -183,11 +183,10 @@ void VoxelManipulator::addArea(VoxelArea area)
|
|||||||
|
|
||||||
// Allocate and clear new data
|
// Allocate and clear new data
|
||||||
MapNode *new_data = new MapNode[new_size];
|
MapNode *new_data = new MapNode[new_size];
|
||||||
|
assert(new_data);
|
||||||
u8 *new_flags = new u8[new_size];
|
u8 *new_flags = new u8[new_size];
|
||||||
for(s32 i=0; i<new_size; i++)
|
assert(new_flags);
|
||||||
{
|
memset(new_flags, VOXELFLAG_NOT_LOADED, new_size);
|
||||||
new_flags[i] = VOXELFLAG_NOT_LOADED;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Copy old data
|
// Copy old data
|
||||||
|
|
||||||
@ -195,11 +194,13 @@ void VoxelManipulator::addArea(VoxelArea area)
|
|||||||
for(s32 y=m_area.MinEdge.Y; y<=m_area.MaxEdge.Y; y++)
|
for(s32 y=m_area.MinEdge.Y; y<=m_area.MaxEdge.Y; y++)
|
||||||
for(s32 x=m_area.MinEdge.X; x<=m_area.MaxEdge.X; x++)
|
for(s32 x=m_area.MinEdge.X; x<=m_area.MaxEdge.X; x++)
|
||||||
{
|
{
|
||||||
|
unsigned int old_index = m_area.index(x,y,z);
|
||||||
// If loaded, copy data and flags
|
// If loaded, copy data and flags
|
||||||
if((m_flags[m_area.index(x,y,z)] & VOXELFLAG_NOT_LOADED) == false)
|
if((m_flags[old_index] & VOXELFLAG_NOT_LOADED) == false)
|
||||||
{
|
{
|
||||||
new_data[new_area.index(x,y,z)] = m_data[m_area.index(x,y,z)];
|
unsigned int new_index = new_area.index(x,y,z);
|
||||||
new_flags[new_area.index(x,y,z)] = m_flags[m_area.index(x,y,z)];
|
new_data[new_index] = m_data[old_index];
|
||||||
|
new_flags[new_index] = m_flags[old_index];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user