Files
qt5-legatus-legacy/Lts/Services/CentralEffectSimulation/Plugins/GeoPairing/GeoPairingImpl/GeoPairingImplAirTargetTracker.hpp
T
2026-08-13 18:33:10 +02:00

94 lines
2.0 KiB
C++
Executable File

#pragma once
// **************************************************************************
//
// (C) Copyright 2009 Swiss SIMTEC AG
//
// **************************************************************************
//
// $HeadURL$
// $LastChangedBy$
// $LastChangedDate$
// $LastChangedRevision$
//
// **************************************************************************
#include <GBL_Global/Types.hpp>
#include <GBL_Types/Coord3.hpp>
#include "GeoPairingImplAirTarget.hpp"
#include <vector>
namespace N_GeoPairingImpl
{
/**
* This class can be used to verify if a AirTarget is within a certain line of
* sight.
*
* @author Daniel.Schmid
* @version 1.0
* @created 22-Dez-2011 09:36:21
*/
class GeoPairingImplAirTargetTracker
{
public:
virtual ~GeoPairingImplAirTargetTracker() = default;
/**
* Constructor
*
* @param a_listTargets
*/
explicit GeoPairingImplAirTargetTracker(std::vector<GeoPairingImplAirTarget *> *a_listTargets);
/**
* sets the current position of the tracker
*
* @param a_positionLat latidude in degrees
* @param a_positionLon longitude in degrees
* @param a_positionAlt altitude in meters
*/
void setPosition(Float64 a_positionLat, Float64 a_positionLon, Float64 a_positionAlt);
/**
* track a air target
*
* @param a_azimuth azimuth in degrees
* @param a_elevation elevation in degrees
* @param a_playerId
* @param a_impactTime
*/
bool track(Float64 a_azimuth, Float64 a_elevation, int &a_playerId, UInt64 &a_impactTime);
/**
* calculates the probability of a target beeing hit according to given conditions
*
* @param a_targetId
* @param a_modeAuto
* @param a_changeOverPoint
*/
bool hitCheck(SInt32 a_targetId, bool a_modeAuto, bool a_changeOverPoint);
/**
* sets the time of the tracking moment
*
* @param a_time
*/
void setTime(UInt64 a_time);
protected:
std::vector<GeoPairingImplAirTarget *> *m_List;
N_Types::Coord3 m_Position;
UInt64 m_Time = 0;
private:
NGL::INGLLogger &m_logger;
};
}