/*! Removes the specified mesh by name from the vector. */ bool SLNode::removeMesh(SLstring name) { assert(name!=""); SLMesh* found = findMesh(name); if (found) return removeMesh(found); return false; }
void MeshViewController::onSignal(sg_gui::VolumePointSelected& signal) { unsigned int x, y, z; _labels->getDiscreteCoordinates( signal.position().x(), signal.position().y(), signal.position().z(), x, y, z); float label = (*_labels)(x, y, z); if (label == 0) return; LOG_DEBUG(meshviewcontrollerlog) << "selected label " << label << std::endl; if (_meshes->contains(label)) { removeMesh(label); } else { addMesh(label); } send<sg_gui::SetMeshes>(_meshes); }
void MeshEditor::initTopRow(QHBoxLayout *topRow) { addButton = new QPushButton("+", this); addButton->setFixedHeight(22); addButton->setFixedWidth(22); removeButton = new QPushButton("-", this); removeButton->setFixedHeight(22); removeButton->setFixedWidth(22); meshBox = new QComboBox(this); meshBox->setEditable(true); meshBox->setInsertPolicy(QComboBox::NoInsert); meshBox->setItemDelegate(new ItemDelegate()); topRow->addWidget(meshBox);; topRow->addWidget(removeButton); topRow->addWidget(addButton); topRow->setAlignment(Qt::AlignTop); connect(meshBox, SIGNAL(editTextChanged(const QString &)), this, SLOT(renameMesh(const QString &))); connect(addButton, SIGNAL(clicked()), this, SLOT(addMesh())); connect(removeButton, SIGNAL(clicked()), this, SLOT(removeMesh())); connect(meshBox, SIGNAL(currentIndexChanged(int)), this, SLOT(selectMesh())); }
void MeshWidget::checkChanged(int b){ if (b){ //QMessageBox::about(this, "Adding a mesh", "This is a signal/slot sample with one parameter."); emit addMesh(file); } else{ emit removeMesh(file); } }
MshTabWidget::MshTabWidget( QWidget* parent /*= 0*/ ) : QWidget(parent) { setupUi(this); connect(this->addMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(addMesh())); connect(this->saveMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(writeToFile())); connect(this->removeMeshPushButton, SIGNAL(clicked()), this->treeView, SLOT(removeMesh())); connect(this->treeView, SIGNAL(enableSaveButton(bool)), this, SLOT(enableSaveButton(bool))); connect(this->treeView, SIGNAL(enableRemoveButton(bool)), this, SLOT(enableRemoveButton(bool))); }
ChunkBase::~ChunkBase() { destroyEntity(); destroyPhysicsBody(); removeMesh(); if (mVertices != 0) { delete[] mVertices; } if (mIndices != 0) { delete[] mIndices; } }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), m_ui(new Ui::MainWindow), m_materialDock(new MaterialDock(this)), m_transformDock(new TransformDock(this)), m_meshDock(new MeshDock(this)), m_textureDialog(new TextureDialog(this)), m_UVEditor(new UVEditor(this)), m_settings(new QSettings(this)), m_shaderSignalMapper(new QSignalMapper(this)), m_actionEnableUserShaders(nullptr), m_actionLocateUserShaders(nullptr), m_actionReloadUserShaders(nullptr) { m_ui->setupUi(this); m_pathImport = m_settings->value(WMIT_SETTINGS_IMPORTVAL, QDir::currentPath()).toString(); m_pathExport = m_settings->value(WMIT_SETTINGS_EXPORTVAL, QDir::currentPath()).toString(); m_materialDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_materialDock->hide(); m_transformDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_transformDock->hide(); m_meshDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_meshDock->hide(); m_UVEditor->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_UVEditor->hide(); addDockWidget(Qt::RightDockWidgetArea, m_materialDock, Qt::Horizontal); addDockWidget(Qt::RightDockWidgetArea, m_transformDock, Qt::Horizontal); addDockWidget(Qt::RightDockWidgetArea, m_meshDock, Qt::Horizontal); addDockWidget(Qt::LeftDockWidgetArea, m_UVEditor, Qt::Horizontal); // UI is ready and now we can load window previous state (will do nothing if state wasn't saved). // 3DView specifics are loaded later on viewerInitialized event resize(QSettings().value("Window/size", size()).toSize()); move(QSettings().value("Window/position", pos()).toPoint()); restoreState(QSettings().value("Window/state", QByteArray()).toByteArray()); m_ui->actionOpen->setIcon(QIcon::fromTheme("document-open", style()->standardIcon(QStyle::SP_DirOpenIcon))); m_ui->menuOpenRecent->setIcon(QIcon::fromTheme("document-open-recent")); m_ui->actionClearRecentFiles->setIcon(QIcon::fromTheme("edit-clear-list")); m_ui->actionSave->setIcon(QIcon::fromTheme("document-save", style()->standardIcon(QStyle::SP_DialogSaveButton))); m_ui->actionSaveAs->setIcon(QIcon::fromTheme("document-save-as")); m_ui->actionClose->setIcon(QIcon::fromTheme("window-close")); m_ui->actionExit->setIcon(QIcon::fromTheme("application-exit", style()->standardIcon(QStyle::SP_DialogCloseButton))); m_ui->actionAboutApplication->setIcon(QIcon::fromTheme("help-about")); connect(m_ui->centralWidget, SIGNAL(viewerInitialized()), this, SLOT(viewerInitialized())); connect(m_ui->menuFile, SIGNAL(aboutToShow()), this, SLOT(updateRecentFilesMenu())); connect(m_ui->actionOpen, SIGNAL(triggered()), this, SLOT(actionOpen())); connect(m_ui->menuOpenRecent, SIGNAL(triggered(QAction*)), this, SLOT(actionOpenRecent(QAction*))); connect(m_ui->actionClearRecentFiles, SIGNAL(triggered()), this, SLOT(actionClearRecentFiles())); connect(m_ui->actionClear_Missing_Files, SIGNAL(triggered()), this, SLOT(actionClearMissingFiles())); connect(m_ui->actionSave, SIGNAL(triggered()), this, SLOT(actionSave())); connect(m_ui->actionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); connect(m_ui->actionClose, SIGNAL(triggered()), this, SLOT(actionClose())); connect(m_ui->actionUVEditor, SIGNAL(toggled(bool)), m_UVEditor, SLOT(setVisible(bool))); connect(m_ui->actionSetupTextures, SIGNAL(triggered()), this, SLOT(actionSetupTextures())); connect(m_ui->actionAppendModel, SIGNAL(triggered()), this, SLOT(actionAppendModel())); connect(m_ui->actionImport_Animation, SIGNAL(triggered()), this, SLOT(actionImport_Animation())); connect(m_ui->actionImport_Connectors, SIGNAL(triggered()), this, SLOT(actionImport_Connectors())); connect(m_ui->actionShowAxes, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setAxisIsDrawn(bool))); connect(m_ui->actionShowGrid, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setGridIsDrawn(bool))); connect(m_ui->actionShowLightSource, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setDrawLightSource(bool))); connect(m_ui->actionLink_Light_Source_To_Camera, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setLinkLightToCamera(bool))); connect(m_ui->actionAnimate, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setAnimateState(bool))); connect(m_ui->actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt())); connect(m_ui->actionSetTeamColor, SIGNAL(triggered()), this, SLOT(actionSetTeamColor())); /// Material dock m_materialDock->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_M)); m_ui->menuModel->insertAction(m_ui->menuModel->actions().value(0) ,m_materialDock->toggleViewAction()); connect(m_materialDock, SIGNAL(materialChanged(WZMaterial)), this, SLOT(materialChangedFromUI(WZMaterial))); /// Transform dock m_transformDock->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_T)); m_ui->menuModel->insertAction(m_ui->menuModel->actions().value(0) ,m_transformDock->toggleViewAction()); // transformations connect(m_transformDock, SIGNAL(scaleXYZChanged(double)), this, SLOT(scaleXYZChanged(double))); connect(m_transformDock, SIGNAL(scaleXChanged(double)), this, SLOT(scaleXChanged(double))); connect(m_transformDock, SIGNAL(scaleYChanged(double)), this, SLOT(scaleYChanged(double))); connect(m_transformDock, SIGNAL(scaleZChanged(double)), this, SLOT(scaleZChanged(double))); connect(m_transformDock, SIGNAL(reverseWindings()), this, SLOT(reverseWindings())); connect(m_transformDock, SIGNAL(flipNormals()), this, SLOT(flipNormals())); connect(m_transformDock, SIGNAL(applyTransformations()), &m_model, SLOT(applyTransformations())); connect(m_transformDock, SIGNAL(changeActiveMesh(int)), &m_model, SLOT(setActiveMesh(int))); connect(m_transformDock, SIGNAL(recalculateTB()), &m_model, SLOT(slotRecalculateTB())); connect(m_transformDock, SIGNAL(removeMesh()), this, SLOT(removeMesh())); connect(m_transformDock, SIGNAL(mirrorAxis(int)), this, SLOT(mirrorAxis(int))); connect(m_transformDock, SIGNAL(centerMesh(int)), this, SLOT(centerMesh(int))); connect(&m_model, SIGNAL(meshCountChanged(int,QStringList)), m_transformDock, SLOT(setMeshCount(int,QStringList))); /// Mesh dock m_meshDock->toggleViewAction()->setShortcut(QKeySequence(Qt::Key_M)); m_ui->menuModel->insertAction(m_ui->menuModel->actions().value(0), m_meshDock->toggleViewAction()); connect(m_meshDock, SIGNAL(connectorsWereUpdated()), this, SLOT(updateModelRender())); connect(&m_model, SIGNAL(meshCountChanged(int,QStringList)), m_meshDock, SLOT(setMeshCount(int,QStringList))); /// Reset state clear(); }
void Molecule::removeMesh(unsigned long id) { Q_D(Molecule); if (id < d->meshes.size()) removeMesh(d->meshes[id]); }
void kore::ResourceManager::removeMesh(const Mesh* mesh) { removeMesh(mesh->getID()); }
void ChunkBase::generateMesh() { if (!mIsModified) return; generateVertices(); if (isEmpty) { return; } uint32_t numVertices, numIndices; if (mNumVertices > DefaultFaces * 4) { // more vertices than the default buffer can hold -> allocate new one; if (mVertexBufferCreated) { removeMesh(); } numVertices = mNumVertices; numIndices = mNumIndices; } else { numVertices = DefaultFaces * 4; numIndices = DefaultFaces * 6; } if (!mVertexBufferCreated) { mMeshPtr = Ogre::MeshManager::getSingleton().createManual(mChunkName, "Game"); Ogre::SubMesh* sub = mMeshPtr->createSubMesh(); /// Create vertex data structure for 8 vertices shared between submeshes mMeshPtr->sharedVertexData = new Ogre::VertexData(); mMeshPtr->sharedVertexData->vertexCount = mNumVertices; /// Create declaration (memory format) of vertex data Ogre::VertexDeclaration* decl = mMeshPtr->sharedVertexData->vertexDeclaration; size_t offset = 0; // 1st buffer decl->addElement(0, offset, Ogre::VET_FLOAT3, Ogre::VES_POSITION); offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3); decl->addElement(0, offset, Ogre::VET_FLOAT3, Ogre::VES_NORMAL); offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT3); decl->addElement(0, offset, Ogre::VET_FLOAT2, Ogre::VES_TEXTURE_COORDINATES); offset += Ogre::VertexElement::getTypeSize(Ogre::VET_FLOAT2); /// Allocate vertex buffer of the requested number of vertices (vertexCount) and bytes per vertex (offset) Ogre::HardwareVertexBufferSharedPtr vbuf = Ogre::HardwareBufferManager::getSingleton(). createVertexBuffer(offset, numVertices, Ogre::HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE); /// Upload the vertex data to the card vbuf->writeData(0, (decl->getVertexSize(0) * mNumVertices), mVertices, true); /// Set vertex buffer binding so buffer 0 is bound to our vertex buffer Ogre::VertexBufferBinding* bind = mMeshPtr->sharedVertexData->vertexBufferBinding; bind->setBinding(0, vbuf); /// Allocate index buffer of the requested number of vertices (ibufCount) Ogre::HardwareIndexBufferSharedPtr ibuf = Ogre::HardwareBufferManager::getSingleton(). createIndexBuffer(Ogre::HardwareIndexBuffer::IT_16BIT, numIndices, Ogre::HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE); /// Upload the index data to the card ibuf->writeData(0, (ibuf->getIndexSize() * mNumIndices), mIndices, true); /// Set parameters of the submesh sub->indexData->indexBuffer = ibuf; sub->indexData->indexCount = mNumIndices; /// Set bounding information (for culling) mMeshPtr->_setBounds(Ogre::AxisAlignedBox(0, 0, 0, Ogre::Real(ChunkSizeX), Ogre::Real(mHighestCube), Ogre::Real(ChunkSizeZ))); mMeshPtr->_setBoundingSphereRadius((Ogre::Real) std::sqrt((float) (2 * 16 * 16 + 128 * 128))); /// Notify -Mesh object that it has been loaded mMeshPtr->load(); mVertexBufferCreated = true; } else { Ogre::VertexDeclaration* decl = mMeshPtr->sharedVertexData->vertexDeclaration; mMeshPtr->sharedVertexData->vertexCount = mNumVertices; Ogre::SubMesh* sub = mMeshPtr->getSubMesh(0); sub->indexData->indexCount = mNumIndices; /// Upload the new vertex data to the card Ogre::HardwareVertexBufferSharedPtr vbuf = mMeshPtr->sharedVertexData->vertexBufferBinding->getBuffer(0); vbuf->writeData(0, (decl->getVertexSize(0) * mNumVertices), mVertices, true); /// Upload the index data to the card Ogre::HardwareIndexBufferSharedPtr ibuf = sub->indexData->indexBuffer; ibuf->writeData(0, (ibuf->getIndexSize() * mNumIndices), mIndices, true); mMeshPtr->_setBounds(Ogre::AxisAlignedBox(0, 0, 0, Ogre::Real(ChunkSizeX), Ogre::Real(mHighestCube), Ogre::Real(ChunkSizeZ))); mMeshPtr->load(); } }