/** * @RDE_HEADER@ * ObjectMap for Trajectory * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "aes.hpp" namespace AreaEffectSimulation { // forward declaation class MainHandler; class TrajectoryData { public: bool isIdValid() const { return isIdValid(id); } static bool isIdValid(int id) { return id > 0; } int id = -1; int index = -1; // useful for explosionCluster // [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId) // int aesItemId = -1; // AesType aesTypeId = AesType::inner_enum::AtUnknown; int originatorId = -1; ProjectDataManagement::StateChangeOriginator originatorTypeId = ProjectDataManagement::StateChangeOriginator::Unknown; qint64 startTime = 0; std::vector geometry; }; class ObjectTrajectory final { public: explicit ObjectTrajectory(MainHandler *mainHandler); ~ObjectTrajectory(); bool createObject(const TrajectoryData &providedData); bool updateObject(const TrajectoryData &providedData); int id() const { return m_providedData.id; } int originatorId() const { return m_providedData.originatorId; } // charge effect Id ProjectDataManagement::StateChangeOriginator originatorTypeId() const { return m_providedData.originatorTypeId; } bool publish(); bool removeTopic(); protected: qint64 partitionTimeMSec() const; bool hasDdsChanged(const TrajectoryTimeAware& trajectory); private: MainHandler *m_mainHandler{nullptr}; TrajectoryData m_providedData; // in TrajectoryTimeAware m_ddsTrajectory; // out }; } // Namespace AreaEffectSimulation