Files
qt5-legatus-legacy/Lts/Services/CentralEffectSimulation/Plugins/Explosions/line_of_sight.h
T
2026-08-13 18:33:10 +02:00

51 lines
1.7 KiB
C++
Executable File

/**
* @RDE_HEADER@
* Calculate line of sight
* $Id$
* $HeadURL$
* $Author$
* Created by gr, SLSE, 2024-11-03
*/
#include <Core/core.hpp>
#include <LtsCoordinate/lts_coordinate.h>
#include <CentralEffectSimulation/proxy_building.h>
#include <QFlags>
#pragma once
namespace CesExplosions
{
// Options:
enum Option
{
EXECUTE_BLDG_LOS_CALC = 1, // 0000001
EXECUTE_ELEVATION_LOS_CALC = 2, // 0000010
// OptFutureUse1 = 4, // 0000100
// OptFutureUse2 = 8, // 0001000
};
Q_DECLARE_FLAGS(Options, Option)
/// brief calculate line of sight between two points
/// \param exerciseId: id from exercise
/// \param impactLtsCoord_absZ: Explosion Position (z = height == above MSL)
/// \param participantLtsCoord_absZ: Participant Position (z = height == above MSL)
/// \param lineOfSightOptions: Options which Calculation is relevant, building or terrain
/// \param bLosOut: Result of calculation: true = line of sight given; false: line of sight interrupted
/// \return true: no error in calculation
bool lineOfSight_elevationAndBuilding(const int exerciseId,
const LtsCoordTrans::LtsCoordinate &impactLtsCoord_absZ,
const LtsCoordTrans::LtsCoordinate &participantLtsCoord_absZ,
Options lineOfSightOptions,
bool &bLosOut,
std::shared_ptr<CentralEffectSimulation::ProxyBuilding> proxyBuilding);
Q_DECLARE_OPERATORS_FOR_FLAGS(Options)
}