FiberVISH 0.2
Fish - The Fiber Bundle API for the Vish Visualization Shell
GridAnemoneState.hpp
1#ifndef __FISH_POND_ANEMONEFISH_GridAnemoneState_HPP
2#define __FISH_POND_ANEMONEFISH_GridAnemoneState_HPP
3
4#include "Lanternfish.hpp"
5#include <future>
6#include <mutex>
7
8namespace Wizt
9{
10
15{
16 MemCore::RefPtr<Fiber::FragmentID> &myFragmentID() { return std::get<1>(*this); }
17 MemCore::RefPtr<Fiber::CreativeArrayBase> &myFragmentData() { return std::get<0>(*this); }
18
19 const MemCore::RefPtr<Fiber::FragmentID> &myFragmentID() const { return std::get<1>(*this); }
20 const MemCore::RefPtr<Fiber::CreativeArrayBase> &myFragmentData() const { return std::get<0>(*this); }
21
22 Fiber::SkeletonID LevelID;
23 vector<RefinedFragment> Refinement;
24
29 , LevelID(theID)
30 {}
31
34 , LevelID(theID)
35 {}
36};
37
38struct SeaBed;
39
40
42class anemonefish_API GridAnemoneState : public VObject::State
43 , public LanternFestival
45 , public AnemoneRenderFields
46{
47#ifdef SUPPORT_MULTIROOT_LEVELS
48 using mutex_t = std::mutex;
50
52
53public:
55 {
56 return RootLevel.size() == 0;
57 }
58#endif
59
60public:
61#warning "Review this mutex!"
62 mutable std::mutex CreationMutex;
63
65 SkeletonSet myVertexSkeletons;
66
72
78
79 std::string RenderStatistics;
80
81 double LastCPURenderTime = 0.0;
82
87 RenderAble::RenderTime retrieveTimers();
88
89 void clearTimeout();
90
95
98
99 virtual void reset();
100 void invalidate();
101
102 AnemoneRenderFields::AnemoneRenderStatus
103 initializeAnemoneFields(VRenderContext&theContext
104 , Anemone&RenderAnemone
108 , AnemoneRenderFields::getTextureUnit_t getTextureUnit
112 , const AnemoneRenderFields::anemone_data_validator_t&anemone_data_validator = {}
113 );
114
115
116 void addChildren(RefinedFragment&WhichFragment, const SkeletonSet::iterator&It);
117
118#ifdef SUPPORT_MULTIROOT_LEVELS
120#endif
121
122 bool retrieveRefinement() const;
123
124 int MinLevel() const;
125
126 int MaxLevel() const;
127
128 WeakPtr<Fiber::Skeleton> getVertexSkeleton(const SkeletonID&) const;
129 RefPtr<Fiber::Representation> getVertexRepresentation(const SkeletonID&) const;
130
131 GridAnemone::FieldHierarchy getPositions() const;
132};
133
134
135//using RenderTimerInfo = GridAnemone::GridAnemoneState::RenderTimerInfo;
136
137
138} // namespace Wizt
139
140
141#endif // __FISH_POND_ANEMONEFISH_GridAnemoneState_HPP
basic_string< char > string
Base class for multidimensional arrays that employ deferred storage, i.e.
Definition CreativeArrayBase.hpp:75
An iterator with an optional DataCreator, which is just a class to intercept creation of data along a...
Definition CreativeIterator.hpp:34
Identifier for Skeletons within a Grid.
Definition SkeletonID.hpp:24
Definition GridAnemoneState.hpp:46
std::string TimeoutMessage
If the last rendering was too slow, display this message.
Definition GridAnemoneState.hpp:77
long ReusedAnemones
Counting used of anemones, for performance measurements.
Definition GridAnemoneState.hpp:92
std::unordered_map< string, WeakPtr< RenderBasin::RenderTimer > > AnemoneFragmentTimers
List of available timers per fragment.
Definition GridAnemoneState.hpp:71
long NewAnemones
Counting newly created anemones, for performance measurements.
Definition GridAnemoneState.hpp:94
note: cannot derive from FloatingSkeletonRenderer as long as independent base class TriangleRenderer ...
Definition AnemoneRenderFields.hpp:14
Behavior is similar to a map<VCamera, RefPtr<Lanternfish>> but the number of entries here remains lim...
Definition Lanternfish.hpp:214
Definition Lanternfish.hpp:176
Internal temporary helper structure.
Definition GridAnemoneState.hpp:15
Definition SeaBed.hpp:36