Moves linear algebra headers to a new subdirectory to improve project structure.
Updates includes to reflect the directory change.
Adds vcpkg to the tracked repositories.
Creates the main omath header file that includes all
omath library components. This provides a single point
of inclusion for the entire library, simplifying usage
and dependency management.
Also, adjusts the return types for projectile prediction
functions within the legacy engine to explicitly use
the `Vector3` type for consistency and clarity.
Introduces a concept `PredEngineConcept` to ensure that classes used as projectile prediction engine traits conform to a specific interface.
This enforces the presence and return types of required methods and ensures that these methods are `noexcept`, improving type safety and predictability.
Moves camera and prediction engine implementations into traits for each engine,
decoupling the engine-specific logic from the core classes, promoting code reuse
and maintainability. This change allows for easier addition of new engines and
customization of existing ones.
Implements engine-specific traits for projectile and target position prediction.
Each trait encapsulates logic tailored to a specific game engine (IW, OpenGL, Unity),
accounting for engine-specific coordinate systems and calculations.
This allows for accurate projectile prediction across different game environments.
Moves target prediction logic into engine traits, improving modularity.
This change consolidates target position prediction within the engine traits,
allowing for a more flexible and maintainable design.
This eliminates redundant code and simplifies the core prediction engine by
delegating target movement calculations to the appropriate trait.
Implements a direct pitch angle calculation for scenarios with zero gravity, ensuring accurate projectile trajectory predictions in such conditions.
Also marks several methods as noexcept for better performance and exception safety.
Migrates projectile prediction logic to leverage engine traits for improved flexibility and testability.
This change decouples core prediction algorithms from specific engine implementations, allowing for easier adaptation to different game engines or simulation environments.
Refactors the projectile prediction engine by introducing an interface
and making the legacy implementation more flexible.
The legacy engine is updated to allow for coordinate system customization
through virtual methods, enabling usage in different game environments.
Also introduces vcpkg support for easier dependency management and adds boost-asio as a dependency.
Adds a comment documenting the formula used for calculating the projectile launch pitch angle.
The comment includes a link to the Stack Overflow discussion where the formula was found and the LaTeX representation of the formula for clarity.