forked from qt-creator/qt-creator
QmlDesigner: Add qml 3d node tracing
Change-Id: Ie817236d025f895c38e70aa0aacdee1b8e99b709 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -14,24 +14,45 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
bool Qml3DNode::isValid() const
|
static auto category = ModelTracing::category;
|
||||||
|
|
||||||
|
bool Qml3DNode::isValid(SL sl) const
|
||||||
{
|
{
|
||||||
return isValidQml3DNode(modelNode());
|
return isValidQml3DNode(modelNode(), sl);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qml3DNode::isValidQml3DNode(const ModelNode &modelNode)
|
bool Qml3DNode::isValidQml3DNode(const ModelNode &modelNode, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml 3d node is valid Qml 3D node",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", modelNode),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return isValidQmlObjectNode(modelNode) && (modelNode.metaInfo().isQtQuick3DNode());
|
return isValidQmlObjectNode(modelNode) && (modelNode.metaInfo().isQtQuick3DNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qml3DNode::isValidVisualRoot(const ModelNode &modelNode)
|
bool Qml3DNode::isValidVisualRoot(const ModelNode &modelNode, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml 3d node is valid visual root",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", modelNode),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return isValidQmlObjectNode(modelNode)
|
return isValidQmlObjectNode(modelNode)
|
||||||
&& (modelNode.metaInfo().isQtQuick3DNode() || modelNode.metaInfo().isQtQuick3DMaterial());
|
&& (modelNode.metaInfo().isQtQuick3DNode() || modelNode.metaInfo().isQtQuick3DMaterial());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qml3DNode::handleEulerRotation(PropertyNameView name)
|
bool Qml3DNode::handleEulerRotation(PropertyNameView name, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"1ml 3d node handle euler rotation",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("property name", name),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
if (isBlocked(name))
|
if (isBlocked(name))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -41,8 +62,15 @@ bool Qml3DNode::handleEulerRotation(PropertyNameView name)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qml3DNode::isBlocked(PropertyNameView propName) const
|
bool Qml3DNode::isBlocked(PropertyNameView propName, SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml 3d node is blocked",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("property name", propName),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
if (modelNode().isValid() && propName.startsWith("eulerRotation"))
|
if (modelNode().isValid() && propName.startsWith("eulerRotation"))
|
||||||
return modelNode().auxiliaryDataWithDefault(rotBlockProperty).toBool();
|
return modelNode().auxiliaryDataWithDefault(rotBlockProperty).toBool();
|
||||||
|
|
||||||
@@ -335,8 +363,14 @@ static bool transformHasScalingAndRotation(const QMatrix4x4 &transform)
|
|||||||
return !hasUniformScale && hasRotation;
|
return !hasUniformScale && hasRotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Qml3DNode::hasAnimatedTransform()
|
bool Qml3DNode::hasAnimatedTransform(SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml 3d node has animated transform",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QmlTimeline timeline = currentTimeline();
|
QmlTimeline timeline = currentTimeline();
|
||||||
if (!timeline)
|
if (!timeline)
|
||||||
return false;
|
return false;
|
||||||
@@ -416,8 +450,14 @@ void Qml3DNode::setLocalTransform(const QMatrix4x4 &newParentSceneTransform,
|
|||||||
setProp("eulerRotation.z", eulerRotation.z(), 0.f);
|
setProp("eulerRotation.z", eulerRotation.z(), 0.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Qml3DNode::reparentWithTransform(NodeAbstractProperty &parentProperty)
|
void Qml3DNode::reparentWithTransform(NodeAbstractProperty &parentProperty, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml 3d node reparent with transform",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
Qml3DNode oldParent3d;
|
Qml3DNode oldParent3d;
|
||||||
if (modelNode().hasParentProperty())
|
if (modelNode().hasParentProperty())
|
||||||
oldParent3d = modelNode().parentProperty().parentModelNode();
|
oldParent3d = modelNode().parentProperty().parentModelNode();
|
||||||
|
@@ -19,18 +19,25 @@ class QMLDESIGNER_EXPORT Qml3DNode : public QmlVisualNode
|
|||||||
{
|
{
|
||||||
friend class QmlAnchors;
|
friend class QmlAnchors;
|
||||||
public:
|
public:
|
||||||
Qml3DNode() : QmlVisualNode() {}
|
Qml3DNode()
|
||||||
Qml3DNode(const ModelNode &modelNode) : QmlVisualNode(modelNode) {}
|
: QmlVisualNode()
|
||||||
bool isValid() const;
|
{}
|
||||||
|
|
||||||
|
Qml3DNode(const ModelNode &modelNode)
|
||||||
|
: QmlVisualNode(modelNode)
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool isValid(SL sl = {}) const;
|
||||||
explicit operator bool() const { return isValid(); }
|
explicit operator bool() const { return isValid(); }
|
||||||
static bool isValidQml3DNode(const ModelNode &modelNode);
|
|
||||||
static bool isValidVisualRoot(const ModelNode &modelNode);
|
|
||||||
|
|
||||||
bool handleEulerRotation(PropertyNameView name);
|
static bool isValidQml3DNode(const ModelNode &modelNode, SL sl = {});
|
||||||
bool isBlocked(PropertyNameView propName) const;
|
static bool isValidVisualRoot(const ModelNode &modelNode, SL sl = {});
|
||||||
|
|
||||||
void reparentWithTransform(NodeAbstractProperty &parentProperty);
|
bool handleEulerRotation(PropertyNameView name, SL sl = {});
|
||||||
bool hasAnimatedTransform();
|
bool isBlocked(PropertyNameView propName, SL sl = {}) const;
|
||||||
|
|
||||||
|
void reparentWithTransform(NodeAbstractProperty &parentProperty, SL sl = {});
|
||||||
|
bool hasAnimatedTransform(SL sl = {});
|
||||||
|
|
||||||
friend auto qHash(const Qml3DNode &node) { return qHash(node.modelNode()); }
|
friend auto qHash(const Qml3DNode &node) { return qHash(node.modelNode()); }
|
||||||
|
|
||||||
@@ -43,7 +50,9 @@ private:
|
|||||||
bool adjustScale);
|
bool adjustScale);
|
||||||
};
|
};
|
||||||
|
|
||||||
QMLDESIGNER_EXPORT QList<ModelNode> toModelNodeList(const QList<Qml3DNode> &fxItemNodeList);
|
QMLDESIGNER_EXPORT QList<ModelNode> toModelNodeList(const QList<Qml3DNode> &fxItemNodeList,
|
||||||
QMLDESIGNER_EXPORT QList<Qml3DNode> toQml3DNodeList(const QList<ModelNode> &modelNodeList);
|
ModelTracing::SourceLocation sl = {});
|
||||||
|
QMLDESIGNER_EXPORT QList<Qml3DNode> toQml3DNodeList(const QList<ModelNode> &modelNodeList,
|
||||||
|
ModelTracing::SourceLocation sl = {});
|
||||||
|
|
||||||
} //QmlDesigner
|
} //QmlDesigner
|
||||||
|
Reference in New Issue
Block a user