/** * @RDE_HEADER@ * Interface of AreaFire * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "abstract_multi_point_map_object.h" #include //---------------------------------------------------------------------------- namespace SituationMap { /** * @brief The AreaFire class supports AreaFire with impacts. */ //class SITUATIONMAP_EXPORT class AreaFire : public virtual AbstractMultiPointMapObject, public virtual AbstractEffectSimulation { using BaseClass = SituationMap::AbstractMultiPointMapObject; public: /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Don't use "= default" because of bug in VS2015 JT 2016/11/7 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ AreaFire() : AbstractMultiPointMapObject(), AbstractEffectSimulation() {;} ///< Contructor virtual ~AreaFire() = default; ///< Destructor /*! \name Specific data - impacts */ //@{ virtual PositionCont scheduledImpacts() const = 0; virtual PositionCont impacts() const = 0; virtual PositionCont impactsAbsoluteHeight() const = 0; /** * @brief Set impacts of AreaFire. * @param posCont Impacts to be set. */ virtual void setScheduledImpacts(const PositionCont &posCont, const QColor &explicitColor = QColor()) = 0; virtual void setImpacts(const PositionCont &posCont) = 0; virtual void setImpactsAbsoluteHeight(const PositionCont &posCont) = 0; //@} virtual PositionCont detonationsAbsolute() const = 0; virtual PositionCont detonationsDraped() const = 0; /** * @brief Set detonation (3D) of AreaFire. * @param detonationRadius radius to be used. * @param detonationsPositions detonations to be set. */ virtual bool setDetonationsAbsolute(const PositionCont &detonationsPositions, int detonationRadius) = 0; // Absolute virtual bool setDetonationsDraped(const PositionCont &detonationsPositions, int detonationRadius) = 0; /*! \name Specific data - GunToTargetLine / GunToTargetTrajectory */ //@{ virtual void setGunToTargetLineSurface(const Point3D &start, const Point3D &end) = 0; virtual void setGunToTargetTrajectory3D(const PositionCont &gunToTargetPath) = 0; //@} /*! \name Specific data - NonLethalArea */ //@{ virtual void setNonLethalArea(const PositionCont &nonLethalArea) = 0; //@} /*! \name Specific data - trajectory */ //@{ virtual PositionCont trajectory(int index) const = 0; /** * @brief Set trajectoryPath of AreaFire. * @param index path index. * @param trajectoryPath path to be set. */ virtual bool setTrajectory(int index, const PositionCont &trajectoryPath) = 0; //@} }; } // namespace SituationMap