Skip to content

Instantly share code, notes, and snippets.

void Surface::listFriendlyEntities(const MapPosition& position,
ForceID forceID,
double maxDistance,
std::vector<EntityWithOwner*>& result,
bool onlyUnits)
{
BoundingBox searchingBox(-maxDistance, -maxDistance, maxDistance, maxDistance);
searchingBox += position;
ChunkPosition leftTop(TilePosition(searchingBox.leftTop));
ChunkPosition rightBottom(TilePosition(searchingBox.rightBottom));
TEST(SpiderSetupPositionDoesNotGenerateChunks)
{
TestScenario scenario;
const size_t chunksTotalBefore = scenario.getMap().chunksTotal;
ScopedSetter guard(CorePrototypes::defaultTile, TileID("out-of-map").getPrototype());
for (bool simulation : { true, false })
{
auto spider = scenario.constructEntity("spidertron", MapPosition(5000, 5000), IsSimulation::fromBool(simulation));
@Rseding91
Rseding91 / AsteroidSpawning.cpp
Created March 19, 2025 09:28
How asteroids spawn
void SpacePlatform::spawnAsteroids()
{
const bool randomOrientation = this->speed < 0.2;
if (SpaceLocationID locationID = this->position.getCurrentLocation())
for (auto& spawnDefinition : locationID->asteroidSpawnDefinitions)
this->trySpawnAsteroid(spawnDefinition.asteroid, spawnDefinition.chunk, spawnDefinition, randomOrientation);
else
{
const PointOnSpaceConnection& pointOnConnection = this->position.getPointOnConnection();
for (auto& spawnDefinition : pointOnConnection.connection->asteroidSpawnDefinitions)
@Rseding91
Rseding91 / SpacePlatform.cpp
Created October 20, 2025 20:54
2.0 Asteroid chunk update loop
void SpacePlatform::updateAsteroidChunks()
{
if (this->asteroidChunks.empty())
return;
const SimpleBoundingBox asteroidSpawningArea = this->getAsteroidSpawningArea();
const double left = asteroidSpawningArea.leftTop.x.getDouble();
const double top = asteroidSpawningArea.leftTop.y.getDouble();
const double right = asteroidSpawningArea.rightBottom.x.getDouble();
const double bottom = asteroidSpawningArea.rightBottom.y.getDouble();