/** * @RDE_HEADER@ * Interface-Implementation of SingleFire * $Id$ * $HeadURL$ * $Author$ */ #pragma once // Own #include "basic_path_object_impl.h" #include // Interface #include #include #include #include // Qt //---------------------------------------------------------------------------- namespace SituationMap { class MyAnimation; /** * @brief The SingleFireCentralImpl class displays a single impact. * * A class instance consists of the following logical elements: * - mainGraphicalObject (displaying a polyline) * - mainGraphicalObjectText (displaying the text/name) * - tacticalAppearance (displaying the tact. Appearance) */ // inherent 'public', to get that implementation // inherent 'public virtual' to get that interface class SITUATIONMAPOBJECTS_EXPORT SingleFireCentralImpl : public BasicPathObjectImpl, public virtual SingleFireCentral { using BaseClass = BasicPathObjectImpl; template friend class GenericObjectFactory; protected: explicit SingleFireCentralImpl(const QString &debugInfo = QString()); virtual ~SingleFireCentralImpl(); public: SingleFireCentralImpl(const SingleFireCentralImpl &other) = delete; SingleFireCentralImpl &operator=(SingleFireCentralImpl &other) = delete; QString toString() const override; // some set/get methods: //@{ void setDetonation(const DetonationData &detonationData) override; DetonationData detonation() const override; bool startDetonationAnimation() override; // required??? Point3D impactOrigin() const override; void setImpactOrigin(const Point3D &impactOrigin) override; //@} // Delegate to BaseClass: AesEffectState aesState() const override; void setAesState(AesEffectState aesState) override; SymbolImage symbolImage() const override; protected: bool updateViewImpl() override; bool updateViewImplPost() override { BaseClass::updateViewImplPost(); m_detonationOrigin.reset(); m_detonationRadius.reset(); return true; } bool updateDetonationPath(); bool updateDetonationSceneMarker(); friend class MapImpl; bool init(MapImpl *mapImpl, const QString &logicalLayerName) override; bool onMapExtentChanged() override; // internal/admin // logical private: LOGGER_T m_logger; ///< Interface of the Logging-Facility GraphicalObjectPictureMarker *m_centerImage{nullptr}; SimpleValue m_detonationOrigin; SimpleValue m_detonationRadius{0.0}; GraphicalObjectEllipse *m_detonationPath{nullptr}; // 2D GraphicalObjectSceneMarker *m_detonationSceneMarker{nullptr}; // 3D MyAnimation *m_animation{nullptr}; Esri::ArcGISRuntime::Graphic *m_graphic3D{nullptr}; Esri::ArcGISRuntime::ModelSceneSymbol *m_symbol3D{nullptr}; }; } // namespace SituationMap