@@ -240,30 +240,36 @@ void SceneParticleEmitter::rebuildParticles() {
240240 mesh->setMeshType (Mesh::TRI_MESH);
241241
242242 int indexOffset = 0 ;
243+
244+ mesh->indexedMesh = true ;
243245
244246 int meshIndex = particles[i].varianceIndex ;
245247 if (meshIndex < sourceMeshes.size ()) {
246248
247- indexOffset = mesh->getVertexCount () ;
249+ indexOffset = mesh->vertexPositionArray . data . size ()/ 3 ;
248250
249- // TODO: fix
250- /*
251- for(int v=0; v < sourceMeshes[meshIndex]->getVertexCount(); v++) {
252- Vertex *sv = sourceMeshes[meshIndex]->getVertex(v);
253-
254- Vector3 vpos = Vector3(sv->x, sv->y, sv->z) * finalParticleSize;
251+ Mesh *sourceMesh = sourceMeshes[meshIndex];
252+
253+ mesh->setMeshType (sourceMesh->getMeshType ());
254+
255+ for (int v=0 ; v < sourceMesh->getVertexCount (); v++) {
256+
257+ Vector3 vpos = Vector3 (sourceMesh->vertexPositionArray .data [(v * 3 )], sourceMesh->vertexPositionArray .data [(v * 3 )+1 ], sourceMesh->vertexPositionArray .data [(v * 3 )+2 ]) * finalParticleSize;
255258 vpos = q.applyTo (vpos);
256259
257260 vpos += particlePosition;
258- mesh->addVertexWithUV(vpos.x, vpos.y, vpos.z, sv->texCoord.x, sv->texCoord.y);
259- mesh->addColor(vertexColor);
260- mesh->addNormal(q.applyTo(sv->normal);
261+ mesh->addVertex (vpos.x , vpos.y , vpos.z );
262+ mesh->addTexCoord (sourceMesh->vertexTexCoordArray .data [(v * 2 )], sourceMesh->vertexTexCoordArray .data [(v * 2 ) + 1 ]);
263+ mesh->addColor (vertexColor);
264+ Vector3 svNormal = Vector3 (sourceMesh->vertexNormalArray .data [(v * 3 )], sourceMesh->vertexNormalArray .data [(v * 3 ) + 1 ], sourceMesh->vertexNormalArray .data [(v * 3 ) + 2 ]);
265+ svNormal = q.applyTo (svNormal);
266+ mesh->addNormal (svNormal.x , svNormal.y , svNormal.z );
261267 }
262268
263- for(int v= 0; v < sourceMeshes[meshIndex]->getIndexCount (); v++) {
264- mesh->addIndex(indexOffset + sourceMeshes[meshIndex]->getIndexAt(v) );
269+ for (int v = 0 ; v < sourceMesh-> indexArray . data . size (); v++) {
270+ mesh->addIndex (indexOffset + sourceMesh-> indexArray . data [v] );
265271 }
266- */
272+
267273 }
268274
269275 } else {
0 commit comments