fekalnigtacko/src/assets/vehiclemdl.hpp
2026-04-12 22:17:43 +02:00

47 lines
939 B
C++

#pragma once
#include "model.hpp"
#include "utils/transform.hpp"
namespace assets
{
enum VehicleWheelType
{
WHEEL_RIGHT = 1,
WHEEL_REAR = 2,
WHEEL_FL = 0,
WHEEL_FR = WHEEL_RIGHT,
WHEEL_RL = WHEEL_REAR,
WHEEL_RR = WHEEL_REAR | WHEEL_RIGHT,
};
struct VehicleWheel
{
VehicleWheelType type = WHEEL_FL;
std::shared_ptr<const Model> model;
glm::vec3 position;
float radius;
};
class VehicleModel
{
public:
VehicleModel() = default;
static std::shared_ptr<const VehicleModel> LoadFromFile(const std::string& filename);
const std::shared_ptr<const Model>& GetModel() const { return basemodel_; }
const std::vector<VehicleWheel>& GetWheels() const { return wheels_; }
const Transform* GetLocation(const std::string& name) const;
private:
std::shared_ptr<const Model> basemodel_;
std::vector<VehicleWheel> wheels_;
std::map<std::string, Transform> locations_;
};
}