PeriDyno 1.0.0
Loading...
Searching...
No Matches
Pipeline.h
Go to the documentation of this file.
1
16#pragma once
17#include "Module.h"
18
19namespace dyno
20{
21 class Node;
22
23 class Pipeline : public Module
24 {
25 public:
26 Pipeline(Node* node);
27 virtual ~Pipeline();
28
31
32 void pushModule(std::shared_ptr<Module> m);
33
34 void popModule(std::shared_ptr<Module> m);
35
36 template<class TModule>
37 std::shared_ptr<TModule> createModule()
38 {
39 std::shared_ptr<TModule> m = std::make_shared<TModule>();
40 this->pushModule(m);
41
42 return m;
43 }
44
48 template<class TModule>
49 std::shared_ptr<TModule> findFirstModule()
50 {
51 auto& modules = this->activeModules();
52 for (auto m : modules)
53 {
54 auto child = TypeInfo::cast<TModule>(m);
55 if (child != nullptr)
56 return child;
57 }
58 return nullptr;
59 }
60
61 // clear pipeline and module
62 void clear();
63
64 void pushPersistentModule(std::shared_ptr<Module> m);
65
66 std::list<std::shared_ptr<Module>>& activeModules() {
67 if (mModuleUpdated) {
69 }
70
71 return mModuleList;
72 }
73
74 std::map<ObjectId, std::shared_ptr<Module>>& allModules()
75 {
76 return mModuleMap;
77 }
78
79 void enable();
80 void disable();
81
83
84 void forceUpdate();
85
90
94 void demoteOutputFromNode(FBase* base);
95
96 protected:
97 void preprocess() final;
98 void updateImpl() override;
99
100 bool requireUpdate() final;
101
102 virtual bool printDebugInfo();
103
104 private:
105 void reconstructPipeline();
106
107 private:
108 bool mModuleUpdated = false;
109 bool mUpdateEnabled = true;
110
111 std::map<ObjectId, std::shared_ptr<Module>> mModuleMap;
112 std::list<std::shared_ptr<Module>> mModuleList;
113
114 std::list<std::shared_ptr<Module>> mPersistentModule;
115
116 bool mTiming = false;
117 };
118}
119
Module(std::string name="default")
Definition Module.cpp:7
std::list< std::shared_ptr< Module > > mModuleList
Definition Pipeline.h:112
uint sizeOfDynamicModules()
Definition Pipeline.cpp:29
std::map< ObjectId, std::shared_ptr< Module > > mModuleMap
Definition Pipeline.h:111
uint sizeOfPersistentModules()
Definition Pipeline.cpp:34
std::map< ObjectId, std::shared_ptr< Module > > & allModules()
Definition Pipeline.h:74
void pushModule(std::shared_ptr< Module > m)
Definition Pipeline.cpp:39
virtual bool printDebugInfo()
Definition Pipeline.cpp:148
void updateExecutionQueue()
Definition Pipeline.cpp:94
FBase * promoteOutputToNode(FBase *base)
Definition Pipeline.cpp:153
void preprocess() final
Definition Pipeline.cpp:106
void pushPersistentModule(std::shared_ptr< Module > m)
Definition Pipeline.cpp:76
bool mUpdateEnabled
Definition Pipeline.h:109
bool requireUpdate() final
Definition Pipeline.cpp:143
std::shared_ptr< TModule > findFirstModule()
Definition Pipeline.h:49
void demoteOutputFromNode(FBase *base)
Definition Pipeline.cpp:163
std::list< std::shared_ptr< Module > > mPersistentModule
Definition Pipeline.h:114
void updateImpl() override
Definition Pipeline.cpp:114
std::shared_ptr< TModule > createModule()
Definition Pipeline.h:37
bool mModuleUpdated
Definition Pipeline.h:108
Pipeline(Node *node)
Definition Pipeline.cpp:15
void popModule(std::shared_ptr< Module > m)
Definition Pipeline.cpp:51
void reconstructPipeline()
Definition Pipeline.cpp:171
void forceUpdate()
Definition Pipeline.cpp:99
std::list< std::shared_ptr< Module > > & activeModules()
Definition Pipeline.h:66
virtual ~Pipeline()
Definition Pipeline.cpp:22
TA * cast(TB *b)
Definition Typedef.inl:286
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25
uint32_t ObjectId
Definition Object.h:110
unsigned int uint
Definition VkProgram.h:14