Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
// $Revision$
// $Date$
// $Id$
#pragma once
#include <DamageStatusEnum32.h>
#include <EntityTypeStruct.h>
#include <QtCore/QMetaType>
#include <QtCore/QHash>
Q_DECLARE_METATYPE(rpr2::DamageStatusEnum32::ET)
namespace rpr2
{
inline uint qHash(const rpr2::EntityTypeStruct &ets)
{
// da es genau 64 belegte Bits sind, geht es so am einfachsten
const quint64 *val = reinterpret_cast<const quint64 *>(&ets);
return ::qHash(*val);
}
}
@@ -0,0 +1,32 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#include "rpr_ia_actionrequest.h"
// rpr2 data types
#include <EventIdentifierStruct.h>
#include <EntityTypeStruct.h>
/*
* ObserverActionRequestCBNotifier
*/
ObserverActionRequestCBNotifier::ObserverActionRequestCBNotifier()
: rpr2::IObserverActionRequestIntClassCB()
, m_logger(HighLevelArchitecture::getLogger("Callbacks.Interaction.ActionRequest"))
{}
void ObserverActionRequestCBNotifier::newActionRequestIntInstance(const rpr2::IObserverActionRequestIntInstance &interaction)
{
emit newActionRequest(interaction);
}
void ObserverActionRequestCBNotifier::deleteInterface()
{
DEBUG_LOG(m_logger) << "Delete Interface";
//rpr2::IObserverActionRequestIntClassCB::deleteInterface();
}
@@ -0,0 +1,39 @@
/**
* Handle EventReport Events
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include <IObserverActionRequestIntClassCB.h>
#include <IObserverActionRequestIntInstance.h>
#include <QObject>
#include <Common/logger.h>
/**
* The notifier for new action requests
*/
class ObserverActionRequestCBNotifier : public QObject, public rpr2::IObserverActionRequestIntClassCB
{
Q_OBJECT
public:
ObserverActionRequestCBNotifier();
void newActionRequestIntInstance(const rpr2::IObserverActionRequestIntInstance &interaction) override;
void deleteInterface() override;
protected:
NGL::INGLLogger &m_logger;
signals:
// Action requests only come in, when ICE wants to reset/resurrect our players. This is not implemented.
void newActionRequest(const rpr2::IObserverActionRequestIntInstance &interaction);
};
@@ -0,0 +1,32 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#include "rpr_ia_data.h"
// rpr2 data types
#include <EventIdentifierStruct.h>
#include <EntityTypeStruct.h>
/*
* ObserverDataCBNotifier
*/
ObserverDataCBNotifier::ObserverDataCBNotifier()
: rpr2::IObserverDataIntClassCB()
, m_logger(HighLevelArchitecture::getLogger("Callbacks.Interaction.Data"))
{}
void ObserverDataCBNotifier::newDataIntInstance(const rpr2::IObserverDataIntInstance &interaction)
{
emit newData(interaction);
}
void ObserverDataCBNotifier::deleteInterface()
{
DEBUG_LOG(m_logger) << "Delete Interface";
//rpr2::IObserverDataIntClassCB::deleteInterface();
}
+39
View File
@@ -0,0 +1,39 @@
/**
* Handle Data Events
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include <IObserverDataIntClassCB.h>
#include <IObserverDataIntInstance.h>
#include <QObject>
#include <Common/logger.h>
/**
* The notifier for new action requests
*/
class ObserverDataCBNotifier : public QObject, public rpr2::IObserverDataIntClassCB
{
Q_OBJECT
public:
ObserverDataCBNotifier();
void newDataIntInstance(const rpr2::IObserverDataIntInstance &interaction) override;
void deleteInterface() override;
protected:
NGL::INGLLogger &m_logger;
signals:
// This is only emitted, when ICE sends data to us. This is not the case ever.
void newData(const rpr2::IObserverDataIntInstance &interaction);
};
@@ -0,0 +1,33 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#include "rpr_ia_engagementreply.h"
// rpr2 data types
#include <EventIdentifierStruct.h>
#include <EntityTypeStruct.h>
#include <WorldLocationStruct.h>
/*
* ObserverWeaponFireCBNotifier
*/
ObserverEngagementReplyCBNotifier::ObserverEngagementReplyCBNotifier()
: rpr2::IObserverEngagementReplyIntClassCB()
, m_logger(HighLevelArchitecture::getLogger("Callbacks.Interaction.EngagementReply"))
{}
void ObserverEngagementReplyCBNotifier::newEngagementReplyIntInstance(const rpr2::IObserverEngagementReplyIntInstance &interaction)
{
emit newEngagementReply(interaction);
}
void ObserverEngagementReplyCBNotifier::deleteInterface()
{
DEBUG_LOG(m_logger) << "Delete Interface";
//rpr2::IObserverEngagementReplyIntClassCB::deleteInterface();
}
@@ -0,0 +1,38 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include <IObserverEngagementReplyIntClassCB.h>
#include <IObserverEngagementReplyIntInstance.h>
#include <QObject>
#include <Common/logger.h>
/**
* The notifier for new action requests
*/
class ObserverEngagementReplyCBNotifier : public QObject, public rpr2::IObserverEngagementReplyIntClassCB
{
Q_OBJECT
public:
ObserverEngagementReplyCBNotifier();
void newEngagementReplyIntInstance(const rpr2::IObserverEngagementReplyIntInstance &interaction) override;
void deleteInterface() override;
protected:
NGL::INGLLogger &m_logger;
signals:
void newEngagementReply(const rpr2::IObserverEngagementReplyIntInstance &interaction);
};
@@ -0,0 +1,32 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#include "rpr_ia_eventreport.h"
// rpr2 data types
#include <EventIdentifierStruct.h>
#include <EntityTypeStruct.h>
/*
* ObserverWeaponFireCBNotifier
*/
ObserverEventReportCBNotifier::ObserverEventReportCBNotifier()
: rpr2::IObserverEventReportIntClassCB()
, m_logger(HighLevelArchitecture::getLogger("Callbacks.Interaction.EventReport"))
{}
void ObserverEventReportCBNotifier::newEventReportIntInstance(const rpr2::IObserverEventReportIntInstance &interaction)
{
emit newEventReport(interaction);
}
void ObserverEventReportCBNotifier::deleteInterface()
{
DEBUG_LOG(m_logger) << "Delete Interface";
//rpr2::IObserverEventReportIntClassCB::deleteInterface();
}
@@ -0,0 +1,38 @@
/**
* Handle EventReport Events
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include <IObserverEventReportIntClassCB.h>
#include <IObserverEventReportIntInstance.h>
#include <QObject>
#include <Common/logger.h>
/**
* The notifier for new action requests
*/
class ObserverEventReportCBNotifier : public QObject, public rpr2::IObserverEventReportIntClassCB
{
Q_OBJECT
public:
ObserverEventReportCBNotifier();
void newEventReportIntInstance(const rpr2::IObserverEventReportIntInstance &interaction) override;
void deleteInterface() override;
protected:
NGL::INGLLogger &m_logger;
signals:
void newEventReport(const rpr2::IObserverEventReportIntInstance &interaction);
};
@@ -0,0 +1,27 @@
/**
* Handle MunitionDetonation Events
* $Id$
* $HeadURL$
* $Author$
*/
#include "rpr_ia_munitiondetonation.h"
/*
* ObserverMunitionDetonationCBNotifier
*/
ObserverMunitionDetonationCBNotifier::ObserverMunitionDetonationCBNotifier()
: rpr2::IObserverMunitionDetonationIntClassCB()
, m_logger(HighLevelArchitecture::getLogger("Callbacks.Interaction.MunitionDetonation"))
{}
void ObserverMunitionDetonationCBNotifier::newMunitionDetonationIntInstance(const rpr2::IObserverMunitionDetonationIntInstance &interaction)
{
emit newMunitionDetonation(interaction);
}
void ObserverMunitionDetonationCBNotifier::deleteInterface()
{
DEBUG_LOG(m_logger) << "Delete Interface";
//rpr2::IObserverMunitionDetonationCBNotifier::deleteInterface();
}
@@ -0,0 +1,37 @@
/**
* Handle MunitionDetonation Events
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include <IObserverMunitionDetonationIntClassCB.h>
#include <IObserverMunitionDetonationIntInstance.h>
#include <QtCore/QObject>
#include <Common/logger.h>
/**
* The notifier for new munition detonation requests
*/
class ObserverMunitionDetonationCBNotifier : public QObject, public rpr2::IObserverMunitionDetonationIntClassCB
{
Q_OBJECT
public:
ObserverMunitionDetonationCBNotifier();
void newMunitionDetonationIntInstance(const rpr2::IObserverMunitionDetonationIntInstance &interaction) override;
void deleteInterface() override;
protected:
NGL::INGLLogger &m_logger;
signals:
void newMunitionDetonation(const rpr2::IObserverMunitionDetonationIntInstance &interaction);
};
@@ -0,0 +1,33 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#include "rpr_ia_weaponfire.h"
// rpr2 data types
#include <EventIdentifierStruct.h>
#include <EntityTypeStruct.h>
#include <WorldLocationStruct.h>
/*
* ObserverWeaponFireCBNotifier
*/
ObserverWeaponFireCBNotifier::ObserverWeaponFireCBNotifier()
: rpr2::IObserverWeaponFireIntClassCB()
, m_logger(HighLevelArchitecture::getLogger("Callbacks.Interaction.WeaponFire"))
{}
void ObserverWeaponFireCBNotifier::newWeaponFireIntInstance(const rpr2::IObserverWeaponFireIntInstance &interaction)
{
emit newWeaponFire(interaction);
}
void ObserverWeaponFireCBNotifier::deleteInterface()
{
DEBUG_LOG(m_logger) << "Delete Interface";
//rpr2::IObserverMunitionDetonationIntClassCB::deleteInterface();
}
@@ -0,0 +1,38 @@
/**
* Handle WeaponFire Events
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include <IObserverWeaponFireIntClassCB.h>
#include <IObserverWeaponFireIntInstance.h>
#include <QObject>
#include <Common/logger.h>
/**
* The notifier for new action requests
*/
class ObserverWeaponFireCBNotifier : public QObject, public rpr2::IObserverWeaponFireIntClassCB
{
Q_OBJECT
public:
ObserverWeaponFireCBNotifier();
void newWeaponFireIntInstance(const rpr2::IObserverWeaponFireIntInstance &interaction) override;
void deleteInterface() override;
protected:
NGL::INGLLogger &m_logger;
signals:
void newWeaponFire(const rpr2::IObserverWeaponFireIntInstance &interaction);
};
@@ -0,0 +1,19 @@
/**
* class to handle signals for ObserverAircrafts functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_platform_object_cb.h"
class ObserverAircraftObjectCB : public ObserverPlatformObjectCB
{
Q_OBJECT
public:
ObserverAircraftObjectCB(const char *loggerName = "Callbacks.Object.Aircraft")
: ObserverPlatformObjectCB(loggerName)
{}
};
@@ -0,0 +1,47 @@
/**
* template class to handle IObserverAircraftObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverAircraftObjClassCB.h>
#include <IObserverAircraftObjInstance.h>
#include <IObserverAircraftObjInstanceCB.h>
#include "rpr_observer_platform_object_instance_cb.h"
class ObserverAircraftObjectCB;
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverAircraftObjInstanceCB : public ObserverPlatformObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverAircraftObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.Aircraft")
: ObserverPlatformObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
void changedAfterburnerOn(bool) override {}
void changedAntiCollisionLightsOn(bool) override {}
void changedBlackOutBrakeLightsOn(bool) override {}
void changedBlackOutLightsOn(bool) override {}
void changedBrakeLightsOn(bool) override {}
void changedFormationLightsOn(bool) override {}
void changedHatchState(rpr2::HatchStateEnum32::ET) override {}
void changedHeadLightsOn(bool) override {}
void changedInteriorLightsOn(bool) override {}
void changedLandingLightsOn(bool) override {}
void changedLauncherRaised(bool) override {}
void changedNavigationLightsOn(bool) override {}
void changedRampDeployed(bool) override {}
void changedRunningLightsOn(bool) override {}
void changedSpotLightsOn(bool) override {}
void changedTailLightsOn(bool) override {}
};
using ObserverAircraftObjInstanceCBType = ObserverAircraftObjInstanceCB<rpr2::IObserverAircraftObjInstanceCB,
rpr2::IObserverAircraftObjInstance,
ObserverAircraftObjectCB>;
@@ -0,0 +1,56 @@
/**
* class to handle signals for ObserverBaseEntities functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_object_cb.h"
#include <EntityIdentifierStruct.h>
namespace rpr2
{
class WorldLocationStruct;
}
class ObserverBaseEntityObjectCB : public ObserverObjectCB
{
Q_OBJECT
public:
ObserverBaseEntityObjectCB(const char *loggerName = "Callbacks.Object.BaseEntity")
: ObserverObjectCB(loggerName)
{}
void onEntityIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::IObserverBaseEntityObjInstance &object, const ngs::SimTime &simTime)
{
INFO_LOG(m_logger) << "EntityIdentifier changed for Base Entity Object. New EntityIdentifier: "
<< eis.FederateIdentifier.SiteID << "/"
<< eis.FederateIdentifier.ApplicationID << "/"
<< eis.EntityNumber;
emit entityIdentifierChanged(eis, &object, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onSpatialChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::WorldLocationStruct &wl, const ngs::SimTime &simTime)
{
emit spatialChanged(eis, wl, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onEntityTypeChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::EntityTypeStruct &ets, const ngs::SimTime &simTime)
{
emit entityTypeChanged(eis, ets, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onIsPartOfChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::IsPartOfStruct &ipos, const ngs::SimTime &simTime)
{
emit isPartOfChanged(eis, ipos, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
Q_SIGNALS:
void entityIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::IObserverBaseEntityObjInstance *object, qint64 simTimeMSecs);
void spatialChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::WorldLocationStruct &wl, qint64 simTimeMSecs);
void entityTypeChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::EntityTypeStruct &ets, qint64 simTimeMSecs);
void isPartOfChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::IsPartOfStruct &ipos, qint64 simTimeMSecs);
};
@@ -0,0 +1,133 @@
/**
* template class to handle IObserverBaseEntityObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverBaseEntityObjInstanceCB.h>
#include <EntityIdentifierStruct.h>
#include <SpatialStruct.h>
#include <WorldLocationStruct.h>
#include <NGSUtils/SimTime.h>
#include "rpr_observer_object_instance_cb.h"
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverBaseEntityObjInstanceCB : public ObserverObjectInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverBaseEntityObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.BaseEntity")
: ObserverObjectInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
//
// IObserverObjectInstanceCallback
//
void changedSpatial(const rpr2::SpatialStruct &data) override
{
if (!this->m_pIObject->isValidEntityType())
return;
rpr2::DeadReckoningAlgorithmEnum8::ET d = data.DeadReckoningAlgorithm__A__Alternatives.discriminant();
switch (d)
{
case rpr2::DeadReckoningAlgorithmEnum8::Other:
// nothing
break;
case rpr2::DeadReckoningAlgorithmEnum8::Static:
{
rpr2::WorldLocationStruct wl = data.DeadReckoningAlgorithm__A__Alternatives.SpatialStatic().WorldLocation;
try
{
//Bei anderen Projekten muss ein Mapping stattfinden. Dies wird jetzt im NGSInterface erledigt.
//m_pCB->onSpatialChanged(m_pIObject->getEntityIdentifier().EntityNumber, wl, simTimeMSecs);
this->m_pCB->onSpatialChanged(this->m_pIObject->getEntityIdentifier(), wl, this->m_pIObject->getLatestTimeStamp());
}
catch (...)
{
ERROR_LOG(this->m_logger) << "Human-Callback threw Exception in 'newTlnPos()";
}
break;
}
case rpr2::DeadReckoningAlgorithmEnum8::DRM_FPW:
{
rpr2::WorldLocationStruct wl = data.DeadReckoningAlgorithm__A__Alternatives.SpatialFPW().WorldLocation;
try
{
this->m_pCB->onSpatialChanged(this->m_pIObject->getEntityIdentifier(), wl, this->m_pIObject->getLatestTimeStamp());
}
catch (...)
{
ERROR_LOG(this->m_logger) << "Human-Callback threw Exception in 'newTlnPos()";
}
break;
}
case rpr2::DeadReckoningAlgorithmEnum8::DRM_RPW:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_RPW";
break;
case rpr2::DeadReckoningAlgorithmEnum8::DRM_RVW:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_RVW";
break;
case rpr2::DeadReckoningAlgorithmEnum8::DRM_FVW:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_FVW";
break;
case rpr2::DeadReckoningAlgorithmEnum8::DRM_FPB:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_FPB";
break;
case rpr2::DeadReckoningAlgorithmEnum8::DRM_RPB:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_RPB";
break;
case rpr2::DeadReckoningAlgorithmEnum8::DRM_RVB:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_RVB";
break;
case rpr2::DeadReckoningAlgorithmEnum8::DRM_FVB:
DEBUG_LOG(this->m_logger) << "ObserverHumanObjInstanceCB::changedSpatial, case rpr2::DeadReckoningAlgorithmEnum8::DRM_FVB";
break;
}
}
void receivedSpatial(const rpr2::SpatialStruct &, const ngs::SimTime &simTime) override
{
m_lastPositionTime = simTime;
}
void changedEntityIdentifier(const rpr2::EntityIdentifierStruct &data) override
{
if (!this->m_pIObject->isValidEntityType())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onEntityIdentifierChanged(data, *this->m_pIObject, this->m_pIObject->getLatestTimeStamp());
}
void changedEntityType(const rpr2::EntityTypeStruct &value) override
{
if (!this->m_pIObject->isValidEntityType())
return;
this->m_pCB->onEntityTypeChanged(this->m_pIObject->getEntityIdentifier(),
value,
this->m_pIObject->getLatestTimeStamp());
}
void changedIsPartOf(const rpr2::IsPartOfStruct &value) override
{
if (!this->m_pIObject->isValidEntityType())
return;
this->m_pCB->onIsPartOfChanged(this->m_pIObject->getEntityIdentifier(),
value,
this->m_pIObject->getLatestTimeStamp());
}
// Declarations for pure virtual functions
void changedRelativeSpatial(const rpr2::SpatialStruct &) override {}
protected:
ngs::SimTime m_lastPositionTime;
};
@@ -0,0 +1,33 @@
/**
* A notifier to inform NGSConnector about changes in an Designator instance
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include "rpr_observer_designator_object_cb.h"
#include "rpr_observer_designator_object_instance_cb.h"
/**
* The notifier for new Designator instances
*/
class ObserverDesignatorCBNotifier : public ObserverDesignatorObjectCB, public rpr2::IObserverDesignatorObjClassCB
{
Q_OBJECT
public:
ObserverDesignatorCBNotifier()
: ObserverDesignatorObjectCB("Callbacks.Object.Designator")
, rpr2::IObserverDesignatorObjClassCB()
{}
//Abstract functions realized from IObserverDesignatorObjClassCB
rpr2::IObserverDesignatorObjInstanceCB &newDesignatorObjInstance(rpr2::IObserverDesignatorObjInstance &object) override
{
return newObjectInstance<ObserverDesignatorObjInstanceCBType>(object);
}
void deleteInterface() override {}
};
@@ -0,0 +1,44 @@
/**
* class to handle signals for ObserverDesignators functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_embeddedsystem_object_cb.h"
#include <DesignatorCodeEnum16.h>
class ObserverDesignatorObjectCB : public ObserverEmbeddedSystemObjectCB
{
Q_OBJECT
public:
ObserverDesignatorObjectCB(const char *loggerName = "Callbacks.Object.Designator")
: ObserverEmbeddedSystemObjectCB(loggerName)
{}
void onDesignatorCodeChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::DesignatorCodeEnum16::ET value, const ngs::SimTime &simTime)
{
DEBUG_LOG(m_logger) << "Code changed: " << value;
emit designatorCodeChanged(eis, value, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onDesignatorOutputPowerChanged(const rpr2::EntityIdentifierStruct &eis, ngs::FLOAT32 value, const ngs::SimTime &simTime)
{
DEBUG_LOG(m_logger) << "Output Power changed: " << value;
emit designatorOutputPowerChanged(eis, value, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onDesignatorSpotLocationChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::WorldLocationStruct &value, const ngs::SimTime &simTime)
{
DEBUG_LOG(m_logger) << "Spot Location changed (not printed)";
emit designatorSpotLocationChanged(eis, value, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
Q_SIGNALS:
void designatorCodeChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::DesignatorCodeEnum16::ET value, qint64 simTimeMSecs);
void designatorOutputPowerChanged(const rpr2::EntityIdentifierStruct &eis, ngs::FLOAT32 value, qint64 simTimeMSecs);
void designatorSpotLocationChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::WorldLocationStruct &value, qint64 simTimeMSecs);
};
@@ -0,0 +1,77 @@
/**
* template class to handle IObserverDesignatorObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverDesignatorObjClassCB.h>
#include <IObserverDesignatorObjInstance.h>
#include <IObserverDesignatorObjInstanceCB.h>
#include <DesignatorCodeNameEnum16.h>
#include "rpr_observer_embeddedsystem_object_instance_cb.h"
class ObserverDesignatorObjectCB;
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverDesignatorObjInstanceCB : public ObserverEmbeddedSystemObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverDesignatorObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.Designator")
: ObserverEmbeddedSystemObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
void changedDesignatorCode(rpr2::DesignatorCodeEnum16::ET value) override
{
if (!this->m_pIObject->isValidEntityIdentifier())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onDesignatorCodeChanged(this->m_pIObject->getEntityIdentifier(),
value,
this->m_pIObject->getLatestTimeStamp());
}
void changedDesignatorOutputPower(ngs::FLOAT32 value) override
{
if (!this->m_pIObject->isValidEntityIdentifier())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onDesignatorOutputPowerChanged(this->m_pIObject->getEntityIdentifier(),
value,
this->m_pIObject->getLatestTimeStamp());
}
void changedDesignatorSpotLocation(const rpr2::WorldLocationStruct &value) override
{
if (!this->m_pIObject->isValidEntityIdentifier())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onDesignatorSpotLocationChanged(this->m_pIObject->getEntityIdentifier(),
value,
this->m_pIObject->getLatestTimeStamp());
}
// Declarations for pure virtual functions
void changedCodeName(rpr2::DesignatorCodeNameEnum16::ET) override {}
void changedDesignatedObjectIdentifier(const rpr2::RTIObjectIdStruct&) override {}
void changedDesignatorEmissionWavelength(ngs::FLOAT32) override {}
void changedDeadReckoningAlgorithm(rpr2::DeadReckoningAlgorithmEnum8::ET) override {}
void changedRelativeSpotLocation(const rpr2::RelativePositionStruct&) override {}
void changedSpotLinearAccelerationVector(const rpr2::AccelerationVectorStruct&) override {}
};
using ObserverDesignatorObjInstanceCBType = ObserverDesignatorObjInstanceCB<rpr2::IObserverDesignatorObjInstanceCB,
rpr2::IObserverDesignatorObjInstance,
ObserverDesignatorObjectCB>;
@@ -0,0 +1,45 @@
/**
* class to handle signals for ObserverBaseEntities functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_object_cb.h"
#include <EntityIdentifierStruct.h>
#include <RTIObjectIdStruct.h>
namespace rpr2
{
class WorldLocationStruct;
}
class ObserverEmbeddedSystemObjectCB : public ObserverObjectCB
{
Q_OBJECT
public:
ObserverEmbeddedSystemObjectCB(const char *loggerName = "Callbacks.Object.EmbeddedSystem")
: ObserverObjectCB(loggerName)
{}
void onEntityIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::IObserverEmbeddedSystemObjInstance &object, const ngs::SimTime simTime)
{
INFO_LOG(m_logger) << "EntityIdentifier changed for Embedded System Object. New EntityIdentifier: "
<< eis.FederateIdentifier.SiteID << "/"
<< eis.FederateIdentifier.ApplicationID << "/"
<< eis.EntityNumber;
emit entityIdentifierChanged(eis, &object, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
// void onHostObjectIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::RTIObjectIdStruct &host, const ngs::SimTime &simTime)
// {
// emit objectIdentifierChanged(eis, host, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
// }
Q_SIGNALS:
void entityIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::IObserverEmbeddedSystemObjInstance *object, qint64 simTimeMSecs);
// void objectIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::RTIObjectIdStruct &wl, qint64 simTimeMSecs);
};
@@ -0,0 +1,58 @@
/**
* template class to handle IObserverEmbeddedSystemObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverEmbeddedSystemObjInstanceCB.h>
#include <EntityIdentifierStruct.h>
#include <SpatialStruct.h>
#include <WorldLocationStruct.h>
#include <NGSUtils/SimTime.h>
#include "rpr_observer_object_instance_cb.h"
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverEmbeddedSystemObjInstanceCB : public ObserverObjectInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverEmbeddedSystemObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.EmbeddedSystem")
: ObserverObjectInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
//
// IObserverObjectInstanceCallback
//
void changedEntityIdentifier(const rpr2::EntityIdentifierStruct &data) override
{
if (!this->m_pIObject->isValidEntityIdentifier())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onEntityIdentifierChanged(data, *this->m_pIObject, this->m_pIObject->getLatestTimeStamp());
}
/* Unused yet. It is in EntityIdentifier. Not nice, but that's how ICE sends the data.
void changedHostObjectIdentifier(const rpr2::RTIObjectIdStruct &data) override
{
if (!this->m_pIObject->isValidEntityIdentifier())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onHostObjectIdentifierChanged(this->m_pIObject->getEntityIdentifier(),
data,
this->m_pIObject->getLatestTimeStamp());
}
*/
// Declarations for pure virtual functions
void changedHostObjectIdentifier(const rpr2::RTIObjectIdStruct &) override {}
void changedRelativePosition(const rpr2::RelativePositionStruct &) override {}
protected:
ngs::SimTime m_lastPositionTime;
};
@@ -0,0 +1,34 @@
/**
* A notifier to inform NGSConnector about changes in an GroundVehicle instance
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include "rpr_observer_groundvehicle_object_cb.h"
#include "rpr_observer_groundvehicle_object_instance_cb.h"
/**
* The notifier for new ground vehicle instances
*/
class ObserverGroundVehicleCBNotifier : public ObserverGroundVehicleObjectCB, public rpr2::IObserverGroundVehicleObjClassCB
{
Q_OBJECT
public:
ObserverGroundVehicleCBNotifier()
: ObserverGroundVehicleObjectCB("Callbacks.Object.GroundVehicle")
, rpr2::IObserverGroundVehicleObjClassCB()
{}
//Abstract functions realized from IObserverGroundVehicleObjClassCB
rpr2::IObserverGroundVehicleObjInstanceCB &newGroundVehicleObjInstance(rpr2::IObserverGroundVehicleObjInstance &object) override
{
return newObjectInstance<ObserverGroundVehicleObjInstanceCBType>(object);
}
void deleteInterface() override {}
};
@@ -0,0 +1,19 @@
/**
* class to handle signals for ObserverHumans functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_platform_object_cb.h"
class ObserverGroundVehicleObjectCB : public ObserverPlatformObjectCB
{
Q_OBJECT
public:
ObserverGroundVehicleObjectCB(const char *loggerName = "Callbacks.Object.GroundVehicle")
: ObserverPlatformObjectCB(loggerName)
{}
};
@@ -0,0 +1,31 @@
/**
* template class to handle IObserverGroundVehicleObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverGroundVehicleObjClassCB.h>
#include <IObserverGroundVehicleObjInstance.h>
#include <IObserverGroundVehicleObjInstanceCB.h>
#include "rpr_observer_platform_object_instance_cb.h"
class ObserverGroundVehicleObjectCB;
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverGroundVehicleObjInstanceCB : public ObserverPlatformObjInstanceCB<IOBJ_CB,
OBJ,
OBJ_CB>
{
public:
explicit ObserverGroundVehicleObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.GroundVehicle")
: ObserverPlatformObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
};
using ObserverGroundVehicleObjInstanceCBType = ObserverGroundVehicleObjInstanceCB<rpr2::IObserverGroundVehicleObjInstanceCB,
rpr2::IObserverGroundVehicleObjInstance,
ObserverGroundVehicleObjectCB>;
@@ -0,0 +1,33 @@
/**
* A notifier to inform NGSConnector about changes in an Human instance
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include "rpr_observer_human_object_cb.h"
#include "rpr_observer_human_object_instance_cb.h"
/**
* The notifier for new human instances
*/
class ObserverHumanCBNotifier : public ObserverHumanObjectCB, public rpr2::IObserverHumanObjClassCB
{
Q_OBJECT
public:
ObserverHumanCBNotifier()
: ObserverHumanObjectCB("Callbacks.Object.Human")
, rpr2::IObserverHumanObjClassCB()
{}
//Abstract functions realized from IObserverHumanObjClassCB
rpr2::IObserverHumanObjInstanceCB &newHumanObjInstance(rpr2::IObserverHumanObjInstance &object) override
{
return newObjectInstance<ObserverHumanObjInstanceCBType>(object);
}
void deleteInterface() override {}
};
@@ -0,0 +1,19 @@
/**
* class to handle signals for ObserverHumans functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_lifeform_object_cb.h"
class ObserverHumanObjectCB : public ObserverLifeformObjectCB
{
Q_OBJECT
public:
ObserverHumanObjectCB(const char *loggerName = "Callbacks.Object.Human")
: ObserverLifeformObjectCB(loggerName)
{}
};
@@ -0,0 +1,29 @@
/**
* template class to handle IObserverHumanObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverHumanObjClassCB.h>
#include <IObserverHumanObjInstance.h>
#include <IObserverHumanObjInstanceCB.h>
#include "rpr_observer_lifeform_object_instance_cb.h"
class ObserverHumanObjectCB;
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverHumanObjInstanceCB : public ObserverLifeformObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverHumanObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.Human")
: ObserverLifeformObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
};
using ObserverHumanObjInstanceCBType = ObserverHumanObjInstanceCB<rpr2::IObserverHumanObjInstanceCB,
rpr2::IObserverHumanObjInstance,
ObserverHumanObjectCB>;
@@ -0,0 +1,19 @@
/**
* class to handle signals for ObserverLifeforms functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_physicalentity_object_cb.h"
class ObserverLifeformObjectCB : public ObserverPhysicalEntityObjectCB
{
Q_OBJECT
public:
ObserverLifeformObjectCB(const char *loggerName = "Callbacks.Object.Lifeform")
: ObserverPhysicalEntityObjectCB(loggerName)
{}
};
@@ -0,0 +1,40 @@
/**
* template class to handle IObserverLifeformObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverLifeformObjClassCB.h>
#include <IObserverLifeformObjInstance.h>
#include <IObserverLifeformObjInstanceCB.h>
#include "rpr_observer_physicalentity_object_instance_cb.h"
class ObserverLifeformObjectCB;
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverLifeformObjInstanceCB : public ObserverPhysicalEntityObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverLifeformObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.Lifeform")
: ObserverPhysicalEntityObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
//
// IObserverLifeformObjInstanceCB
//
// Declarations for pure virtual functions
void changedFlashLightsOn(bool) override {}
void changedStanceCode(rpr2::StanceCodeEnum32::ET) override {}
void changedPrimaryWeaponState(rpr2::WeaponStateEnum32::ET) override {}
void changedSecondaryWeaponState(rpr2::WeaponStateEnum32::ET) override {}
void changedComplianceState(rpr2::ComplianceStateEnum32::ET) override {}
};
using ObserverLifeformObjInstanceCBType = ObserverLifeformObjInstanceCB<rpr2::IObserverLifeformObjInstanceCB,
rpr2::IObserverLifeformObjInstance,
ObserverLifeformObjectCB>;
@@ -0,0 +1,33 @@
/**
* A notifier to inform NGSConnector about changes in an GuezObserverController instance
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_global.h"
#include "rpr_observer_longbow_apache_object_cb.h"
#include "rpr_observer_longbow_apache_object_instance_cb.h"
/**
* The notifier for new longbow apache instances
*/
class ObserverLongBowApacheCBNotifier : public ObserverLongBowApacheObjectCB, public rpr2::IObserverLongBowApacheObjClassCB
{
Q_OBJECT
public:
ObserverLongBowApacheCBNotifier()
: ObserverLongBowApacheObjectCB("Callbacks.Object.LongBowApache")
, rpr2::IObserverLongBowApacheObjClassCB()
{}
//Abstract functions realized from IObserverGuezObserverControllerObjClassCB
rpr2::IObserverLongBowApacheObjInstanceCB &newLongBowApacheObjInstance(rpr2::IObserverLongBowApacheObjInstance &object) override
{
return newObjectInstance<ObserverLongBowApacheObjInstanceCBType>(object);
}
void deleteInterface() override {}
};
@@ -0,0 +1,30 @@
/**
* class to handle signals for ObserverGuezObserverControllers functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_aircraft_object_cb.h"
#include <SensorFieldEnum32.h>
class ObserverLongBowApacheObjectCB : public ObserverAircraftObjectCB
{
Q_OBJECT
public:
ObserverLongBowApacheObjectCB(const char *loggerName = "Callbacks.Object.LongBowApache")
: ObserverAircraftObjectCB(loggerName)
{}
void onSensorChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::SensorFieldEnum32::ET value, const ngs::SimTime &simTime)
{
emit sensorChanged(eis, value, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
Q_SIGNALS:
void sensorChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::SensorFieldEnum32::ET value, qint64 simTimeMSecs);
};
@@ -0,0 +1,45 @@
/**
* template class to handle IObserverGuezObserverControllerObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverLongBowApacheObjClassCB.h>
#include <IObserverLongBowApacheObjInstance.h>
#include <IObserverLongBowApacheObjInstanceCB.h>
#include "rpr_observer_aircraft_object_instance_cb.h"
class ObserverLongBowApacheObjectCB;
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverLongBowApacheObjInstanceCB : public ObserverAircraftObjInstanceCB<IOBJ_CB,
OBJ,
OBJ_CB>
{
public:
explicit ObserverLongBowApacheObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.LongBowApache")
: ObserverAircraftObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
void changedSensor(rpr2::SensorFieldEnum32::ET value) override
{
if (!this->m_pIObject->isValidEntityType())
{
ERROR_LOG(this->m_logger) << "No valid Entity.";
return;
}
this->m_pCB->onSensorChanged(this->m_pIObject->getEntityIdentifier(),
value,
this->m_pIObject->getLatestTimeStamp());
}
};
using ObserverLongBowApacheObjInstanceCBType = ObserverLongBowApacheObjInstanceCB<rpr2::IObserverLongBowApacheObjInstanceCB,
rpr2::IObserverLongBowApacheObjInstance,
ObserverLongBowApacheObjectCB>;
@@ -0,0 +1,48 @@
/**
* class to handle signals for ObserverObjects functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QObject>
#include <IObserverBaseEntityObjInstance.h>
#include <IObserverEmbeddedSystemObjInstance.h>
#include <IObserverEnvironmentObjectObjInstance.h>
#include <Common/logger.h>
class ObserverObjectCB : public QObject
{
Q_OBJECT
public:
ObserverObjectCB(const char *loggerName = "Callbacks.Object.Object")
: m_logger(HighLevelArchitecture::getLogger(loggerName))
{}
template<typename T>
typename T::IObjectCallback &newObjectInstance(typename T::Object &object)
{
typedef typename T::ObjectCallback OBJ_CB;
OBJ_CB *that = dynamic_cast<OBJ_CB *>(this);
T *cb = new T(*that); //Neues Observer-Objekt erstellen
cb->setInterface(&object); //Merken des Objekts, falls man die get-Funktionen nutzen möchte
emit newObjectInstance2(object); //Bekannt machen, das ein neues Objekt gemeldet wurde
return *cb; //Hier wird der Observer für dieses Objekt zurückgegeben.
}
void deleteObjectInstance(const ngs::IObserverObjectInstance &object)
{
emit objectInstanceDeleted(object);
}
Q_SIGNALS:
void newObjectInstance(const ngs::IObserverObjectInstance &object);
void newObjectInstance2(const ngs::IObserverObjectInstance &object);
void objectInstanceDeleted(const ngs::IObserverObjectInstance &object);
protected:
NGL::INGLLogger &m_logger;
};
@@ -0,0 +1,51 @@
/**
* template class to handle IObserverBaseEntityObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverObjectInstanceCallback.h>
#include <Common/logger.h>
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverObjectInstanceCB : public IOBJ_CB
{
public:
explicit ObserverObjectInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.Object")
: m_pIObject(nullptr)
, m_pCB(&hoicb)
, m_logger(HighLevelArchitecture::getLogger(loggerName))
{}
void setInterface(OBJ *_piobject) { m_pIObject = _piobject; }
//
// IObserverObjectInstanceCallback
//
// Declarations for pure virtual functions
void deleteObjectInstance() override
{
DEBUG_LOG(m_logger) << "deleteObjectInstance";
if (m_pCB && m_pIObject)
m_pCB->deleteObjectInstance(*m_pIObject);
delete this;
}
void anyAttributesChanged() override
{
//DEBUG_LOG(m_logger) << "anyAttributeChanged on EntityID:"<< m_pIObject->getEntityIdentifier().EntityNumber;
}
typedef OBJ Object;
typedef OBJ_CB ObjectCallback;
typedef IOBJ_CB IObjectCallback;
protected:
OBJ *m_pIObject;
OBJ_CB *m_pCB;
NGL::INGLLogger &m_logger;
};
@@ -0,0 +1,46 @@
/**
* class to handle signals for ObserverPhysicalEntities functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_baseentity_object_cb.h"
#include <MarkingStruct.h>
#include <DamageStatusEnum32.h>
class ObserverPhysicalEntityObjectCB : public ObserverBaseEntityObjectCB
{
Q_OBJECT
public:
ObserverPhysicalEntityObjectCB(const char *loggerName = "Callbacks.Object.PhysicalEntity")
: ObserverBaseEntityObjectCB(loggerName)
{}
void onForceIdentifierChanged(const rpr2::EntityIdentifierStruct &eis,
rpr2::ForceIdentifierEnum8::ET identifier,
const ngs::SimTime &simTime)
{
emit forceIdentifierChanged(eis, identifier, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onMarkingChanged(const rpr2::EntityIdentifierStruct &eis,
const rpr2::MarkingStruct &marking,
const ngs::SimTime &simTime)
{
emit markingChanged(eis, marking, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
void onDamageStateChanged(const rpr2::EntityIdentifierStruct &eis,
rpr2::DamageStatusEnum32::ET status,
const ngs::SimTime &simTime)
{
emit damageStateChanged(eis, status, simTime.getSeconds() * 1000ULL + simTime.getMicroSeconds() / 1000ULL);
}
Q_SIGNALS:
void forceIdentifierChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::ForceIdentifierEnum8::ET state, qint64 simTimeMSecs);
void markingChanged(const rpr2::EntityIdentifierStruct &eis, const rpr2::MarkingStruct &marking, qint64 simTimeMSecs);
void damageStateChanged(const rpr2::EntityIdentifierStruct &eis, rpr2::DamageStatusEnum32::ET status, qint64 simTimeMSecs);
};
@@ -0,0 +1,76 @@
/**
* template class to handle IObserverPhysicalEntityObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverPhysicalEntityObjInstanceCB.h>
#include <MarkingStruct.h>
#include "rpr_observer_baseentity_object_instance_cb.h"
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverPhysicalEntityObjInstanceCB : public ObserverBaseEntityObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverPhysicalEntityObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.PhysicalEntity")
: ObserverBaseEntityObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
//
// IObserverPhysicalEntityObjInstanceCB
//
void changedForceIdentifier(rpr2::ForceIdentifierEnum8::ET data) override
{
if (!this->m_pIObject->isValidEntityType())
return;
this->m_pCB->onForceIdentifierChanged(this->m_pIObject->getEntityIdentifier(),
data,
this->m_pIObject->getLatestTimeStamp());
}
void changedMarking(const rpr2::MarkingStruct &data) override
{
if (!this->m_pIObject->isValidEntityType())
return;
this->m_pCB->onMarkingChanged(this->m_pIObject->getEntityIdentifier(),
data,
this->m_pIObject->getLatestTimeStamp());
}
void changedDamageState(rpr2::DamageStatusEnum32::ET data) override
{
if (!this->m_pIObject->isValidEntityType())
return;
this->m_pCB->onDamageStateChanged(this->m_pIObject->getEntityIdentifier(),
data,
this->m_pIObject->getLatestTimeStamp());
}
// Declarations for pure virtual functions
void changedFirePowerDisabled(bool) override {}
void changedImmobilized(bool) override {}
void changedAcousticSignatureIndex(short) override {}
void changedAlternateEntityType(const rpr2::EntityTypeStruct &) override {}
void changedArticulatedParametersArray(const rpr2::ArrayOfArticulatedParameterStructDynamicHLAunpaddedLengthlessVarArray &) override {}
void receivedArticulatedParametersArray(const rpr2::ArrayOfArticulatedParameterStructDynamicHLAunpaddedLengthlessVarArray &, const ngs::SimTime &) override {}
void changedCamouflageType(rpr2::CamouflageEnum32::ET) override {}
void changedEngineSmokeOn(bool) override {}
void changedFlamesPresent(bool) override {}
void changedHasAmmunitionSupplyCap(bool) override {}
void changedHasFuelSupplyCap(bool) override {}
void changedHasRecoveryCap(bool) override {}
void changedHasRepairCap(bool) override {}
void changedInfraredSignatureIndex(short) override {}
void changedIsConcealed(bool) override {}
void changedLiveEntityMeasuredSpeed(unsigned short) override {}
void changedPowerPlantOn(bool) override {}
void changedPropulsionSystemsData(const rpr2::ArrayOfPropulsionSystemDataStructDynamicHLAlengthlessVarArray &) override {}
void changedRadarCrossSectionSignatureIndex(short) override {}
void changedSmokePlumePresent(bool) override {}
void changedTentDeployed(bool) override {}
void changedTrailingEffectsCode(rpr2::TrailingEffectsCodeEnum32::ET) override {}
void changedVectoringNozzleSystemData(const rpr2::ArrayOfVectoringNozzleSystemDataStructDynamicHLAlengthlessVarArray &) override {}
};
@@ -0,0 +1,19 @@
/**
* class to handle signals for ObserverPlatforms functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include "rpr_observer_physicalentity_object_cb.h"
class ObserverPlatformObjectCB : public ObserverPhysicalEntityObjectCB
{
Q_OBJECT
public:
ObserverPlatformObjectCB(const char *loggerName = "Callbacks.Object.Platform")
: ObserverPhysicalEntityObjectCB(loggerName)
{}
};
@@ -0,0 +1,42 @@
/**
* template class to handle IObserverPlatformObjInstanceCB functions
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <IObserverPlatformObjInstanceCB.h>
#include "rpr_observer_physicalentity_object_instance_cb.h"
template<typename IOBJ_CB, typename OBJ, typename OBJ_CB>
class ObserverPlatformObjInstanceCB : public ObserverPhysicalEntityObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>
{
public:
explicit ObserverPlatformObjInstanceCB(OBJ_CB &hoicb, const char *loggerName = "Callbacks.Object.Platform")
: ObserverPhysicalEntityObjInstanceCB<IOBJ_CB, OBJ, OBJ_CB>(hoicb, loggerName)
{}
//
// IObserverPlatformObjInstanceCB
//
// Declarations for pure virtual functions
void changedAfterburnerOn(bool) override {}
void changedAntiCollisionLightsOn(bool) override {}
void changedBlackOutBrakeLightsOn(bool) override {}
void changedBlackOutLightsOn(bool) override {}
void changedBrakeLightsOn(bool) override {}
void changedFormationLightsOn(bool) override {}
void changedHatchState(rpr2::HatchStateEnum32::ET) override {}
void changedHeadLightsOn(bool) override {}
void changedInteriorLightsOn(bool) override {}
void changedLandingLightsOn(bool) override {}
void changedLauncherRaised(bool) override {}
void changedNavigationLightsOn(bool) override {}
void changedRampDeployed(bool) override {}
void changedRunningLightsOn(bool) override {}
void changedSpotLightsOn(bool) override {}
void changedTailLightsOn(bool) override {}
};