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

2D physical object node. More...

#include <phys_obj.h>

Inheritance diagram for PhysicsObject2D:
Node2D RigidBody2D

Public Member Functions

 PhysicsObject2D ()
 
void ready () override=0
 
void process (double delta_time) override=0
 
void draw (Renderer *renderer) override=0
 
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 ()
 
virtual void input (const InputManager *input)
 
virtual void draw_inspector ()
 
virtual void draw_hierarchy ()
 
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

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
 

Protected Attributes

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 physical object node.

Version
1.2.0

Constructor & Destructor Documentation

◆ PhysicsObject2D()

PhysicsObject2D::PhysicsObject2D ( )

◆ ~PhysicsObject2D()

PhysicsObject2D::~PhysicsObject2D ( )
override

Member Function Documentation

◆ add_collision_layer()

void PhysicsObject2D::add_collision_layer ( uint8_t  target_layer)

◆ draw()

void PhysicsObject2D::draw ( Renderer renderer)
overridepure virtual

Reimplemented from Node2D.

Implemented in RigidBody2D.

◆ get_collision_layer()

uint8_t PhysicsObject2D::get_collision_layer ( ) const

◆ get_collision_mask()

uint16_t PhysicsObject2D::get_collision_mask ( ) const

◆ on_body_entered()

void PhysicsObject2D::on_body_entered ( const std::function< void(Node2D *)> &  callback)

◆ on_body_exited()

void PhysicsObject2D::on_body_exited ( const std::function< void(Node2D *)> &  callback)

◆ process()

void PhysicsObject2D::process ( double  delta_time)
overridepure virtual

Reimplemented from Node2D.

Implemented in RigidBody2D.

◆ ready()

void PhysicsObject2D::ready ( )
overridepure virtual

Reimplemented from Node2D.

Implemented in RigidBody2D.

◆ remove_collision_layer()

void PhysicsObject2D::remove_collision_layer ( uint8_t  target_layer)

◆ set_collision_layers()

void PhysicsObject2D::set_collision_layers ( const std::initializer_list< uint8_t > &  layers)

◆ set_collision_mask()

void PhysicsObject2D::set_collision_mask ( uint8_t  mask)

◆ set_layer()

void PhysicsObject2D::set_layer ( uint8_t  new_layer)

Member Data Documentation

◆ body_id

b2BodyId PhysicsObject2D::body_id = b2_nullBodyId

◆ collision_shape

std::unique_ptr<CollisionShape> PhysicsObject2D::collision_shape

◆ color

glm::vec4 PhysicsObject2D::color = glm::vec4(1, 0, 0, 0.5f)
protected

◆ is_disabled

bool PhysicsObject2D::is_disabled = false
protected

◆ on_enter_callbacks

std::vector<std::function<void(Node2D*)> > PhysicsObject2D::on_enter_callbacks

◆ on_exit_callbacks

std::vector<std::function<void(Node2D*)> > PhysicsObject2D::on_exit_callbacks

◆ overlapping

std::unordered_set<PhysicsObject2D*> PhysicsObject2D::overlapping

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