Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package qt6-quick3dphysics for openSUSE:Factory checked in at 2023-10-13 23:14:24 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/qt6-quick3dphysics (Old) and /work/SRC/openSUSE:Factory/.qt6-quick3dphysics.new.20540 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "qt6-quick3dphysics" Fri Oct 13 23:14:24 2023 rev:10 rq:1116946 version:6.6.0 Changes: -------- --- /work/SRC/openSUSE:Factory/qt6-quick3dphysics/qt6-quick3dphysics.changes 2023-10-02 20:07:37.365299568 +0200 +++ /work/SRC/openSUSE:Factory/.qt6-quick3dphysics.new.20540/qt6-quick3dphysics.changes 2023-10-13 23:14:56.823615907 +0200 @@ -1,0 +2,6 @@ +Tue Oct 10 09:39:56 UTC 2023 - Christophe Marin <christo...@krop.fr> + +- Update to 6.6.0 + * https://www.qt.io/blog/qt-6.6-released + +------------------------------------------------------------------- Old: ---- qtquick3dphysics-everywhere-src-6.5.3.tar.xz New: ---- qtquick3dphysics-everywhere-src-6.6.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ qt6-quick3dphysics.spec ++++++ --- /var/tmp/diff_new_pack.rcgRXR/_old 2023-10-13 23:14:58.467675539 +0200 +++ /var/tmp/diff_new_pack.rcgRXR/_new 2023-10-13 23:14:58.471675684 +0200 @@ -16,8 +16,8 @@ # -%define real_version 6.5.3 -%define short_version 6.5 +%define real_version 6.6.0 +%define short_version 6.6 %define tar_name qtquick3dphysics-everywhere-src %define tar_suffix %{nil} # @@ -27,7 +27,7 @@ %endif # Name: qt6-quick3dphysics%{?pkg_suffix} -Version: 6.5.3 +Version: 6.6.0 Release: 0 Summary: Qt 6 Quick3D Physics Extensions License: GPL-3.0-only ++++++ qtquick3dphysics-everywhere-src-6.5.3.tar.xz -> qtquick3dphysics-everywhere-src-6.6.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/.cmake.conf new/qtquick3dphysics-everywhere-src-6.6.0/.cmake.conf --- old/qtquick3dphysics-everywhere-src-6.5.3/.cmake.conf 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/.cmake.conf 2023-10-03 22:42:51.000000000 +0200 @@ -1,2 +1,2 @@ -set(QT_REPO_MODULE_VERSION "6.5.3") +set(QT_REPO_MODULE_VERSION "6.6.0") set(QT_EXTRA_INTERNAL_TARGET_DEFINES "QT_NO_AS_CONST=1") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/.tag new/qtquick3dphysics-everywhere-src-6.6.0/.tag --- old/qtquick3dphysics-everywhere-src-6.5.3/.tag 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/.tag 2023-10-03 22:42:51.000000000 +0200 @@ -1 +1 @@ -b15660de503e00475f381661cd7177817b0a19b6 +26768a556754d5b7f6eab2a447ffb33508d830c4 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/README.md new/qtquick3dphysics-everywhere-src-6.6.0/README.md --- old/qtquick3dphysics-everywhere-src-6.5.3/README.md 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/README.md 2023-10-03 22:42:51.000000000 +0200 @@ -1,4 +1,19 @@ -# Qt Quick 3D Physics Module +# Qt Quick 3D Physics -The purpose of this module is to demonstrate the usage of PhysX Physics engine with Qt Quick 3D. +Qt Quick 3D Physics provides a high-level API for physics simulation. It supports simulating interactive rigid bodies as well as static meshes and non-colliding bodies used for detecting overlaps. Every simulated body can have its own physical properties like mass, density and friction. +## Documentation + +The Qt Quick 3D Physics documentation is available as a submodule of the Qt Framework's documentation. You can find it in the Qt documentation [online](https://doc-snapshots.qt.io/qt6-dev/qtquick3dphysics-index.html), or you can build it locally from the source code. + +## Reporting Issues + +If you encounter any issues while using Qt Quick 3D Physics, you can report them on the [Qt bug tracker](https://bugreports.qt.io/). Before submitting a new issue, please check the existing issues to see if the issue has already been reported, and make sure to select the "Quick: 3D Physics" component when creating a new issue. + +## Contributing + +We welcome contributions to Qt Quick 3D Physics. If you are interested in contributing, please read the [Qt Contribution Guidelines](https://wiki.qt.io/Qt_Contribution_Guidelines) for more details. + +## License + +Qt Quick 3D Physics is available under the commercial license from The Qt Company. In addition, it is available under the [GNU General Public License, version 3](http://www.gnu.org/licenses/gpl-3.0.html). Further 3rd party Licenses and Attributions can be found in the LICENSES folder, as well as documented [here](https://doc-snapshots.qt.io/qt6-dev/qtquick3dphysics-index.html#license-and-attributions). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/coin/axivion/ci_config_linux.json new/qtquick3dphysics-everywhere-src-6.6.0/coin/axivion/ci_config_linux.json --- old/qtquick3dphysics-everywhere-src-6.5.3/coin/axivion/ci_config_linux.json 1970-01-01 01:00:00.000000000 +0100 +++ new/qtquick3dphysics-everywhere-src-6.6.0/coin/axivion/ci_config_linux.json 2023-10-03 22:42:51.000000000 +0200 @@ -0,0 +1,61 @@ +{ + "Project": { + "Git": { + "_active": true, + "sourceserver_gitdir": "/data/axivion/databases/$(env:TESTED_MODULE_COIN).git" + }, + "BuildSystemIntegration": { + "child_order": [ + "GCCSetup", + "CMake", + "LinkLibraries" + ] + }, + "CMake": { + "_active": true, + "_copy_from": "CMakeIntegration", + "build_environment": {}, + "build_options": "-j4", + "generate_options": "--fresh", + "generator": "Ninja" + }, + "GCCSetup": { + "_active": true, + "_copy_from": "Command", + "build_command": "gccsetup --cc gcc --cxx g++ --config ../../../axivion/" + }, + "LinkLibraries": { + "_active": true, + "_copy_from": "AxivionLinker", + "input_files": [ + "build/lib/lib*.so*.ir", + "build/qml/*/*/lib*.so*.ir", + "build/qml/*/*/*/lib*.so*.ir" + ], + "ir": "build/$(env:TESTED_MODULE_COIN).ir" + }, + "Project-GlobalOptions": { + "directory": "../work/qt/$(env:TESTED_MODULE_COIN)", + "ir": "build/$(env:TESTED_MODULE_COIN).ir", + "name": "qt_$(env:TESTED_MODULE_COIN)_dev_$(env:TARGET_OS_COIN)" + } + }, + "Results": { + "Dashboard": { + "dashboard_url": "https://axivion-srv.ci.qt.io/axivion/" + }, + "Database": { + "ci_mode": { + "directory": "/data/axivion/databases" + } + } + }, + "_Format": "1.0", + "_Version": "trunk-9e0ef9c5818", + "_VersionNum": [ + 7, + 6, + 9999, + 11489 + ] +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/dependencies.yaml new/qtquick3dphysics-everywhere-src-6.6.0/dependencies.yaml --- old/qtquick3dphysics-everywhere-src-6.5.3/dependencies.yaml 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/dependencies.yaml 2023-10-03 22:42:51.000000000 +0200 @@ -1,13 +1,13 @@ dependencies: ../qtbase: - ref: 372eaedc5b8c771c46acc4c96e91bbade4ca3624 + ref: 33f5e985e480283bb0ca9dea5f82643e825ba87c required: true ../qtdeclarative: - ref: e00c258fa5a4e122636d441967dea035865fac5d + ref: e559d5cf2b66c4a973f83f173d57676a21d287ef required: true ../qtquick3d: - ref: 1b13cfbfcde76219c660d86b5bd8463668b2a920 + ref: 5bba89db0520ed6250ab854ae5b04db5886088b4 required: true ../qtshadertools: - ref: 8354edb19012d4ffda1da8678a840659574f3f1c + ref: ded671b8c17f2a6b2f03cde3b9dad4910adda3cc required: true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/designer/CharacterControllerSection.qml new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/designer/CharacterControllerSection.qml --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/designer/CharacterControllerSection.qml 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/designer/CharacterControllerSection.qml 2023-10-03 22:42:51.000000000 +0200 @@ -168,5 +168,21 @@ ExpandingSpacer {} } + + PropertyLabel { + text: "Enable ShapeHit Callback" + tooltip: "Enables the shapeHit callback for this character controller." + } + + SecondColumnLayout { + CheckBox { + text: backendValues.midAirControl.valueToString + backendValue: backendValues.midAirControl + implicitWidth: StudioTheme.Values.twoControlColumnWidth + + StudioTheme.Values.actionIndicatorWidth + } + + ExpandingSpacer {} + } } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/physxnode/qabstractphysxnode.cpp new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/physxnode/qabstractphysxnode.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/physxnode/qabstractphysxnode.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/physxnode/qabstractphysxnode.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -23,19 +23,10 @@ QAbstractPhysXNode::QAbstractPhysXNode(QAbstractPhysicsNode *node) : frontendNode(node) { - Q_ASSERT(node->m_backendObject == nullptr); node->m_backendObject = this; } -QAbstractPhysXNode::~QAbstractPhysXNode() { - if (!frontendNode) { - Q_ASSERT(isRemoved); - return; - } - - Q_ASSERT(frontendNode->m_backendObject == this); - frontendNode->m_backendObject = nullptr; -} +QAbstractPhysXNode::~QAbstractPhysXNode() = default; bool QAbstractPhysXNode::cleanupIfRemoved(QPhysXWorld *physX) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/physxnode/qphysxcharactercontroller.cpp new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/physxnode/qphysxcharactercontroller.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/physxnode/qphysxcharactercontroller.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/physxnode/qphysxcharactercontroller.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -21,6 +21,35 @@ QT_BEGIN_NAMESPACE +class ControllerCallback : public physx::PxUserControllerHitReport +{ +public: + ControllerCallback(QPhysicsWorld *worldIn) : world(worldIn) { } + + void onShapeHit(const physx::PxControllerShapeHit &hit) override + { + QMutexLocker locker(&world->m_removedPhysicsNodesMutex); + + QAbstractPhysicsNode *other = static_cast<QAbstractPhysicsNode *>(hit.actor->userData); + QCharacterController *trigger = + static_cast<QCharacterController *>(hit.controller->getUserData()); + + if (!trigger || !other || !trigger->enableShapeHitCallback()) + return; + + QVector3D position = QPhysicsUtils::toQtType(physx::toVec3(hit.worldPos)); + QVector3D impulse = QPhysicsUtils::toQtType(hit.dir * hit.length); + QVector3D normal = QPhysicsUtils::toQtType(hit.worldNormal); + + emit trigger->shapeHit(other, position, impulse, normal); + } + void onControllerHit(const physx::PxControllersHit & /*hit*/) override { } + void onObstacleHit(const physx::PxControllerObstacleHit & /*hit*/) override { } + +private: + QPhysicsWorld *world = nullptr; +}; + QPhysXCharacterController::QPhysXCharacterController(QCharacterController *frontEnd) : QAbstractPhysXNode(frontEnd) { @@ -29,6 +58,8 @@ void QPhysXCharacterController::cleanup(QPhysXWorld *physX) { PHYSX_RELEASE(controller); + delete reportCallback; + reportCallback = nullptr; QAbstractPhysXNode::cleanup(physX); } @@ -60,6 +91,8 @@ const qreal heightScale = scale.y(); const qreal radiusScale = scale.x(); physx::PxCapsuleControllerDesc desc; + reportCallback = new ControllerCallback(world); + desc.reportCallback = reportCallback; desc.radius = 0.5f * radiusScale * capsule->diameter(); desc.height = heightScale * capsule->height(); desc.stepOffset = 0.25f * desc.height; // TODO: API diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/physxnode/qphysxcharactercontroller_p.h new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/physxnode/qphysxcharactercontroller_p.h --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/physxnode/qphysxcharactercontroller_p.h 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/physxnode/qphysxcharactercontroller_p.h 2023-10-03 22:42:51.000000000 +0200 @@ -25,6 +25,7 @@ QT_BEGIN_NAMESPACE class QCharacterController; +class ControllerCallback; class QPhysXCharacterController : public QAbstractPhysXNode { @@ -37,6 +38,7 @@ private: physx::PxCapsuleController *controller = nullptr; + ControllerCallback *reportCallback = nullptr; }; QT_END_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qabstractphysicsnode.cpp new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qabstractphysicsnode.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qabstractphysicsnode.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qabstractphysicsnode.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -1,4 +1,3 @@ - // Copyright (C) 2021 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only @@ -58,11 +57,13 @@ \qmlsignal PhysicsNode::bodyContact(PhysicsNode *body, list<vector3D> positions, list<vector3D> impulses, list<vector3D> normals) - This signal is emitted when there is a collision and \l {PhysicsNode::} - {receiveContactReports} is set to \c true in this body and \l {PhysicsNode::} - {sendContactReports} is set to \c true in the colliding \a body. The parameters \a positions, \a - impulses and \a normals contain the position, impulse force and normal for each contact point at - the same index. + This signal is emitted when there is a collision between a non-kinematic dynamic body and any + other body. The \l {PhysicsNode::} {receiveContactReports} in this body and \l {PhysicsNode::} + {sendContactReports} in the colliding body need to be set to true. The parameters \a body, \a + positions, \a impulses and \a normals contain the other body, position, impulse force and normal + for each contact point at the same index. + + \sa CharacterController::shapeHit */ /*! diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qcharactercontroller.cpp new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qcharactercontroller.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qcharactercontroller.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qcharactercontroller.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -92,11 +92,34 @@ */ /*! + \qmlproperty bool CharacterController::enableShapeHitCallback + \since 6.6 + + This property enables/disables the \l {CharacterController::shapeHit} callback for this + character controller. + + Default value: false +*/ + +/*! \qmlmethod CharacterController::teleport(vector3d position) Immediately move the character to \a position without checking for collisions. The caller is responsible for avoiding overlap with static objects. */ +/*! + \qmlsignal CharacterController::shapeHit(PhysicsNode *body, vector3D position, vector3D impulse, + vector3D normal) + \since 6.6 + + This signal is emitted when \l {CharacterController::}{movement} has been + called and it would result + in a collision with a \l {DynamicRigidBody} or a \l {StaticRigidBody} and + \l {CharacterController::} {enableShapeHitCallback} is set to \c true. + The parameters \a body, \a position, \a impulse and \a normal contain the body, position, + impulse force and normal for the contact point. +*/ + QCharacterController::QCharacterController() = default; const QVector3D &QCharacterController::movement() const @@ -235,9 +258,22 @@ emit collisionsChanged(); } +bool QCharacterController::enableShapeHitCallback() const +{ + return m_enableShapeHitCallback; +} + QAbstractPhysXNode *QCharacterController::createPhysXBackend() { return new QPhysXCharacterController(this); } +void QCharacterController::setEnableShapeHitCallback(bool newEnableShapeHitCallback) +{ + if (m_enableShapeHitCallback == newEnableShapeHitCallback) + return; + m_enableShapeHitCallback = newEnableShapeHitCallback; + emit enableShapeHitCallbackChanged(); +} + QT_END_NAMESPACE diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qcharactercontroller_p.h new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qcharactercontroller_p.h --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qcharactercontroller_p.h 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qcharactercontroller_p.h 2023-10-03 22:42:51.000000000 +0200 @@ -30,6 +30,8 @@ Q_PROPERTY(bool midAirControl READ midAirControl WRITE setMidAirControl NOTIFY midAirControlChanged) Q_PROPERTY(Collisions collisions READ collisions NOTIFY collisionsChanged) + Q_PROPERTY(bool enableShapeHitCallback READ enableShapeHitCallback WRITE + setEnableShapeHitCallback NOTIFY enableShapeHitCallbackChanged) QML_NAMED_ELEMENT(CharacterController) public: QCharacterController(); @@ -59,6 +61,9 @@ void setCollisions(const Collisions &newCollisions); QAbstractPhysXNode *createPhysXBackend() final; + Q_REVISION(6, 6) bool enableShapeHitCallback() const; + Q_REVISION(6, 6) void setEnableShapeHitCallback(bool newEnableShapeHitCallback); + signals: void movementChanged(); void gravityChanged(); @@ -66,6 +71,9 @@ void midAirControlChanged(); void collisionsChanged(); + void enableShapeHitCallbackChanged(); + void shapeHit(QAbstractPhysicsNode *body, const QVector3D &position, const QVector3D &impulse, + const QVector3D &normal); private: QVector3D m_movement; @@ -77,6 +85,7 @@ QVector3D m_teleportPosition; bool m_teleport = false; Collisions m_collisions; + bool m_enableShapeHitCallback = false; }; Q_DECLARE_OPERATORS_FOR_FLAGS(QCharacterController::Collisions) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qphysicsworld.cpp new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qphysicsworld.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qphysicsworld.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qphysicsworld.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -227,8 +227,6 @@ for (auto world : worldManager.worlds) { world->m_newPhysicsNodes.removeAll(physicsNode); if (physicsNode->m_backendObject) { - Q_ASSERT(physicsNode->m_backendObject->frontendNode == physicsNode); - physicsNode->m_backendObject->frontendNode = nullptr; physicsNode->m_backendObject->isRemoved = true; physicsNode->m_backendObject = nullptr; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qphysicsworld_p.h new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qphysicsworld_p.h --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qphysicsworld_p.h 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qphysicsworld_p.h 2023-10-03 22:42:51.000000000 +0200 @@ -204,6 +204,7 @@ friend class QHeightFieldShape; friend class QQuick3DPhysicsHeightField; friend class SimulationEventCallback; + friend class ControllerCallback; static physx::PxPhysics *getPhysics(); static physx::PxCooking *getCooking(); QThread m_workerThread; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qstaticphysxobjects.cpp new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qstaticphysxobjects.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/src/quick3dphysics/qstaticphysxobjects.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/src/quick3dphysics/qstaticphysxobjects.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -2,6 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include "qstaticphysxobjects_p.h" +#include <qassert.h> #include <QGlobalStatic> #include <new> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/CMakeLists.txt new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/CMakeLists.txt --- old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/CMakeLists.txt 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/CMakeLists.txt 2023-10-03 22:42:51.000000000 +0200 @@ -1,3 +1,4 @@ +add_subdirectory(callback) add_subdirectory(changescene) add_subdirectory(character) add_subdirectory(character_remove) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/CMakeLists.txt new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/CMakeLists.txt --- old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/CMakeLists.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/CMakeLists.txt 2023-10-03 22:42:51.000000000 +0200 @@ -0,0 +1,22 @@ +# Copyright (C) 2023 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +set(PROJECT_NAME "test_auto_callback") + +qt_internal_add_test(${PROJECT_NAME} + GUI + QMLTEST + SOURCES + tst_callback.cpp + LIBRARIES + Qt::Core + Qt::Qml + TESTDATA + tst_callback.qml + PlaneScene.qml + BUILTIN_TESTDATA +) + +if(QT_BUILD_STANDALONE_TESTS) + qt_import_qml_plugins(${PROJECT_NAME}) +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/PlaneScene.qml new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/PlaneScene.qml --- old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/PlaneScene.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/PlaneScene.qml 2023-10-03 22:42:51.000000000 +0200 @@ -0,0 +1,59 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick3D +import QtQuick3D.Physics + +View3D { + id: viewport + property real elapsedTime: 0 + + environment: SceneEnvironment { + clearColor: "#d6dbdf" + backgroundMode: SceneEnvironment.Color + } + + PerspectiveCamera { + position: Qt.vector3d(0, 200, 1000) + clipFar: 2000 + clipNear: 1 + } + + DirectionalLight { + eulerRotation.x: -45 + eulerRotation.y: 45 + castsShadow: true + brightness: 1 + shadowFactor: 100 + } + + PhysicsWorld { + id: world + scene: viewport.scene + //maximumTimestep: 0.1 + //minimumTimestep: 0.1 + } + + Connections { + target: world + function onFrameDone(timeStep) { + viewport.elapsedTime += timeStep + } + } + + StaticRigidBody { + position: Qt.vector3d(0, -100, 0) + eulerRotation: Qt.vector3d(-90, 0, 0) + collisionShapes: PlaneShape {} + Model { + source: "#Rectangle" + scale: Qt.vector3d(500, 500, 0) + materials: PrincipledMaterial { + baseColor: "green" + } + castsShadows: false + receivesShadows: true + } + } +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/tst_callback.cpp new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/tst_callback.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/tst_callback.cpp 1970-01-01 01:00:00.000000000 +0100 +++ new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/tst_callback.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -0,0 +1,21 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#include <QtQuickTest/quicktest.h> +class tst_callback: public QObject +{ + Q_OBJECT +private slots: + void skiptest() { QSKIP("This test will fail, skipping."); }; +}; +int main(int argc, char **argv) +{ + if (!qEnvironmentVariableIsEmpty("QEMU_LD_PREFIX")) { + qWarning("This test is unstable on QEMU, so it will be skipped."); + tst_callback skip; + return QTest::qExec(&skip, argc, argv); + } + QTEST_SET_MAIN_SOURCE_PATH + return quick_test_main(argc, argv, "tst_callback", QUICK_TEST_SOURCE_DIR); +} +#include "tst_callback.moc" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/tst_callback.qml new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/tst_callback.qml --- old/qtquick3dphysics-everywhere-src-6.5.3/tests/auto/callback/tst_callback.qml 1970-01-01 01:00:00.000000000 +0100 +++ new/qtquick3dphysics-everywhere-src-6.6.0/tests/auto/callback/tst_callback.qml 2023-10-03 22:42:51.000000000 +0200 @@ -0,0 +1,818 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +// Tests the callback methods. +// +// 00) dynamic vs static +// 01) dynamic vs kinematic +// 02) dynamic vs character +// 03) dynamic vs dynamic +// +// 10) character vs dynamic (no callback) +// 11) character vs static (no callback) +// 12) character vs kinematic (no callback) +// 13) character vs character (no callback) +// +// 20) character vs dynamic (onShapeHit) +// 21) character vs static (onShapeHit) +// 22) character vs kinematic (onShapeHit) +// 23) character vs character (onShapeHit no callback) +// +// 30) kinematic vs static (no callback) +// 31) kinematic vs kinematic (no callback) +// 32) kinematic vs character (no callback) +// 33) kinematic vs dynamic + +import QtCore +import QtTest +import QtQuick3D +import QtQuick3D.Physics +import QtQuick3D.Physics.Helpers +import QtQuick + +Item { + id: testItem + property real sceneWidth: 200 + property real sceneHeight: 200 + + function xy(i, j) { + return [j*testItem.sceneWidth, i*testItem.sceneHeight] + } + width: sceneWidth*4 + height: sceneHeight*4 + visible: true + + ////////////////////////////////////////////////// + // 00 dynamic vs static + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(0, 0)[0] + y: xy(0, 0)[1] + id: scene00 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene00.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + StaticRigidBody { + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + sendContactReports: true + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "blue" + } + } + } + } + + TestCase { + name: "dynamic vs static" + when: scene00.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 01 dynamic vs kinematic + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(0, 1)[0] + y: xy(0, 1)[1] + id: scene01 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene01.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + DynamicRigidBody { + isKinematic: true + position: Qt.vector3d(0, 100, 0) + collisionShapes: SphereShape {} + sendContactReports: true + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "blue" + } + } + } + } + + TestCase { + name: "dynamic vs kinematic" + when: scene01.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 02 dynamic vs character + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(0, 2)[0] + y: xy(0, 2)[1] + id: scene02 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene02.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 50, 0) + sendContactReports: true + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "dynamic vs character" + when: scene02.contact + function triggered() {} + } + + + ////////////////////////////////////////////////// + // 03 dynamic vs dynamic + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(0, 3)[0] + y: xy(0, 3)[1] + id: scene03 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene03.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + DynamicRigidBody { + position: Qt.vector3d(0, 100, 0) + collisionShapes: SphereShape {} + sendContactReports: true + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "blue" + } + } + } + } + + TestCase { + name: "dynamic vs dynamic" + when: scene03.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 10 character vs dynamic (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(1, 0)[0] + y: xy(1, 0)[1] + id: scene10 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene10.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + sendContactReports: true + gravity: Qt.vector3d(0, -982, 0) + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character vs dynamic (no callback)" + when: scene10.elapsedTime > 2000 && !scene10.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 11 character vs static (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(1, 1)[0] + y: xy(1, 1)[1] + id: scene11 + property bool contact: false + + StaticRigidBody { + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene11.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + sendContactReports: true + gravity: Qt.vector3d(0, -982, 0) + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character controller vs static (no callback)" + when: scene11.elapsedTime > 2000 && !scene11.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 12 character vs kinematic (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(1, 2)[0] + y: xy(1, 2)[1] + id: scene12 + property bool contact: false + + DynamicRigidBody { + isKinematic: true + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene12.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + sendContactReports: true + gravity: Qt.vector3d(0, -982, 0) + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character vs kinematic (no callback)" + when: scene12.elapsedTime > 2000 && !scene12.contact + function triggered() {} + } + + + ////////////////////////////////////////////////// + // 13 character vs character (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(1, 3)[0] + y: xy(1, 3)[1] + id: scene13 + property bool contact: false + + CharacterController { + position: Qt.vector3d(0, 0, 0) + receiveContactReports: true + onBodyContact: () => { + scene13.contact = true + } + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "red" + } + } + collisionShapes: CapsuleShape {} + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + sendContactReports: true + gravity: Qt.vector3d(0, -982, 0) + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character vs character (no callback)" + when: scene13.elapsedTime > 2000 && !scene13.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 20 character vs dynamic (onShapeHit) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(2, 0)[0] + y: xy(2, 0)[1] + id: scene20 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + gravity: Qt.vector3d(0, -982, 0) + onShapeHit: () => { + scene20.contact = true + } + enableShapeHitCallback: true + + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character vs dynamic (onShapeHit)" + when: scene20.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 21 character vs static (onShapeHit) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(2, 1)[0] + y: xy(2, 1)[1] + id: scene21 + property bool contact: false + + StaticRigidBody { + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + sendContactReports: true + gravity: Qt.vector3d(0, -982, 0) + onShapeHit: () => { + scene21.contact = true + } + enableShapeHitCallback: true + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character controller vs static (onShapeHit)" + when: scene21.contact + function triggered() {} + } + + ////////////////////////////////////////////////// + // 22 character vs kinematic (onShapeHit) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(2, 2)[0] + y: xy(2, 2)[1] + id: scene22 + property bool contact: false + + DynamicRigidBody { + isKinematic: true + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + gravity: Qt.vector3d(0, -982, 0) + onShapeHit: () => { + scene22.contact = true + } + enableShapeHitCallback: true + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character vs kinematic (onShapeHit)" + when: scene22.contact + function triggered() {} + } + + + ////////////////////////////////////////////////// + // 23 character vs character (onShapeHit no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(2, 3)[0] + y: xy(2, 3)[1] + id: scene23 + property bool contact: false + + CharacterController { + position: Qt.vector3d(0, 0, 0) + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "red" + } + } + collisionShapes: CapsuleShape {} + } + + CharacterController { + position: Qt.vector3d(0, 1000, 0) + gravity: Qt.vector3d(0, -982, 0) + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + onShapeHit: () => { + scene23.contact = true + } + enableShapeHitCallback: true + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "character vs character (onShapeHit no callback)" + when: scene23.elapsedTime > 2000 && !scene23.contact + function triggered() {} + } + + + ////////////////////////////////////////////////// + // 30 kinematic vs static (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(3, 0)[0] + y: xy(3, 0)[1] + id: scene30 + property bool contact: false + + DynamicRigidBody { + id: scene30Sphere + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene30.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + + isKinematic: true + kinematicPosition: Qt.vector3d(0, Math.max(600 - scene30.elapsedTime, 0), 0) + } + + StaticRigidBody { + position: Qt.vector3d(0, 0, 0) + collisionShapes: SphereShape {} + sendContactReports: true + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "blue" + } + } + } + } + + TestCase { + name: "kinematic vs static (no callback)" + when: !scene30.contact && scene30.elapsedTime > 2000 + function triggered() {} + } + + ////////////////////////////////////////////////// + // 31 kinematic vs kinematic (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(3, 1)[0] + y: xy(3, 1)[1] + id: scene31 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene31.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + + isKinematic: true + kinematicPosition: Qt.vector3d(0, Math.max(600 - scene30.elapsedTime, 0), 0) + } + + DynamicRigidBody { + isKinematic: true + position: Qt.vector3d(0, 100, 0) + collisionShapes: SphereShape {} + sendContactReports: true + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "blue" + } + } + } + } + + TestCase { + name: "kinematic vs kinematic (no callback)" + when: !scene31.contact && scene31.elapsedTime > 2000 + function triggered() {} + } + + ////////////////////////////////////////////////// + // 32 kinematic vs character (no callback) + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(3, 2)[0] + y: xy(3, 2)[1] + id: scene32 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene32.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + + isKinematic: true + kinematicPosition: Qt.vector3d(0, Math.max(600 - scene30.elapsedTime, 0), 0) + } + + CharacterController { + position: Qt.vector3d(0, 50, 0) + sendContactReports: true + Model { + eulerRotation.z: 90 + geometry: CapsuleGeometry {} + materials: PrincipledMaterial { + baseColor: "blue" + } + } + collisionShapes: CapsuleShape {} + } + } + + TestCase { + name: "kinematic vs character (no callback)" + when: !scene32.contact && scene32.elapsedTime > 2000 + function triggered() {} + } + + + ////////////////////////////////////////////////// + // 33 kinematic vs dynamic + + PlaneScene { + width: parent.sceneWidth + height: parent.sceneHeight + x: xy(3, 3)[0] + y: xy(3, 3)[1] + id: scene33 + property bool contact: false + + DynamicRigidBody { + position: Qt.vector3d(0, 600, 0) + collisionShapes: SphereShape {} + receiveContactReports: true + onBodyContact: () => { + scene33.contact = true + } + + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "red" + } + } + } + + DynamicRigidBody { + position: Qt.vector3d(0, 100, 0) + collisionShapes: SphereShape {} + sendContactReports: true + Model { + source: "#Sphere" + materials: PrincipledMaterial { + baseColor: "blue" + } + } + } + } + + TestCase { + name: "kinematic vs dynamic" + when: scene33.contact + function triggered() {} + } + + ////////////////////////////////////////////////// +} + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/qtquick3dphysics-everywhere-src-6.5.3/tests/baseline/shared/baselineprotocol.cpp new/qtquick3dphysics-everywhere-src-6.6.0/tests/baseline/shared/baselineprotocol.cpp --- old/qtquick3dphysics-everywhere-src-6.5.3/tests/baseline/shared/baselineprotocol.cpp 2023-09-24 13:12:43.000000000 +0200 +++ new/qtquick3dphysics-everywhere-src-6.6.0/tests/baseline/shared/baselineprotocol.cpp 2023-10-03 22:42:51.000000000 +0200 @@ -270,7 +270,7 @@ socket.connectToHost(serverName, ServerPort); if (!socket.waitForConnected(Timeout)) { - QThread::msleep(3000); // Wait a bit and try again, the server might just be restarting + QThread::sleep(std::chrono::seconds{3}); // Wait a bit and try again, the server might just be restarting if (!socket.waitForConnected(Timeout)) { errMsg += QLS("TCP connectToHost failed. Host:") + QLS(serverName) + QLS(" port:") + QString::number(ServerPort); return false;