Skip to content

Commit 213fd02

Browse files
committed
Fixed mesh particle emitter to work with new mesh system
1 parent 1194dfe commit 213fd02

File tree

1 file changed

+19
-13
lines changed

1 file changed

+19
-13
lines changed

Core/Contents/Source/PolyParticleEmitter.cpp

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)