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

Method forEachCollisionBlock

source/game/StarWorldClient.cpp:275–289  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

273}
274
275void WorldClient::forEachCollisionBlock(RectI const& region, function<void(CollisionBlock const&)> const& iterator) const {
276 if (!inWorld())
277 return;
278
279 const_cast<WorldClient*>(this)->freshenCollision(region);
280 m_tileArray->tileEach(region, [iterator](Vec2I const& pos, ClientTile const& tile) {
281 if (tile.getCollision() == CollisionKind::Null) {
282 iterator(CollisionBlock::nullBlock(pos));
283 } else {
284 starAssert(!tile.collisionCacheDirty);
285 for (auto const& block : tile.collisionCache)
286 iterator(block);
287 }
288 });
289}
290
291bool WorldClient::isTileConnectable(Vec2I const& pos, TileLayer layer, bool tilesOnly) const {
292 if (!inWorld())

Callers 3

queryCollisionsMethod · 0.45
resolvePolyCollisionMethod · 0.45

Calls 4

tileEachMethod · 0.80
getCollisionMethod · 0.60
iteratorClass · 0.50
freshenCollisionMethod · 0.45

Tested by

no test coverage detected