Migrates AreaEffectSimulation to generated rtiddsgen API

Converts accessor calls to plain member access across aes service and plugin.
This commit is contained in:
berrux-dev committed 2026-09-21 02:45:07 +02:00
1 parent e8d07af320
commit 472f537313
102 files changed
+3307 -3313

No files matched your search

@@ -33,12 +33,12 @@ ObjectMineAreaNull::ObjectMineAreaNull(MainHandler *mainHandler,
}
// Set TriggeredExplosions Base Data
m_tis.id(AesType::AtMineAreaSingleMines);
m_tis.aesItemId(0);
m_tis.aesTypeId(AesType::AtMineAreaSingleMines);
m_tis.id = AesType::AtMineAreaSingleMines;
m_tis.aesItemId = 0;
m_tis.aesTypeId = AesType::AtMineAreaSingleMines;
// Set DUS-Mine status Base Data
m_dms.mines().resize(m_triggeredMines.size());
m_dms.mines.resize(m_triggeredMines.size());
onPublishData();
}
@@ -49,25 +49,25 @@ ObjectMineAreaNull::~ObjectMineAreaNull()
}
bool ObjectMineAreaNull::isDusMineArea() const
{
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::DUS;
}
bool ObjectMineAreaNull::isConcreteMine() const
{
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::Concrete;
}
bool ObjectMineAreaNull::isVirtualSingleMine() const
{
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::VirtualSingle;
}
bool ObjectMineAreaNull::isVirtualMine() const
{
return static_cast<MineClass::type>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
return static_cast<MineClass>(m_mainHandler->dds()->pdmDtc()->mineClass(m_data.chargeTypeId, m_data.igniterTypeId, m_data.igniterFunctionId))
== MineClass::Virtual;
}
int ObjectMineAreaNull::lastConcreteMineNo()
@@ -232,8 +232,8 @@ void ObjectMineAreaNull::removeTopics()
{
auto dts = m_mainHandler->dds()->dts();
dts->removeMineAreaByKey(m_data.id);
dts->removeAesItemViewByKey(1000 * m_data.id + AesType::AtMineAreaSingleMines);
dts->removeTriggeredImpactsByKey(1000 * m_data.id + AesType::AtMineAreaSingleMines);
dts->removeAesItemViewByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines));
dts->removeTriggeredImpactsByKey(1000 * m_data.id + static_cast<int>(AesType::AtMineAreaSingleMines));
emit removeAiv(m_data.id);
}
@@ -252,24 +252,24 @@ void ObjectMineAreaNull::publishAiv()
}
AesItemView aiv2(m_aiv2);
aiv2.aesItemId(0);
aiv2.chargeStruct().chargeTypeId(m_data.chargeTypeId); // Shall be invalid. EffectSimulation has been conducted before, so not necessary for service sCES
aiv2.effectStart(0);
aiv2.form(vec);
aiv2.boundingBoxBottomLeft() = Core::GeoPosition2D(tmp.boundingRect().bottomLeft().x(), tmp.boundingRect().bottomLeft().y());
aiv2.boundingBoxTopRight() = Core::GeoPosition2D(tmp.boundingRect().topRight().x(), tmp.boundingRect().topRight().y());
aiv2.aesTypeId(AesType::inner_enum::AtMineAreaSingleMines);
aiv2.id(AesType::inner_enum::AtMineAreaSingleMines);
aiv2.effectStateId(AesEffectState::inner_enum::EsActivated);
aiv2.setId(dds::core::optional<rti::core::int64>(m_setId));
aiv2.aesItemId = 0;
aiv2.chargeStruct.chargeTypeId = m_data.chargeTypeId; // Shall be invalid. EffectSimulation has been conducted before, so not necessary for service sCES
aiv2.effectStart = 0;
aiv2.form = vec;
aiv2.boundingBoxBottomLeft = Core::GeoPosition2D(tmp.boundingRect().bottomLeft().x(), tmp.boundingRect().bottomLeft().y());
aiv2.boundingBoxTopRight = Core::GeoPosition2D(tmp.boundingRect().topRight().x(), tmp.boundingRect().topRight().y());
aiv2.aesTypeId = AesType::AtMineAreaSingleMines;
aiv2.id = AesType::AtMineAreaSingleMines;
aiv2.effectStateId = AesEffectState::EsActivated;
aiv2.setId = dds::core::optional<rti::core::int64>(m_setId);
if (m_data.partyId != 0)
aiv2.partyId(m_data.partyId);
aiv2.partyId = m_data.partyId;
checkIsCentralAndPublish(aiv2.form(), m_aiv2.form(), m_data.isCentral);
checkIsCentralAndPublish(aiv2.form, m_aiv2.form, m_data.isCentral);
if (aiv2 != m_aiv2)
{
aiv2.sampleTime(partitionTimeMSec());
aiv2.sampleTime = partitionTimeMSec();
m_aiv2 = aiv2;
m_mainHandler->dds()->dts()->publish(aiv2);
emit newAiv(aiv2);
@@ -280,20 +280,20 @@ bool ObjectMineAreaNull::publishTriggeredImpacts()
{
// Build an own tes-bitfield and compare, only store and publish if changed.
TriggeredImpacts tis(m_tis);
tis.impactCount(m_triggeredMines.size());
tis.bitfield().resize((m_triggeredMines.size() + 7) / 8);
tis.setId(dds::core::optional<rti::core::int64>(m_setId));
tis.impactCount = m_triggeredMines.size();
tis.bitfield.resize((m_triggeredMines.size() + 7) / 8);
tis.setId = dds::core::optional<rti::core::int64>(m_setId);
int i = 0;
for (const auto &mine : qAsConst(m_triggeredMines))
{
// Triggered Impact == 0, if mine is disarmed/exploded
LtsUtils::BitArray::setBit(tis.bitfield(), i++, !mine.isTriggered);
LtsUtils::BitArray::setBit(tis.bitfield, i++, !mine.isTriggered);
}
if (m_tis != tis)
{
m_tis = tis;
m_tis.sampleTime(partitionTimeMSec());
m_tis.sampleTime = partitionTimeMSec();
return m_mainHandler->dds()->dts()->publish(m_tis);
}
return true;
@@ -304,19 +304,19 @@ bool ObjectMineAreaNull::publishDusMineStatus()
// DusMineStatus mines vector is coherent to triggered impacts bitfield
DusMineState dms(m_dms);
dms.mines().resize(m_triggeredMines.size());
dms.setId(dds::core::optional<rti::core::int64>(m_setId));
dms.mines.resize(m_triggeredMines.size());
dms.setId = dds::core::optional<rti::core::int64>(m_setId);
int i = 0;
for (const auto &mine : qAsConst(m_triggeredMines))
{
const DusMine entry(mine.mineId, mine.isTriggered, mine.chargeTypeId, {mine.position.x(), mine.position.y()});
dms.mines()[i++] = entry;
dms.mines[i++] = entry;
}
if (m_dms != dms)
{
m_dms = dms;
m_dms.sampleTime(partitionTimeMSec());
m_dms.sampleTime = partitionTimeMSec();
return m_mainHandler->dds()->dts()->publish(m_dms);
}
return true;