diff options
| author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-06-10 10:35:29 +0300 |
|---|---|---|
| committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2016-06-10 08:18:00 +0000 |
| commit | 0ecf16d22a4ba4eb242a74cac98c96eb74c3ee2c (patch) | |
| tree | f68a7982c31c5e682af58c648d4309a1a80d4be5 /editorlib/src/editorutils.cpp | |
| parent | 43efeacee594a760398e8d16c1d258f361ab13d8 (diff) | |
Change group box to always tightly contain group contents
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ää <tomi.korpipaa@qt.io>
Diffstat (limited to 'editorlib/src/editorutils.cpp')
| -rw-r--r-- | editorlib/src/editorutils.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
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<QVector3D> 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<float *>(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(); |
