Revision control
Copy as Markdown
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
import QtQuick 2.15
import QtQuick.Layouts 1.15
import HelperWidgets 2.0
import StudioTheme 1.0 as StudioTheme
Section {
caption: qsTr("Physics World")
width: parent.width
SectionLayout {
// Q_PROPERTY(QQuick3DNode *scene
PropertyLabel {
text: qsTr("Scene")
tooltip: qsTr("The scene node to which the physics world is attached.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.scene
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(QQuick3DNode *viewport
PropertyLabel {
text: qsTr("Viewport")
tooltip: qsTr("The node to which the debug geometry of the physics world is added.")
}
SecondColumnLayout {
ItemFilterComboBox {
typeFilter: "QtQuick3D.Node"
backendValue: backendValues.viewport
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(bool running)
PropertyLabel {
text: qsTr("Running")
tooltip: qsTr("Whether the physics world is running.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.running.valueToString
backendValue: backendValues.running
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(bool forceDebugDraw
PropertyLabel {
text: qsTr("Force Debug Draw")
tooltip: qsTr("Whether to force debug drawing of the physics world.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.forceDebugDraw.valueToString
backendValue: backendValues.forceDebugDraw
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(bool enableCCD
PropertyLabel {
text: qsTr("CCD")
tooltip: qsTr("Whether to enable continuous collision detection.")
}
SecondColumnLayout {
CheckBox {
text: backendValues.enableCCD.valueToString
backendValue: backendValues.enableCCD
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(QueryStructure staticQueryStructure
PropertyLabel {
text: qsTr("Static Query Structure")
tooltip: qsTr("The spatial query structure type used to accelerate scene queries against static actors in the physics scene.")
}
SecondColumnLayout {
ComboBox {
backendValue: backendValues.staticQueryStructure
model: ["StaticTree", "DynamicTree"]
scope: "PhysicsWorld"
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(QueryStructure dynamicQueryStructure
PropertyLabel {
text: qsTr("Dynamic Query Structure")
tooltip: qsTr("The spatial query structure type used to accelerate scene queries against dynamic actors in the physics scene.")
}
SecondColumnLayout {
ComboBox {
backendValue: backendValues.dynamicQueryStructure
model: ["NoStructure", "StaticTree", "DynamicTree"]
scope: "PhysicsWorld"
implicitWidth: StudioTheme.Values.twoControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(QVector3D gravity)
PropertyLabel {
text: qsTr("Gravity")
tooltip: qsTr("The gravity vector.")
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.gravity_x
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "X"
color: StudioTheme.Values.theme3DAxisXColor
}
ExpandingSpacer {}
}
PropertyLabel {
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.gravity_y
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Y"
color: StudioTheme.Values.theme3DAxisYColor
}
ExpandingSpacer {}
}
PropertyLabel {
}
SecondColumnLayout {
SpinBox {
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
minimumValue: -9999999
maximumValue: 9999999
decimals: 2
backendValue: backendValues.gravity_z
}
Spacer { implicitWidth: StudioTheme.Values.controlLabelGap }
ControlLabel {
text: "Z"
color: StudioTheme.Values.theme3DAxisZColor
}
ExpandingSpacer {}
}
// Q_PROPERTY(float typicalLength)
PropertyLabel {
text: qsTr("Typical Length")
tooltip: qsTr("The typical length of objects in the scene.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.00001
maximumValue: 9999999
decimals: 5
backendValue: backendValues.typicalLength
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(float typicalSpeed
PropertyLabel {
text: qsTr("Typical Speed")
tooltip: qsTr("The typical speed of objects in the scene.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.00001
maximumValue: 9999999
decimals: 5
backendValue: backendValues.typicalSpeed
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(float defaultDensity)
PropertyLabel {
text: qsTr("Default Density")
tooltip: qsTr("The default density of objects in the scene.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.00001
maximumValue: 9999999
decimals: 5
backendValue: backendValues.defaultDensity
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(float minimumTimestep)
PropertyLabel {
text: qsTr("Min Timestep")
tooltip: qsTr("Defines the minimum simulation timestep in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.001
maximumValue: 9999999
decimals: 3
backendValue: backendValues.minimumTimestep
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
// Q_PROPERTY(float maximumTimestep)
PropertyLabel {
text: qsTr("Max Timestep")
tooltip: qsTr("Defines the maximum simulation timestep in milliseconds.")
}
SecondColumnLayout {
SpinBox {
minimumValue: 0.001
maximumValue: 9999999
decimals: 3
backendValue: backendValues.maximumTimestep
implicitWidth: StudioTheme.Values.singleControlColumnWidth
+ StudioTheme.Values.actionIndicatorWidth
}
ExpandingSpacer {}
}
}
}