public IEnumerator QueryForBuildingByName(string buildingName, System.Action <Building> callBack) { //Get Buildings BuildingTransferCollection buildingCollection = null; yield return(StartCoroutine(GetBuildingsByStreetName(buildingName, (BuildingTransferCollection b) => { buildingCollection = b; }))); Building buildingGo = null; if (buildingCollection == null) { UIManager.Instance.QueryError(); } else if (buildingCollection != null && buildingCollection.buildings.Length > 0) { buildingGo = Building.CreateFromTransfer(buildingCollection.buildings [0]); //Get Floors for every building foreach (BuildingTransfer building in buildingCollection.buildings) { FloorTransferCollection tempftc = null; yield return(StartCoroutine(GetFloorsByBuildingId(building.id, (FloorTransferCollection ftc) => { tempftc = ftc; }))); foreach (FloorTransfer floor in tempftc.floors) { //Get sensors per floor SensorTransferCollection tempSTC = null; yield return(StartCoroutine(GetSensorByFloorId(floor.id, (SensorTransferCollection stc) => { tempSTC = stc; }))); PolygonQueryTransfer tempPQT = null; yield return(StartCoroutine(GetPolygonByFloorId(floor.id, (PolygonQueryTransfer pqt) => { tempPQT = pqt; }))); //Merge the floor,sensor and polygon transfer object into the Building obj. Floor tempFloor = Floor.CreateFromTransfer(floor); tempFloor.ImportSensors(tempSTC); tempFloor.ImportPolygons(tempPQT); buildingGo.ImportFloor(tempFloor); } } } callBack(buildingGo); }
private IEnumerator GetBuildingsByStreetName(string streetName, System.Action <BuildingTransferCollection> callBack) { string url = string.Format(APIUrls.BUILDING_BY_NAME, RequestUtils.PrepareBuildingName(streetName)); WWW www = new WWW(url, null, headers); yield return(www); BuildingTransferCollection result = null; if (string.IsNullOrEmpty(www.error)) { string response = www.text; result = JsonUtility.FromJson <BuildingTransferCollection> (RequestUtils.ArrayFormatter(ArrayFormatterType.buildings, response)); } callBack(result); }