public override void UpdateRenderQueue(RenderQueue queue, List <Particle> currentParticles, bool cullIndividually) { billboardSet.CullIndividual = cullIndividually; // Update billboard set geometry billboardSet.BeginBillboards(); Billboard bb = new Billboard(); foreach (Particle p in currentParticles) { bb.Position = p.Position; if (billboardSet.BillboardType == BillboardType.OrientedSelf || billboardSet.BillboardType == BillboardType.PerpendicularSelf) { // Normalise direction vector bb.Direction = p.Direction; bb.Direction.Normalize(); } bb.Color = p.Color; bb.rotationInRadians = p.rotationInRadians; bb.HasOwnDimensions = p.HasOwnDimensions; if (bb.HasOwnDimensions) { bb.width = p.Width; bb.height = p.Height; } billboardSet.InjectBillboard(bb); } billboardSet.EndBillboards(); // Update the queue billboardSet.UpdateRenderQueue(queue); }