// Add a renderable primitive to the draw list // TODO: This creates a lot of garbage... should consider refactoring. public void addRenderablePrimitive(IRenderablePrimitive renderablePrimitive) { RenderablePrimitiveNode node = new RenderablePrimitiveNode(renderablePrimitive); if (_headNode == null) { // This is the first node, so make it the head _headNode = node; } else if (_headNode.renderablePrimitive.layerDepth < node.renderablePrimitive.layerDepth) { // The head node has a layer depth lower than the node being added, so move it down the list node.next = _headNode; _headNode = node; } else { RenderablePrimitiveNode current = _headNode; while (current != null) { if (current.next == null) { current.next = node; return; } else if (current.next.renderablePrimitive.layerDepth <= node.renderablePrimitive.layerDepth) { node.next = current.next; current.next = node; return; } current = current.next; } } }
public RenderablePrimitiveNode(IRenderablePrimitive renderablePrimitive) { _renderablePrimitive = renderablePrimitive; }