Major Changes:
- Merged latest Qt5 devel content from dlbo (292 files changed, 7 new dirs)
- Consolidated forward-declarations and include folders
- Removed unneeded modules per Niklas' repo check list
Build System Fixes:
- Fixed CMake VERSION_GREATER syntax in ParticipantManagement/CMakeLists.txt
- Added VLC packages (libvlc-dev, vlc-plugin-base) to docker_build.sh
- Added PostgreSQL dev packages (libpq-dev, postgresql-server-dev-all) to Dockerfile
- Fixed locale warnings (ANSI_X3.4-1968 → C.UTF-8)
- Fixed ArcGIS SDK path warnings when BUILD_ARCGIS=OFF
Code Generation Fixes:
- Fixed IDL enum collisions (PortType→CorePortType/DdsutPortType, PdmEventType)
- Fixed Grantlee template svc_translation.cpp.grantlee:
- Changed {{ idl_enum.name }}_def:: to {{ idl_enum.name }}::
- Fixed .underlying() calls for C++11 scoped enums (enum class)
- Removed generated files from repo (moc_*, *_dtc.h, *_ftc.h)
Validation:
- BUILD_RTI=ON: SUCCESS
- BUILD_RTI=OFF: SUCCESS
- C++17 standard maintained for RTI 7.7 compatibility
- Ubuntu 26.04 Docker environment verified
Remaining Warnings (expected):
- BgViewer, KDChart, KDReports, Poppler-Qt6 not found (optional features)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
167 lines
4.6 KiB
C++
167 lines
4.6 KiB
C++
/**
|
||
* @RDE_HEADER@
|
||
* Interface-Implementation of DangerArea
|
||
* $Id$
|
||
* $HeadURL$
|
||
* $Author$
|
||
*/
|
||
|
||
// Own
|
||
#include "cube_impl.h"
|
||
#include <Map/coord_translation_functor.h>
|
||
#include <Map/party_id_to_color_functor.h>
|
||
#include <MapImpl/map_impl.h>
|
||
#include <GraphicalObjects/graphical_object_cube.h>
|
||
|
||
|
||
|
||
// ESRI
|
||
#include <arcgis/GraphicsOverlay.h>
|
||
#include <arcgis/Renderer.h>
|
||
#include <arcgis/PolygonBuilder.h>
|
||
|
||
|
||
// Qt
|
||
|
||
|
||
|
||
namespace SituationMap
|
||
{
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// class CubeImpl
|
||
//-----------------------------------------------------------------------------
|
||
CubeImpl::CubeImpl(const QString &debugInfo)
|
||
: Cube() // Interface
|
||
, BaseClass(debugInfo) // Implementation
|
||
, m_logger(getLogger("CubeImpl"))
|
||
{
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||
}
|
||
|
||
CubeImpl::~CubeImpl()
|
||
{
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||
}
|
||
|
||
double CubeImpl::height() const
|
||
{
|
||
return m_height;
|
||
}
|
||
void CubeImpl::setHeight(double height)
|
||
{
|
||
m_height = height;
|
||
}
|
||
|
||
|
||
bool CubeImpl::updateViewImpl()
|
||
{
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " START"
|
||
<< " symbol=" << m_symbol.value().sidc
|
||
<< " visibility=" << m_visibility
|
||
<< " visiTechn=" << m_visibilityTechnical
|
||
<< " visiTact=" << m_visibilityTactical;
|
||
|
||
// pre-condition
|
||
Esri::ArcGISRuntime::Renderer *curRenderer = nullptr;
|
||
if (m_graphicsLayer)
|
||
curRenderer = m_graphicsLayer->renderer();
|
||
if (!curRenderer)
|
||
{
|
||
ERROR_LOG(m_logger) << LOGFUNCTION << " no ArcGISRuntime::Renderer, layername='" << m_logicalLayerName << "'";
|
||
return false;
|
||
}
|
||
|
||
|
||
// Destroy if invisible :
|
||
// 13.09.2018, Norbert Thoden
|
||
// Regarding ESRI Case #02170796 - [BOS] Crash with Destruction of 3D Scene
|
||
// To reduce likelihood of crash:
|
||
// Destroy GraphicalObject (GO, m_mainGraphicalObject) if it becomes invisible
|
||
// With V100.3.0 the behaviour does not change.
|
||
// (switching cubes for 180 bldgs on and off)
|
||
//
|
||
if (m_visibility)
|
||
{
|
||
if (!m_mainGraphicalObject)
|
||
{
|
||
m_mainGraphicalObject = new GraphicalObjectCube(m_mapImpl->getEsriGeoView(),
|
||
m_graphicsLayer,
|
||
m_debugInfo + QStringLiteral("#GOCube"),
|
||
m_uniqueMapId);
|
||
}
|
||
} else {
|
||
delete m_mainGraphicalObject;
|
||
m_mainGraphicalObject = nullptr;
|
||
return true;
|
||
}
|
||
// : Destroy if invisible
|
||
|
||
|
||
GraphicalObjectCube *goCube = static_cast<GraphicalObjectCube *>(m_mainGraphicalObject);
|
||
if (goCube)
|
||
{
|
||
// in former times: partyName was used
|
||
// it´s replaced by more flexible ExtrusionColorName:
|
||
// const QString &partyName = m_mapImpl->partyIdToColorFunctor().partyIdToName(m_party.partyId.value());
|
||
// goCube->setPartyName(partyName);
|
||
|
||
const QColor &partyColor= m_mapImpl->partyIdToColorFunctor().partyIdToColor(m_party.partyId.value());
|
||
if (m_party.partyId.value() > -2) //Use Default: White or TeamColor
|
||
{
|
||
goCube->setExtrusionColorName( partyColor.name() );
|
||
}
|
||
else // Use given Color //need to be prepared in layerfactory!
|
||
{
|
||
goCube->setExtrusionColorName( majorColor().name() );
|
||
}
|
||
|
||
goCube->setPositions(m_positions.positionsTranslated());
|
||
goCube->setHeight(m_height);
|
||
}
|
||
else
|
||
{
|
||
ERROR_LOG(m_logger) << LOGFUNCTION << " no m_mainGraphicalObject";
|
||
return false;
|
||
}
|
||
|
||
|
||
bool success = BaseClass::updateViewImpl();
|
||
if (!success)
|
||
ERROR_LOG(m_logger) << LOGFUNCTION << " updateViewImpl failed";
|
||
|
||
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||
return true;
|
||
}
|
||
|
||
bool CubeImpl::init(MapImpl *mapImpl, const QString &logicalLayerName)
|
||
{
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " START";
|
||
|
||
bool success = BaseClass::init(mapImpl, logicalLayerName);
|
||
|
||
// create underlying object (to save most attributes only there)
|
||
if (!m_mainGraphicalObject)
|
||
{
|
||
m_mainGraphicalObject = new GraphicalObjectCube(m_mapImpl->getEsriGeoView(),
|
||
m_graphicsLayer,
|
||
m_debugInfo + QStringLiteral("#GOCube"),
|
||
m_uniqueMapId);
|
||
//this MapObject is not very typical, therefore set some attributes:
|
||
this->setPickable(false);
|
||
this->setScaleEnable(false);
|
||
}
|
||
|
||
TRACE_LOG(m_logger) << LOGFUNCTION << " END";
|
||
return success;
|
||
}
|
||
|
||
|
||
|
||
|
||
|
||
} // namespace SituationMap
|