Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
Référence du fichier pool.h
#include "background.h"
#include "bullet.h"
#include "collision_circle.h"
#include "collision_rectangle.h"
#include "common.h"
#include "life.h"
#include "physics.h"
#include "sprite.h"
#include "ecs/ecs.h"
#include "player.h"
#include "straight_laser.h"
#include "looseLaser.h"
#include "enemy.h"
#include "flags.h"

Aller au code source de ce fichier.

Classes

struct  Pool
 La pool est la structure qui contient l'Entity Component System Elle gêre les différentes composantes grâce à ses champs de type "manager" et assure la création d'Identifiants cohérents pour les nouvelles entités grâce au tableau "free_indices". Enfin, les entités à détruire son ajouté à sa kill_queue, qui est vidée à la fin de chaque frame. Plus de détails...

Définitions de type

typedef struct Pool Pool
 La pool est la structure qui contient l'Entity Component System Elle gêre les différentes composantes grâce à ses champs de type "manager" et assure la création d'Identifiants cohérents pour les nouvelles entités grâce au tableau "free_indices". Enfin, les entités à détruire son ajouté à sa kill_queue, qui est vidée à la fin de chaque frame.

Fonctions

void pool_init (Pool *p)
 Initialise la pool (ECS) et tous les managers de composants.
Entity pool_create_entity (Pool *p)
 Crée une nouvelle entité et retourne son identifiant.
void pool_kill_convicts (Pool *p)
 Détruit toutes les entités présentes dans la kill_queue.
void pool_kill_entity (Pool *p, Entity e)
 Marque une entité pour destruction en fin de frame.
BoxedEntity entity_box (Pool *p, Entity ent)
 Encapsule une Entity dans un BoxedEntity contenant son UID.
Entity entity_unbox (Pool *p, BoxedEntity box)
 Récupère l'Id d'une entité à partir d'un BoxedEntity si toujours valide.

Documentation des définitions de type

◆ Pool

typedef struct Pool Pool

La pool est la structure qui contient l'Entity Component System Elle gêre les différentes composantes grâce à ses champs de type "manager" et assure la création d'Identifiants cohérents pour les nouvelles entités grâce au tableau "free_indices". Enfin, les entités à détruire son ajouté à sa kill_queue, qui est vidée à la fin de chaque frame.

Documentation des fonctions

◆ entity_box()

BoxedEntity entity_box ( Pool * p,
Entity ent )
extern

Encapsule une Entity dans un BoxedEntity contenant son UID.

Utilisé pour transporter une référence sûre à une entité

Paramètres
ppool courante
entEntité à encapsuler.
Renvoie
BoxedEntity Boîte contenant l'entité et son unique_id, ou une boîte nulle si invalide.

◆ entity_unbox()

Entity entity_unbox ( Pool * p,
BoxedEntity box )
extern

Récupère l'Id d'une entité à partir d'un BoxedEntity si toujours valide.

Paramètres
ppool courante
boxBoîte contenant l'entité à extraire.
Renvoie
Entity L'Id de l'entité si valide, sinon NULL_INDEX.

◆ pool_create_entity()

Entity pool_create_entity ( Pool * p)
extern

Crée une nouvelle entité et retourne son identifiant.

Récupère un identifiant libre depuis free_indices et enregistre un Uid unique

Paramètres
ppool dans laquelle créé l'entité.
Renvoie
l'Identifiant de la nouvelle entité ou NULL_INDEX si erreur.

◆ pool_init()

void pool_init ( Pool * p)
extern

Initialise la pool (ECS) et tous les managers de composants.

Initialise chaque ComponentManager présent dans la pool et prépare la pile free_indices contenant les identifiants libres.

Paramètres
ppool à initialiser

◆ pool_kill_convicts()

void pool_kill_convicts ( Pool * p)
extern

Détruit toutes les entités présentes dans la kill_queue.

Parcourt kill_queue, retire chaque entité de tous les managers (components) et remet son identifiant dans la pile free_indices. Doit être appelé en fin de frame.

Paramètres
ppool courante

◆ pool_kill_entity()

void pool_kill_entity ( Pool * p,
Entity e )
extern

Marque une entité pour destruction en fin de frame.

L'entité est ajoutée à kill_queue et sera effectivement détruite par pool_kill_convicts lors du traitement en fin de frame. Si l'entité est déjà dans la file, la fonction ne fait rien.

Paramètres
ppool courante
eIdentifiant de l'entité à détruire.