18#include <unordered_map>
57 void add(std::unique_ptr<
radar::Platform> plat) noexcept;
64 void add(std::unique_ptr<
radar::Transmitter> trans) noexcept;
71 void add(std::unique_ptr<
radar::Receiver> recv) noexcept;
78 void add(std::unique_ptr<
radar::Target> target) noexcept;
133 [[nodiscard]] const std::vector<std::unique_ptr<
radar::Platform>>&
getPlatforms() const noexcept
143 [[nodiscard]]
const std::vector<std::unique_ptr<radar::Target>>&
getTargets() const noexcept
153 [[nodiscard]]
const std::vector<std::unique_ptr<radar::Receiver>>&
getReceivers() const noexcept
163 [[nodiscard]]
const std::vector<std::unique_ptr<radar::Transmitter>>&
getTransmitters() const noexcept
165 return _transmitters;
172 [[nodiscard]]
const std::unordered_map<std::string, std::unique_ptr<fers_signal::RadarSignal>>&
182 [[nodiscard]]
const std::unordered_map<std::string, std::unique_ptr<antenna::Antenna>>&
192 [[nodiscard]]
const std::unordered_map<std::string, std::unique_ptr<timing::PrototypeTiming>>&
201 void clear() noexcept;
231 std::vector<std::unique_ptr<radar::Platform>> _platforms;
233 std::vector<std::unique_ptr<radar::Transmitter>> _transmitters;
235 std::vector<std::unique_ptr<radar::Receiver>> _receivers;
237 std::vector<std::unique_ptr<radar::Target>> _targets;
239 std::unordered_map<std::string, std::unique_ptr<fers_signal::RadarSignal>> _waveforms;
241 std::unordered_map<std::string, std::unique_ptr<antenna::Antenna>> _antennas;
243 std::unordered_map<std::string, std::unique_ptr<timing::PrototypeTiming>> _timings;
245 std::priority_queue<Event, std::vector<Event>,
EventComparator> _event_queue;
Header file defining various types of antennas and their gain patterns.
The World class manages the simulator environment.
void scheduleInitialEvents()
Populates the event queue with the initial events for the simulation.
timing::PrototypeTiming * findTiming(const std::string &name)
Finds a timing source by name.
void add(std::unique_ptr< radar::Platform > plat) noexcept
Adds a radar platform to the simulation world.
antenna::Antenna * findAntenna(const std::string &name)
Finds an antenna by name.
~World() noexcept=default
const std::vector< std::unique_ptr< radar::Target > > & getTargets() const noexcept
Retrieves the list of radar targets.
const std::unordered_map< std::string, std::unique_ptr< fers_signal::RadarSignal > > & getWaveforms() const noexcept
Retrieves the map of radar signals (waveforms).
fers_signal::RadarSignal * findWaveform(const std::string &name)
Finds a radar signal by name.
void clear() noexcept
Clears all objects and assets from the simulation world.
SimulationState & getSimulationState() noexcept
Gets a mutable reference to the global simulation state.
const std::vector< std::unique_ptr< radar::Platform > > & getPlatforms() const noexcept
Retrieves the list of platforms.
std::string dumpEventQueue() const
Dumps the current state of the event queue to a string for debugging.
std::priority_queue< Event, std::vector< Event >, EventComparator > & getEventQueue() noexcept
Gets a mutable reference to the global event queue.
const std::vector< std::unique_ptr< radar::Transmitter > > & getTransmitters() const noexcept
Retrieves the list of radar transmitters.
const std::unordered_map< std::string, std::unique_ptr< timing::PrototypeTiming > > & getTimings() const noexcept
Retrieves the map of timing prototypes.
const std::vector< std::unique_ptr< radar::Receiver > > & getReceivers() const noexcept
Retrieves the list of radar receivers.
const std::unordered_map< std::string, std::unique_ptr< antenna::Antenna > > & getAntennas() const noexcept
Retrieves the map of antennas.
Header file for the PrototypeTiming class.
Classes for handling radar waveforms and signals.
Radar Receiver class for managing signal reception and response handling.
Defines the core structures for the event-driven simulation engine.
Defines the global state for the event-driven simulation engine.
A custom comparator for the event priority queue.
Represents a single event in the simulation's time-ordered queue.
Holds the dynamic global state of the simulation.
Defines classes for radar targets and their Radar Cross-Section (RCS) models.
Header file for the Transmitter class in the radar namespace.