/** * @RDE_HEADER@ * Interface of SingleFire * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "abstract_multi_point_map_object.h" #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The SingleFire class supports Indirect Single Fire. */ class SingleFire : public virtual AbstractMultiPointMapObject, public virtual AbstractEffectSimulation { using BaseClass = AbstractMultiPointMapObject; public: enum class ImpactType { normalImpact, doubleImpact }; /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Don't use "= default" because of bug in VS2015 JT 2016/11/7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ SingleFire() : BaseClass() {;} ///< Contructor virtual ~SingleFire() = default; ///< Destructor /*! \name Specific data*/ //@{ virtual Point3D impactOrigin() const = 0; virtual void setImpactOrigin(const Point3D &impactOrigin) = 0; virtual ImpactType impactType() const = 0; virtual void setImpactType(ImpactType impactType = ImpactType::normalImpact) = 0; virtual Point3D origin() const = 0; virtual void setOrigin(const Point3D &origin) = 0; virtual float radius() const = 0; virtual void setRadius(float radius) = 0; virtual void setOriginatorToTargetLineSurface(const Point3D &start, const Point3D &end) = 0; //@} }; } // namespace SituationMap