Exemple #1
0
 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 { }
         }
     }
 }
Exemple #3
0
        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);
                }
            }
        }
Exemple #4
0
        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);
                }
            }
        }
Exemple #5
0
        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);
            }
        }
Exemple #6
0
        // 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);
                }
            }
        }
Exemple #7
0
 public void RecursFillTriangleList(ref List <Triangle> triangles)
 {
     NodeRight?.RecursFillTriangleList(ref triangles);
     triangles.Add(Triangle);
     NodeLeft?.RecursFillTriangleList(ref triangles);
 }