2#include "Topology/PointSet.h"
3#include "GLSurfaceVisualModule.h"
4#include "GLWireframeVisualModule.h"
5#include "GLPointVisualModule.h"
11 template<typename TDataType>
12 Merge<TDataType>::Merge()
16 this->stateTriangleSet()->setDataPtr(std::make_shared<TriangleSet<TDataType>>());
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);
24 this->inTriangleSet01()->tagOptional(true);
25 this->inTriangleSet02()->tagOptional(true);
26 this->inTriangleSet03()->tagOptional(true);
27 this->inTriangleSet04()->tagOptional(true);
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);
35 this->stateTriangleSet()->promoteOuput();
38 template<typename TDataType>
39 void Merge<TDataType>::resetStates()
43 template<typename TDataType>
44 void Merge<TDataType>::preUpdateStates()
46 Node::preUpdateStates();
47 if (this->varUpdateMode()->getData() == UpdateMode::Tick)
53 template<typename TDataType>
54 void Merge<TDataType>::MergeGPU()
56 auto tri01 = this->inTriangleSet01()->getDataPtr();
57 auto tri02 = this->inTriangleSet02()->getDataPtr();
58 auto tri03 = this->inTriangleSet03()->getDataPtr();
59 auto tri04 = this->inTriangleSet04()->getDataPtr();
61 std::shared_ptr<TriangleSet<TDataType>> temp = std::make_shared<TriangleSet<DataType3f>>();
63 auto topo = this->stateTriangleSet()->getDataPtr();
66 temp->copyFrom(*temp->merge(*tri01));
67 printf("Merge TriangleSet01\n");
71 temp->copyFrom(*temp->merge(*tri02));
72 printf("Merge TriangleSet02\n");
76 temp->copyFrom(*temp->merge(*tri03));
77 printf("Merge TriangleSet03\n");
81 temp->copyFrom(*temp->merge(*tri04));
82 printf("Merge TriangleSet04\n");
84 topo->copyFrom(*temp);