PeriDyno 1.2.1
Loading...
Searching...
No Matches
Module.h
Go to the documentation of this file.
1
16#pragma once
17#include "Platform.h"
18#include <memory>
19#include <vector>
20#include <cassert>
21#include <iostream>
22#include "OBase.h"
23#include "Log.h"
24#include "DataTypes.h"
25#include "DeclareEnum.h"
26#include "DeclareField.h"
27#include "ModulePort.h"
28#include "FCallbackFunc.h"
29#include "FieldTypes.h"
30
31namespace dyno
32{
33 class SceneGraph;
34 class Node;
35
36 class Module : public OBase
37 {
38 public:
39 Module(std::string name = "default");
40
41 ~Module(void) override;
42
43 bool initialize();
44
45 void update();
46
47 void setName(std::string name);
48
49 std::string getName() override;
50
54 virtual void setParentNode(Node* node);
55
62
69
70 bool isInitialized();
71
72 virtual std::string getModuleType() { return "Default"; }
73
74 bool attachField(FBase* field, std::string name, std::string desc, bool autoDestroy = true) override;
75
82 bool isInputComplete();
83 bool isOutputCompete();
84
85 bool connect(ModulePort* nPort);
86 bool disconnect(ModulePort* nPort);
87
88 virtual bool allowImported() { return this->captionVisible(); }
89 virtual bool allowExported() { return this->captionVisible(); }
90
91 std::vector<ModulePort*>& getImportModules() { return mImportModules; }
92 std::vector<ModulePort*>& getExportModules() { return mExportModules; }
93
94 public:
95 DEF_VAR(bool, ForceUpdate, false, "");
96
103 void setUpdateAlways(bool b);
104
105 //protected:
106 //TODO: remove this step
107 virtual bool initializeImpl();
108 virtual void updateImpl();
109
110 protected:
111 virtual void preprocess() {};
112
113 virtual void postprocess() {};
114
115 virtual bool validateInputs();
116 virtual bool validateOutputs();
117
118 virtual bool requireUpdate();
119
124 virtual void updateStarted();
125 virtual void updateEnded();
126
127 bool appendExportModule(ModulePort* nodePort);
128 bool removeExportModule(ModulePort* nodePort);
129
130 private:
131 bool addModulePort(ModulePort* port);
132
133 private:
135 std::string m_module_name;
137
138 std::vector<ModulePort*> mImportModules;
139
140 std::vector<ModulePort*> mExportModules;
141
145 public:
147 private:
149 std::string("Ancestor") + std::string("(s)"),
150 "Ancestors",
151 this);
152
153 friend class ModulePort;
154 };
155}
virtual void updateImpl()
Definition Module.cpp:279
Node * m_node
Definition Module.h:134
SceneGraph * getSceneGraph()
Definition Module.cpp:255
void setName(std::string name)
Definition Module.cpp:230
bool isInitialized()
Definition Module.cpp:269
virtual bool validateOutputs()
Definition Module.cpp:202
virtual bool allowImported()
Definition Module.h:88
MultipleModulePort< Module > mAncestors
Definition Module.h:148
~Module(void) override
Definition Module.cpp:17
virtual void setParentNode(Node *node)
Set the parent node.
Definition Module.cpp:236
virtual std::string getModuleType()
Definition Module.h:72
Node * getParentNode()
Definition Module.cpp:246
friend class ModulePort
Definition Module.h:153
virtual void preprocess()
Definition Module.h:111
virtual bool allowExported()
Definition Module.h:89
std::vector< ModulePort * > mExportModules
Definition Module.h:140
bool isOutputCompete()
Definition Module.cpp:117
void setUpdateAlways(bool b)
Set the update strategy for the module.
Definition Module.cpp:264
void update()
Definition Module.cpp:34
virtual void postprocess()
Definition Module.h:113
bool initialize()
Definition Module.cpp:23
virtual bool initializeImpl()
Definition Module.cpp:274
bool appendExportModule(ModulePort *nodePort)
Definition Module.cpp:162
bool isInputComplete()
Check the completeness of input fields.
Definition Module.cpp:94
bool connect(ModulePort *nPort)
Definition Module.cpp:139
std::string getName() override
Definition Module.cpp:241
virtual void updateStarted()
Two functions called at the beginning and end of update() used for debug.
Definition Module.cpp:154
bool addModulePort(ModulePort *port)
Definition Module.cpp:195
Module(std::string name="default")
Definition Module.cpp:9
std::vector< ModulePort * > & getExportModules()
Definition Module.h:92
std::vector< ModulePort * > & getImportModules()
Definition Module.h:91
std::vector< ModulePort * > mImportModules
Definition Module.h:138
bool removeExportModule(ModulePort *nodePort)
Definition Module.cpp:176
virtual bool requireUpdate()
Definition Module.cpp:207
DEF_VAR(bool, ForceUpdate, false, "")
std::string m_module_name
Definition Module.h:135
bool disconnect(ModulePort *nPort)
Definition Module.cpp:149
virtual void updateEnded()
Definition Module.cpp:158
virtual bool validateInputs()
Definition Module.cpp:89
MultipleModulePort< Module > * importModules()
Used to ensure modules can be executed in the correct order.
Definition Module.h:146
bool attachField(FBase *field, std::string name, std::string desc, bool autoDestroy=true) override
Attach a field to Base.
Definition Module.cpp:283
bool m_initialized
Definition Module.h:136
Input ports for Module.
Definition ModulePort.h:38
virtual bool captionVisible()
Whether to hide the caption in the GUI.
Definition OBase.cpp:24
This is an implementation of AdditiveCCD based on peridyno.
Definition Array.h:25