#pragma once // ************************************************************************** // // (C) Copyright 2009 Swiss SIMTEC AG // // ************************************************************************** // // $HeadURL$ // $LastChangedBy$ // $LastChangedDate$ // $LastChangedRevision$ // // ************************************************************************** #include #include #include "GeoPairingImplAirTarget.hpp" #include 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 *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 *m_List; N_Types::Coord3 m_Position; UInt64 m_Time = 0; private: NGL::INGLLogger &m_logger; }; }