From d327c66c46c1c62b8ec45e4015364100748ab178 Mon Sep 17 00:00:00 2001 From: berrux_dev Date: Sat, 24 Oct 2026 19:32:52 +0200 Subject: [PATCH] Close bld/OSG floor: OSG 3.4.1 from source + port osgQt to Qt6 + wire BgViewer dtEntity Migrate BuildingViewer (16 files: DDS members, m_logger inits, QOpenGLWidget); gui:3:bld.info + gui:3:bdv now load --- .../BgViewer/viewerCtrl/buildingmanager.h | 3 +- .../viewerCtrl/viewerinterfaceimpl.cpp | 1 + .../Common/BgViewer/viewerCtrl/viewwidget.cpp | 4 +- .../Common/BgViewer/viewerCtrl/visitors.cpp | 8 +- .../BuildingViewer/Common/CMakeLists.txt | 2 + .../bdv_communication_interface_internal.cpp | 19 +- .../BuildingViewer/Common/bdv_controller.cpp | 4 +- .../Common/bdv_dds_controller.cpp | 327 +++++++++--------- .../Common/bdv_dds_controller.h | 2 +- .../BuildingViewer/Common/bdv_helper.cpp | 3 +- .../BuildingEdit/bdv_building_edit.cpp | 30 +- .../BuildingEdit/bdv_edit_model.cpp | 32 +- .../bdv_thread_video_exporter.cpp | 5 +- .../bdv_topic_replay_interface.cpp | 18 +- .../BuildingViewer/bdv_viewer_data_dialog.cpp | 2 + .../BuildingViewer/bdv_viewer_data_view.cpp | 2 + .../cmake/FindOpenSceneGraph.cmake | 117 +++++++ 17 files changed, 360 insertions(+), 219 deletions(-) create mode 100644 qt6-after/qt6-migrated-legatus/cmake/FindOpenSceneGraph.cmake diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/buildingmanager.h b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/buildingmanager.h index 69b6490a0..4c3c81001 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/buildingmanager.h +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/buildingmanager.h @@ -125,7 +125,8 @@ class Shot Shot(const int32_t id, const osg::Vec3d& shooterPos, const osg::Vec3d& targetPos, int buildingIdSrc, int rommNumberSrc, int buildingIdDst, int rommNumberDst, int lineType, const osg::Vec4& color, unsigned int duration_s, unsigned int durationMax_s, double simTimeCreated) - : mId(id), mShooterPos(shooterPos), mTargetPos(targetPos), mBuildingIdSrc(buildingIdSrc), + : m_logger(BuildingViewer::getLogger("Shot")), mId(id), mShooterPos(shooterPos), + mTargetPos(targetPos), mBuildingIdSrc(buildingIdSrc), mRoomNumberSrc(rommNumberSrc), mBuildingIdDst(buildingIdDst), mRoomNumberDst(rommNumberDst), mLineType(lineType), mColor(color), mDuration_s(duration_s), m_DurationMax_s(durationMax_s), mSimTimeCreated(simTimeCreated) diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewerinterfaceimpl.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewerinterfaceimpl.cpp index 8e7f73749..9a32d47e9 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewerinterfaceimpl.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewerinterfaceimpl.cpp @@ -180,6 +180,7 @@ CtrlImpl::CtrlImpl(dtEntity::EntityManager &em, QWidget *parentWidget) , mPaused(false) , mNonRealtimeMode(false) , mFrameRate(30) + , m_logger(BuildingViewer::getLogger("CtrlImpl")) { if (!mEntityManager->GetES(mMapSystem) || !mEntityManager->GetES(mPlayerSystem)) diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewwidget.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewwidget.cpp index 55dfdb7e6..896f4bad8 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewwidget.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/viewwidget.cpp @@ -3,7 +3,7 @@ #include #include #include -#include +#include #include #include @@ -176,7 +176,7 @@ void ViewWidget::viewModeChanged() bool ViewWidget::isOpenGlWindowExposed() const { - QGLWidget *gl = qobject_cast(m_pView); + QOpenGLWidget *gl = qobject_cast(m_pView); if (!gl || !gl->windowHandle()) return false; return gl->windowHandle()->isExposed(); diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/visitors.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/visitors.cpp index ed9cc8db5..c4e220c12 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/visitors.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/BgViewer/viewerCtrl/visitors.cpp @@ -4,7 +4,6 @@ #include #include #include -#include #include namespace VCtrl @@ -87,10 +86,11 @@ void SplitVisitor::apply(osg::Group &node) for (unsigned int i = 0; i < node.getNumDescriptions(); ++i) { QString descr = QString::fromStdString(node.getDescription(i)); - const QVector descprt = descr.splitRef(QLatin1Char(';')); - for (const QStringRef &prt : descprt) + // Qt6: QStringRef removed; split()/splitRef() both return QVector + const QVector descprt = descr.split(QLatin1Char(';')); + for (const QString &prt : descprt) { - const QVector items = prt.split(QLatin1Char('=')); + const QVector items = prt.split(QLatin1Char('=')); if (items.size() == 2 && items[0] == QLatin1String("base_height")) h = items[1].toFloat(); } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/CMakeLists.txt b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/CMakeLists.txt index 58629387e..dc2757e5c 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/CMakeLists.txt +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/CMakeLists.txt @@ -113,6 +113,7 @@ if(QT6_GUI_AVAILABLE) NGL_TARGET_LINK_LIBRARIES(BuildingViewerCommon PRIVATE Qt6::OpenGL + Qt6::OpenGLWidgets ${OPENGL_LIBRARIES} ${BGVIEWER_DTENTITYOSG_LIBRARY} ${BGVIEWER_DTENTITY_LIBRARY} @@ -126,6 +127,7 @@ NGL_TARGET_INCLUDE_DIRECTORIES(BuildingViewerCommon ${CMAKE_CURRENT_SOURCE_DIR}/BgViewer/viewerCtrl ${CMAKE_CURRENT_SOURCE_DIR}/../share ${OSG_INCLUDE_DIR} + ${BGVIEWER_INCLUDE_DIR} ) IF (NOT WIN32) diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_communication_interface_internal.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_communication_interface_internal.cpp index ffc061fa1..c93250024 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_communication_interface_internal.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_communication_interface_internal.cpp @@ -3,6 +3,7 @@ #include "bdv_communication_interface_internal.h" #include +#include #include #include #include @@ -29,7 +30,8 @@ static inline std::string createRoomNumberString(int roomNumber) } CommunicationInterfaceInternal::CommunicationInterfaceInternal(VCtrl::ViewerInterface* pviewerInterface) - : m_pviewerInterface(pviewerInterface) + : m_pviewerInterface(pviewerInterface), + m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.CommunicationInterfaceInternal")) { assert(m_pviewerInterface); } @@ -203,10 +205,10 @@ void CommunicationInterfaceInternal::setTeamConfiguration(const QMap> 24) & 0xff) / 255.); bdvParty.color.x = (((argb >> 16) & 0xff) / 255.); bdvParty.color.y = (((argb >> 8) & 0xff) / 255.); @@ -256,9 +258,9 @@ void CommunicationInterfaceInternal::systemSetMountingPoint(const Infrastructure { int buildingId = data.buildingId(); const QString& mountingPointName = filename; - double x = data.relPosition().offsetX(); - double y = data.relPosition().offsetY(); - double z = data.relPosition().offsetZ(); + double x = data.relPosition().offsetX; + double y = data.relPosition().offsetY; + double z = data.relPosition().offsetZ; const std::string buildingIdStr = createBuildingIdString(buildingId); @@ -446,7 +448,8 @@ static inline bool isPlayerId(const std::string& playerIdString, int* playerId) const QString playerIdQString(QString::fromStdString(playerIdString)); bool bOk = false; if (playerIdQString.startsWith(QLatin1String(PLAYER_PREFIX))) - *playerId = playerIdQString.midRef(QLatin1String(PLAYER_PREFIX).size()).toInt(&bOk); + // Qt6: QString::midRef removed; mid() returns the same substring by value. + *playerId = playerIdQString.mid(QLatin1String(PLAYER_PREFIX).size()).toInt(&bOk); return bOk; } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_controller.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_controller.cpp index 484aa8e8b..c1242a636 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_controller.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_controller.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -22,7 +23,8 @@ static char* argv_dummy[] = {(char*)"Dummy"}; BgViewerController::BgViewerController(QObject* parent) : QObject(parent), m_mainloop(argc_dummy, argv_dummy, nullptr), m_widgetStolen(false), m_comIfc(nullptr), - m_pBgViewerDDSController(nullptr), m_bgvApp(nullptr), m_tickTimer(new QTimer(this)) + m_pBgViewerDDSController(nullptr), m_bgvApp(nullptr), m_tickTimer(new QTimer(this)), + m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.BgViewerController")) { m_tickTimer->setInterval(1000 / 25); connect(m_tickTimer, &QTimer::timeout, this, [this]() { m_mainloop.tick(); }); diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.cpp index b47d79683..a37103ec9 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.cpp @@ -322,11 +322,11 @@ void BuildingViewerDdsController::uninitialize() QPointF BuildingViewerDdsController::toRelativePosition(const Core::GeoPosition& geoPos) const { - if (std::isnan(geoPos.lon()) || std::isnan(geoPos.lat()) || qIsNull(geoPos.lon()) || qIsNull(geoPos.lat())) + if (std::isnan(geoPos.lon) || std::isnan(geoPos.lat) || qIsNull(geoPos.lon) || qIsNull(geoPos.lat)) return {}; LtsCoordTrans::UtmCoordinate coord( - LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon(), geoPos.lat(), m_baseCoordinate.zone)); + LtsCoordTrans::UtmCoordinate::fromGeographic(geoPos.lon, geoPos.lat, m_baseCoordinate.zone)); return coord.relativeTo(m_baseCoordinate); } @@ -335,7 +335,7 @@ LtsUtils::QPoint3D BuildingViewerDdsController::toRelative3D(const Core::GeoPosi const auto ret = toRelativePosition(geoPos); if (ret.isNull()) return {}; - return LtsUtils::QPoint3D(ret.x(), ret.y(), geoPos.z()); + return LtsUtils::QPoint3D(ret.x(), ret.y(), geoPos.z); } bool BuildingViewerDdsController::clear() @@ -371,12 +371,12 @@ bool BuildingViewerDdsController::calcBaseCoordinate( if (!bAtLeasOneFound) { bAtLeasOneFound = true; - geoPosition = mse.geoPosition(); + geoPosition = mse.geoPosition; } else { - geoPosition.lat() = std::min(geoPosition.lat(), mse.geoPosition().lat()); - geoPosition.lon() = std::min(geoPosition.lon(), mse.geoPosition().lon()); + geoPosition.lat = std::min(geoPosition.lat, mse.geoPosition.lat); + geoPosition.lon = std::min(geoPosition.lon, mse.geoPosition.lon); } } if (!bAtLeasOneFound) @@ -384,7 +384,7 @@ bool BuildingViewerDdsController::calcBaseCoordinate( WARNING_LOG(m_logger) << "No building available in exercise " << m_exerciseId; return false; } - m_baseCoordinate = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPosition.lon(), geoPosition.lat()); + m_baseCoordinate = LtsCoordTrans::UtmCoordinate::fromGeographic(geoPosition.lon, geoPosition.lat); return true; } @@ -422,11 +422,11 @@ bool BuildingViewerDdsController::writeBuildingDataToXML(const QString& modelPat const auto bi = BuildingInfo::fromJson(ele.toObject()); if (!bi.isValid()) continue; - mse.id(bi.id); - mse.angle(bi.angleDegree); - mse.geoPosition(Core::GeoPosition(bi.position.x(), bi.position.y(), bi.position.z())); - mse.name(bi.name.toStdString()); - mseMap.insert(mse.id(), mse); + mse.id = bi.id; + mse.angle = bi.angleDegree; + mse.geoPosition = Core::GeoPosition(bi.position.x(), bi.position.y(), bi.position.z()); + mse.name = bi.name.toStdString(); + mseMap.insert(mse.id, mse); } } else @@ -435,17 +435,17 @@ bool BuildingViewerDdsController::writeBuildingDataToXML(const QString& modelPat const auto mMap = m_ismDtc->mainStructureElements(); for (const auto& mse : mMap) { - if (mse.modelId() == 0) + if (mse.modelId == 0) continue; if (!m_ismDtc->isElementAssignedToExercise(mse, m_exerciseId)) { DEBUG_LOG(m_logger) - << "Not writing mse with id " << mse.id() + << "Not writing mse with id " << mse.id << " to building xml file since it is not assigned to the current exercise which has id " << m_exerciseId; continue; } - mseMap.insert(mse.id(), mse); + mseMap.insert(mse.id, mse); } } INFO_LOG(m_logger) << getSessionInfo() @@ -460,7 +460,7 @@ bool BuildingViewerDdsController::writeBuildingDataToXML(const QString& modelPat QXmlStreamWriter sw(&f); sw.setAutoFormatting(true); sw.setAutoFormattingIndent(2); - sw.setCodec("UTF-8"); + // Qt6: QXmlStreamWriter::setCodec removed; it writes UTF-8 by default. sw.writeStartDocument(QStringLiteral("1.0"), true); sw.writeStartElement(QStringLiteral("MetaData")); { @@ -478,28 +478,28 @@ bool BuildingViewerDdsController::writeBuildingDataToXML(const QString& modelPat for (const InfrastructureManagement::MainStructureElement& mse : std::as_const(mseMap)) { - m_knownBuildings += mse.id(); + m_knownBuildings += mse.id; sw.writeStartElement(QStringLiteral("Model")); sw.writeAttribute(QStringLiteral("Type"), QStringLiteral("House")); { - const QString name(QString::fromStdString(mse.name())); + const QString name(QString::fromStdString(mse.name)); sw.writeStartElement(QStringLiteral("Description")); sw.writeAttribute(QStringLiteral("Name"), name); sw.writeEndElement(); sw.writeStartElement(QStringLiteral("Feature")); - sw.writeAttribute(QStringLiteral("Id"), BuildingViewer::databaseId2FeatureId(mse.id())); + sw.writeAttribute(QStringLiteral("Id"), BuildingViewer::databaseId2FeatureId(mse.id)); sw.writeEndElement(); sw.writeStartElement(QStringLiteral("Orientation")); - sw.writeAttribute(QStringLiteral("Angle"), QString::number(360 - mse.angle())); + sw.writeAttribute(QStringLiteral("Angle"), QString::number(360 - mse.angle)); sw.writeEndElement(); - const QPointF offset(toRelativePosition(mse.geoPosition())); + const QPointF offset(toRelativePosition(mse.geoPosition)); sw.writeStartElement(QStringLiteral("Position")); sw.writeAttribute(QStringLiteral("X"), QString::number(offset.x(), 'f', 13)); sw.writeAttribute(QStringLiteral("Y"), QString::number(offset.y(), 'f', 13)); - sw.writeAttribute(QStringLiteral("Z"), QString::number(mse.geoPosition().z(), 'f', 13)); + sw.writeAttribute(QStringLiteral("Z"), QString::number(mse.geoPosition.z, 'f', 13)); sw.writeEndElement(); sw.writeStartElement(QStringLiteral("File")); sw.writeAttribute(QStringLiteral("Name"), name + QStringLiteral(".flt")); @@ -552,7 +552,7 @@ void BuildingViewerDdsController::onReplayChanged(const SituationReplay::SitRepl { Q_UNUSED(modType) - switch (srp.state()) + switch (srp.state) { case SituationReplay::SrpState::Stopped: m_connection->setSimuationPace(1.0); @@ -560,7 +560,7 @@ void BuildingViewerDdsController::onReplayChanged(const SituationReplay::SitRepl break; case SituationReplay::SrpState::Started: case SituationReplay::SrpState::Resumed: - m_connection->setSimuationPace(srp.pace()); + m_connection->setSimuationPace(srp.pace); break; case SituationReplay::SrpState::Paused: @@ -629,7 +629,7 @@ void BuildingViewerDdsController::handleMountingPoint(const InfrastructureManage return; } - QVector3D position(mp.relPosition().offsetX(), mp.relPosition().offsetY(), mp.relPosition().offsetZ()); + QVector3D position(mp.relPosition().offsetX, mp.relPosition().offsetY, mp.relPosition().offsetZ); QString strfeatureID = BuildingViewer::databaseId2FeatureId(mp.buildingId()); QString strMountingPointID = strfeatureID + QStringLiteral("_MountingPoint_") + QString::number(mountingPointId); @@ -712,7 +712,7 @@ void BuildingViewerDdsController::setCurrentTrainingAreaMap(const QString& model bool BuildingViewerDdsController::isValidParticipant(const ParticipantManagement::Participant& participant) const { - if (participant.id() == 0) + if (participant.id == 0) { if (m_logger.isDebugEnabled()) DEBUG_LOG(m_logger) << getSessionInfo() @@ -720,32 +720,32 @@ bool BuildingViewerDdsController::isValidParticipant(const ParticipantManagement return false; } - if (participant.isDeleted()) + if (participant.isDeleted) { DEBUG_LOG(m_logger) << getSessionInfo() << "isValidParticipant: Not handling participant with id " - << participant.id() << " since it is marked as 'deleted'"; + << participant.id << " since it is marked as 'deleted'"; return false; } if (m_session == nullptr) return false; - if (!m_session->isVisibleParty(participant.partyId())) + if (!m_session->isVisibleParty(participant.partyId)) { DEBUG_LOG(m_logger) << getSessionInfo() << "isValidParticipant: Not handling participant with id " - << participant.id() << " since it is not visible for party with id " - << participant.partyId(); + << participant.id << " since it is not visible for party with id " + << participant.partyId; return false; } if (!m_ppmDtc) return false; - ParticipantManagement::TypeClass tc = m_ppmDtc->type(participant.typeId()).typeClass(); + ParticipantManagement::TypeClass tc = m_ppmDtc->type(participant.typeId).typeClass; if (tc == ParticipantManagement::TypeClass::SupportUnit || tc == ParticipantManagement::TypeClass::Unit) { DEBUG_LOG(m_logger) << getSessionInfo() << "isValidParticipant: Not handling participant with id " - << participant.id() << " since its type is 'SupportUnit', 'Unit' or 'Structure'"; + << participant.id << " since its type is 'SupportUnit', 'Unit' or 'Structure'"; return false; } @@ -787,7 +787,7 @@ void BuildingViewerDdsController::createParticipants() auto cb = [this, &positionMap, sizeL](const ParticipantManagement::Participant& part) { if (!isValidParticipant(part)) return; - createParticipant(part, positionMap.value(part.id()), sizeL); + createParticipant(part, positionMap.value(part.id), sizeL); }; m_ppmDtc->participants(cb); @@ -826,7 +826,7 @@ void BuildingViewerDdsController::onBoobyTrapChanged(const AreaEffectSimulation: switch (modType) { case DataModification::eModified: - deleteParticipant(990000 + boobyTrap.id()); + deleteParticipant(990000 + boobyTrap.id); Q_FALLTHROUGH(); case DataModification::eAdded: { int sizeL = LtsUtils::OperatorSettings::getInstance() @@ -836,7 +836,7 @@ void BuildingViewerDdsController::onBoobyTrapChanged(const AreaEffectSimulation: break; } case DataModification::eRemoved: { - deleteParticipant(990000 + boobyTrap.id()); + deleteParticipant(990000 + boobyTrap.id); break; } } @@ -851,17 +851,17 @@ void BuildingViewerDdsController::onParticipantChanged(const ParticipantManageme switch (modType) { case DataModification::eModified: - deleteParticipant(participant.id()); + deleteParticipant(participant.id); Q_FALLTHROUGH(); case DataModification::eAdded: { int sizeL = LtsUtils::OperatorSettings::getInstance() ->value(QStringLiteral("BgViewer"), QStringLiteral("PlayerSymbolSize"), 20) .toInt(); - createParticipant(participant, m_ppmDtc->participantPosition(participant.id()), sizeL); + createParticipant(participant, m_ppmDtc->participantPosition(participant.id), sizeL); break; } case DataModification::eRemoved: { - deleteParticipant(participant.id()); + deleteParticipant(participant.id); break; } } @@ -878,8 +878,8 @@ void BuildingViewerDdsController::onDynParticipantChanged(const ParticipantManag case DataModification::eAdded: case DataModification::eModified: if (m_ppmDtc) - createParticipant(m_ppmDtc->participant(data.participantId()), - m_ppmDtc->participantPosition(data.participantId()), sizeL); + createParticipant(m_ppmDtc->participant(data.participantId), + m_ppmDtc->participantPosition(data.participantId), sizeL); break; case DataModification::eRemoved: { break; @@ -890,12 +890,12 @@ void BuildingViewerDdsController::onDynParticipantChanged(const ParticipantManag void BuildingViewerDdsController::onHitLineInfoChanged(const ParticipantManagement::HitLineInfo& hli, DataModification modType) { - DEBUG_LOG(m_logger) << "X 0000 onHitLineInfoChanged id=" << hli.id(); + DEBUG_LOG(m_logger) << "X 0000 onHitLineInfoChanged id=" << hli.id; if (modType == DataModification::eRemoved) { - DEBUG_LOG(m_logger) << "onHitLineInfoChanged removeHit id=" << hli.id(); - m_connection->removeRoomHit(hli.id()); + DEBUG_LOG(m_logger) << "onHitLineInfoChanged removeHit id=" << hli.id; + m_connection->removeRoomHit(hli.id); return; } @@ -903,24 +903,24 @@ void BuildingViewerDdsController::onHitLineInfoChanged(const ParticipantManageme return; m_ppmDtc->waitForHistoricalDataParticipant(); - const ParticipantManagement::Participant& partSrc = m_ppmDtc->participant(hli.originatorParticipantId()); - const ParticipantManagement::Participant& partDst = m_ppmDtc->participant(hli.injuryParticipantId()); - if (partSrc.id() == 0 || partDst.id() == 0) + const ParticipantManagement::Participant& partSrc = m_ppmDtc->participant(hli.originatorParticipantId); + const ParticipantManagement::Participant& partDst = m_ppmDtc->participant(hli.injuryParticipantId); + if (partSrc.id == 0 || partDst.id == 0) { - ERROR_LOG(m_logger) << "no knownn part: " << partSrc.id() << " dst: " << partDst.id(); + ERROR_LOG(m_logger) << "no knownn part: " << partSrc.id << " dst: " << partDst.id; return; } - const QString& strFeatureID = BuildingViewer::databaseId2FeatureId(hli.injuryBuildingId()); + const QString& strFeatureID = BuildingViewer::databaseId2FeatureId(hli.injuryBuildingId); if (!m_viewerInterface->isViewOpen(strFeatureID.toStdString())) { DEBUG_LOG(m_logger) << "building not opened: hli.buildingId()=" << hli; return; } - if (hli.injuryBuildingId() != 0) + if (hli.injuryBuildingId != 0) { - auto itBuildingHit = m_buildingHits.constFind(hli.injuryBuildingId()); + auto itBuildingHit = m_buildingHits.constFind(hli.injuryBuildingId); if (itBuildingHit != m_buildingHits.constEnd()) { const QVector& bHits = itBuildingHit.value(); @@ -929,14 +929,14 @@ void BuildingViewerDdsController::onHitLineInfoChanged(const ParticipantManageme for (const BuildingHit& bh : bHits) { - const bool testFlag = (bh.chargeTypeId == hli.chargeTypeId() && - bh.originatorParticipantId == hli.originatorParticipantId() && - hli.sampleTime() - m_hitlineDuration_ms < bh.sampleTime); + const bool testFlag = (bh.chargeTypeId == hli.chargeTypeId && + bh.originatorParticipantId == hli.originatorParticipantId && + hli.sampleTime - m_hitlineDuration_ms < bh.sampleTime); DEBUG_LOG(m_logger) << "testFlag " << testFlag; - if (bh.chargeTypeId == hli.chargeTypeId() && - bh.originatorParticipantId == hli.originatorParticipantId() && - hli.sampleTime() - m_hitlineDuration_ms < bh.sampleTime) + if (bh.chargeTypeId == hli.chargeTypeId && + bh.originatorParticipantId == hli.originatorParticipantId && + hli.sampleTime - m_hitlineDuration_ms < bh.sampleTime) return; } } @@ -950,32 +950,32 @@ void BuildingViewerDdsController::onHitLineInfoChanged(const ParticipantManageme DEBUG_LOG(m_logger) << "onHitLineInfoChanged createPlayerSymbols"; createPlayerSymbols(partDst, sizeL); - LtsUtils::QPoint3D originatorSrc = toRelative3D(hli.originatorPos()); - LtsUtils::QPoint3D injuryDest = toRelative3D(hli.injuryPos()); + LtsUtils::QPoint3D originatorSrc = toRelative3D(hli.originatorPos); + LtsUtils::QPoint3D injuryDest = toRelative3D(hli.injuryPos); DEBUG_LOG(m_logger) << "onHitLineInfoChanged playerHit" - << " hli.originatorPos() z=" << hli.originatorPos().z() - << " hli.injuryPos() z=" << hli.injuryPos().z() << " Src=" << originatorSrc.x() << "/" + << " hli.originatorPos() z=" << hli.originatorPos.z + << " hli.injuryPos() z=" << hli.injuryPos.z << " Src=" << originatorSrc.x() << "/" << originatorSrc.y() << "/" << originatorSrc.z() << " Dest= " << injuryDest.x() << "/" << injuryDest.y() << "/" << injuryDest.z() - << " hli.originatorBuildingId=" << hli.originatorBuildingId() - << " hli.originatorRoomId=" << hli.originatorRoomId() - << " hli.injuryBuildingId=" << hli.injuryBuildingId() - << " hli.injuryRoomId=" << hli.injuryRoomId(); + << " hli.originatorBuildingId=" << hli.originatorBuildingId + << " hli.originatorRoomId=" << hli.originatorRoomId + << " hli.injuryBuildingId=" << hli.injuryBuildingId + << " hli.injuryRoomId=" << hli.injuryRoomId; DEBUG_LOG(m_logger) << "Before z-correction:" << " Src=" << originatorSrc.x() << "/" << originatorSrc.y() << "/" << originatorSrc.z() << " Dest= " << injuryDest.x() << "/" << injuryDest.y() << "/" << injuryDest.z(); - double zAddOriginator = m_buildingHeight.value(hli.originatorBuildingId(), 0); - double zAddInjury = m_buildingHeight.value(hli.injuryBuildingId(), 0); + double zAddOriginator = m_buildingHeight.value(hli.originatorBuildingId, 0); + double zAddInjury = m_buildingHeight.value(hli.injuryBuildingId, 0); DEBUG_LOG(m_logger) << "z-correction: zAddOriginator=" << zAddOriginator; DEBUG_LOG(m_logger) << "z-correction: zAddInjury=" << zAddInjury; - if (hli.originatorBuildingId() <= 0) + if (hli.originatorBuildingId <= 0) zAddOriginator = zAddInjury; - if (hli.injuryBuildingId() <= 0) + if (hli.injuryBuildingId <= 0) zAddInjury = zAddOriginator; originatorSrc.setZ(originatorSrc.z() + zAddInjury); @@ -988,54 +988,55 @@ void BuildingViewerDdsController::onHitLineInfoChanged(const ParticipantManageme int buildingIdSrc = -1; int roomNumberSrc = -1; { - auto itId2Number = m_roomId2RoomNumber.constFind(hli.originatorBuildingId()); + auto itId2Number = m_roomId2RoomNumber.constFind(hli.originatorBuildingId); if (itId2Number != m_roomId2RoomNumber.constEnd()) { const auto& mapRooms = itId2Number.value(); - const auto itRoom = mapRooms.constFind(hli.originatorRoomId()); + const auto itRoom = mapRooms.constFind(hli.originatorRoomId); if (itRoom != mapRooms.constEnd()) { - buildingIdSrc = hli.originatorBuildingId(); + buildingIdSrc = hli.originatorBuildingId; roomNumberSrc = itRoom.value(); } else WARNING_LOG(m_logger) << "onHitLineInfoChanged: Room id can not be mapped! Building id: " - << hli.injuryBuildingId() << ", originatorRoomId: " << hli.originatorRoomId(); + << hli.injuryBuildingId << ", originatorRoomId: " << hli.originatorRoomId; } } int buildingIdDst = -1; int roomNumberDst = -1; { - auto itId2Number = m_roomId2RoomNumber.constFind(hli.injuryBuildingId()); + auto itId2Number = m_roomId2RoomNumber.constFind(hli.injuryBuildingId); if (itId2Number != m_roomId2RoomNumber.constEnd()) { const auto& mapRooms = itId2Number.value(); - const auto itRoom = mapRooms.constFind(hli.injuryRoomId()); + const auto itRoom = mapRooms.constFind(hli.injuryRoomId); if (itRoom != mapRooms.constEnd()) { - buildingIdDst = hli.injuryBuildingId(); + buildingIdDst = hli.injuryBuildingId; roomNumberDst = itRoom.value(); } else WARNING_LOG(m_logger) << "onHitLineInfoChanged: Room id can not be mapped! Building id: " - << hli.injuryBuildingId() << ", room id: " << hli.injuryRoomId(); + << hli.injuryBuildingId << ", room id: " << hli.injuryRoomId; } } DEBUG_LOG(m_logger) << "After translate buildingId, roomId:" - << " hli.originatorBuildingId=" << hli.originatorBuildingId() << " -> " << buildingIdSrc - << " hli.originatorRoomId=" << hli.originatorRoomId() << " -> " << roomNumberSrc - << " hli.injuryBuildingId=" << hli.injuryBuildingId() << " -> " << buildingIdDst - << " hli.injuryRoomId=" << hli.injuryBuildingId() << " -> " << roomNumberDst - << " hli.sampleTime=" << hli.sampleTime(); + << " hli.originatorBuildingId=" << hli.originatorBuildingId << " -> " << buildingIdSrc + << " hli.originatorRoomId=" << hli.originatorRoomId << " -> " << roomNumberSrc + << " hli.injuryBuildingId=" << hli.injuryBuildingId << " -> " << buildingIdDst + << " hli.injuryRoomId=" << hli.injuryBuildingId << " -> " << roomNumberDst + << " hli.sampleTime=" << hli.sampleTime; int lineType = 2; - m_pdmDtc->chargeType(hli.chargeTypeId()); + m_pdmDtc->chargeType(hli.chargeTypeId); - lineType = m_pdmDtc->getChargeTypeSpecialProperty(hli.chargeTypeId(), 0, 0); + // DDS enums are enum class; lineType is int. + lineType = static_cast(m_pdmDtc->getChargeTypeSpecialProperty(hli.chargeTypeId, 0, 0)); - m_connection->playerHit(hli.id(), partSrc.id(), partDst.id(), originatorSrc, injuryDest, buildingIdSrc, - roomNumberSrc, buildingIdDst, roomNumberDst, lineType, hli.sampleTime()); + m_connection->playerHit(hli.id, partSrc.id, partDst.id, originatorSrc, injuryDest, buildingIdSrc, + roomNumberSrc, buildingIdDst, roomNumberDst, lineType, hli.sampleTime); } void BuildingViewerDdsController::onPartyChanged(const ParticipantManagement::Party& party, DataModification modType) @@ -1046,7 +1047,7 @@ void BuildingViewerDdsController::onPartyChanged(const ParticipantManagement::Pa int sizeL = LtsUtils::OperatorSettings::getInstance() ->value(QStringLiteral("BgViewer"), QStringLiteral("PlayerSymbolSize"), 20) .toInt(); - updatePlayerSymbols(sizeL, party.id()); + updatePlayerSymbols(sizeL, party.id); syncTeams(); } @@ -1063,35 +1064,35 @@ void BuildingViewerDdsController::onPositionChanged(const ParticipantManagement: int buildingID = -1; int roomNumber = -1; - auto itId2Number = m_roomId2RoomNumber.constFind(position.buildingId()); + auto itId2Number = m_roomId2RoomNumber.constFind(position.buildingId); if (itId2Number != m_roomId2RoomNumber.constEnd()) { const auto& mapRooms = itId2Number.value(); - const auto itRoom = mapRooms.constFind(position.roomId()); + const auto itRoom = mapRooms.constFind(position.roomId); if (itRoom != mapRooms.constEnd()) { - buildingID = position.buildingId(); + buildingID = position.buildingId; roomNumber = itRoom.value(); } else { WARNING_LOG(m_logger) << "onPositionChanged: Room id can not be mapped! Building id: " - << position.buildingId() << ", room id: " << position.roomId(); + << position.buildingId << ", room id: " << position.roomId; } } - if ((roomNumber < 0) && (buildingID <= 0) && (position.buildingId() > 0) && - (position.reportingSource() == Core::PositionReportingSource::Ops || - position.reportingSource() == Core::PositionReportingSource::Wls)) + if ((roomNumber < 0) && (buildingID <= 0) && (position.buildingId > 0) && + (position.reportingSource == Core::PositionReportingSource::Ops || + position.reportingSource == Core::PositionReportingSource::Wls)) { - buildingID = position.buildingId(); + buildingID = position.buildingId; } - const int playerId = position.participantId(); + const int playerId = position.participantId; auto it = m_lastPositionTime.find(playerId); if (it == m_lastPositionTime.end()) { - m_lastPositionTime.insert(playerId, position.sampleTime()); + m_lastPositionTime.insert(playerId, position.sampleTime); if (isOutdatedPosition(position)) m_connection->setPlayerVisible(playerId, false); } @@ -1099,7 +1100,7 @@ void BuildingViewerDdsController::onPositionChanged(const ParticipantManagement: { if (isOutdatedPosition(it.value()) && !isOutdatedPosition(position)) m_connection->setPlayerVisible(playerId, true); - it.value() = position.sampleTime(); + it.value() = position.sampleTime; } if (buildingID <= 0 && roomNumber <= 0) @@ -1118,8 +1119,8 @@ void BuildingViewerDdsController::onPositionChanged(const ParticipantManagement: return; } - m_connection->playerPlace(position.participantId(), toRelative3D(position.pos()), buildingID, roomNumber, - position.reportingSource()); + m_connection->playerPlace(position.participantId, toRelative3D(position.pos), buildingID, roomNumber, + position.reportingSource); } void BuildingViewerDdsController::onParticipantGearEventChanged(const ParticipantManagement::ParticipantGearEvent& data, @@ -1129,12 +1130,12 @@ void BuildingViewerDdsController::onParticipantGearEventChanged(const Participan { case DataModification::eAdded: case DataModification::eModified: { - m_participantGearEvents[data.participantId()] = data.sampleTime(); + m_participantGearEvents[data.participantId] = data.sampleTime; break; } case DataModification::eRemoved: { - const int playerId = data.participantId(); + const int playerId = data.participantId; m_participantGearEvents.remove(playerId); m_connection->playerUpdatePlayerSymbol(playerId, buildPlayerSymbolFilePath(playerId, cColorSymbolId)); break; @@ -1158,44 +1159,44 @@ void BuildingViewerDdsController::createParticipant(const ParticipantManagement: createPlayerSymbols(participant, sizeL); - m_connection->playerCreate(participant.id(), participant.partyId(), buildPlayerSymbolFilePath(participant.id()), - toRelative3D(position.pos()), position.buildingId(), - m_roomId2RoomNumber.value(position.buildingId()).value(position.roomId()), - position.reportingSource()); + m_connection->playerCreate(participant.id, participant.partyId, buildPlayerSymbolFilePath(participant.id), + toRelative3D(position.pos), position.buildingId, + m_roomId2RoomNumber.value(position.buildingId).value(position.roomId), + position.reportingSource); const bool isOutdated = isOutdatedPosition(position); - const int participantId = participant.id(); + const int participantId = participant.id; const bool isValid = - (position.buildingId() > 0 && m_roomId2RoomNumber.value(position.buildingId()).value(position.roomId()) > 0); + (position.buildingId > 0 && m_roomId2RoomNumber.value(position.buildingId).value(position.roomId) > 0); m_connection->setPlayerVisible(participantId, (!isOutdated && isValid)); - m_lastPositionTime.insert(participantId, position.sampleTime()); + m_lastPositionTime.insert(participantId, position.sampleTime); } void BuildingViewerDdsController::createBoobyTrap(const AreaEffectSimulation::BoobyTrap& trap, int sizeL) { - if (trap.effectStateId() != AreaEffectSimulation::AesEffectState::EsActivated && - trap.effectStateId() != AreaEffectSimulation::AesEffectState::EsPrepared) + if (trap.effectStateId != AreaEffectSimulation::AesEffectState::EsActivated && + trap.effectStateId != AreaEffectSimulation::AesEffectState::EsPrepared) return; ParticipantManagement::Participant participant; - if (trap.partyId().has_value()) - participant.partyId() = trap.partyId().get(); - participant.designator() = trap.name(); - participant.designator() = trap.name(); - participant.id() = trap.id() + 990000; - participant.sampleTime() = trap.sampleTime(); - participant.symbol() = "AP6D|CMPL|10011500002104000000"; + if (trap.partyId.has_value()) + participant.partyId = trap.partyId.get(); + participant.designator = trap.name; + participant.designator = trap.name; + participant.id = trap.id + 990000; + participant.sampleTime = trap.sampleTime; + participant.symbol = "AP6D|CMPL|10011500002104000000"; createPlayerSymbols(participant, sizeL); Core::GeoPosition pos; - pos.lat() = trap.impactPosition().lat(); - pos.lon() = trap.impactPosition().lon(); + pos.lat = trap.impactPosition.lat; + pos.lon = trap.impactPosition.lon; - DEBUG_LOG(m_logger) << "Try create Booby trap with id " << trap.id() << " internal id " << participant.id(); - DEBUG_LOG(m_logger) << "Try create Booby trap with pos " << pos.lat() << " " << pos.lon(); - m_connection->playerCreate(participant.id(), participant.partyId(), buildPlayerSymbolFilePath(participant.id()), + DEBUG_LOG(m_logger) << "Try create Booby trap with id " << trap.id << " internal id " << participant.id; + DEBUG_LOG(m_logger) << "Try create Booby trap with pos " << pos.lat << " " << pos.lon; + m_connection->playerCreate(participant.id, participant.partyId, buildPlayerSymbolFilePath(participant.id), toRelative3D(pos), -1, -1, Core::PositionReportingSource::External); - m_connection->setPlayerVisible(participant.id(), true); + m_connection->setPlayerVisible(participant.id, true); } void BuildingViewerDdsController::updatePlayerSymbols(const int sizeL, const int forParty) @@ -1207,7 +1208,7 @@ void BuildingViewerDdsController::updatePlayerSymbols(const int sizeL, const int if (!isValidParticipant(participant)) return; - if (forParty == -1 || participant.partyId() == forParty) + if (forParty == -1 || participant.partyId == forParty) createPlayerSymbols(participant, sizeL); }; m_ppmDtc->participants(cb); @@ -1219,9 +1220,9 @@ void BuildingViewerDdsController::createPlayerSymbols(const ParticipantManagemen SymbolInfo symbolinfo; for (int i = 0; i < m_vecFlashColors.size(); ++i) { - Q_ASSERT(participant.id() != 0); - symbolinfo.participantId = participant.id(); - symbolinfo.strPathToSymbolFile = buildPlayerSymbolFilePath(participant.id(), i); + Q_ASSERT(participant.id != 0); + symbolinfo.participantId = participant.id; + symbolinfo.strPathToSymbolFile = buildPlayerSymbolFilePath(participant.id, i); symbolinfo.color = m_vecFlashColors.at(i); symbolinfo.useThisSymbolNow = !symbolinfo.color.isValid(); createSymbolResultWatcher(participant, symbolinfo, sizeL); @@ -1304,7 +1305,7 @@ void BuildingViewerDdsController::reCheckHitLine() for (const auto& hli : hitMap) { - if (hli.sampleTime() < (m_session->partitionTime() - 3000)) + if (hli.sampleTime < (m_session->partitionTime() - 3000)) onBuildingHitLineInfoChanged(hli, DataModification::eAdded); } } @@ -1332,17 +1333,17 @@ void BuildingViewerDdsController::updateBuildingRoomNames( const InfrastructureManagement::MainStructureElement& building) { - const std::vector& vecElements = building.elements(); + const std::vector& vecElements = building.elements; - int32_t buildingDatabaseId = building.id(); + int32_t buildingDatabaseId = building.id; QString featureID = BuildingViewer::databaseId2FeatureId(buildingDatabaseId); for (const auto& se : vecElements) { - if (se.structureElementTypeId() == InfrastructureManagement::StructureElementType::Building) - m_connection->excSetBuildingDisplayName(featureID, QString::fromStdString(se.displayName())); - if (se.structureElementTypeId() == InfrastructureManagement::StructureElementType::Room) - m_connection->excSetRoomDisplayName(featureID, QString::number(se.mountingPointId()), - QString::fromStdString(se.displayName())); + if (se.structureElementTypeId == InfrastructureManagement::StructureElementType::Building) + m_connection->excSetBuildingDisplayName(featureID, QString::fromStdString(se.displayName)); + if (se.structureElementTypeId == InfrastructureManagement::StructureElementType::Room) + m_connection->excSetRoomDisplayName(featureID, QString::number(se.mountingPointId), + QString::fromStdString(se.displayName)); } } @@ -1429,25 +1430,25 @@ void BuildingViewerDdsController::onBuildingStateChanged(const Buildings::Buildi return; QMap roomDestructions; - for (const Buildings::RoomState& rs : data.roomStates()) + for (const Buildings::RoomState& rs : data.roomStates) { - roomDestructions.insert(rs.mountingPointId(), rs.damagePercent()); + roomDestructions.insert(rs.mountingPointId, rs.damagePercent); } - m_connection->buildingHit(data.id(), data.id(), data.damagePercent(), roomDestructions); + m_connection->buildingHit(data.id, data.id, data.damagePercent, roomDestructions); } void BuildingViewerDdsController::onBuildingHitLineInfoChanged(const Buildings::BuildingHitLineInfo& hli, DataModification modType) { - int topidId = static_cast(hli.id()); + int topidId = static_cast(hli.id); DEBUG_LOG(m_logger) << "onBuildingHitLineInfoChanged: " << hli; - const QString& strFeatureID = BuildingViewer::databaseId2FeatureId(hli.buildingId()); + const QString& strFeatureID = BuildingViewer::databaseId2FeatureId(hli.buildingId); if (!m_viewerInterface->isViewOpen(strFeatureID.toStdString())) { - DEBUG_LOG(m_logger) << "building not opened: hli.buildingId()=" << hli.buildingId(); + DEBUG_LOG(m_logger) << "building not opened: hli.buildingId()=" << hli.buildingId; return; } @@ -1457,28 +1458,28 @@ void BuildingViewerDdsController::onBuildingHitLineInfoChanged(const Buildings:: if (isRemove) { DEBUG_LOG(m_logger) << "onBuildingHitLineInfoChanged: remove "; - QVector& bhl = m_buildingHits[hli.buildingId()]; + QVector& bhl = m_buildingHits[hli.buildingId]; - auto it = std::find_if(bhl.begin(), bhl.end(), [hli](const BuildingHit& bh) { return (bh.id == hli.id()); }); + auto it = std::find_if(bhl.begin(), bhl.end(), [hli](const BuildingHit& bh) { return (bh.id == hli.id); }); if (it != bhl.end()) { DEBUG_LOG(m_logger) << "bhl.erase(it)"; bhl.erase(it); } - m_connection->removeRoomHit(hli.id()); + m_connection->removeRoomHit(hli.id); return; } else { BuildingHit bh; - bh.id = hli.id(); - bh.sampleTime = hli.sampleTime(); - bh.originatorParticipantId = hli.originatorParticipantId(); - bh.chargeTypeId = hli.chargeTypeId(); + bh.id = hli.id; + bh.sampleTime = hli.sampleTime; + bh.originatorParticipantId = hli.originatorParticipantId; + bh.chargeTypeId = hli.chargeTypeId; bool contains = false; - for (const auto& it : m_buildingHits[hli.buildingId()]) + for (const auto& it : m_buildingHits[hli.buildingId]) { if (it.id == bh.id) contains = true; @@ -1486,13 +1487,13 @@ void BuildingViewerDdsController::onBuildingHitLineInfoChanged(const Buildings:: if (!contains) { - m_buildingHits[hli.buildingId()].push_back(bh); + m_buildingHits[hli.buildingId].push_back(bh); } } int lineType = 2; - m_connection->roomHit(topidId, hli.originatorParticipantId(), hli.buildingId(), hli.hitOnRoomId(), - toRelative3D(hli.originatorPos()), lineType, isRemove ? 0 : hli.sampleTime()); + m_connection->roomHit(topidId, hli.originatorParticipantId, hli.buildingId, hli.hitOnRoomId, + toRelative3D(hli.originatorPos), lineType, isRemove ? 0 : hli.sampleTime); } void BuildingViewerDdsController::onCleanupBuildingHitlines() @@ -1509,33 +1510,33 @@ void BuildingViewerDdsController::onCleanupBuildingHitlines() void BuildingViewerDdsController::onMainStructureElementChanged( const InfrastructureManagement::MainStructureElement& mse, DataModification modType) { - if (!isBuildingKnown(mse.id())) + if (!isBuildingKnown(mse.id)) return; switch (modType) { case DataModification::eAdded: case DataModification::eModified: { - if (mse.modelId() != 0 && m_ismDtc->isElementAssignedToExercise(mse, m_exerciseId)) + if (mse.modelId != 0 && m_ismDtc->isElementAssignedToExercise(mse, m_exerciseId)) { - DEBUG_LOG(m_logger) << "m_buildingHeight.insert id=" << mse.id() << " z=" << mse.geoPosition().z(); - m_buildingHeight.insert(mse.id(), mse.geoPosition().z()); + DEBUG_LOG(m_logger) << "m_buildingHeight.insert id=" << mse.id << " z=" << mse.geoPosition.z; + m_buildingHeight.insert(mse.id, mse.geoPosition.z); QHash roomId2RoomNumber; - for (const InfrastructureManagement::StructureElement& se : mse.elements()) + for (const InfrastructureManagement::StructureElement& se : mse.elements) { - if (se.structureElementTypeId() != InfrastructureManagement::StructureElementType::Room) + if (se.structureElementTypeId != InfrastructureManagement::StructureElementType::Room) continue; - roomId2RoomNumber[se.id()] = se.mountingPointId(); + roomId2RoomNumber[se.id] = se.mountingPointId; } - m_roomId2RoomNumber[mse.id()] = roomId2RoomNumber; + m_roomId2RoomNumber[mse.id] = roomId2RoomNumber; updateBuildingRoomNames(mse); } break; } case DataModification::eRemoved: - m_roomId2RoomNumber.remove(mse.id()); - m_buildingHeight.remove(mse.id()); + m_roomId2RoomNumber.remove(mse.id); + m_buildingHeight.remove(mse.id); break; } } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.h b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.h index 18871fd41..f059a5929 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.h +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_dds_controller.h @@ -89,7 +89,7 @@ class BuildingViewerDdsController : public QObject inline bool isOutdatedPosition(const ParticipantManagement::ParticipantPosition& position) const { - return position.participantId() <= 0 || isOutdatedPosition(position.sampleTime()); + return position.participantId <= 0 || isOutdatedPosition(position.sampleTime); } bool calcBaseCoordinate(const QMap& mseMap); diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_helper.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_helper.cpp index f961e4437..7bbdb13b4 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_helper.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Common/bdv_helper.cpp @@ -22,7 +22,8 @@ int32_t featureId2DatabaseId(const QString &strFeatureId) if (!strFeatureId.startsWith(gStrFeatureIdPrefix)) return -1; bool isOk = false; - int32_t buildingDatabaseId = strFeatureId.midRef(gStrFeatureIdPrefix.size()).toInt(&isOk); + // Qt6: QString::midRef removed; mid() returns the same substring by value. + int32_t buildingDatabaseId = strFeatureId.mid(gStrFeatureIdPrefix.size()).toInt(&isOk); return isOk ? buildingDatabaseId : -1; } } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_building_edit.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_building_edit.cpp index 8654e155e..6d048ac39 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_building_edit.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_building_edit.cpp @@ -4,6 +4,7 @@ #include "bdv_edit_item.h" #include "ui_bdv_building_edit.h" +#include #include #include @@ -16,7 +17,8 @@ namespace BuildingViewer { BuildingEdit::BuildingEdit(QWidget* parent) : LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::OkApplyCancel), - m_requestHelper(new LtsUtils::RequestHelper(this)), m_ui(new Ui::BuildingEdit) + m_requestHelper(new LtsUtils::RequestHelper(this)), m_ui(new Ui::BuildingEdit), + m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.BuildingEdit")) { m_ui->setupUi(this); @@ -69,7 +71,7 @@ bool BuildingEdit::init(int32_t buildingDatabaseId, m_bldFtc = bldFtc; InfrastructureManagement::MainStructureElement building = m_ismDtc->mainStructureElement(m_buildingDatabaseId); - m_buildingId = building.id(); + m_buildingId = building.id; buildModel(); m_buildingName = m_model->getBuildingName(); @@ -158,14 +160,14 @@ bool BuildingEdit::apply() { m_requestHelper->addRequest([this, fortifyFactors]() { Buildings::SetFortifyFactorRequest fortifyRequest; - fortifyRequest.buildingId(m_buildingDatabaseId); + fortifyRequest.buildingId = m_buildingDatabaseId; - fortifyRequest.fortifyFactors().reserve(fortifyFactors.size()); + fortifyRequest.fortifyFactors.reserve(fortifyFactors.size()); for (const auto& e : fortifyFactors) { DEBUG_LOG(m_logger) << "push_back= databaseId=" << e.structureElementId() << " fortifyFactor=" << e.fortifyFactor(); - fortifyRequest.fortifyFactors().push_back( + fortifyRequest.fortifyFactors.push_back( Buildings::FortifyFactor(e.structureElementId(), e.fortifyFactor())); } @@ -184,12 +186,12 @@ bool BuildingEdit::apply() for (const auto& treeItem : displayNames) { - for (const auto& room : building.elements()) + for (const auto& room : building.elements) { - if (room.id() == treeItem.structureElementId()) + if (room.id == treeItem.structureElementId()) { auto copy = room; - copy.displayName(treeItem.displayName().toStdString()); + copy.displayName = treeItem.displayName().toStdString(); vecModifiedRooms.push_back(copy); break; } @@ -231,7 +233,7 @@ void BuildingEdit::slotMainStructureElementChanged(const InfrastructureManagemen if (modType == DataModification::eRemoved) return; - if (mse.id() == m_buildingDatabaseId) + if (mse.id == m_buildingDatabaseId) { slotHandleExternalDdsChange(); @@ -243,7 +245,7 @@ void BuildingEdit::slotBuildingStateChanged(const Buildings::BuildingState& stat if (modType == DataModification::eRemoved) return; - if (state.id() == m_buildingDatabaseId) + if (state.id == m_buildingDatabaseId) { slotHandleExternalDdsChange(); @@ -265,11 +267,11 @@ bool BuildingEdit::sendBuildingStateRequest(ProjectDataManagement::Vulnerability buildings.resize(1); Buildings::SetBuildingStatesRequest requestData; - building.buildingId(m_buildingId); - building.roomIds().set(structureElementIds); + building.buildingId = m_buildingId; + building.roomIds.set(structureElementIds); buildings[0] = building; - requestData.buildings(buildings); - requestData.vulnerabilityState(state); + requestData.buildings = buildings; + requestData.vulnerabilityState = state; DEBUG_LOG(m_logger) << Q_FUNC_INFO << "currentData: " << state; diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_edit_model.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_edit_model.cpp index b91028f8b..f5e6832ca 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_edit_model.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/BuildingEdit/bdv_edit_model.cpp @@ -17,11 +17,13 @@ namespace BuildingViewer BuildingEditModel::BuildingEditModel(QObject* parent, const std::shared_ptr& ismDtc, const std::shared_ptr& bldDtc) - : NGLTreeModel(parent, new NGLTreeItem(QVariant()), , - m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger()){ + : NGLTreeModel(parent, new NGLTreeItem(QVariant()), { tr("Selected Building"), QStringLiteral("Name (DEBUG)"), QStringLiteral("MountingPointId (DEBUG)"), QStringLiteral("StructureElementId (DEBUG)"), tr("Fortify Factor"), tr("Damage Percent")}), + // m_logger moved out of the NGLTreeModel(...) call (it is a member init); + // getNGLLogger() returns the INGLLogger& the reference member binds to. + m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.BuildingEditModel")), m_ismDtc(ismDtc), m_bldDtc(bldDtc), m_buildingName(QString()) { } @@ -125,11 +127,11 @@ bool BuildingEditModel::init(int32_t mseId) int rootId = 0; qint32 mapId = 0; - const std::vector& vecElements = building.elements(); + const std::vector& vecElements = building.elements; for (const auto& se : vecElements) { DEBUG_LOG(m_logger) << "se: " << se; - if (se.structureElementTypeId() == InfrastructureManagement::StructureElementType::Building) + if (se.structureElementTypeId == InfrastructureManagement::StructureElementType::Building) { BuildingViewer::TreeItem rootItemBuilding(se); rootName = rootItemBuilding.name(); @@ -142,12 +144,12 @@ bool BuildingEditModel::init(int32_t mseId) for (const auto& se : vecElements) { DEBUG_LOG(m_logger) << "se: =" << se; - if (se.structureElementTypeId() == InfrastructureManagement::StructureElementType::Floor) + if (se.structureElementTypeId == InfrastructureManagement::StructureElementType::Floor) { BuildingViewer::TreeItem itemRoom(se); itemRoom.setSuperior(rootId); - lookupFloorId2TreeId[se.id()] = mapId; + lookupFloorId2TreeId[se.id] = mapId; treemap[mapId++] = itemRoom; } } @@ -158,20 +160,20 @@ bool BuildingEditModel::init(int32_t mseId) auto bs = m_bldDtc->buildingState(mseId); QMap roomStates; - for (const auto& e : bs.roomStates()) - roomStates[e.id()] = e; + for (const auto& e : bs.roomStates) + roomStates[e.id] = e; for (const auto& se : vecElements) { - if (se.structureElementTypeId() == InfrastructureManagement::StructureElementType::Room) + if (se.structureElementTypeId == InfrastructureManagement::StructureElementType::Room) { double fortifyFactor = 1.0; - qint32 damagePercent = bs.damagePercent(); - if (roomStates.contains(se.id())) + qint32 damagePercent = bs.damagePercent; + if (roomStates.contains(se.id)) { - fortifyFactor = roomStates[se.id()].fortifyFactor(); - damagePercent = roomStates[se.id()].damagePercent(); + fortifyFactor = roomStates[se.id].fortifyFactor; + damagePercent = roomStates[se.id].damagePercent; } BuildingViewer::TreeItem itemRoom(se, fortifyFactor, damagePercent); @@ -179,13 +181,13 @@ bool BuildingEditModel::init(int32_t mseId) try { - int32_t floorID = se.path()[1]; + int32_t floorID = se.path[1]; itemRoom.setSuperior(lookupFloorId2TreeId[floorID]); } catch (const std::out_of_range& e) { WARNING_LOG(m_logger) << "Caught exception while trying to get superior id for building " << rootName - << " with room with mounting point id: " << se.mountingPointId() << ": " + << " with room with mounting point id: " << se.mountingPointId << ": " << e.what(); return false; } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_thread_video_exporter.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_thread_video_exporter.cpp index 545a0ede9..c9f98a756 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_thread_video_exporter.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_thread_video_exporter.cpp @@ -1,6 +1,7 @@ #include "bdv_thread_video_exporter.h" +#include #include "bdv_replay_handler.h" @@ -11,7 +12,9 @@ namespace BuildingViewer { -VideoExporter::VideoExporter(QObject* parent) : QObject(parent) +VideoExporter::VideoExporter(QObject* parent) + : QObject(parent), + m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.VideoExporter")) { DEBUG_LOG(m_logger) << "ThreadVideoExporter has been created"; } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_topic_replay_interface.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_topic_replay_interface.cpp index 074d9cef5..5790d270f 100644 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_topic_replay_interface.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_topic_replay_interface.cpp @@ -1,6 +1,7 @@ #include "bdv_topic_replay_interface.h" +#include #include "bdv_replay_handler.h" #include "bdv_thread_video_exporter.h" @@ -26,7 +27,8 @@ namespace BuildingViewer { TopicReplayInterface::TopicReplayInterface(BgViewerController* bgvController, LtsSession::LtsSession* session) - : m_bgvController(bgvController), m_session(session) + : m_bgvController(bgvController), m_session(session), + m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.TopicReplayInterface")) { session->getForeignGuiInterface(m_replayIfc); } @@ -240,20 +242,20 @@ bool TopicReplayInterface::exportBuildings(const QVector& buildingIds) cons for (const int buildingId : buildingIds) { const auto mse = ismDtc->mainStructureElement(buildingId); - if (mse.id() != buildingId) + if (mse.id != buildingId) { WARNING_LOG(m_logger) << "Could not find MainStructureElement for building with id " << buildingId << " - skipping"; continue; } - const QString fnIve = QString::fromStdString(mse.name()) + QStringLiteral(".flt.ive"); - const QString fnXml = QString::fromStdString(mse.name()) + QStringLiteral(".flt.xml"); + const QString fnIve = QString::fromStdString(mse.name) + QStringLiteral(".flt.ive"); + const QString fnXml = QString::fromStdString(mse.name) + QStringLiteral(".flt.xml"); if (!copyFile(fnIve, modelPath, outputPath) || !copyFile(fnXml, modelPath, outputPath)) return false; - bi.name = QString::fromStdString(mse.name()); - bi.position = LtsUtils::QPoint3D(mse.geoPosition().lon(), mse.geoPosition().lat(), mse.geoPosition().z()); - bi.angleDegree = mse.angle(); - bi.id = mse.id(); + bi.name = QString::fromStdString(mse.name); + bi.position = LtsUtils::QPoint3D(mse.geoPosition.lon, mse.geoPosition.lat, mse.geoPosition.z); + bi.angleDegree = mse.angle; + bi.id = mse.id; knownBuildings += bi; } diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_dialog.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_dialog.cpp index a07764a4d..650d38cfb 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_dialog.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_dialog.cpp @@ -2,6 +2,7 @@ #include "bdv_viewer_data_dialog.h" +#include #include "ui_bdv_viewer_data_dialog.h" #include @@ -12,6 +13,7 @@ namespace BuildingViewer BgViewerDataViewDialog::BgViewerDataViewDialog(QWidget *parent) : LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly) , m_ui(new Ui::BgViewerDataViewDialog) + , m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.BgViewerDataViewDialog")) { m_ui->setupUi(this); diff --git a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_view.cpp b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_view.cpp index 0deb8a8b2..d72f05525 100755 --- a/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_view.cpp +++ b/qt6-after/qt6-migrated-legatus/Lts/Plugins/BuildingViewer/Gui/BuildingViewer/bdv_viewer_data_view.cpp @@ -2,6 +2,7 @@ #include "bdv_viewer_data_view.h" +#include #include "ui_bdv_viewer_data_view.h" #include "bdv_viewer_data_model.h" @@ -15,6 +16,7 @@ BgViewerDataView::BgViewerDataView(QWidget *parent) : QWidget(parent) , m_ui(new Ui::BgViewerDataView) , m_pModel(new BgViewerDataViewModel(this)) + , m_logger(NGL::NGLLoggerBootstrap::getNGLRootLogger().getNGLLogger("BuildingViewer.BgViewerDataView")) { m_ui->setupUi(this); diff --git a/qt6-after/qt6-migrated-legatus/cmake/FindOpenSceneGraph.cmake b/qt6-after/qt6-migrated-legatus/cmake/FindOpenSceneGraph.cmake new file mode 100644 index 000000000..25a9d740f --- /dev/null +++ b/qt6-after/qt6-migrated-legatus/cmake/FindOpenSceneGraph.cmake @@ -0,0 +1,117 @@ +# FindOpenSceneGraph.cmake +# +# Locate an installed OpenSceneGraph and expose the module variables that the +# Legatus BuildingViewer stack links against: +# OSG_INCLUDE_DIR, OPENSCENEGRAPH_INCLUDE_DIRS +# OPENSCENEGRAPH_LIBRARIES (the OSG component libs that were found) +# OPENTHREADS_LIBRARIES +# OPENSCENEGRAPH_FOUND, OPENSCENEGRAPH_VERSION +# +# NOTE (Qt6-migration port): OSG 3.4.1 ships no FindOpenSceneGraph.cmake and +# installs no OpenSceneGraphConfig.cmake, so this module is supplied to close +# the bld/OSG floor. It finds the 3.4.1 build installed under CMAKE_PREFIX_PATH +# (the component libs live under /lib64) and honours the requested +# components -- including the ported Qt6 osgQt (see the .osg-port notes). +# +# Mirrors the classic OSG Find-module variable names that BuildingViewer/Common +# links: ${OSG_INCLUDE_DIR}, ${OPENSCENEGRAPH_LIBRARIES}, ${OPENTHREADS_LIBRARIES}. + +SET(OSG_SEARCH_PREFIXES ${CMAKE_PREFIX_PATH} /usr/local /usr) + +# Include dir: locate the osg/Version header. +FIND_PATH(OSG_INCLUDE_DIR + NAMES osg/Version + PATHS ${OSG_SEARCH_PREFIXES} + PATH_SUFFIXES include) + +# OpenThreads support library (distinct SONAME: libOpenThreads.so.20 for 3.4.1). +FIND_LIBRARY(OPENTHREADS_LIBRARY + NAMES OpenThreads + PATHS ${OSG_SEARCH_PREFIXES} + PATH_SUFFIXES lib lib64) + +# OSG component libraries. Find each that exists and collect them so +# OPENSCENEGRAPH_LIBRARIES covers the transitive dependency set the BgViewer +# SDK and BuildingViewerCommon link (the SDK's NEEDED entries require +# osg/DB/GA/Qt/Shadow/Sim/Text/Util/Viewer/Particle/Manipulator/Animation). +SET(OSG_COMPONENT_LIBS + osg + osgDB + osgUtil + osgGA + osgText + osgViewer + osgAnimation + osgManipulator + osgParticle + osgShadow + osgSim + osgWidget + osgQt) + +SET(OPENSCENEGRAPH_LIBRARIES "") +FOREACH(_osg_lib ${OSG_COMPONENT_LIBS}) + FIND_LIBRARY(OSG_LIBRARY_${_osg_lib} + NAMES ${_osg_lib} + PATHS ${OSG_SEARCH_PREFIXES} + PATH_SUFFIXES lib lib64) + IF(OSG_LIBRARY_${_osg_lib}) + LIST(APPEND OPENSCENEGRAPH_LIBRARIES ${OSG_LIBRARY_${_osg_lib}}) + SET(OPENSCENEGRAPH_${_osg_lib}_FOUND TRUE) + ELSE() + SET(OPENSCENEGRAPH_${_osg_lib}_FOUND FALSE) + ENDIF() +ENDFOREACH() + +# Core libs are mandatory for the package to count as found. +SET(_osg_core_ok TRUE) +IF(NOT OSG_LIBRARY_osg OR NOT OSG_LIBRARY_osgDB OR NOT OSG_LIBRARY_osgUtil + OR NOT OSG_LIBRARY_osgGA OR NOT OSG_LIBRARY_osgViewer OR NOT OPENTHREADS_LIBRARY) + SET(_osg_core_ok FALSE) +ENDIF() + +# Any requested component that is missing makes the package not found. +FOREACH(_osg_req ${OpenSceneGraph_FIND_COMPONENTS}) + IF(NOT OSG_LIBRARY_${_osg_req}) + SET(_osg_core_ok FALSE) + MESSAGE(STATUS "OpenSceneGraph: required component '${_osg_req}' not found") + ENDIF() +ENDFOREACH() + +# Version string from the installed header's OPENSCENEGRAPH_*_VERSION macros. +IF(OSG_INCLUDE_DIR) + FILE(READ "${OSG_INCLUDE_DIR}/osg/Version" _osg_version_header) + STRING(REGEX MATCH "#define[ \t]+OPENSCENEGRAPH_MAJOR_VERSION[ \t]+[0-9]+" + _osg_m "${_osg_version_header}") + STRING(REGEX MATCH "#define[ \t]+OPENSCENEGRAPH_MINOR_VERSION[ \t]+[0-9]+" + _osg_n "${_osg_version_header}") + STRING(REGEX MATCH "#define[ \t]+OPENSCENEGRAPH_PATCH_VERSION[ \t]+[0-9]+" + _osg_p "${_osg_version_header}") + STRING(REGEX REPLACE "[^0-9]" "" _osg_major "${_osg_m}") + STRING(REGEX REPLACE "[^0-9]" "" _osg_minor "${_osg_n}") + STRING(REGEX REPLACE "[^0-9]" "" _osg_patch "${_osg_p}") + IF(_osg_major AND _osg_minor AND _osg_patch) + SET(OPENSCENEGRAPH_VERSION "${_osg_major}.${_osg_minor}.${_osg_patch}") + ENDIF() +ENDIF() + +IF(OSG_INCLUDE_DIR AND _osg_core_ok) + SET(OPENSCENEGRAPH_FOUND TRUE) + SET(OPENSCENEGRAPH_INCLUDE_DIRS ${OSG_INCLUDE_DIR}) + SET(OPENTHREADS_LIBRARIES ${OPENTHREADS_LIBRARY}) +ELSE() + SET(OPENSCENEGRAPH_FOUND FALSE) +ENDIF() + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenSceneGraph + FOUND_VAR OPENSCENEGRAPH_FOUND + VERSION_VAR OPENSCENEGRAPH_VERSION + REQUIRED_VARS OPENSCENEGRAPH_INCLUDE_DIRS OPENSCENEGRAPH_LIBRARIES OPENTHREADS_LIBRARIES) + +MARK_AS_ADVANCED( + OSG_INCLUDE_DIR OPENTHREADS_LIBRARY + OSG_LIBRARY_osg OSG_LIBRARY_osgDB OSG_LIBRARY_osgUtil OSG_LIBRARY_osgGA + OSG_LIBRARY_osgText OSG_LIBRARY_osgViewer OSG_LIBRARY_osgAnimation + OSG_LIBRARY_osgManipulator OSG_LIBRARY_osgParticle OSG_LIBRARY_osgShadow + OSG_LIBRARY_osgSim OSG_LIBRARY_osgWidget OSG_LIBRARY_osgQt)