PeriDyno 1.0.0
Loading...
Searching...
No Matches
Merge.cu
Go to the documentation of this file.
1#include "Merge.h"
2#include "Topology/PointSet.h"
3#include "GLSurfaceVisualModule.h"
4#include "GLWireframeVisualModule.h"
5#include "GLPointVisualModule.h"
6
7
8
9namespace dyno
10{
11 template<typename TDataType>
12 Merge<TDataType>::Merge()
13
14 {
15
16 this->stateTriangleSet()->setDataPtr(std::make_shared<TriangleSet<TDataType>>());
17
18 auto glModule = std::make_shared<GLSurfaceVisualModule>();
19 glModule->setColor(Color(0.8f, 0.3f, 0.25f));
20 glModule->setVisible(true);
21 this->stateTriangleSet()->connect(glModule->inTriangleSet());
22 this->graphicsPipeline()->pushModule(glModule);
23
24 this->inTriangleSet01()->tagOptional(true);
25 this->inTriangleSet02()->tagOptional(true);
26 this->inTriangleSet03()->tagOptional(true);
27 this->inTriangleSet04()->tagOptional(true);
28
29 auto ptModule = std::make_shared<GLPointVisualModule>();
30 ptModule->setVisible(false);
31 this->stateTriangleSet()->connect(ptModule->inPointSet());
32 this->graphicsPipeline()->pushModule(ptModule);
33 ptModule->varPointSize()->setValue(0.01);
34
35 this->stateTriangleSet()->promoteOuput();
36 }
37
38 template<typename TDataType>
39 void Merge<TDataType>::resetStates()
40 {
41 MergeGPU();
42 }
43 template<typename TDataType>
44 void Merge<TDataType>::preUpdateStates()
45 {
46 Node::preUpdateStates();
47 if (this->varUpdateMode()->getData() == UpdateMode::Tick)
48 {
49 MergeGPU();
50 }
51 }
52
53 template<typename TDataType>
54 void Merge<TDataType>::MergeGPU()
55 {
56 auto tri01 = this->inTriangleSet01()->getDataPtr();
57 auto tri02 = this->inTriangleSet02()->getDataPtr();
58 auto tri03 = this->inTriangleSet03()->getDataPtr();
59 auto tri04 = this->inTriangleSet04()->getDataPtr();
60
61 std::shared_ptr<TriangleSet<TDataType>> temp = std::make_shared<TriangleSet<DataType3f>>();
62
63 auto topo = this->stateTriangleSet()->getDataPtr();
64 if (tri01 != NULL)
65 {
66 temp->copyFrom(*temp->merge(*tri01));
67 printf("Merge TriangleSet01\n");
68 }
69 if (tri02 != NULL)
70 {
71 temp->copyFrom(*temp->merge(*tri02));
72 printf("Merge TriangleSet02\n");
73 }
74 if (tri03 != NULL)
75 {
76 temp->copyFrom(*temp->merge(*tri03));
77 printf("Merge TriangleSet03\n");
78 }
79 if (tri04 != NULL)
80 {
81 temp->copyFrom(*temp->merge(*tri04));
82 printf("Merge TriangleSet04\n");
83 }
84 topo->copyFrom(*temp);
85 }
86
87 DEFINE_CLASS(Merge);
88}