Cogs.Core
ClipmapQueryHandler.h
1#pragma once
2
3#include <vector>
4#include <mutex>
5
6#include "RenderContext.h"
7
8namespace Cogs
9{
10 class ClipmapLevel;
11
12 template<typename T>
14 {
15 void * userData;
16
17 std::vector<double> positions;
18 std::vector<T> results;
19
20 int resultStride;
21
22 int targetLevel;
23 int resultLevel;
24
25 std::vector<int> levels;
26 std::vector<int> requestedLevel;
27
28 std::vector<ClipmapLevel> * inputLevels;
29
30 WorldOptions worldOptions;
31
32 int queryLayer;
33 bool complete;
34
35 TerrainQueryCallback * callback;
36 };
37
40
41 struct RasterTileData;
42
44 {
45 public:
46 ClipmapQueryHandler() = default;
47
48 void initialize(std::vector<ClipmapLevel> * terrainLevels, std::vector<std::vector<ClipmapLevel>> * imagery);
49
50 void postInitialize();
51
52 void postRequest(TerrainQuery * query, TerrainQueryCallback callback, const WorldOptions & worldOptions);
53
54 void processQueries();
55
56 template<typename DataType>
57 void processQueries_T(std::vector<TerrainQueryData<DataType>> & queries);
58
59 template<typename DataType>
60 bool readData(const RasterTileData * tileData, const int x, const int y, const int width, DataType * result);
61
62 std::vector<ElevationQueryData> elevationQueries;
63 std::vector<ColorQueryData> colorQueries;
64
65 std::vector<ClipmapLevel> * terrainLevels = nullptr;
66 std::vector<std::vector<ClipmapLevel>> * imagery = nullptr;
67
68 std::mutex mutex;
69
70 private:
71 bool allowToProcessQueries = false;
72 };
73}
Contains all Cogs related functionality.
Definition: FieldSetter.h:23