So I’m putting together a SceneProxy that needs to do its own construction of meshes for the FMeshElementCollector.
In looking at code that does this, I’m seeing some weird stuff. For instance, this weird piece of C++
...
TArray<FMeshBatchElement,TInlineAllocator<1> > Elements;
...
Mesh.Elements.Reserve(ParticleCount);
for (int32 ParticleIndex = 1; ParticleIndex < ParticleCount; ++ParticleIndex)
{
FMeshBatchElement* NextElement = new(Mesh.Elements) FMeshBatchElement();
*NextElement = Mesh.Elements[0];
NextElement->UserIndex = ParticleIndex;
}
If I am understanding this code correctly, it’s creating a new FMeshBatchElement with placement new, then getting it and setting the user index. I see this pattern of only using element 0 of this array everywhere. I assume it’s something to do with the TInlineAllocator.
I don’t see how it would fill the array though, as it obviously wants to do.
Can someone explain to me what’s going on here?
Also, some other issues:
uint32 FirstIndex;
uint32 NumPrimitives;
uint32 NumInstances;
uint32 MinVertexIndex;
uint32 MaxVertexIndex;
These members are all undocumented. NumPrimitives is somewhat obvious - how many triangles this element has.
NumInstances - no idea.
FirstIndex - Index into the index buffer? Actual vert index?
MinVertexIndex - Lowest actual vert index? Something else?
MaxVertexIndex - As above.