Advertisement
Guest User

Untitled

a guest
Oct 10th, 2014
233
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. void MeshCollector::append(const TileSpec &tile,
  2. const video::S3DVertex *vertices, u32 numVertices,
  3. const u16 *indices, u32 numIndices,
  4. v3f pos, float visual_scale, video::SColor c)
  5. {
  6. if(numIndices > 65535)
  7. {
  8. dstream<<"FIXME: MeshCollector::append() called with numIndices="<<numIndices<<" (limit 65535)"<<std::endl;
  9. return;
  10. }
  11.  
  12. PreMeshBuffer *p = NULL;
  13. for(u32 i=0; i<prebuffers.size(); i++)
  14. {
  15. PreMeshBuffer &pp = prebuffers[i];
  16. if(pp.tile != tile)
  17. continue;
  18. if(pp.indices.size() + numIndices > 65535)
  19. continue;
  20.  
  21. p = &pp;
  22. break;
  23. }
  24.  
  25. if(p == NULL)
  26. {
  27. PreMeshBuffer pp;
  28. pp.tile = tile;
  29. prebuffers.push_back(pp);
  30. p = &prebuffers[prebuffers.size()-1];
  31. }
  32.  
  33. u32 vertex_count = p->vertices.size();
  34. for(u32 i=0; i<numIndices; i++)
  35. {
  36. u32 j = indices[i] + vertex_count;
  37. p->indices.push_back(j);
  38. }
  39. for(u32 i=0; i<numVertices; i++)
  40. {
  41. video::S3DVertex vert = vertices[i];
  42. vert.Pos *= visual_scale;
  43. vert.Pos += pos;
  44. vert.Color = c;
  45. p->vertices.push_back(vert);
  46. }
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement