@@ -183,23 +183,24 @@ void VoxelManipulator::addArea(VoxelArea area)
183
183
184
184
// Allocate and clear new data
185
185
MapNode *new_data = new MapNode[new_size];
186
+ assert (new_data);
186
187
u8 *new_flags = new u8[new_size];
187
- for (s32 i=0 ; i<new_size; i++)
188
- {
189
- new_flags[i] = VOXELFLAG_NOT_LOADED;
190
- }
188
+ assert (new_flags);
189
+ memset (new_flags, VOXELFLAG_NOT_LOADED, new_size);
191
190
192
191
// Copy old data
193
192
194
193
for (s32 z=m_area.MinEdge .Z ; z<=m_area.MaxEdge .Z ; z++)
195
194
for (s32 y=m_area.MinEdge .Y ; y<=m_area.MaxEdge .Y ; y++)
196
195
for (s32 x=m_area.MinEdge .X ; x<=m_area.MaxEdge .X ; x++)
197
196
{
197
+ unsigned int old_index = m_area.index (x,y,z);
198
198
// If loaded, copy data and flags
199
- if ((m_flags[m_area. index (x,y,z) ] & VOXELFLAG_NOT_LOADED) == false )
199
+ if ((m_flags[old_index ] & VOXELFLAG_NOT_LOADED) == false )
200
200
{
201
- new_data[new_area.index (x,y,z)] = m_data[m_area.index (x,y,z)];
202
- new_flags[new_area.index (x,y,z)] = m_flags[m_area.index (x,y,z)];
201
+ unsigned int new_index = new_area.index (x,y,z);
202
+ new_data[new_index] = m_data[old_index];
203
+ new_flags[new_index] = m_flags[old_index];
203
204
}
204
205
}
205
206
0 commit comments