예제 #1
0
 internal void Connect(Node node, PathParam pathParam)
 {
     // if(_connectedNodes.ContainsKey(node)){
     //     _connectedNodes.
     // }
     _connectedNodes[node] = pathParam;
     // _connectedNodes.Add(node, pathParam);
 }
예제 #2
0
파일: Node.cs 프로젝트: tyotsu/AntDiary
        internal void Connect(Node node, PathParam pathParam)
        {
            // if(_connectedNodes.ContainsKey(node)){
            //     _connectedNodes.
            // }
            //_connectedNodes[node] = pathParam;
            // _connectedNodes.Add(node, pathParam);

            edges.Add(new NodeEdge(this, node, pathParam.GetCost));
        }
예제 #3
0
        /// <summary>
        ///     与えられたNode同士を接続する
        ///     すでに接続されていた場合は道を置き換える
        ///     nodesのサイズが2未満だとエラー
        /// </summary>
        /// <param name="nodes"></param>
        /// <param name="pathCostCoefficient">道の移動コスト係数 指定しなければ1</param>
        public void ConnectNodes(Node[] nodes, float pathCostCoefficient = 1.0f)
        {
            if (nodes.Length < 2)
            {
                throw new Exception("Node数が2未満になっています");
            }

            //2つを取り出す組み合わせ
            for (int i = 0; i < nodes.Length; i++)
            {
                for (int j = i + 1; j < nodes.Length; j++)
                {
                    var nodeA = nodes[i];
                    var nodeB = nodes[j];

                    var distance = Vector2.Distance(nodeA.Pos, nodeB.Pos);

                    var pathParam = new PathParam(distance, pathCostCoefficient);

                    nodeA.Connect(nodeB, pathParam);
                    nodeB.Connect(nodeA, pathParam);
                }
            }
        }