Ejemplo n.º 1
0
    public void MoveStartShortestRoute(Transform _transform, string startKey, string goalKey)
    {
        _targetTransForm = _transform;
        NodeMapUtility.CostDict keyValuePairs;
        LinkedList <string>     route;

        NodeMapUtility.GetShortestRoute(_nodeMap, startKey, goalKey, 10000, out keyValuePairs, out route);
        Debug.Log(string.Format("道を探します : start : {0} {1}", startKey, goalKey));

        if (route == null)
        {
            Debug.Log("道が遠すぎたため停止します");
            currentRoute = null;
            return;
        }
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 指定された点にもっとも近いノードを取得する
    /// </summary>
    /// <returns>The locate.</returns>
    /// <param name="selectPos">Select position.</param>
    /// <param name="groupIndex">Group index.</param>
    public string Locate(Vector3 selectPos, string groupIndex = null)
    {
        NodeMapUtility.GroupDict group;
        float  distance = -1f;
        string key      = null;

        if (string.IsNullOrEmpty(groupIndex))
        {
            foreach (var p in nodeMap.nodeLonLatData.Keys)
            {
                Vector3 sub = nodeMap[p].Position - selectPos;
                float   d   = sub.x * sub.x + sub.y * sub.y + sub.z * sub.z;

                if (distance < 0f || distance > d)
                {
                    distance = d;
                    key      = p;
                }
            }
        }
        else
        {
            NodeMapUtility.Group(nodeMap, out group);
            int y = group[groupIndex];

            foreach (var p in group)
            {
                if (p.Value == y)
                {
                    Vector3 sub = nodeMap[p.Key].Position - selectPos;
                    float   d   = sub.x * sub.x + sub.y * sub.y + sub.z * sub.z;

                    if (distance < 0f || distance > d)
                    {
                        distance = d;
                        key      = p.Key;
                    }
                }
            }
        }

        Debug.Assert(distance >= 0f);
        return(key);
    }
Ejemplo n.º 3
0
 /// <summary>
 /// 道の情報を NodeMap に変換する.
 /// </summary>
 /// <param name="roadDataModels">Road data models.</param>
 /// <param name="worldCenter">World center.</param>
 /// <param name="worldScale">World scale.</param>
 /// <param name="key">AROWMAPから抽出するTAG.</param>
 public void Initialize(List <RoadDataModel> roadDataModels, Vector2Int worldCenter, Vector2 worldScale, OSMDefine.CREATE_WAY key)
 {
     _nodeMap = NodeMapUtility.CreateNodeMap(roadDataModels, worldCenter, worldScale, key);
 }