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);
}
else if (command == "loc")
{
std::string loc_name;
iss >> loc_name;
Transform& trans = veh->locations_[loc_name];
ParseTransform(iss, trans);
}
});
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::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_;
};

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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