Program Listing for File broadphaseuniformgridnocaching.hpp

Return to documentation for file (/home/runner/work/Legion-Engine/Legion-Engine/legion/engine/physics/broadphasecollisionalgorithms/broadphaseuniformgridnocaching.hpp)

#pragma once
#include <physics/broadphasecollisionalgorithms/broadphasecollisionalgorithm.hpp>
#include <physics/physics_statics.hpp>

namespace legion::physics
{
    class BroadphaseUniformGridNoCaching : public BroadPhaseCollisionAlgorithm
    {
    public:
        BroadphaseUniformGridNoCaching(math::ivec3 cellSize) : m_cellSize(cellSize)
        {
        }

        const std::vector<std::vector<physics_manifold_precursor>>& collectPairs(
            std::vector<physics_manifold_precursor>&& manifoldPrecursors) override;

        void setCellSize(math::ivec3 cellSize)
        {
            m_cellSize = cellSize;
        }

    private:
        math::ivec3 m_cellSize;

        math::ivec3 calculateCellIndex(const math::vec3 point);

        std::vector<std::vector<physics_manifold_precursor>> manifoldPrecursorGrouping;
    };
}