From 0ecf16d22a4ba4eb242a74cac98c96eb74c3ee2c Mon Sep 17 00:00:00 2001 From: Miikka Heikkinen Date: Fri, 10 Jun 2016 10:35:29 +0300 Subject: Change group box to always tightly contain group contents MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added drag handle for actual group/mesh translation point for groups/meshes that are not centered around their translation point. For additional clarity, added a line between the selection box translation handle and group/mesh translation point handle. Change-Id: I25146a68472f3f1b3703cbbcc1a60464d4c87260 Reviewed-by: Tomi Korpipää --- editorlib/src/editorutils.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'editorlib/src/editorutils.cpp') diff --git a/editorlib/src/editorutils.cpp b/editorlib/src/editorutils.cpp index 37c1cab..2fac868 100644 --- a/editorlib/src/editorutils.cpp +++ b/editorlib/src/editorutils.cpp @@ -615,6 +615,43 @@ Qt3DRender::QGeometryRenderer *EditorUtils::createWireframePlaneMesh(int lineCou return planeMesh; } +Qt3DRender::QGeometryRenderer *EditorUtils::createSingleLineMesh() +{ + Qt3DRender::QGeometryRenderer *mesh = new Qt3DRender::QGeometryRenderer(); + Qt3DRender::QGeometry *geometry = new Qt3DRender::QGeometry(mesh); + Qt3DRender::QBuffer *dataBuffer = new Qt3DRender::QBuffer(Qt3DRender::QBuffer::VertexBuffer, + geometry); + QByteArray vertexBufferData; + QVector vertices; + + vertices.resize(2); + vertexBufferData.resize(vertices.size() * 3 * sizeof(float)); + + vertices[0] = QVector3D(0.0f, 0.0f, 0.0f); + vertices[1] = QVector3D(0.0f, 0.0f, 1.0f); + + float *rawVertexArray = reinterpret_cast(vertexBufferData.data()); + int idx = 0; + Q_FOREACH (const QVector3D &v, vertices) { + rawVertexArray[idx++] = v.x(); + rawVertexArray[idx++] = v.y(); + rawVertexArray[idx++] = v.z(); + } + + dataBuffer->setData(vertexBufferData); + + addPositionAttributeToGeometry(geometry, dataBuffer, 2); + + mesh->setInstanceCount(1); + mesh->setIndexOffset(0); + mesh->setFirstInstance(0); + mesh->setVertexCount(2); + mesh->setPrimitiveType(Qt3DRender::QGeometryRenderer::Lines); + mesh->setGeometry(geometry); + + return mesh; +} + Qt3DRender::QGeometryRenderer *EditorUtils::createDefaultCustomMesh() { Qt3DRender::QMesh *customMesh = new Qt3DRender::QMesh(); -- cgit v1.2.3