private void RecursFillFaceArray(List <Face> faces) { if (null != NodeRight) { NodeRight.RecursFillFaceArray(faces); } faces.Add(Face); if (null != NodeLeft) { NodeLeft.RecursFillFaceArray(faces); } }
private void CallNodeLeft(RsaKeyParameters publicKey) { if (NodeLeft != null) { foreach (var d in NodeLeft.GetInvocationList()) { try { (d as NodeLeftEventHandler)(this, publicKey); } catch { } } } }
public List <bool> Traverse(char symbol, List <bool> data) { if (NodeRight == null && NodeLeft == null) { if (symbol.Equals(this.Char)) { return(data); } else { return(null); } } else { List <bool> left = null; List <bool> right = null; if (NodeLeft != null) { List <bool> leftPath = new List <bool>(); leftPath.AddRange(data); leftPath.Add(false); left = NodeLeft.Traverse(symbol, leftPath); } if (NodeRight != null) { List <bool> rightPath = new List <bool>(); rightPath.AddRange(data); rightPath.Add(true); right = NodeRight.Traverse(symbol, rightPath); } if (left != null) { return(left); } else { return(right); } } }
public void Insert(Triangle t) { if (t.IsFlat) { return; } List <Triangle> side_left = new List <Triangle>(); List <Triangle> side_right = new List <Triangle>(); Split(t, ref side_left, ref side_right); foreach (var tr in side_left) { if (tr.IsFlat) { continue; } if (null == NodeLeft) { NodeLeft = new BSPNodeTri(tr); } else { NodeLeft.Insert(tr); } } foreach (var tr in side_right) { if (tr.IsFlat) { continue; } if (null == NodeRight) { NodeRight = new BSPNodeTri(tr); } else { NodeRight.Insert(tr); } } }
public void Update(GameTime gameTime) { // No hover logic in preview mode if (isPreviewMode) { return; } hoveredNode = GetNodeCoordsFromLocation(GameRoot.Mouse.CurrentPosition); // Fire the event if (hoveredNode != new Vector2(-1, -1)) { NodeHovered?.Invoke(this, (Node)nodes[(int)hoveredNode.X, (int)hoveredNode.Y].Clone()); } else { NodeLeft?.Invoke(this, null); } }
// insertion methods public void Insert(Face f) { if (f.IsDegenerate) { return; } // check on which side the polygon is, posibly split List <Face> side_left = new List <Face>(); List <Face> side_right = new List <Face>(); Split(f, ref side_left, ref side_right); // insert triangles foreach (Face face in side_left) { if (null == NodeLeft) { NodeLeft = new BSPNode(face); } else { NodeLeft.Insert(face); } } foreach (Face face in side_right) { if (null == NodeRight) { NodeRight = new BSPNode(face); } else { NodeRight.Insert(face); } } }
public void RecursFillTriangleList(ref List <Triangle> triangles) { NodeRight?.RecursFillTriangleList(ref triangles); triangles.Add(Triangle); NodeLeft?.RecursFillTriangleList(ref triangles); }