#pragma once #include "gfx/renderable.h" #include "railVehicleClass.h" #include #include #include #include #include #include class SceneShader; class Ray; class Train; class RailVehicle : public Renderable, Selectable { public: explicit RailVehicle(RailVehicleClassPtr rvc) : rvClass {std::move(rvc)} { } void move(const Train *, float & trailBy); void render(const SceneShader & shader) const override; [[nodiscard]] bool intersectRay(const Ray &, glm::vec2 *, float *) const override; Location location; RailVehicleClassPtr rvClass; std::array bogies; }; using RailVehiclePtr = std::unique_ptr;