Cogs.Core
SinglePingIsoSurfacesTasks.h
1#pragma once
2#include <glm/glm.hpp>
3#include <glm/gtc/quaternion.hpp>
4#include <memory>
5#include <vector>
6#include "../Systems/DataSetSystem.h"
7
8namespace Cogs
9{
10 namespace Core
11 {
12 class Context;
13
14 namespace EchoSounder
15 {
16 struct BeamGroupComponent;
17 struct PingIsoComponent;
18 struct SinglePingIsoSurfacesData;
19 struct DataSetComponent;
20 struct DataSetData;
21
22 struct SinglePingIsoSurfacesPersistent;
23
25 {
26 // Copied in constructor
27 std::shared_ptr<SinglePingIsoSurfacesPersistent> persistent;
28 Context* context;
29 uint32_t index;
30 std::vector<float> thresholds;
31 bool flipOrientation;
32 bool beamMinorClosed;
33 PingMetaData metaPing;
34 uint32_t layers;
35 uint32_t beamCount;
36 uint32_t beamMinorCount;
37 uint32_t beamMajorCount;
38 uint32_t sampleCount;
39 uint32_t coordSys;
40 float capSeparation;
41 float seabedClipOffset;
42 float depthOffset;
43 float depthStep;
44 bool logarithmicUnit;
45 float depthStepResample;
46 float beamStepResample;
47 float maxBeamUpsample;
48 float overflowThreshold;
49 float minVerticalDepth;
50 float maxVerticalDepth;
51
52 std::vector<float> directionX; // Separated, major.
53 std::vector<float> directionY; // Separated, minor.
54
55 std::vector<glm::vec3> rayDir;
56 std::vector<float> depths;
57 int sampleCountResample = 0;
58
60 const PingIsoComponent* isoComp, const SinglePingIsoSurfacesData* isoData,
61 const BeamGroupComponent* groupComp,
62 const DataSetComponent* dataComp, const DataSetData* dataData);
63
64 // Working memory
65 std::vector<float> linearThresholds;
66 std::vector<int> vertexOffsets;
67 std::vector<int> vertexCounts;
68 std::vector<int> indexOffsets;
69 std::vector<int> indexCounts;
70 std::vector<int> cellCounts;
71
72 void operator()();
73 };
74 }
75 }
76}
A Context instance contains all the services, systems and runtime components needed to use Cogs.
Definition: Context.h:83
Contains all Cogs related functionality.
Definition: FieldSetter.h:23