예제 #1
0
 public void LinkNodes()//связывает все узлы на этаже между собой
 {
     for (int fx = 0; fx < stage.height; fx++)
     {
         for (int fz = 0; fz < stage.width; fz++)
         {
             Node currentNode = GetNode(fx, fz);
             for (int x = -1; x <= 1; x++)
             {
                 for (int z = -1; z <= 1; z++)
                 {
                     if ((z == 0 && x == 0) || !rct.isContainCRD(new CRD(fx + x, fz + z)))
                     {
                         continue;
                     }
                     float w;
                     if (z == 0 || x == 0)
                     {
                         w = 1;
                     }
                     else
                     {
                         w = 1.5f;
                     }
                     Node sibblingnode = GetNode(fx + x, fz + z);
                     currentNode.LinkNode(sibblingnode, w);
                 }
             }
         }
     }
 }
예제 #2
0
 public void moveNodesFromMapElementToThis(MapElement from) //передает узлы от указаного елемнта текущему
 {
     for (int i = 0; i < from.childNodes.Count; i++)
     {
         Node node = from.childNodes[i];
         if (rct.isContainCRD(node.crd) && (floorNumber == node.floor.number || floorNumber == -1))
         {
             moveNode(i, from, this);
             i--;
         }
     }
     HookAfterAddNodesToMapElement();
 }
예제 #3
0
        public List <Node> GetSiblingsNoDiagonals()// Получение соседних узлов
        {
            List <Node> siblings = new List <Node>();
            RCT         rct      = Stage.GetStage().rct;

            for (int x = -1; x <= 1; x++)
            {
                for (int z = -1; z <= 1; z++)
                {
                    if ((z == 0 && x == 0) || !rct.isContainCRD(new CRD(crd.x + x, crd.z + z)) || (z != 0 && x != 0))
                    {
                        continue;
                    }
                    siblings.Add(Stage.GetNode(crd.x + x, crd.z + z, floor.number));
                }
            }
            return(siblings);
        }