public void Draw(RendererBatch batch, Color treeColor, Color leafColor) { var treeNodes = new Stack <Node>(); treeNodes.Push(_root); while (treeNodes.Count > 0) { var treeNode = treeNodes.Pop(); if (treeNode != null && !treeNode.IsLeaf) { batch.DrawPrimitives(p => { var aabb = treeNode.AABB; p.DrawRectangle(aabb.Min, aabb.Size, treeColor); }); treeNodes.Push(treeNode.Left); treeNodes.Push(treeNode.Right); } } foreach (var leafNode in _nodes.Values) { batch.DrawPrimitives(p => { var aabb = leafNode.AABB; p.DrawRectangle(aabb.Min, aabb.Size, leafColor); }); } }
protected override void AfterDraw(RendererBatch batch) { BlendState = null; DepthStencilState = new DepthStencilState() { DepthBufferEnable = false, StencilEnable = true, StencilFunction = Reverse ? CompareFunction.Equal : CompareFunction.NotEqual, StencilPass = StencilOperation.Keep, ReferenceStencil = 0 }; Effect = null; batch.Configure(BlendState, DepthStencilState, Effect, Matrix); batch.Begin(); batch.DrawPrimitives(primitive => { primitive.FillRectangle( View.Location.ToVector2(), View.Size.ToVector2(), ClearColor); }); batch.End(); }