Commit 1c5bc6aa authored by Libor Moravčík's avatar Libor Moravčík
Browse files

should_collide methods now take two separated colliders instead of CollidersPair

parent a6fc1247
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ struct CollisionMatrix final : public com::File

	// Querying
	bool should_collide(std::size_t layer_a, std::size_t layer_b) const;
	bool should_collide(CollidersPair const &pair) const;
	bool should_collide(Collider const * a, Collider const * b) const;
	void print(std::ostream &out = std::cout, std::size_t n = LayerSystem::NUMBER_OF_LAYERS);

      protected:
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ struct LayerSystem final : com::System
	void disable_all_collisions(std::size_t layer, com::Folder const *world = nullptr);

	bool should_collide(std::size_t layer_a, std::size_t layer_b, com::Folder const *world = nullptr) const;
	bool should_collide(CollidersPair const & pair) const;
	bool should_collide(Collider const * a, Collider const * b) const;


      protected:
+2 −2
Original line number Diff line number Diff line
@@ -74,9 +74,9 @@ bool CollisionMatrix::should_collide(std::size_t layer_a,
	return get_matrix_element(layer_a, layer_b);
}

bool CollisionMatrix::should_collide(CollidersPair const &pair) const
bool CollisionMatrix::should_collide(Collider const * a, Collider const * b) const
{
	return should_collide(pair.collider_a()->collision_layer(), pair.collider_b()->collision_layer());
	return should_collide(a->collision_layer(), b->collision_layer());
}

// Protected methods
+1 −1
Original line number Diff line number Diff line
@@ -134,7 +134,7 @@ bool CollisionSystem::detect_collisions(com::Folder *world, bool clear_cache,

	auto filtered =
	    collisions | std::views::filter([](const CollidersPair &pair)
					    { return collision_matrix()->should_collide(pair); });
					    { return collision_matrix()->should_collide(pair.first, pair.second); });

	// Clear the collisions file
	auto collisions_file = world->find<CollisionsFile>(CollisionsFile::self_file_name());
+4 −4
Original line number Diff line number Diff line
@@ -65,11 +65,11 @@ bool LayerSystem::should_collide(std::size_t layer_a, std::size_t layer_b, com::
	return collision_matrix(world)->should_collide(layer_a, layer_b);
}

bool LayerSystem::should_collide(CollidersPair const & pair) const
bool LayerSystem::should_collide(Collider const * a, Collider const * b) const
{
	com::Folder *world = pair.collider_a()->body_root()->folder();
	ASSUMPTION(world == pair.collider_b()->body_root()->folder());
	return collision_matrix(world)->should_collide(pair);
	com::Folder *world = a->body_root()->folder();
	ASSUMPTION(world == b->body_root()->folder());
	return collision_matrix(world)->should_collide(a, b);
}

CollisionMatrix* LayerSystem::collision_matrix(com::Folder const *world) const