forked from qt-creator/qt-creator
QmlDesigner: Add BakedLightmap item to component library
Also adds relevant property specifics and navigator drop support. Fixes: QDS-9521 Change-Id: I78539548770ae75fbe0602c2871fb5fea5515ab4 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
@@ -0,0 +1,64 @@
|
|||||||
|
// Copyright (C) 2023 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import HelperWidgets 2.0
|
||||||
|
import StudioTheme 1.0 as StudioTheme
|
||||||
|
|
||||||
|
Section {
|
||||||
|
caption: qsTr("Baked Lightmap")
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
SectionLayout {
|
||||||
|
PropertyLabel {
|
||||||
|
text: qsTr("Enabled")
|
||||||
|
tooltip: qsTr("When false, the lightmap generated for the model is not stored during lightmap baking,\neven if the key is set to a non-empty value.")
|
||||||
|
}
|
||||||
|
|
||||||
|
SecondColumnLayout {
|
||||||
|
CheckBox {
|
||||||
|
text: backendValues.enabled.valueToString
|
||||||
|
backendValue: backendValues.enabled
|
||||||
|
implicitWidth: StudioTheme.Values.twoControlColumnWidth
|
||||||
|
+ StudioTheme.Values.actionIndicatorWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
ExpandingSpacer {}
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyLabel {
|
||||||
|
text: qsTr("Key")
|
||||||
|
tooltip: qsTr("Sets the filename base for baked lightmap files for the model.\nNo other Model in the scene can use the same key.")
|
||||||
|
}
|
||||||
|
|
||||||
|
SecondColumnLayout {
|
||||||
|
LineEdit {
|
||||||
|
backendValue: backendValues.key
|
||||||
|
showTranslateCheckBox: false
|
||||||
|
implicitWidth: StudioTheme.Values.singleControlColumnWidth
|
||||||
|
+ StudioTheme.Values.actionIndicatorWidth
|
||||||
|
width: implicitWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
ExpandingSpacer {}
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyLabel {
|
||||||
|
text: qsTr("Load Prefix")
|
||||||
|
tooltip: qsTr("Sets the folder where baked lightmap files are generated.\nIt should be a relative path.")
|
||||||
|
}
|
||||||
|
|
||||||
|
SecondColumnLayout {
|
||||||
|
LineEdit {
|
||||||
|
backendValue: backendValues.loadPrefix
|
||||||
|
showTranslateCheckBox: false
|
||||||
|
implicitWidth: StudioTheme.Values.singleControlColumnWidth
|
||||||
|
+ StudioTheme.Values.actionIndicatorWidth
|
||||||
|
width: implicitWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
ExpandingSpacer {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (C) 2023 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0 WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
import QtQuick 2.15
|
||||||
|
import QtQuick.Layouts 1.15
|
||||||
|
import HelperWidgets 2.0
|
||||||
|
|
||||||
|
Column {
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
BakedLightmapSection {
|
||||||
|
width: parent.width
|
||||||
|
}
|
||||||
|
}
|
@@ -42,6 +42,8 @@ ChooseFromPropertyListFilter::ChooseFromPropertyListFilter(const NodeMetaInfo &i
|
|||||||
// -> Model
|
// -> Model
|
||||||
// Effect
|
// Effect
|
||||||
// -> Item
|
// -> Item
|
||||||
|
// BakedLightmap
|
||||||
|
// -> Model
|
||||||
|
|
||||||
if (insertInfo.isQtQuick3DTexture()) {
|
if (insertInfo.isQtQuick3DTexture()) {
|
||||||
if (parentInfo.isQtQuick3DDefaultMaterial() || parentInfo.isQtQuick3DPrincipledMaterial()
|
if (parentInfo.isQtQuick3DDefaultMaterial() || parentInfo.isQtQuick3DPrincipledMaterial()
|
||||||
@@ -101,6 +103,9 @@ ChooseFromPropertyListFilter::ChooseFromPropertyListFilter(const NodeMetaInfo &i
|
|||||||
} else if (insertInfo.isEffectMaker()) {
|
} else if (insertInfo.isEffectMaker()) {
|
||||||
if (parentInfo.isQtQuickItem())
|
if (parentInfo.isQtQuickItem())
|
||||||
propertyList.append("effect");
|
propertyList.append("effect");
|
||||||
|
} else if (insertInfo.isQtQuick3DBakedLightmap()) {
|
||||||
|
if (parentInfo.isQtQuick3DModel())
|
||||||
|
propertyList.append("bakedLightmap");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -118,6 +118,7 @@ public:
|
|||||||
bool isQtMultimediaSoundEffect() const;
|
bool isQtMultimediaSoundEffect() const;
|
||||||
bool isQtObject() const;
|
bool isQtObject() const;
|
||||||
bool isQtQuick3D() const;
|
bool isQtQuick3D() const;
|
||||||
|
bool isQtQuick3DBakedLightmap() const;
|
||||||
bool isQtQuick3DBuffer() const;
|
bool isQtQuick3DBuffer() const;
|
||||||
bool isQtQuick3DCamera() const;
|
bool isQtQuick3DCamera() const;
|
||||||
bool isQtQuick3DCommand() const;
|
bool isQtQuick3DCommand() const;
|
||||||
|
@@ -2245,7 +2245,17 @@ bool NodeMetaInfo::isQtQuick3DCamera() const
|
|||||||
using namespace Storage::Info;
|
using namespace Storage::Info;
|
||||||
return isBasedOnCommonType<QtQuick3D, Camera>(m_projectStorage, m_typeId);
|
return isBasedOnCommonType<QtQuick3D, Camera>(m_projectStorage, m_typeId);
|
||||||
} else {
|
} else {
|
||||||
return isValid() && isSubclassOf("QQuick3D.Camera");
|
return isValid() && isSubclassOf("QtQuick3D.Camera");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NodeMetaInfo::isQtQuick3DBakedLightmap() const
|
||||||
|
{
|
||||||
|
if constexpr (useProjectStorage()) {
|
||||||
|
using namespace Storage::Info;
|
||||||
|
return isBasedOnCommonType<QtQuick3D, BakedLightmap>(m_projectStorage, m_typeId);
|
||||||
|
} else {
|
||||||
|
return isValid() && isSubclassOf("QtQuick3D.BakedLightmap");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2255,7 +2265,7 @@ bool NodeMetaInfo::isQtQuick3DBuffer() const
|
|||||||
using namespace Storage::Info;
|
using namespace Storage::Info;
|
||||||
return isBasedOnCommonType<QtQuick3D, Buffer>(m_projectStorage, m_typeId);
|
return isBasedOnCommonType<QtQuick3D, Buffer>(m_projectStorage, m_typeId);
|
||||||
} else {
|
} else {
|
||||||
return isValid() && isSubclassOf("QQuick3D.Buffer");
|
return isValid() && isSubclassOf("QtQuick3D.Buffer");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2265,7 +2275,7 @@ bool NodeMetaInfo::isQtQuick3DInstanceListEntry() const
|
|||||||
using namespace Storage::Info;
|
using namespace Storage::Info;
|
||||||
return isBasedOnCommonType<QtQuick3D, InstanceListEntry>(m_projectStorage, m_typeId);
|
return isBasedOnCommonType<QtQuick3D, InstanceListEntry>(m_projectStorage, m_typeId);
|
||||||
} else {
|
} else {
|
||||||
return isValid() && isSubclassOf("QQuick3D.InstanceListEntry");
|
return isValid() && isSubclassOf("QtQuick3D.InstanceListEntry");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2275,7 +2285,7 @@ bool NodeMetaInfo::isQtQuick3DInstanceList() const
|
|||||||
using namespace Storage::Info;
|
using namespace Storage::Info;
|
||||||
return isBasedOnCommonType<QtQuick3D, InstanceList>(m_projectStorage, m_typeId);
|
return isBasedOnCommonType<QtQuick3D, InstanceList>(m_projectStorage, m_typeId);
|
||||||
} else {
|
} else {
|
||||||
return isValid() && isSubclassOf("QQuick3D.InstanceList");
|
return isValid() && isSubclassOf("QtQuick3D.InstanceList");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -791,4 +791,26 @@ MetaInfo {
|
|||||||
toolTip: qsTr("A sound object in 3D space.")
|
toolTip: qsTr("A sound object in 3D space.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Type {
|
||||||
|
name: "QtQuick3D.BakedLightmap"
|
||||||
|
icon: ":/ItemLibrary/images/item-default-icon.png"
|
||||||
|
|
||||||
|
Hints {
|
||||||
|
canBeDroppedInNavigator: true
|
||||||
|
canBeDroppedInFormEditor: false
|
||||||
|
canBeDroppedInView3D: false
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemLibraryEntry {
|
||||||
|
name: "Baked Lightmap"
|
||||||
|
category: "Components"
|
||||||
|
libraryIcon: ":/ItemLibrary/images/item-default-icon.png"
|
||||||
|
version: "6.5"
|
||||||
|
requiredImport: "QtQuick3D"
|
||||||
|
toolTip: qsTr("An object to specify details about baked lightmap of a model.")
|
||||||
|
|
||||||
|
Property { name: "loadPrefix"; type: "string"; value: "lightmaps"; }
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user