/** * @RDE_HEADER@ * ObjectMap for Trajectory * $Id$ * $HeadURL$ * $Author$ */ #include "main_handler.h" #include "object_trajectory.h" namespace AreaEffectSimulation { ObjectTrajectory::ObjectTrajectory(MainHandler *mainHandler/*, QObject *parent*/) : m_mainHandler(mainHandler) { } ObjectTrajectory::~ObjectTrajectory() { removeTopic(); } qint64 ObjectTrajectory::partitionTimeMSec() const { return m_mainHandler->dds()->currentPartitionTimeMSec(); } bool ObjectTrajectory::createObject(const TrajectoryData &providedData) { if (!providedData.isIdValid()) return false; m_providedData = providedData; publish(); return true; } bool ObjectTrajectory::updateObject(const TrajectoryData &providedData) { if (!providedData.isIdValid()) return false; if (providedData.id != m_ddsTrajectory.id()) return false; m_providedData = providedData; publish(); return true; } bool ObjectTrajectory::publish() { TrajectoryTimeAware newTrajectory; newTrajectory.id(m_providedData.id); // // newTrajectory.sampleTime() will be set later newTrajectory.index(m_providedData.index ); // [E01562-259] use originatorId, originatorTypeId (instead of aesItemId, aesTypeId) // newTrajectory.aesItemId(m_providedData.aesItemId); // newTrajectory.aesTypeId(m_providedData.aesTypeId); newTrajectory.trajectoryStartTime(m_providedData.startTime); newTrajectory.geometry(m_providedData.geometry); newTrajectory.originatorId(m_providedData.originatorId); newTrajectory.originatorTypeId(m_providedData.originatorTypeId); if (!hasDdsChanged(newTrajectory)) return true; m_ddsTrajectory = newTrajectory; newTrajectory.sampleTime(partitionTimeMSec()); // publish sampleTime, but do not store return m_mainHandler->dds()->dts()->publish(newTrajectory); //emit newAiv(newTrajectory); } bool ObjectTrajectory::hasDdsChanged(const TrajectoryTimeAware &trajectory) { return m_ddsTrajectory != trajectory; // vergleich sollte OHNE sampleTime erfolgen } bool ObjectTrajectory::removeTopic() { if (m_ddsTrajectory.id() <= 0) return false; auto dts = m_mainHandler->dds()->dts(); return dts->removeTrajectoryTimeAwareByKey(m_ddsTrajectory.id()); } } // Namespace AreaEffectSimulation