/** Create a series of line segments as props for this and all sub branches */
        public void Render(List<nProp> elements, nCamera camera, bool force)
        {
            if (_dead)
            return;
              if (camera == null)
            return;

              /* Do we have a prop for this branch yet? If not, make one */
              if ((_display == null) || (force)) {
            if (_display != null) {
              _display.Visible = false;
              _display = null;
            }
            if (camera != null) {
              var t = (Texture)Resources.Load("test.line.3");
              var q = new nQuad("Tree", new Vector2(1f, 1f));
              q.Texture = t;
              _display = new nProp(q);
              _display.Visible = true;
              _display.Data = this;
              _display.Depth = 3.0f;
              _display.ClearEventListeners(camera, nInputEvent.ENTER);
              _display.ClearEventListeners(camera, nInputEvent.EXIT);
              _display.Listen(camera, nInputEvent.ENTER, delegate {
            if (Tree.EditMode)
              _display.Color = new Color(0f, 1f, 0f, 0.5f);
              });
              _display.Listen(camera, nInputEvent.EXIT, delegate {
            _display.Color = Color.white;
              });
              _display.Listen(camera, nInputEvent.UP, delegate {
            if (Tree.EditMode)
              Hello.HelloApp.App.Get<TreeController>().RemoveBranch(this);
              });
            }
              }

              /** Update this to match the actual branch */
              var _base = Base;
              var _tip = Tip;
              var _parentWidth = Parent != null ? Parent.WidthAtPoint(Offset) : Width;
              var _baseWidth = _parentWidth < Width ? _parentWidth : Width;

              // Segments must join up cleanly
              if (IsSegment)
            _baseWidth = _parentWidth;

              var _tipWidth = TipWidth;
              nStrip.PopulateLineSegment(_display.Vertices, _base, _tip, _baseWidth, _tipWidth);
              _display.PushVertexUpdate();

              /** Collect this */
              elements.Add(_display);

              /** Collect segments */
              var segs = new List<bTreeBranch>();
              CollectSegments(segs);
              foreach (var s in segs) {
            if (s != this) {
              s.Render(elements, camera, force);
            }
              }

              /** Collect branches */
              foreach (var b in Branches) {
            b.Render(elements, camera, force);
              }

              /** Collect leaves */
              foreach (var l in Leaves) {
            l.Render(elements, force);
              }
        }