public async Task<TerrainDescriptionOutput> QueryAsync(TerrainDescriptionQuery query) { Dictionary<TerrainDescriptionElementTypeEnum, TerrainDetailElementOutput> elementsDict = new Dictionary<TerrainDescriptionElementTypeEnum, TerrainDetailElementOutput>(); var queryArea = query.QueryArea; foreach (var elementDetail in query.RequestedElementDetails) { elementDetail.Resolution = TerrainCardinalResolution.ToSingletonResolution(elementDetail.Resolution); AssertResolutionIsCompilant(queryArea, elementDetail.Resolution); var type = elementDetail.Type; TerrainDetailElementOutput element = null; if (type == TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY) { element = await RetriveHeightArrayAsync(queryArea, elementDetail.Resolution, elementDetail.RequiredMergeStatus); //Debug.Log("E651: " + query.QueryArea+ $" and outUV is {element.UvBase}"); } else if (type == TerrainDescriptionElementTypeEnum.NORMAL_ARRAY) { element = await RetriveNormalArrayAsync(queryArea, elementDetail.Resolution, elementDetail.RequiredMergeStatus); } else { Preconditions.Fail("Tesselation map unsupported!!!"); } elementsDict[type] = element; } return new TerrainDescriptionOutput(elementsDict); }
public Task <TerrainDescriptionOutput> Query(TerrainDescriptionQuery query) { var tcs = new TaskCompletionSource <TerrainDescriptionOutput>(); PostAction(async() => tcs.SetResult(await ProcessQueryOrderAsync(query))); return(tcs.Task); }
public static SerializableTerrainDescriptionQuery CreateFrom(TerrainDescriptionQuery query) { return(new SerializableTerrainDescriptionQuery() { QueryArea = SerializableMyRectangle.CreateFrom(query.QueryArea), RequestedElementDetails = query.RequestedElementDetails }); }
public Task <TerrainDescriptionOutput> Query(TerrainDescriptionQuery query) { var outDict = new Dictionary <TerrainDescriptionElementTypeEnum, TerrainDetailElementOutput>(); foreach (var requestedDetail in query.RequestedElementDetails) { var requestedType = requestedDetail.Type; var alignedArea = RetriveAlignedArea(query.QueryArea.DownLeftPoint, requestedDetail.Resolution); var uv = RectangleUtils.CalculateSubelementUv(alignedArea, query.QueryArea); if (requestedType == TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY) { outDict.Add(requestedType, new TerrainDetailElementOutput() { TokenizedElement = new TokenizedTerrainDetailElement() { DetailElement = new TerrainDetailElement() { DetailArea = alignedArea, Resolution = requestedDetail.Resolution, Texture = _heightTexture }, Token = new TerrainDetailElementToken(alignedArea, requestedDetail.Resolution, requestedType, CornersMergeStatus.NOT_MERGED) }, UvBase = uv.ToRectangle() }); } else { outDict.Add(requestedType, new TerrainDetailElementOutput() { TokenizedElement = new TokenizedTerrainDetailElement() { DetailElement = new TerrainDetailElement() { DetailArea = alignedArea, Resolution = requestedDetail.Resolution, Texture = _normalTexture }, Token = new TerrainDetailElementToken(alignedArea, requestedDetail.Resolution, requestedType, CornersMergeStatus.NOT_MERGED) }, UvBase = uv.ToRectangle() }); } } return(TaskUtils.MyFromResult(new TerrainDescriptionOutput(outDict))); }
public Task <TerrainDescriptionOutput> Query(TerrainDescriptionQuery query) { var outDict = new Dictionary <TerrainDescriptionElementTypeEnum, TerrainDetailElementOutput>(); foreach (var requestedDetail in query.RequestedElementDetails) { var requestedType = requestedDetail.Type; if (requestedType == TerrainDescriptionElementTypeEnum.HEIGHT_ARRAY) { outDict.Add(requestedType, new TerrainDetailElementOutput() { TokenizedElement = new TokenizedTerrainDetailElement() { DetailElement = new TerrainDetailElement() { DetailArea = query.QueryArea, Resolution = requestedDetail.Resolution, Texture = _blankTexture }, Token = new TerrainDetailElementToken(query.QueryArea, requestedDetail.Resolution, requestedType, CornersMergeStatus.NOT_MERGED) }, UvBase = new MyRectangle(0, 0, 1, 1) }); } else { outDict.Add(requestedType, new TerrainDetailElementOutput() { TokenizedElement = new TokenizedTerrainDetailElement() { DetailElement = new TerrainDetailElement() { DetailArea = query.QueryArea, Resolution = requestedDetail.Resolution, Texture = _normalTexture }, Token = new TerrainDetailElementToken(query.QueryArea, requestedDetail.Resolution, requestedType, CornersMergeStatus.NOT_MERGED) }, UvBase = new MyRectangle(0, 0, 1, 1) }); } } return(TaskUtils.MyFromResult(new TerrainDescriptionOutput(outDict))); }
public Task <TerrainDescriptionOutput> Query(TerrainDescriptionQuery query) { Debug.Log("k55"); _allQueries.Add(query); return(_internalDb.Query(query)); }
private Task <TerrainDescriptionOutput> ProcessQueryOrderAsync(TerrainDescriptionQuery query) { return(_db.QueryAsync(query)); }