/** * @RDE_HEADER@ * Interface of SingleFireCentral * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "abstract_multi_point_map_object.h" #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The SingleFireCentral class supports Indirect Single Fire. */ class SingleFireCentral : public virtual AbstractMultiPointMapObject, public virtual AbstractEffectSimulation { using BaseClass = AbstractMultiPointMapObject; public: /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Don't use "= default" because of bug in VS2015 JT 2016/11/7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ SingleFireCentral() : BaseClass() {;} ///< Contructor virtual ~SingleFireCentral() = default; ///< Destructor /*! \name Specific data*/ //@{ struct DetonationData { DetonationData() = default; DetonationData(const Point3D &origin, double radius) : m_origin(origin), m_radius(radius) {} Point3D m_origin; double m_radius{0.0}; }; virtual void setDetonation(const DetonationData &detonationData) = 0; virtual DetonationData detonation() const = 0; virtual bool startDetonationAnimation() = 0; // required??? virtual Point3D impactOrigin() const = 0; virtual void setImpactOrigin(const Point3D &impactOrigin) = 0; //@} }; } // namespace SituationMap