2#ifndef LIBSBX_PHYSICS_MESH_COLLIDER_HPP_
3#define LIBSBX_PHYSICS_MESH_COLLIDER_HPP_
10#include <assimp/Importer.hpp>
11#include <assimp/scene.h>
12#include <assimp/postprocess.h>
14#include <libsbx/math/vector3.hpp>
15#include <libsbx/math/volume.hpp>
16#include <libsbx/math/quaternion.hpp>
18#include <libsbx/physics/shape_collider.hpp>
20namespace sbx::physics {
34 mesh_collider(std::vector<math::vector3> vertices, std::vector<std::uint32_t> indices);
36 auto triangle_count() const noexcept -> std::uint32_t;
38 auto get_triangle(std::uint32_t triangle_index) const ->
triangle;
40 auto query_bvh(const math::volume& volume) const -> std::vector<std::uint32_t>;
44 auto _build_bvh() ->
void;
46 auto _build_bvh_recursive(std::uint32_t node_index, std::uint32_t triangle_begin, std::uint32_t triangle_count) ->
void;
48 auto _triangle_centroid(std::uint32_t triangle_index) const -> math::vector3;
50 auto _triangle_volume(std::uint32_t triangle_index) const -> math::volume;
52 std::vector<math::vector3> _vertices;
53 std::vector<std::uint32_t> _indices;
56 std::vector<std::uint32_t> _triangle_indices;
Definition: volume.hpp:14
Definition: mesh_collider.hpp:22
Definition: mesh_collider.hpp:26
Definition: shape_collider.hpp:36