#pragma once #include "gfx/gl/bufferedLocation.h" #include "railVehicleClass.h" #include #include #include #include template class Ray; class Train; class RailVehicle : Selectable, RailVehicleClass::Instance { public: explicit RailVehicle(RailVehicleClassPtr rvc); void move(const Train *, float & trailBy); [[nodiscard]] bool intersectRay(const Ray &, BaryPosition &, RelativeDistance &) const override; RailVehicleClassPtr rvClass; using LV = RailVehicleClass::LocationVertex; BufferedLocationUpdater location; std::array bogies; }; using RailVehiclePtr = std::unique_ptr;