Ember
A C++ 20 'game engine' built with SDL3 with wide platform support.
Public Member Functions | Public Attributes | List of all members
RigidBody2D Class Referencefinal

2D rigid body with physics properties. More...

#include <rigidbody_node.h>

Inheritance diagram for RigidBody2D:
PhysicsObject2D Node2D

Public Member Functions

void ready () override
 
void process (double delta_time) override
 
void draw (Renderer *renderer) override
 
void apply_impulse (const glm::vec2 &impulse) const
 
void apply_force (const glm::vec2 &force) const
 
void set_velocity (const glm::vec2 &velocity) const
 
glm::vec2 get_velocity () const
 
bool is_on_ground () const
 
void input (const InputManager *input) override
 
void draw_inspector () override
 
void draw_hierarchy () override
 
 ~RigidBody2D () override
 
- Public Member Functions inherited from PhysicsObject2D
 PhysicsObject2D ()
 
void set_layer (uint8_t new_layer)
 
void set_collision_mask (uint8_t mask)
 
void add_collision_layer (uint8_t target_layer)
 
void remove_collision_layer (uint8_t target_layer)
 
void set_collision_layers (const std::initializer_list< uint8_t > &layers)
 
uint8_t get_collision_layer () const
 
uint16_t get_collision_mask () const
 
 ~PhysicsObject2D () override
 
void on_body_entered (const std::function< void(Node2D *)> &callback)
 
void on_body_exited (const std::function< void(Node2D *)> &callback)
 
- Public Member Functions inherited from Node2D
 Node2D ()
 
 Node2D (std::string name)
 
void set_z_index (int index)
 
int get_z_index () const
 
int get_effective_z_index () const
 
void print_tree (int indent=0) const
 
void change_visibility (bool visible)
 
void translate (float dx, float dy)
 
void rotate (float radians)
 
void scale (float sx, float sy)
 
Transform2D get_global_transform () const
 
Transform2D get_transform () const
 
void set_transform (const Transform2D &transform)
 
void add_child (const std::string &base_name, Node2D *node)
 
Node2Dget_node (const std::string &path)
 
template<typename T >
T * get_node ()
 
void queue_free ()
 
virtual ~Node2D ()
 
const std::string & get_name () const
 
bool is_visible () const
 
bool is_effective_visible () const
 
HashMap< std::string, Node2D * > & get_tree ()
 
bool is_alive () const
 

Public Attributes

float friction = 0.3f
 
float density = 1.0f
 
float restitution = 0.0f
 
bool is_sensor = false
 
bool is_fixed_rotation = false
 
- Public Attributes inherited from PhysicsObject2D
std::unordered_set< PhysicsObject2D * > overlapping
 
std::vector< std::function< void(Node2D *)> > on_enter_callbacks
 
std::vector< std::function< void(Node2D *)> > on_exit_callbacks
 
b2BodyId body_id = b2_nullBodyId
 
std::unique_ptr< CollisionShapecollision_shape
 

Additional Inherited Members

- Protected Attributes inherited from PhysicsObject2D
bool is_disabled = false
 
glm::vec4 color = glm::vec4(1, 0, 0, 0.5f)
 
- Protected Attributes inherited from Node2D
Transform2D _transform = {}
 
std::string _name = "Node"
 
int _z_index = 0
 
bool _is_visible = true
 
bool _is_ready = false
 
bool _to_free = false
 

Detailed Description

2D rigid body with physics properties.

Version
1.2.0

Constructor & Destructor Documentation

◆ ~RigidBody2D()

RigidBody2D::~RigidBody2D ( )
override

Member Function Documentation

◆ apply_force()

void RigidBody2D::apply_force ( const glm::vec2 &  force) const

◆ apply_impulse()

void RigidBody2D::apply_impulse ( const glm::vec2 &  impulse) const

◆ draw()

void RigidBody2D::draw ( Renderer renderer)
overridevirtual

Implements PhysicsObject2D.

◆ draw_hierarchy()

void RigidBody2D::draw_hierarchy ( )
overridevirtual

Reimplemented from Node2D.

◆ draw_inspector()

void RigidBody2D::draw_inspector ( )
overridevirtual

Reimplemented from Node2D.

◆ get_velocity()

glm::vec2 RigidBody2D::get_velocity ( ) const

◆ input()

void RigidBody2D::input ( const InputManager input)
overridevirtual

Reimplemented from Node2D.

◆ is_on_ground()

bool RigidBody2D::is_on_ground ( ) const

◆ process()

void RigidBody2D::process ( double  delta_time)
overridevirtual

Implements PhysicsObject2D.

◆ ready()

void RigidBody2D::ready ( )
overridevirtual

Implements PhysicsObject2D.

◆ set_velocity()

void RigidBody2D::set_velocity ( const glm::vec2 &  velocity) const

Member Data Documentation

◆ density

float RigidBody2D::density = 1.0f

◆ friction

float RigidBody2D::friction = 0.3f

◆ is_fixed_rotation

bool RigidBody2D::is_fixed_rotation = false

◆ is_sensor

bool RigidBody2D::is_sensor = false

◆ restitution

float RigidBody2D::restitution = 0.0f

The documentation for this class was generated from the following files: