summaryrefslogtreecommitdiffstats
path: root/src/core/aabb.hh
blob: fe070605ba23249e5efec6d40b3829181973a4bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef CORE_AABB_HH
#define CORE_AABB_HH 1
#pragma once

#include "core/macros.hh"

class AABB final {
public:
    DECLARE_DEFAULT_CONSTRUCTOR(AABB);
    explicit AABB(const glm::fvec3& min, const glm::fvec3& max);
    virtual ~AABB(void) = default;

    void set_bounds(const glm::fvec3& min, const glm::fvec3& max);
    void set_offset(const glm::fvec3& base, const glm::fvec3& size);

    const glm::fvec3& get_min(void) const;
    const glm::fvec3& get_max(void) const;

    bool contains(const glm::fvec3& point) const;
    bool intersect(const AABB& other_box) const;

    AABB combine_with(const AABB& other_box) const;
    AABB multiply_with(const AABB& other_box) const;
    AABB push(const glm::fvec3& vector) const;

public:
    glm::fvec3 min;
    glm::fvec3 max;
};

#endif /* CORE_AABB_HH */