|
@@ -4,8 +4,7 @@
|
|
|
// Include modules
|
|
|
#include "OSGWidget.hpp"
|
|
|
#include "defaults.hpp"
|
|
|
-#include "resources.hpp"
|
|
|
-#include "MeshTools.hpp"
|
|
|
+#include "MainWindow.hpp"
|
|
|
|
|
|
// Include dependencies
|
|
|
#include <osgUtil/MeshOptimizers>
|
|
@@ -68,8 +67,8 @@ void PointShape::setVisibility(bool mode) {
|
|
|
|
|
|
void PointShape::setColor(osg::Vec4 color) {
|
|
|
_shape->setColor(color);
|
|
|
- if (_threadMesh) {
|
|
|
- _threadMesh->setColor(color);
|
|
|
+ if (_thread) {
|
|
|
+ OSGWidget::fixMaterialState(_thread, &color);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -95,33 +94,11 @@ void PointShape::setupSteamVRTrack(SteamVRTrackSettings steamVrTrackSettings) {
|
|
|
_shape->setColor(osg::Vec4(1.0f, 1.0f, 1.0f, 0.2f));
|
|
|
_geode->addDrawable(_shape.get());
|
|
|
|
|
|
- std::vector<Lib3MF::sPosition> verticesBuffer;
|
|
|
- std::vector<Lib3MF::sTriangle> triangleBuffer;
|
|
|
- for (unsigned int i = 0; i < sizeof(steamvrthread_VERTICES) / sizeof(float); i += 3) {
|
|
|
- Lib3MF::sPosition vertex = {steamvrthread_VERTICES[i], steamvrthread_VERTICES[i + 1], steamvrthread_VERTICES[i + 2]};
|
|
|
- verticesBuffer.push_back(vertex);
|
|
|
- }
|
|
|
- for (unsigned int i = 0; i < sizeof(steamvrthread_TRIANGLES) / sizeof(unsigned int); i += 3) {
|
|
|
- Lib3MF::sTriangle triangle = {steamvrthread_TRIANGLES[i], steamvrthread_TRIANGLES[i + 1], steamvrthread_TRIANGLES[i + 2]};
|
|
|
- triangleBuffer.push_back(triangle);
|
|
|
- }
|
|
|
-
|
|
|
- // Create osg style arrays
|
|
|
- osg::ref_ptr<osg::Vec3Array> vertices = new osg::Vec3Array;
|
|
|
- osg::ref_ptr<osg::Vec3Array> normals = new osg::Vec3Array;
|
|
|
- MeshTools::calculateNormals(verticesBuffer, triangleBuffer, vertices, normals);
|
|
|
-
|
|
|
- osg::ref_ptr<osg::Geode> thread = new osg::Geode;
|
|
|
- _threadMesh = new osg::Geometry;
|
|
|
- _threadMesh->setVertexArray(vertices.get());
|
|
|
- _threadMesh->setNormalArray(normals.get(), osg::Array::BIND_PER_VERTEX);
|
|
|
- _threadMesh->addPrimitiveSet(new osg::DrawArrays(osg::PrimitiveSet::TRIANGLES, 0, vertices->getNumElements()));
|
|
|
- _threadMesh->setColor(osg::Vec4(1.0f, 1.0f, 1.0f, 0.2f));
|
|
|
- osgUtil::optimizeMesh(_threadMesh.get());
|
|
|
-
|
|
|
- thread->addDrawable(_threadMesh.get());
|
|
|
- OSGWidget::fixMaterialState(thread);
|
|
|
- _screwMove->addChild(thread.get());
|
|
|
+ MainWindow::getInstance()->getOsgWidget()->loadSteamvrThread();
|
|
|
+ _thread = new osg::Geode;
|
|
|
+ _thread->addDrawable(MainWindow::getInstance()->getOsgWidget()->_steamvrThreadMesh.get());
|
|
|
+ OSGWidget::fixMaterialState(_thread);
|
|
|
+ _screwMove->addChild(_thread.get());
|
|
|
|
|
|
OSGWidget::fixMaterialState(_geode);
|
|
|
_selectionRotateGroup->addChild(_geode.get());
|