mirror of
https://github.com/overte-org/overte.git
synced 2025-08-09 23:40:11 +02:00
attempting to handle new-model dialog
This commit is contained in:
parent
24fc9bbe67
commit
7a63b07462
2 changed files with 162 additions and 36 deletions
118
interface/resources/qml/hifi/tablet/NewModelDialog.qml
Normal file
118
interface/resources/qml/hifi/tablet/NewModelDialog.qml
Normal file
|
@ -0,0 +1,118 @@
|
||||||
|
import QtQuick 2.5
|
||||||
|
import QtQuick.Window 2.2
|
||||||
|
import QtQuick.Controls 1.5
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: newModelDialog
|
||||||
|
property var eventBridge;
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column1
|
||||||
|
anchors.rightMargin: 10
|
||||||
|
anchors.leftMargin: 10
|
||||||
|
anchors.bottomMargin: 10
|
||||||
|
anchors.topMargin: 10
|
||||||
|
anchors.fill: parent
|
||||||
|
spacing: 5
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: text1
|
||||||
|
text: qsTr("Model URL")
|
||||||
|
font.pixelSize: 12
|
||||||
|
}
|
||||||
|
|
||||||
|
TextInput {
|
||||||
|
id: textInput1
|
||||||
|
height: 20
|
||||||
|
text: qsTr("")
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 0
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: 0
|
||||||
|
font.pixelSize: 12
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: row1
|
||||||
|
height: 400
|
||||||
|
spacing: 30
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 0
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: 0
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column2
|
||||||
|
width: 200
|
||||||
|
height: 400
|
||||||
|
|
||||||
|
CheckBox {
|
||||||
|
id: checkBox1
|
||||||
|
text: qsTr("Dynamic")
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: row2
|
||||||
|
width: 200
|
||||||
|
height: 400
|
||||||
|
spacing: 20
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: image1
|
||||||
|
width: 30
|
||||||
|
height: 30
|
||||||
|
source: "qrc:/qtquickplugin/images/template_image.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: text2
|
||||||
|
width: 160
|
||||||
|
text: qsTr("Models with automatic collisions set to 'Exact' cannot be dynamic")
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
font.pixelSize: 12
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
id: column3
|
||||||
|
height: 400
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: text3
|
||||||
|
text: qsTr("Automatic Collisions")
|
||||||
|
font.pixelSize: 12
|
||||||
|
}
|
||||||
|
|
||||||
|
ComboBox {
|
||||||
|
id: comboBox1
|
||||||
|
width: 200
|
||||||
|
transformOrigin: Item.Center
|
||||||
|
model: ListModel {
|
||||||
|
id: collisionDropdown
|
||||||
|
ListElement { text: "No Collision" }
|
||||||
|
ListElement { text: "Basic - Whole model" }
|
||||||
|
ListElement { text: "Good - Sub-meshes" }
|
||||||
|
ListElement { text: "Exact - All polygons" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Row {
|
||||||
|
id: row3
|
||||||
|
width: 200
|
||||||
|
height: 400
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: button1
|
||||||
|
text: qsTr("Add")
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: button2
|
||||||
|
text: qsTr("Cancel")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -287,30 +287,33 @@ var toolBar = (function () {
|
||||||
|
|
||||||
var SHAPE_TYPE_DEFAULT = SHAPE_TYPE_STATIC_MESH;
|
var SHAPE_TYPE_DEFAULT = SHAPE_TYPE_STATIC_MESH;
|
||||||
var DYNAMIC_DEFAULT = false;
|
var DYNAMIC_DEFAULT = false;
|
||||||
var result = Window.customPrompt({
|
|
||||||
textInput: {
|
|
||||||
label: "Model URL"
|
|
||||||
},
|
|
||||||
comboBox: {
|
|
||||||
label: "Automatic Collisions",
|
|
||||||
index: SHAPE_TYPE_DEFAULT,
|
|
||||||
items: SHAPE_TYPES
|
|
||||||
},
|
|
||||||
checkBox: {
|
|
||||||
label: "Dynamic",
|
|
||||||
checked: DYNAMIC_DEFAULT,
|
|
||||||
disableForItems: [
|
|
||||||
SHAPE_TYPE_STATIC_MESH
|
|
||||||
],
|
|
||||||
checkStateOnDisable: false,
|
|
||||||
warningOnDisable: "Models with automatic collisions set to 'Exact' cannot be dynamic"
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (result) {
|
if (Settings.getValue("HUDUIEnabled")) {
|
||||||
var url = result.textInput;
|
// HUD-ui version of new-model dialog
|
||||||
var shapeType;
|
var result = Window.customPrompt({
|
||||||
switch (result.comboBox) {
|
textInput: {
|
||||||
|
label: "Model URL"
|
||||||
|
},
|
||||||
|
comboBox: {
|
||||||
|
label: "Automatic Collisions",
|
||||||
|
index: SHAPE_TYPE_DEFAULT,
|
||||||
|
items: SHAPE_TYPES
|
||||||
|
},
|
||||||
|
checkBox: {
|
||||||
|
label: "Dynamic",
|
||||||
|
checked: DYNAMIC_DEFAULT,
|
||||||
|
disableForItems: [
|
||||||
|
SHAPE_TYPE_STATIC_MESH
|
||||||
|
],
|
||||||
|
checkStateOnDisable: false,
|
||||||
|
warningOnDisable: "Models with automatic collisions set to 'Exact' cannot be dynamic"
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (result) {
|
||||||
|
var url = result.textInput;
|
||||||
|
var shapeType;
|
||||||
|
switch (result.comboBox) {
|
||||||
case SHAPE_TYPE_SIMPLE_HULL:
|
case SHAPE_TYPE_SIMPLE_HULL:
|
||||||
shapeType = "simple-hull";
|
shapeType = "simple-hull";
|
||||||
break;
|
break;
|
||||||
|
@ -322,21 +325,26 @@ var toolBar = (function () {
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
shapeType = "none";
|
shapeType = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
var dynamic = result.checkBox !== null ? result.checkBox : DYNAMIC_DEFAULT;
|
var dynamic = result.checkBox !== null ? result.checkBox : DYNAMIC_DEFAULT;
|
||||||
if (shapeType === "static-mesh" && dynamic) {
|
if (shapeType === "static-mesh" && dynamic) {
|
||||||
// The prompt should prevent this case
|
// The prompt should prevent this case
|
||||||
print("Error: model cannot be both static mesh and dynamic. This should never happen.");
|
print("Error: model cannot be both static mesh and dynamic. This should never happen.");
|
||||||
} else if (url) {
|
} else if (url) {
|
||||||
createNewEntity({
|
createNewEntity({
|
||||||
type: "Model",
|
type: "Model",
|
||||||
modelURL: url,
|
modelURL: url,
|
||||||
shapeType: shapeType,
|
shapeType: shapeType,
|
||||||
dynamic: dynamic,
|
dynamic: dynamic,
|
||||||
gravity: dynamic ? { x: 0, y: -10, z: 0 } : { x: 0, y: 0, z: 0 }
|
gravity: dynamic ? { x: 0, y: -10, z: 0 } : { x: 0, y: 0, z: 0 }
|
||||||
});
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// tablet version of new-model dialog
|
||||||
|
var tablet = Tablet.getTablet("com.highfidelity.interface.tablet.system");
|
||||||
|
tablet.loadQMLSource("NewModelDialog.qml");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue