/** * @RDE_HEADER@ * Interface * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "sim_to_situation_map_tmpl.h" #include "participant_to_map.h" // participantIsVisible #include // BuildingHitLineInfo #include #include #include #include #include #include namespace SituationMap { // forward: class PdmHandler; class BuildingHitlineInfo2SituationMap final : public Sim2SituationMap , protected DdsFilterHandling { Q_OBJECT using BaseClass = SituationMap::Sim2SituationMap; using FilterClass = DdsFilterHandling; public: BuildingHitlineInfo2SituationMap(PdmHandler *pdmHandler, Participant2SituationMap *participant2SituationMap, ObjectFactory &objFac, const QString &layername, int drawOrder, const char *loggerName); ~BuildingHitlineInfo2SituationMap(); bool init(PluginProvider *pluginProvider); bool run() override; void stop() override; bool mapObjectsClicked(const QVector &uniqueMapIds) override; bool unifiedMapObjectData(UniqueMapId uniqueMapId, UnifiedMapObjectData &umodOut) const override; QString chargeTypeIdentifier(const int32_t originatorChargeTypeId) const; protected Q_SLOTS: bool onBuildingHitLineInfoChanged(const Sim2SituationMap::DDS_T &ddsData, DataModification modType = DataModification::eAdded); void onMainStructureElementChanged(const InfrastructureManagement::MainStructureElement &mse, DataModification modType); protected: bool isElapsed(const Sim2SituationMap::DDS_T &data) const override; bool isVisible(const Sim2SituationMap::DDS_T &ddsData, bool *bUncertain) const; bool visibleBySymbolPartyAppearance(const Sim2SituationMap::DDS_T &ddsData) const; bool visibleByParticipants(const Sim2SituationMap::DDS_T &ddsData, bool *bUncertain) const; bool visibleByHitLineDisplayLength(const qint64 newPartitionTime, const Sim2SituationMap::DDS_T &ddsData) const; void onPartitionTimeChanged(); int32_t getSimId(const Sim2SituationMap::DDS_T &ddsData) const override; bool updateElementImpl(const Sim2SituationMap::DDS_T &ddsData, RefPointer mapObj) override; void onSymbolAppearanceSettingsChanged(FilterManagement::SymbolAppearanceSettings::Part part) override; bool symbolAppearanceSettingsChangesAreRelevant(const FilterManagement::SymbolAppearanceSettings::Settings &newSas) const override; void handleSymbolAppearanceSettings(RefPointer &mapObj) override { if (!mapObj.valid()) return; const int simId = m_uniqueMapId2SimId.value(mapObj->uniqueMapId()); handleSymbolAppearanceSettings(mapObj, m_ddsDataContainer.value(simId)); } void handleSymbolAppearanceSettings(); void handleSymbolAppearanceSettings(RefPointer mapObj, const Sim2SituationMap::DDS_T &ddsData); private: PluginProvider *m_pluginProvider = nullptr; std::shared_ptr m_bldDtc; std::shared_ptr m_bldBuildingInfoIfc; std::shared_ptr m_ismDtc; PdmHandler *m_pdmHandler = nullptr; QPointer m_participant2SituationMap; int m_exerciseId{-1}; QHash < int32_t, double > m_buildingHeight; // Key = BuildingId, Value z-value from geoPosition of the building }; } // namespace