Cogs.Core
SwathPathResamplingPositions.h
1#pragma once
2
3#include "Foundation/Collections/FixedIndexQueue.h"
4
5#include <glm/glm.hpp>
6
7namespace Cogs
8{
9 namespace Core
10 {
11 class Context;
12
13 namespace EchoSounder
14 {
15 struct WindowComponent;
16 struct DataSetComponent;
17 struct DataSetData;
18 struct DataSetBuffers;
19 struct Config;
20
22 {
23 public:
24 struct Entry {
25 int64_t bufferTime;
26 uint32_t bufferIndex;
27 float fractional;
28 };
29
30 bool clear(float spacing, float maxPathUpsample);
31
32 bool update(const WindowComponent* winComp, const DataSetComponent* dataComp, const DataSetData* dataData);
33
34 const uint32_t getGeneration() const { return generation; }
35
36 const Collections::FixedIndexQueue<Entry, uint32_t>& getEntries() const { return entries; };
37
38 private:
40 float spacing = 0.0;
41 float maxPathUpsample = 5;
42 uint32_t maxSliceSkip = 5;
43 float minDt = 1.f / 5;
44 uint32_t maxSlices = 10000;
45 uint32_t bufferFront = 0;
46 uint32_t bufferBack = 0;
47 uint32_t generation = 0;
48 uint32_t dataSetClearGen = 0;
49
50 bool retireEvictedSlices(int64_t validTimeStart);
51
52 bool seedIfQueueEmpty(const Config& config, const DataSetBuffers& buffer);
53
54 bool includeMostRecentSlices(const Config& config, const DataSetBuffers& buffer);
55
56 bool trimEntries();
57
58 bool includeLessRecentSlices(const Config& config, const DataSetBuffers& buffer, int64_t validTimeStart);
59
60 std::pair<glm::vec3, float> entryPosition(const Config& config, const DataSetBuffers& buffer, uint32_t entryIx);
61
62 void printBuffer(const Config& config, const DataSetBuffers& buffer);
63
64 };
65
66 }
67 }
68}
Indexable queue where an element index is fixed through arbitrary enqueues and dequeues.
Contains all Cogs related functionality.
Definition: FieldSetter.h:23