Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
rigidbody_node.h
Go to the documentation of this file.
1 #pragma once
2 #include "phys_obj.h"
3 
4 
5 
6 
17 class RigidBody2D final : public PhysicsObject2D {
18 public:
19 
20  float friction = 0.3f;
21  float density = 1.0f;
22  float restitution = 0.0f;
23 
24  bool is_sensor = false;
25  bool is_fixed_rotation = false;
26 
27  void ready() override;
28  void process(double delta_time) override;
29  void draw(Renderer* renderer) override;
30 
31  void apply_impulse(const glm::vec2& impulse) const;
32  void apply_force(const glm::vec2& force) const;
33 
34  void set_velocity(const glm::vec2& velocity) const;
35  [[nodiscard]] glm::vec2 get_velocity() const;
36  [[nodiscard]] bool is_on_ground() const;
37 
38  void input(const InputManager* input) override;
39  void draw_inspector() override;
40  void draw_hierarchy() override;
41 
42  ~RigidBody2D() override;
43 
44 
45 private:
46  void update_body();
47  uint8_t layer = 0; // < (0-15)
48  uint16_t collision_mask = 0xFFFF; // 16 bits for layers
49 };
Definition: input_manager.h:117
2D physical object node.
Definition: phys_obj.h:14
Base class for all renderers.
Definition: ember_core.h:109
2D rigid body with physics properties.
Definition: rigidbody_node.h:17
void apply_force(const glm::vec2 &force) const
Definition: rigidbody_node.cpp:281
float friction
Definition: rigidbody_node.h:20
glm::vec2 get_velocity() const
Definition: rigidbody_node.cpp:295
~RigidBody2D() override
Definition: rigidbody_node.cpp:222
void draw_inspector() override
Definition: rigidbody_node.cpp:10
void set_velocity(const glm::vec2 &velocity) const
Definition: rigidbody_node.cpp:288
bool is_fixed_rotation
Definition: rigidbody_node.h:25
bool is_on_ground() const
Definition: rigidbody_node.cpp:303
float restitution
Definition: rigidbody_node.h:22
void draw_hierarchy() override
Definition: rigidbody_node.cpp:111
void apply_impulse(const glm::vec2 &impulse) const
Definition: rigidbody_node.cpp:274
void ready() override
Definition: rigidbody_node.cpp:116
void draw(Renderer *renderer) override
Definition: rigidbody_node.cpp:194
void input(const InputManager *input) override
Definition: rigidbody_node.cpp:6
bool is_sensor
Definition: rigidbody_node.h:24
float density
Definition: rigidbody_node.h:21
void process(double delta_time) override
Definition: rigidbody_node.cpp:180