Capycore Engine  0.1.0
A simple and lightweight game engine written in C++ based on the Unity API architecture.
Loading...
Searching...
No Matches
collider_2d.h
Go to the documentation of this file.
1#pragma once
2
11
12#include <functional>
13#include <vector>
14
15constexpr float default_friction_2d = 0.5f;
16constexpr float default_bounciness_2d = 0.5f;
17
31class Collider2D : public Renderable {
32 public:
35 Point offset = {0.0f, 0.0f});
36 ~Collider2D() override = default;
37
38 void update(float dt) override;
39
48 const std::function<void(Collider2D&, Collider2D&)>& action);
49 void remove_on_trigger_enter(int index);
50
59 const std::function<void(Collider2D&, Collider2D&)>& action);
60 void remove_on_trigger_exit(int index);
69 const std::function<void(Collider2D&, Collider2D&)>& action);
71
80 const std::function<void(Collider2D&, Collider2D&)>& action);
81 void remove_on_collision_exit(int index);
82
90 BodyDistance2D distance(Collider2D& other, bool use_fixture = false);
91
100 ColliderRayResult raycast(const Point& direction, float max_distance);
101
102 [[nodiscard]] std::reference_wrapper<Rigidbody2D> get_rigidbody();
103
104 [[nodiscard]] float friction() const noexcept;
105 virtual Collider2D& friction(float value) noexcept;
106
107 [[nodiscard]] float bounciness() const noexcept;
108 virtual Collider2D& bounciness(float value) noexcept;
109
112
113 [[nodiscard]] virtual Point offset() const noexcept;
114 virtual Collider2D& offset(Point value) noexcept;
115
116 std::string type_name() const override;
117
118 protected:
123
124 private:
125 std::vector<std::function<void(Collider2D&, Collider2D&)>>
126 on_trigger_enter_actions_;
127 std::vector<std::function<void(Collider2D&, Collider2D&)>>
128 on_trigger_exit_actions_;
129 std::vector<std::function<void(Collider2D&, Collider2D&)>>
130 on_collision_enter_actions_;
131 std::vector<std::function<void(Collider2D&, Collider2D&)>>
132 on_collision_exit_actions_;
133};
A 2D collider base that defines the shape and physical properties of a GameObject for collision detec...
Definition collider_2d.h:31
std::reference_wrapper< Rigidbody2D > get_rigidbody()
void remove_on_trigger_enter(int index)
size_t add_on_collision_enter(const std::function< void(Collider2D &, Collider2D &)> &action)
void remove_on_trigger_exit(int index)
float friction() const noexcept
PhysicsCreationFlags & creation_flags() noexcept
BodyDistance2D distance(Collider2D &other, bool use_fixture=false)
Calculate the distance to another collider.
float friction_
Definition collider_2d.h:120
void remove_on_collision_exit(int index)
virtual Point offset() const noexcept
void on_collision_enter(Collider2D &other)
Called when another collider exits this collider's trigger area.
std::string type_name() const override
Provides a consistent type name for the component.
size_t add_on_trigger_exit(const std::function< void(Collider2D &, Collider2D &)> &action)
void update(float dt) override
size_t add_on_collision_exit(const std::function< void(Collider2D &, Collider2D &)> &action)
size_t add_on_trigger_enter(const std::function< void(Collider2D &, Collider2D &)> &action)
float bounciness() const noexcept
ColliderRayResult raycast(const Point &direction, float max_distance)
Perform a raycast from this collider in a specified direction.
void on_trigger_enter(Collider2D &other)
Called when another collider enters this collider's trigger area.
PhysicsCreationFlags creation_flags_
Definition collider_2d.h:119
Point offset_
Definition collider_2d.h:122
void on_collision_exit(Collider2D &other)
Called when another collider exits this collider's trigger area.
float bounciness_
Definition collider_2d.h:121
Collider2D(float friction=default_friction_2d, float bounciness=default_bounciness_2d, Point offset={0.0f, 0.0f})
~Collider2D() override=default
void on_trigger_exit(Collider2D &other)
Called when another collider exits this collider's trigger area.
void remove_on_collision_enter(int index)
Represents a point in 2D space.
Definition point.h:6
Base class for renderable components in the engine.
Definition renderable.h:16
constexpr float default_friction_2d
Definition collider_2d.h:15
constexpr float default_bounciness_2d
Definition collider_2d.h:16
Structure representing the distance information between two colliders.
Definition body_distance_2d.h:11
Structure representing the result of a raycast in the physics world.
Definition collider_ray_result.h:13
Flags for creating physics bodies.
Definition physics_creation_flags.h:14