diff options
Diffstat (limited to 'game/vehicles/railloco.h')
-rw-r--r-- | game/vehicles/railloco.h | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/game/vehicles/railloco.h b/game/vehicles/railloco.h index f08de05..88f9503 100644 --- a/game/vehicles/railloco.h +++ b/game/vehicles/railloco.h @@ -5,26 +5,33 @@ #include <array> #include <location.hpp> #include <memory> +#include <utility> #include <vector> class Shader; - class Texture; -class RailVehicle : public Vehicle { -public: - struct Bogie { - Location location; - MeshPtr mesh; - }; - using Vehicle::Vehicle; - void render(const Shader & shader) const override; - - std::array<Bogie, 2> bogies; +class RailVehicleClass { +public: + void render(const Shader &, const Location &, const std::array<Location, 2> &) const; + std::array<MeshPtr, 2> bogies; MeshPtr bodyMesh; std::shared_ptr<Texture> texture; float wheelBase; float length; +}; +using RailVehicleClassPtr = std::shared_ptr<RailVehicleClass>; + +class RailVehicle : public Vehicle { +public: + explicit RailVehicle(RailVehicleClassPtr rvc, const LinkPtr & link, float linkDist = 0) : + Vehicle {link, linkDist}, rvClass {std::move(rvc)} + { + } + void render(const Shader & shader) const override; + + RailVehicleClassPtr rvClass; + std::array<Location, 2> bogies; friend class RailLoco; }; |