[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [16390] trunk/blender/source/gameengine/ Rasterizer/RAS_MaterialBucket.cpp:
Brecht Van Lommel
brechtvanlommel at pandora.be
Sat Sep 6 03:19:27 CEST 2008
Revision: 16390
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=16390
Author: blendix
Date: 2008-09-06 03:18:53 +0200 (Sat, 06 Sep 2008)
Log Message:
-----------
Bugfix: game engine could crash with empty display arrays on
windows (caused by invisible faces for example).
Modified Paths:
--------------
trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
Modified: trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
===================================================================
--- trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp 2008-09-05 23:28:28 UTC (rev 16389)
+++ trunk/blender/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp 2008-09-06 01:18:53 UTC (rev 16390)
@@ -131,19 +131,29 @@
int startvertex, endvertex;
int startindex, endindex;
- it.array = m_displayArrays[m_startarray];
+ it.array = (m_displayArrays.size() > 0)? m_displayArrays[m_startarray]: NULL;
- startvertex = m_startvertex;
- endvertex = (m_startarray == m_endarray)? m_endvertex: it.array->m_vertex.size();
- startindex = m_startindex;
- endindex = (m_startarray == m_endarray)? m_endindex: it.array->m_index.size();
+ if(it.array == NULL || it.array->m_index.size() == 0 || it.array->m_vertex.size() == 0) {
+ it.array = NULL;
+ it.vertex = NULL;
+ it.index = NULL;
+ it.startvertex = 0;
+ it.endvertex = 0;
+ it.totindex = 0;
+ }
+ else {
+ startvertex = m_startvertex;
+ endvertex = (m_startarray == m_endarray)? m_endvertex: it.array->m_vertex.size();
+ startindex = m_startindex;
+ endindex = (m_startarray == m_endarray)? m_endindex: it.array->m_index.size();
- it.vertex = &it.array->m_vertex[0];
- it.index = &it.array->m_index[startindex];
- it.startvertex = startvertex;
- it.endvertex = endvertex;
- it.totindex = endindex-startindex;
- it.arraynum = m_startarray;
+ it.vertex = &it.array->m_vertex[0];
+ it.index = &it.array->m_index[startindex];
+ it.startvertex = startvertex;
+ it.endvertex = endvertex;
+ it.totindex = endindex-startindex;
+ it.arraynum = m_startarray;
+ }
}
void RAS_MeshSlot::next(RAS_MeshSlot::iterator& it)
More information about the Bf-blender-cvs
mailing list