internal void Connect(Node node, PathParam pathParam) { // if(_connectedNodes.ContainsKey(node)){ // _connectedNodes. // } _connectedNodes[node] = pathParam; // _connectedNodes.Add(node, pathParam); }
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)); }
/// <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); } } }