MCPcopy Create free account
hub / github.com/OpenStarbound/OpenStarbound / updateParameters

Method updateParameters

source/game/StarCelestialDatabase.cpp:341–373  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

339}
340
341void CelestialMasterDatabase::updateParameters(CelestialCoordinate const& coordinate, CelestialParameters const& parameters) {
342 RecursiveMutexLocker locker(m_mutex);
343
344 if (!coordinateValid(coordinate))
345 throw CelestialException("CelestialMasterDatabase::updateParameters called on invalid coordinate");
346
347 auto chunkIndex = chunkIndexFor(coordinate);
348 auto chunk = getChunk(chunkIndex);
349
350 bool updated = false;
351 if (coordinate.isSatelliteBody()) {
352 chunk.systemObjects.get(coordinate.location())
353 .get(coordinate.parent().orbitNumber())
354 .satelliteParameters.set(coordinate.orbitNumber(), parameters);
355 updated = true;
356 } else if (coordinate.isPlanetaryBody()) {
357 chunk.systemObjects.get(coordinate.location()).get(coordinate.orbitNumber()).planetParameters = parameters;
358 updated = true;
359 }
360
361 if (updated && m_database.isOpen()) {
362 auto versioningDatabase = Root::singleton().versioningDatabase();
363 auto versionedChunk = versioningDatabase->makeCurrentVersionedJson("CelestialChunk", chunk.toJson());
364 m_database.insert(DataStreamBuffer::serialize(chunkIndex), compressData(DataStreamBuffer::serialize<VersionedJson>(versionedChunk)));
365
366 m_chunkCache.remove(chunkIndex);
367 } else {
368 updated = false;
369 }
370
371 if (!updated)
372 throw CelestialException("CelestialMasterDatabase::updateParameters failed; coordinate is not a valid planet or satellite, or celestial database was not open for writing");
373}
374
375Maybe<CelestialOrbitRegion> CelestialMasterDatabase::orbitRegion(
376 List<CelestialOrbitRegion> const& orbitRegions, int planetaryOrbitNumber) {

Callers 1

updatePlanetTypeMethod · 0.45

Calls 15

singletonClass · 0.85
compressDataFunction · 0.85
isSatelliteBodyMethod · 0.80
orbitNumberMethod · 0.80
isPlanetaryBodyMethod · 0.80
versioningDatabaseMethod · 0.80
setMethod · 0.45
getMethod · 0.45
locationMethod · 0.45
parentMethod · 0.45
isOpenMethod · 0.45

Tested by

no test coverage detected