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 GetFloorsByBuildingId(int buildingId, System.Action <FloorTransferCollection> callBack) { string url = string.Format(APIUrls.FLOOR_BY_BUILDING_ID, buildingId); WWW www = new WWW(url, null, headers); yield return(www); FloorTransferCollection result = null; if (string.IsNullOrEmpty(www.error)) { string response = www.text; result = JsonUtility.FromJson <FloorTransferCollection> (RequestUtils.ArrayFormatter(ArrayFormatterType.floors, response)); } callBack(result); }