Vehicle seats & Remake openworld logic

This commit is contained in:
tovjemam 2026-02-15 17:30:11 +01:00
parent bbf2788627
commit 26bb9b802f
6 changed files with 472 additions and 521 deletions

View File

@ -39,7 +39,23 @@ std::shared_ptr<const assets::VehicleModel> assets::VehicleModel::LoadFromFile(c
veh->wheels_.emplace_back(wheel); veh->wheels_.emplace_back(wheel);
} }
else if (command == "loc")
{
std::string loc_name;
iss >> loc_name;
Transform& trans = veh->locations_[loc_name];
ParseTransform(iss, trans);
}
}); });
return veh; return veh;
} }
const Transform* assets::VehicleModel::GetLocation(const std::string& name) const
{
auto it = locations_.find(name);
if (it != locations_.end())
return &it->second;
return nullptr;
}

View File

@ -34,10 +34,12 @@ public:
const std::shared_ptr<const Model>& GetModel() const { return basemodel_; } const std::shared_ptr<const Model>& GetModel() const { return basemodel_; }
const std::vector<VehicleWheel>& GetWheels() const { return wheels_; } const std::vector<VehicleWheel>& GetWheels() const { return wheels_; }
const Transform* GetLocation(const std::string& name) const;
private: private:
std::shared_ptr<const Model> basemodel_; std::shared_ptr<const Model> basemodel_;
std::vector<VehicleWheel> wheels_; std::vector<VehicleWheel> wheels_;
std::map<std::string, Transform> locations_;
}; };

File diff suppressed because it is too large Load Diff

View File

@ -7,6 +7,9 @@
namespace game namespace game
{ {
class PlayerCharacter;
class NpcCharacter;
class OpenWorld : public World class OpenWorld : public World
{ {
public: public:
@ -20,20 +23,14 @@ public:
virtual void PlayerLeft(Player& player) override; virtual void PlayerLeft(Player& player) override;
private: private:
void SpawnVehicle(Player& player); void CreatePlayerCharacter(Player& player);
void RemoveVehicle(Player& player); void RemovePlayerCharacter(Player& player);
Character& SpawnRandomCharacter();
void SpawnCharacter(Player& player);
void RemoveCharacter(Player& player);
void SpawnBot(); void SpawnBot();
private: private:
std::map<Player*, Vehicle*> player_vehicles_; std::map<Player*, PlayerCharacter*> player_characters_;
std::map<Player*, Character*> player_characters_; std::vector<NpcCharacter*> npcs_;
std::vector<Vehicle*> bots_;
}; };
} }

View File

@ -51,6 +51,8 @@ public:
void SetSteering(bool analog, float value = 0.0f); void SetSteering(bool analog, float value = 0.0f);
const std::shared_ptr<const assets::VehicleModel>& GetModel() const { return model_; }
virtual ~Vehicle(); virtual ~Vehicle();
private: private:

View File

@ -40,15 +40,13 @@ public:
Entity* GetEntity(net::EntNum entnum); Entity* GetEntity(net::EntNum entnum);
const assets::Map& GetMap() const { return *map_; }
const std::string& GetMapName() const { return mapname_; } const std::string& GetMapName() const { return mapname_; }
const std::map<net::EntNum, std::unique_ptr<Entity>>& GetEntities() const { return ents_; } const std::map<net::EntNum, std::unique_ptr<Entity>>& GetEntities() const { return ents_; }
const int64_t& GetTime() const { return time_ms_; } const int64_t& GetTime() const { return time_ms_; }
virtual ~World() = default; virtual ~World() = default;
protected:
const assets::Map& GetMap() const { return *map_; }
private: private:
std::shared_ptr<const assets::Map> map_; std::shared_ptr<const assets::Map> map_;
std::string mapname_; std::string mapname_;