Skip to content

Commit 2b86deb

Browse files
Use typedef for the list. Clean up loops
1 parent 424cf0f commit 2b86deb

1 file changed

Lines changed: 30 additions & 35 deletions

File tree

Core/Libraries/Source/WWVegas/WW3D2/sortingrenderer.cpp

Lines changed: 30 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -167,8 +167,9 @@ class SortingNodeStruct
167167
unsigned short vertex_count; // Number of vertices used in vb
168168
};
169169

170-
static std::list<SortingNodeStruct*> sorted_list;
171-
static std::list<SortingNodeStruct*> clean_list;
170+
typedef std::list<SortingNodeStruct*> SortingNodeStructList;
171+
static SortingNodeStructList sorted_list;
172+
static SortingNodeStructList clean_list;
172173
static unsigned total_sorting_vertices;
173174

174175
static SortingNodeStruct* Get_Sorting_Struct()
@@ -245,31 +246,6 @@ void SortingRendererClass::Insert_Triangles(
245246
WWASSERT(vertex_buffer);
246247
WWASSERT(state->vertex_count<=vertex_buffer->Get_Vertex_Count());
247248

248-
D3DXMATRIX mtx=(D3DXMATRIX&)state->sorting_state.world*(D3DXMATRIX&)state->sorting_state.view;
249-
D3DXVECTOR3 vec=(D3DXVECTOR3&)state->bounding_sphere.Center;
250-
D3DXVECTOR4 transformed_vec;
251-
D3DXVec3Transform(
252-
&transformed_vec,
253-
&vec,
254-
&mtx);
255-
state->transformed_center=Vector3(transformed_vec[0],transformed_vec[1],transformed_vec[2]);
256-
257-
258-
/// @todo lorenzen sez use a bucket sort here... and stop copying so much data so many times
259-
260-
std::list<SortingNodeStruct*>::iterator node = sorted_list.begin();
261-
while (node != sorted_list.end()) {
262-
if (state->transformed_center.Z > (*node)->transformed_center.Z) {
263-
sorted_list.insert(node, state);
264-
break;
265-
}
266-
++node;
267-
}
268-
if (node == sorted_list.end())
269-
{
270-
sorted_list.push_back(state);
271-
}
272-
273249
#ifdef WWDEBUG
274250
unsigned short* indices=nullptr;
275251
SortingIndexBufferClass* index_buffer=static_cast<SortingIndexBufferClass*>(state->sorting_state.index_buffer);
@@ -288,6 +264,28 @@ void SortingRendererClass::Insert_Triangles(
288264
WWASSERT(idx3<state->vertex_count);
289265
}
290266
#endif // WWDEBUG
267+
268+
D3DXMATRIX mtx=(D3DXMATRIX&)state->sorting_state.world*(D3DXMATRIX&)state->sorting_state.view;
269+
D3DXVECTOR3 vec=(D3DXVECTOR3&)state->bounding_sphere.Center;
270+
D3DXVECTOR4 transformed_vec;
271+
D3DXVec3Transform(
272+
&transformed_vec,
273+
&vec,
274+
&mtx);
275+
state->transformed_center=Vector3(transformed_vec[0],transformed_vec[1],transformed_vec[2]);
276+
277+
278+
/// @todo lorenzen sez use a bucket sort here... and stop copying so much data so many times
279+
280+
for (SortingNodeStructList::iterator node = sorted_list.begin(); node != sorted_list.end(); ++node)
281+
{
282+
if (state->transformed_center.Z > (*node)->transformed_center.Z) {
283+
sorted_list.insert(node, state);
284+
return;
285+
}
286+
}
287+
288+
sorted_list.push_back(state);
291289
}
292290

293291
// ----------------------------------------------------------------------------
@@ -715,16 +713,13 @@ void SortingRendererClass::Insert_VolumeParticle(
715713

716714
/// @todo lorenzen sez use a bucket sort here... and stop copying so much data so many times
717715

718-
std::list<SortingNodeStruct*>::iterator node = sorted_list.begin();
719-
while (node != sorted_list.end()) {
716+
for (SortingNodeStructList::iterator node = sorted_list.begin(); node != sorted_list.end(); ++node)
717+
{
720718
if (state->transformed_center.Z > (*node)->transformed_center.Z) {
721719
sorted_list.insert(node, state);
722-
break;
720+
return;
723721
}
724-
++node;
725-
}
726-
if (node == sorted_list.end())
727-
{
728-
sorted_list.push_back(state);
729722
}
723+
724+
sorted_list.push_back(state);
730725
}

0 commit comments

Comments
 (0)