diff --git a/CMakeLists.txt b/CMakeLists.txt index ecc5221..589a4b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -39,8 +39,6 @@ qt_add_qml_module(appscheincommander icons/nebelmaschine.png icons/rgbstrahler.png ui-icons/MaterialIcons-Regular.ttf - models/cube.obj - textures/cubetexture.png QML_FILES main.qml HomePage.qml @@ -63,6 +61,7 @@ qt_add_qml_module(appscheincommander AnimatedInputPanel.qml AnimatedStackView.qml Devices3dView.qml + DoubleSpinBox.qml ) add_definitions(-DCMAKE_PROJECT_VERSION=${CMAKE_PROJECT_VERSION}) diff --git a/Devices3dView.qml b/Devices3dView.qml index 6121aa3..4f846d5 100644 --- a/Devices3dView.qml +++ b/Devices3dView.qml @@ -3,63 +3,13 @@ import QtDataVisualization import QtQuick.Controls Item { - property int selectedAxisLabel: -1 - property real dragSpeedModifier: 100.0 + property real dragSpeedModifier: 25.0 property int currentMouseX: -1 property int currentMouseY: -1 property int previousMouseX: -1 property int previousMouseY: -1 - - ListModel { - id: graphModel - ListElement{ xPos: 0.0; yPos: 0.0; zPos: 0.0; rotation: "@0,0,0,0" } - ListElement{ xPos: 1.0; yPos: 1.0; zPos: 1.0; rotation: "@45,1,1,1" } - } - - Timer { - id: dataTimer - interval: 1 - running: true - repeat: true - property bool isIncreasing: true - property real rotationAngle: 0 - - function generateQuaternion() { - return "@" + Math.random() * 360 + "," + Math.random() + "," - + Math.random() + "," + Math.random() - } - - function appendRow() { - graphModel.append({"xPos": Math.random(), - "yPos": Math.random(), - "zPos": Math.random(), - "rotation": generateQuaternion() - }); - } - - //! [10] - onTriggered: { - rotationAngle = rotationAngle + 1 - qtCube.setRotationAxisAndAngle(Qt.vector3d(1,0,1), rotationAngle) - //! [10] - scatterSeries.setMeshAxisAndAngle(Qt.vector3d(1,1,1), rotationAngle) - if (isIncreasing) { - for (var i = 0; i < 10; i++) - appendRow() - if (graphModel.count > 2002) { - scatterGraph.theme = isabelleTheme - isIncreasing = false - } - } else { - graphModel.remove(2, 10); - if (graphModel.count == 2) { - scatterGraph.theme = dynamicColorTheme - isIncreasing = true - } - } - } - } + property alias model: itemModelScatterDataProxy.itemModel ThemeColor { id: dynamicColor @@ -108,6 +58,12 @@ Item { scene.activeCamera.yRotation: 45.0 scene.activeCamera.xRotation: 45.0 scene.activeCamera.zoomLevel: 75.0 + axisX.min: -10 + axisX.max: 10 + axisY.min: -10 + axisY.max: 10 + axisZ.min: -10 + axisZ.max: 10 Scatter3DSeries { id: scatterSeries @@ -115,25 +71,13 @@ Item { mesh: Abstract3DSeries.MeshCube ItemModelScatterDataProxy { - itemModel: graphModel - xPosRole: "xPos" - yPosRole: "yPos" - zPosRole: "zPos" - rotationRole: "rotation" + id: itemModelScatterDataProxy + xPosRole: "positionX" + yPosRole: "positionY" + zPosRole: "positionZ" + //rotationRole: "rotation" } } - //! [9] - customItemList: [ - Custom3DItem { - id: qtCube - meshFile: ":/scheincommander/models/cube.obj" - textureFile: ":/scheincommander/textures/cubetexture.png" - position: Qt.vector3d(0.65,0.35,0.65) - scaling: Qt.vector3d(0.3,0.3,0.3) - } - ] - //! [9] - //! [5] onSelectedElementChanged: { if (selectedElement >= AbstractGraph3D.ElementAxisXLabel && selectedElement <= AbstractGraph3D.ElementAxisZLabel) @@ -141,36 +85,27 @@ Item { else selectedAxisLabel = -1 } - //! [5] } - //! [1] MouseArea { anchors.fill: parent hoverEnabled: true acceptedButtons: Qt.LeftButton - //! [1] - //! [3] onPositionChanged: (mouse)=> { currentMouseX = mouse.x; currentMouseY = mouse.y; - //! [3] - //! [6] + if (pressed && selectedAxisLabel != -1) dragAxis(); - //! [6] - //! [4] + previousMouseX = currentMouseX; previousMouseY = currentMouseY; } - //! [4] - //! [2] onPressed: (mouse)=> { scatterGraph.scene.selectionQueryPosition = Qt.point(mouse.x, mouse.y); } - //! [2] onReleased: { // We need to clear mouse positions and selected axis, because touch devices cannot @@ -184,7 +119,6 @@ Item { } } - //! [7] function dragAxis() { // Do nothing if previous mouse position is uninitialized if (previousMouseX === -1) @@ -235,11 +169,10 @@ Item { break } } - //! [7] Button { id: rangeToggle - width: parent.width / 3 // We're adding 3 buttons and want to divide them equally + width: parent.width / 2 // We're adding 3 buttons and want to divide them equally text: "Use Preset Range" anchors.left: parent.left property bool autoRange: true @@ -265,10 +198,9 @@ Item { } } - //! [8] Button { id: orthoToggle - width: parent.width / 3 + width: parent.width / 2 text: "Display Orthographic" anchors.left: rangeToggle.right onClicked: { @@ -283,13 +215,4 @@ Item { } } } - //! [8] - - Button { - id: exitButton - width: parent.width / 3 - text: "Quit" - anchors.left: orthoToggle.right - onClicked: Qt.quit(); - } } diff --git a/DevicesSettingsPage.qml b/DevicesSettingsPage.qml index b246d7a..c368a73 100644 --- a/DevicesSettingsPage.qml +++ b/DevicesSettingsPage.qml @@ -119,6 +119,8 @@ ColumnLayout { Devices3dView { Layout.fillWidth: true Layout.fillHeight: true + + model: model } } } diff --git a/DoubleSpinBox.qml b/DoubleSpinBox.qml new file mode 100644 index 0000000..ff8e7e9 --- /dev/null +++ b/DoubleSpinBox.qml @@ -0,0 +1,39 @@ +import QtQuick +import QtQuick.Controls + +SpinBox { + id: spinbox + + property int decimals: 2 + property real factor: 100 + + property real realFrom: from / factor + property real realTo: to / factor + property real realValue: value / factor + + from: realFrom * factor + to: realTo * factor + value: realValue * factor + + stepSize: factor + + signal realValueModified + + onValueModified: { + realValue = Qt.binding(function(){ return value / factor; }); + realValueModified(); + } + + validator: DoubleValidator { + bottom: Math.min(spinbox.from, spinbox.to) + top: Math.max(spinbox.from, spinbox.to) + } + + textFromValue: function(value, locale) { + return Number(value / 100).toLocaleString(locale, 'f', spinbox.decimals) + } + + valueFromText: function(text, locale) { + return Number.fromLocaleString(locale, text) * 100 + } +} diff --git a/Vector3DField.qml b/Vector3DField.qml index d467b1d..5c27c84 100644 --- a/Vector3DField.qml +++ b/Vector3DField.qml @@ -7,15 +7,15 @@ GridLayout { property vector3d value onValueChanged: { - xBox.value = value.x - yBox.value = value.y - zBox.value = value.z + xBox.realValue = value.x + yBox.realValue = value.y + zBox.realValue = value.z } signal valueModified function updateValue() { - const newValue = Qt.vector3d(xBox.value, yBox.value, zBox.value); + const newValue = Qt.vector3d(xBox.realValue, yBox.realValue, zBox.realValue); console.log(newValue); if (newValue === value) return; @@ -27,26 +27,38 @@ GridLayout { text: qsTr('x:') } - SpinBox { + DoubleSpinBox { id: xBox - onValueModified: updateValue() + editable: true + realFrom: -1000 + realTo: 1000 + //stepSize: 0.01 + onRealValueModified: updateValue() } Label { text: qsTr('y:') } - SpinBox { + DoubleSpinBox { id: yBox - onValueModified: updateValue() + editable: true + realFrom: -1000 + realTo: 1000 + //stepSize: 0.01 + onRealValueModified: updateValue() } Label { text: qsTr('z:') } - SpinBox { + DoubleSpinBox { id: zBox - onValueModified: updateValue() + editable: true + realFrom: -1000 + realTo: 1000 + //stepSize: 0.01 + onRealValueModified: updateValue() } } diff --git a/devicesmodel.cpp b/devicesmodel.cpp index 4ea240d..5898d2a 100644 --- a/devicesmodel.cpp +++ b/devicesmodel.cpp @@ -11,7 +11,10 @@ enum { IdRole = Qt::UserRole, DeviceTypeIdRole, AddressRole, - PositionRole + PositionRole, + PositionXRole, + PositionYRole, + PositionZRole }; void DevicesModel::setController(DmxController *controller) @@ -111,6 +114,9 @@ QVariant DevicesModel::data(const QModelIndex &index, int role) const case DeviceTypeIdRole: return device.deviceTypeId; case AddressRole: return device.address; case PositionRole: return device.position; + case PositionXRole: return device.position.x(); + case PositionYRole: return device.position.y(); + case PositionZRole: return device.position.z(); } return {}; @@ -149,7 +155,10 @@ QMap DevicesModel::itemData(const QModelIndex &index) const { IdRole, device.id }, { DeviceTypeIdRole, device.deviceTypeId }, { AddressRole, device.address }, - { PositionRole, device.position } + { PositionRole, device.position }, + { PositionXRole, device.position.x() }, + { PositionYRole, device.position.y() }, + { PositionZRole, device.position.z() } }; } @@ -160,7 +169,10 @@ QHash DevicesModel::roleNames() const { IdRole, "id" }, { DeviceTypeIdRole, "deviceTypeId" }, { AddressRole, "address" }, - { PositionRole, "position" } + { PositionRole, "position" }, + { PositionXRole, "positionX" }, + { PositionYRole, "positionY" }, + { PositionZRole, "positionZ" } }; } @@ -273,7 +285,7 @@ bool DevicesModel::setData(const QModelIndex &index, const QVariant &value, int QMutexLocker locker{&m_controller->mutex()}; device.position = value.value(); } - emit dataChanged(index, index, { PositionRole }); + emit dataChanged(index, index, { PositionRole, PositionXRole, PositionYRole, PositionZRole }); disconnect(m_controller, &DmxController::devicePositionChanged, this, &DevicesModel::otherDevicePositionChanged); @@ -458,7 +470,7 @@ void DevicesModel::otherDevicePositionChanged(int row, const QVector3D &position } const auto index = this->index(row); - emit dataChanged(index, index, { PositionRole }); + emit dataChanged(index, index, { PositionRole, PositionXRole, PositionYRole, PositionZRole }); } namespace { diff --git a/dmxcontroller.cpp b/dmxcontroller.cpp index 742b547..673bca2 100644 --- a/dmxcontroller.cpp +++ b/dmxcontroller.cpp @@ -9,6 +9,18 @@ #include "projectloader.h" +void doFun(auto &y) +{ + return; + double i{-10}; + for (auto &x : y.devices) + { + x.position.setX(i); + x.position.setZ(std::sin(i / 2.) * 10.); + i += 20./double(y.devices.size()); + } +} + DmxController::DmxController(ScheinCommanderSettings &settings, QObject *parent) : QObject{parent}, m_settings{settings}, @@ -168,6 +180,7 @@ DmxController::DmxController(ScheinCommanderSettings &settings, QObject *parent) } } { + doFun(m_lightProject); } bool DmxController::start() @@ -243,6 +256,8 @@ bool DmxController::loadProject(const QString &name) return false; } + doFun(m_lightProject); + return true; } diff --git a/models/cube.obj b/models/cube.obj deleted file mode 100644 index 0197618..0000000 --- a/models/cube.obj +++ /dev/null @@ -1,415 +0,0 @@ -# Blender v2.66 (sub 0) OBJ File: 'beveled_cube.blend' -# www.blender.org -v -1.000000 -0.878027 0.878027 -v -0.978771 -0.929277 0.878027 -v -0.950975 -0.932562 0.932562 -v -0.978771 -0.878027 0.929277 -v -0.932562 -0.950975 0.932562 -v -0.929277 -0.978771 0.878027 -v -0.878027 -1.000000 0.878027 -v -0.878027 -0.978771 0.929277 -v -0.932562 -0.932562 0.950975 -v -0.878027 -0.929277 0.978771 -v -0.878027 -0.878027 1.000000 -v -0.929277 -0.878027 0.978771 -v -1.000000 -0.878027 -0.878027 -v -0.978771 -0.878027 -0.929277 -v -0.950975 -0.932562 -0.932562 -v -0.978771 -0.929277 -0.878027 -v -0.932562 -0.932562 -0.950975 -v -0.929277 -0.878027 -0.978771 -v -0.878027 -0.878027 -1.000000 -v -0.878027 -0.929277 -0.978771 -v -0.932562 -0.950975 -0.932562 -v -0.878027 -0.978771 -0.929277 -v -0.878027 -1.000000 -0.878027 -v -0.929277 -0.978771 -0.878027 -v 0.878027 -0.878027 -1.000000 -v 0.929277 -0.878027 -0.978771 -v 0.932562 -0.932562 -0.950975 -v 0.878027 -0.929277 -0.978771 -v 0.950975 -0.932562 -0.932562 -v 0.978771 -0.878027 -0.929277 -v 1.000000 -0.878027 -0.878027 -v 0.978771 -0.929277 -0.878027 -v 0.932562 -0.950975 -0.932562 -v 0.929277 -0.978771 -0.878027 -v 0.878027 -1.000000 -0.878027 -v 0.878027 -0.978771 -0.929277 -v 1.000000 -0.878027 0.878027 -v 0.978771 -0.878027 0.929277 -v 0.950975 -0.932562 0.932562 -v 0.978771 -0.929277 0.878027 -v 0.932562 -0.932562 0.950975 -v 0.929277 -0.878027 0.978771 -v 0.878027 -0.878027 1.000000 -v 0.878027 -0.929277 0.978771 -v 0.932562 -0.950975 0.932562 -v 0.878027 -0.978771 0.929277 -v 0.878027 -1.000000 0.878027 -v 0.929277 -0.978771 0.878027 -v -0.878027 0.878027 1.000000 -v -0.878027 0.929277 0.978771 -v -0.932562 0.932562 0.950975 -v -0.929277 0.878027 0.978771 -v -0.932562 0.950975 0.932562 -v -0.878027 0.978771 0.929277 -v -0.878027 1.000000 0.878027 -v -0.929277 0.978771 0.878027 -v -0.950975 0.932562 0.932562 -v -0.978771 0.929277 0.878027 -v -1.000000 0.878027 0.878027 -v -0.978771 0.878027 0.929277 -v -1.000000 0.878027 -0.878027 -v -0.978771 0.929277 -0.878027 -v -0.950975 0.932562 -0.932562 -v -0.978771 0.878027 -0.929277 -v -0.932562 0.950975 -0.932562 -v -0.929277 0.978771 -0.878027 -v -0.878027 1.000000 -0.878027 -v -0.878027 0.978771 -0.929277 -v -0.932562 0.932562 -0.950975 -v -0.878027 0.929277 -0.978771 -v -0.878027 0.878027 -1.000000 -v -0.929277 0.878027 -0.978771 -v 0.878027 0.878027 -1.000000 -v 0.878027 0.929277 -0.978771 -v 0.932562 0.932562 -0.950975 -v 0.929277 0.878027 -0.978771 -v 0.932562 0.950975 -0.932562 -v 0.878027 0.978771 -0.929277 -v 0.878027 1.000000 -0.878027 -v 0.929277 0.978771 -0.878027 -v 0.950975 0.932562 -0.932562 -v 0.978771 0.929277 -0.878027 -v 1.000000 0.878027 -0.878027 -v 0.978771 0.878027 -0.929277 -v 1.000000 0.878027 0.878027 -v 0.978771 0.929277 0.878027 -v 0.950975 0.932562 0.932562 -v 0.978771 0.878027 0.929277 -v 0.932562 0.950975 0.932562 -v 0.929277 0.978771 0.878027 -v 0.878027 1.000000 0.878027 -v 0.878027 0.978771 0.929277 -v 0.932562 0.932562 0.950975 -v 0.878027 0.929277 0.978771 -v 0.878027 0.878027 1.000000 -v 0.929277 0.878027 0.978771 -vt 0.024513 0.966281 -vt 0.033719 0.975487 -vt 0.033719 0.966281 -vt 0.964639 0.060986 -vt 0.964639 0.939014 -vt 0.989386 0.939014 -vt 0.939014 0.964639 -vt 0.060986 0.964639 -vt 0.939014 0.989386 -vt 0.060986 0.060986 -vt 0.060986 0.939014 -vt 0.939014 0.939014 -vt 0.035361 0.060986 -vt 0.035361 0.939014 -vt 0.010614 0.060986 -vt 0.010614 0.939014 -vt 0.989386 0.060986 -vt 0.939014 0.035361 -vt 0.060986 0.035361 -vt 0.060986 0.010614 -vt 0.060986 0.989386 -vt 0.939014 0.060986 -vt 0.966281 0.975487 -vt 0.966281 0.966281 -vt 0.975487 0.966281 -vt 0.975487 0.033719 -vt 0.966281 0.033719 -vt 0.966281 0.024513 -vt 0.033719 0.024513 -vt 0.033719 0.033719 -vt 0.024513 0.033719 -vt 0.939014 0.010614 -vn -0.713187 -0.495651 -0.495651 -vn -0.495651 -0.495651 -0.713187 -vn -0.495651 -0.713187 -0.495651 -vn 0.539384 -0.823450 0.175909 -vn 0.539384 -0.823450 -0.175909 -vn 0.823450 -0.539384 -0.175909 -vn -0.713187 0.495651 -0.495651 -vn -0.495651 0.713187 -0.495651 -vn -0.495651 0.495651 -0.713187 -vn 0.175909 -0.823450 -0.539384 -vn -0.185644 -0.825892 -0.532365 -vn 0.175909 -0.539384 -0.823450 -vn -0.193426 -0.961852 0.193426 -vn -0.193426 -0.961852 -0.193426 -vn 0.187689 -0.964110 -0.187689 -vn -0.532365 -0.185644 0.825892 -vn -0.532365 0.185644 0.825892 -vn -0.825892 -0.185644 0.532365 -vn -0.532365 0.185644 -0.825892 -vn -0.532365 -0.185644 -0.825892 -vn -0.825892 0.185644 -0.532365 -vn 0.823450 0.175909 -0.539384 -vn 0.823450 -0.175909 -0.539384 -vn 0.539384 -0.175909 -0.823450 -vn 0.539384 0.175909 0.823450 -vn 0.539384 -0.175909 0.823450 -vn 0.823450 -0.175909 0.539384 -vn 0.175909 0.823450 0.539384 -vn -0.185644 0.825892 0.532365 -vn -0.185644 0.532365 0.825892 -vn -0.185644 0.825892 -0.532365 -vn 0.175909 0.823450 -0.539384 -vn -0.185644 0.532365 -0.825892 -vn 0.539384 0.823450 -0.175909 -vn 0.539384 0.823450 0.175909 -vn 0.823450 0.539384 0.175909 -vn 0.187689 0.964110 0.187689 -vn 0.187689 0.964110 -0.187689 -vn -0.193426 0.961852 -0.193426 -vn -0.193426 0.193426 -0.961852 -vn 0.187689 0.187689 -0.964110 -vn -0.193426 -0.193426 -0.961852 -vn -0.961852 0.193426 0.193426 -vn -0.961852 0.193426 -0.193426 -vn -0.961852 -0.193426 0.193426 -vn -0.532365 -0.825892 -0.185644 -vn -0.532365 -0.825892 0.185644 -vn -0.825892 -0.532365 -0.185644 -vn 0.498856 0.498856 -0.708701 -vn 0.498856 0.708701 -0.498856 -vn 0.708701 0.498856 -0.498856 -vn 0.964110 0.187689 -0.187689 -vn 0.964110 0.187689 0.187689 -vn 0.964110 -0.187689 0.187689 -vn 0.498856 -0.498856 -0.708701 -vn 0.708701 -0.498856 -0.498856 -vn 0.498856 -0.708701 -0.498856 -vn 0.708701 0.498856 0.498856 -vn 0.498856 0.708701 0.498856 -vn 0.498856 0.498856 0.708701 -vn -0.495651 0.495651 0.713187 -vn -0.495651 0.713187 0.495651 -vn -0.713187 0.495651 0.495651 -vn 0.708701 -0.498856 0.498856 -vn 0.498856 -0.498856 0.708701 -vn 0.498856 -0.708701 0.498856 -vn -0.532365 0.825892 0.185644 -vn -0.532365 0.825892 -0.185644 -vn -0.825892 0.532365 0.185644 -vn 0.187689 0.187689 0.964110 -vn -0.193426 0.193426 0.961852 -vn -0.193426 -0.193426 0.961852 -vn -0.185644 -0.825892 0.532365 -vn 0.175909 -0.823450 0.539384 -vn 0.175909 -0.539384 0.823450 -vn -0.825892 -0.532365 0.185644 -vn -0.713187 -0.495651 0.495651 -vn -0.495651 -0.713187 0.495651 -vn -0.495651 -0.495651 0.713187 -vn -0.185644 -0.532365 0.825892 -vn -0.961852 -0.193426 -0.193426 -vn -0.825892 -0.185644 -0.532365 -vn 0.187689 -0.187689 -0.964110 -vn 0.823450 -0.539384 0.175909 -vn -0.193426 0.961852 0.193426 -vn -0.825892 0.532365 -0.185644 -vn 0.175909 0.539384 -0.823450 -vn 0.539384 0.175909 -0.823450 -vn 0.823450 0.539384 -0.175909 -vn 0.823450 0.175909 0.539384 -vn 0.175909 0.539384 0.823450 -vn -0.185644 -0.532365 -0.825892 -vn -0.825892 0.185644 0.532365 -vn 0.964110 -0.187689 -0.187689 -vn 0.187689 -0.187689 0.964110 -vn 0.187689 -0.964110 0.187689 -s 1 -f 15/1/1 17/2/2 21/3/3 -f 48/4/4 34/5/5 32/6/6 -f 63/1/7 65/3/8 69/2/9 -f 36/7/10 22/8/11 28/9/12 -f 7/10/13 23/11/14 35/12/15 -f 12/13/16 52/14/17 4/15/18 -f 72/14/19 18/13/20 64/16/21 -f 84/6/22 30/17/23 26/4/24 -f 96/5/25 42/4/26 38/17/27 -f 92/18/28 54/19/29 50/20/30 -f 68/8/31 78/7/32 70/21/33 -f 80/5/34 90/4/35 86/17/36 -f 91/22/37 79/12/38 67/11/39 -f 71/11/40 73/12/41 19/10/42 -f 59/11/43 61/12/44 1/10/45 -f 24/14/46 6/13/47 16/16/48 -f 75/23/49 77/24/50 81/25/51 -f 83/12/52 85/11/53 37/10/54 -f 27/23/55 29/25/56 33/24/57 -f 87/26/58 89/27/59 93/28/60 -f 51/29/61 53/30/62 57/31/63 -f 39/26/64 41/28/65 45/27/66 -f 56/13/67 66/14/68 58/15/69 -f 95/12/70 49/11/71 11/10/72 -f 8/19/73 46/18/74 44/32/75 -f 1/10/45 2/19/76 3/30/77 -f 5/30/78 6/13/47 7/10/13 -f 9/30/79 10/19/80 11/10/72 -f 13/22/81 14/4/82 15/27/1 -f 17/30/2 18/13/20 19/10/42 -f 21/3/3 22/8/11 23/11/14 -f 25/22/83 26/4/24 28/18/12 -f 29/27/56 30/4/23 32/18/6 -f 33/24/57 34/5/5 36/7/10 -f 37/10/54 38/13/27 40/19/84 -f 41/27/65 42/4/26 44/18/75 -f 45/27/66 46/18/74 48/4/4 -f 49/11/71 50/8/30 51/3/61 -f 53/30/62 54/19/29 55/10/85 -f 57/3/63 58/8/69 59/11/43 -f 61/12/44 62/7/86 63/24/7 -f 65/3/8 66/14/68 67/11/39 -f 69/3/9 70/8/33 71/11/40 -f 73/12/41 74/7/87 76/5/88 -f 77/24/50 78/7/32 80/5/34 -f 81/24/51 82/7/89 84/5/22 -f 85/11/53 86/8/36 88/14/90 -f 89/27/59 90/4/35 92/18/28 -f 93/24/60 94/7/91 96/5/25 -f 2/15/76 6/13/47 3/31/77 -f 8/19/73 10/20/80 5/30/78 -f 12/13/16 4/15/18 9/30/79 -f 14/15/82 18/13/20 15/31/1 -f 20/21/92 22/8/11 17/2/2 -f 24/14/46 16/16/48 21/3/3 -f 26/4/24 30/17/23 29/26/56 -f 32/6/6 34/5/5 33/24/57 -f 36/7/10 28/9/12 27/23/55 -f 38/17/27 42/4/26 41/27/65 -f 44/32/75 46/18/74 45/27/66 -f 48/4/4 40/17/84 39/26/64 -f 50/20/30 54/19/29 51/29/61 -f 56/13/67 58/15/69 53/30/62 -f 60/16/93 52/14/17 57/1/63 -f 62/16/86 66/14/68 63/1/7 -f 68/8/31 70/21/33 65/3/8 -f 72/14/19 64/16/21 69/3/9 -f 74/9/87 78/7/32 77/24/50 -f 80/5/34 82/6/89 81/25/51 -f 84/6/22 76/5/88 75/24/49 -f 86/17/36 90/4/35 89/27/59 -f 92/18/28 94/32/91 93/28/60 -f 96/5/25 88/6/90 87/25/58 -f 55/10/85 67/11/39 56/13/67 -f 61/12/44 59/11/43 62/7/86 -f 71/11/40 19/10/42 72/14/19 -f 13/22/81 61/12/44 14/4/82 -f 23/11/14 7/10/13 24/14/46 -f 1/10/45 13/22/81 2/19/76 -f 11/10/72 49/11/71 12/13/16 -f 59/11/43 1/10/45 60/14/93 -f 67/11/39 79/12/38 68/8/31 -f 73/12/41 71/11/40 74/7/87 -f 83/12/52 31/22/94 30/4/23 -f 25/22/83 73/12/41 76/5/88 -f 35/12/15 23/11/14 36/7/10 -f 19/10/42 25/22/83 20/19/92 -f 79/12/38 91/22/37 90/4/35 -f 85/11/53 83/12/52 82/7/89 -f 95/12/70 43/22/95 42/4/26 -f 37/10/54 85/11/53 88/14/90 -f 47/22/96 35/12/15 34/5/5 -f 31/22/94 37/10/54 40/19/84 -f 91/22/37 55/10/85 54/19/29 -f 49/11/71 95/12/70 94/7/91 -f 7/10/13 47/22/96 46/18/74 -f 43/22/95 11/10/72 10/19/80 -f 3/31/77 5/30/78 9/29/79 -f 40/17/84 48/4/4 32/6/6 -f 22/8/11 20/21/92 28/9/12 -f 47/22/96 7/10/13 35/12/15 -f 52/14/17 60/16/93 4/15/18 -f 18/13/20 14/15/82 64/16/21 -f 76/5/88 84/6/22 26/4/24 -f 88/6/90 96/5/25 38/17/27 -f 94/32/91 92/18/28 50/20/30 -f 78/7/32 74/9/87 70/21/33 -f 82/6/89 80/5/34 86/17/36 -f 55/10/85 91/22/37 67/11/39 -f 73/12/41 25/22/83 19/10/42 -f 61/12/44 13/22/81 1/10/45 -f 6/13/47 2/15/76 16/16/48 -f 31/22/94 83/12/52 37/10/54 -f 66/14/68 62/16/86 58/15/69 -f 43/22/95 95/12/70 11/10/72 -f 10/20/80 8/19/73 44/32/75 -f 4/13/18 1/10/45 3/30/77 -f 8/19/73 5/30/78 7/10/13 -f 12/13/16 9/30/79 11/10/72 -f 16/18/48 13/22/81 15/27/1 -f 20/19/92 17/30/2 19/10/42 -f 24/14/46 21/3/3 23/11/14 -f 26/4/24 27/27/55 28/18/12 -f 30/4/23 31/22/94 32/18/6 -f 34/5/5 35/12/15 36/7/10 -f 38/13/27 39/30/64 40/19/84 -f 42/4/26 43/22/95 44/18/75 -f 46/18/74 47/22/96 48/4/4 -f 52/14/17 49/11/71 51/3/61 -f 56/13/67 53/30/62 55/10/85 -f 60/14/93 57/3/63 59/11/43 -f 64/5/21 61/12/44 63/24/7 -f 68/8/31 65/3/8 67/11/39 -f 72/14/19 69/3/9 71/11/40 -f 74/7/87 75/24/49 76/5/88 -f 78/7/32 79/12/38 80/5/34 -f 82/7/89 83/12/52 84/5/22 -f 86/8/36 87/3/58 88/14/90 -f 90/4/35 91/22/37 92/18/28 -f 94/7/91 95/12/70 96/5/25 -f 6/13/47 5/30/78 3/31/77 -f 10/20/80 9/29/79 5/30/78 -f 4/15/18 3/31/77 9/30/79 -f 18/13/20 17/30/2 15/31/1 -f 22/8/11 21/3/3 17/2/2 -f 16/16/48 15/1/1 21/3/3 -f 27/27/55 26/4/24 29/26/56 -f 29/25/56 32/6/6 33/24/57 -f 33/24/57 36/7/10 27/23/55 -f 39/26/64 38/17/27 41/27/65 -f 41/28/65 44/32/75 45/27/66 -f 45/27/66 48/4/4 39/26/64 -f 54/19/29 53/30/62 51/29/61 -f 58/15/69 57/31/63 53/30/62 -f 52/14/17 51/3/61 57/1/63 -f 66/14/68 65/3/8 63/1/7 -f 70/21/33 69/2/9 65/3/8 -f 64/16/21 63/1/7 69/3/9 -f 75/23/49 74/9/87 77/24/50 -f 77/24/50 80/5/34 81/25/51 -f 81/25/51 84/6/22 75/24/49 -f 87/26/58 86/17/36 89/27/59 -f 89/27/59 92/18/28 93/28/60 -f 93/24/60 96/5/25 87/25/58 -f 67/11/39 66/14/68 56/13/67 -f 59/11/43 58/8/69 62/7/86 -f 19/10/42 18/13/20 72/14/19 -f 61/12/44 64/5/21 14/4/82 -f 7/10/13 6/13/47 24/14/46 -f 13/22/81 16/18/48 2/19/76 -f 49/11/71 52/14/17 12/13/16 -f 1/10/45 4/13/18 60/14/93 -f 79/12/38 78/7/32 68/8/31 -f 71/11/40 70/8/33 74/7/87 -f 84/5/22 83/12/52 30/4/23 -f 26/4/24 25/22/83 76/5/88 -f 23/11/14 22/8/11 36/7/10 -f 25/22/83 28/18/12 20/19/92 -f 80/5/34 79/12/38 90/4/35 -f 86/8/36 85/11/53 82/7/89 -f 96/5/25 95/12/70 42/4/26 -f 38/13/27 37/10/54 88/14/90 -f 48/4/4 47/22/96 34/5/5 -f 32/18/6 31/22/94 40/19/84 -f 92/18/28 91/22/37 54/19/29 -f 50/8/30 49/11/71 94/7/91 -f 8/19/73 7/10/13 46/18/74 -f 44/18/75 43/22/95 10/19/80 diff --git a/textures/cubetexture.png b/textures/cubetexture.png deleted file mode 100644 index 3cea686..0000000 Binary files a/textures/cubetexture.png and /dev/null differ