51 static constexpr double RADIUS = 5000.0;
61 enum class SectorKind : uint32_t {
72 uint8_t cellSize[2] = {1, 1};
74 float rarityAirless = 0;
77 SectorKind buildingKind = SectorKind::None;
83 struct CityRadiusDef {
84 double population = 0.0;
87 float randomSize = 0.0;
91 struct CityFlavourType {
92 std::string flavourName;
93 std::vector<CityRadiusDef> sizeDefs;
94 std::vector<BuildingType> buildingTypes;
102 void SetGridOccupancy(uint32_t x, uint32_t y,
const uint8_t size[2]);
103 bool TestGridOccupancy(uint32_t x, uint32_t y,
const uint8_t size[2]);
108 inline bool TestGridQuick(uint32_t x, uint32_t y)
const
111 return m_gridBitset[y * m_gridPitch + x / 8] & (1 << (x & 7));
114 void AddStaticGeomsToCollisionSpace();
115 void RemoveStaticGeomsFromCollisionSpace();
117 struct BuildingInstance {
129 double m_cityDensity;
135 std::vector<BuildingInstance> m_buildings;
136 std::vector<BuildingInstance> m_enabledBuildings;
137 std::vector<Uint32> m_buildingCounts;
140 std::unique_ptr<uint8_t[]> m_gridBitset;
142 uint32_t m_gridPitch;
150 CityFlavourType *m_cityType;
156 static std::vector<CityFlavourType> s_cityFlavours;
158 static std::unique_ptr<Graphics::Material> s_debugMat;
161 static void LoadBuildingType(std::string_view key,
const Json &buildingDef, BuildingType &out);
162 static void GetModelSize(
const Aabb &aabb, uint8_t size[2]);
nlohmann::json Json
Definition Json.h:8
Definition CityOnPlanet.h:36
static void Init()
Definition CityOnPlanet.cpp:229
static constexpr double RADIUS
Definition CityOnPlanet.h:51
static constexpr uint32_t CELLMAX
Definition CityOnPlanet.h:55
static void Uninit()
Definition CityOnPlanet.cpp:262
static constexpr uint32_t CELLSIZE
Definition CityOnPlanet.h:53
float GetClipRadius() const
Definition CityOnPlanet.h:44
static constexpr uint32_t CELLMASK
Definition CityOnPlanet.h:56
virtual ~CityOnPlanet()
Definition CityOnPlanet.cpp:295
static void SetCityModelPatterns(const SystemPath &path)
Definition CityOnPlanet.cpp:272
void Render(Graphics::Renderer *r, const Graphics::Frustum &camera, const SpaceStation *station, const vector3d &viewCoords, const matrix4x4d &viewTransform)
Definition CityOnPlanet.cpp:641
Planet * GetPlanet() const
Definition CityOnPlanet.h:43
Definition FileSystem.h:77
Definition Animation.h:19
Definition SpaceStation.h:30
Definition SystemBody.h:19
Definition SystemPath.h:13
Definition CityOnPlanet.h:27
Definition Background.h:14
Definition CityOnPlanet.h:31