Yume Project 3.0
Touhou-inspired Danmaku game made in C only
Chargement...
Recherche...
Aucune correspondance
Référence du fichier component.h

Macros nécessaire à la création de nouvelles composantes de l'ECS. Plus de détails...

#include "ecs.h"
#include <stdint.h>
#include <string.h>

Aller au code source de ce fichier.

Macros

#define DEFINE_COMPONENT_MANAGER(Type, Number)
 Créé un composant dans l'ECS.
#define DECLARE_GETTER(Component, type, champ)
#define DECLARE_SETTER(Component, type, champ)
#define DECLARE_SETTER_GETTER(Component, type, champ)

Description détaillée

Macros nécessaire à la création de nouvelles composantes de l'ECS.

Documentation des macros

◆ DECLARE_GETTER

#define DECLARE_GETTER ( Component,
type,
champ )
Valeur :
static inline type Component##_get_##champ(Component *p) { return p->champ; }

◆ DECLARE_SETTER

#define DECLARE_SETTER ( Component,
type,
champ )
Valeur :
static inline void Component##_set_##champ(Component *p, type champ) { \
p->champ = champ; \
}

◆ DECLARE_SETTER_GETTER

#define DECLARE_SETTER_GETTER ( Component,
type,
champ )
Valeur :
DECLARE_SETTER(Component, type, champ) \
DECLARE_GETTER(Component, type, champ)
#define DECLARE_SETTER(Component, type, champ)
Definition component.h:115

◆ DEFINE_COMPONENT_MANAGER

#define DEFINE_COMPONENT_MANAGER ( Type,
Number )

Créé un composant dans l'ECS.

Paramètres
Type: Le nom de la composante à créer
Number: Doit être égal à MAX_ENTITIES (sauf si la composante est très lourde)

Ce composant est une structure contenant:

  • tableau "dense" : contenant toutes les instances du composant défini
  • tableau "sparse" : renvoie l'ID d'un élément dans le tableau sparse à partir de l'ID d'un élément dans le tableau dense (en pratique on le l'utilise pas directement, privilégier get)
  • tableau "entity_lookup" : renvoie l'ID d'un élément dans le tableau dense à partir de l'ID d'un élément dans le tableau
    (c'est une Entity.)
  • count : Le nombre d'éléments actuels du composant

Ce composant dispose de 4 fonctions: Type##_init(Type##Manager *mgr): s'utilise dans la fonction d'initialisation d'un gamestate Params: mgr : le manager de la composante

Type##_add(Type##Manager *mgr, Entity e, Type data): append une nouvelle instance du composant à "dense". Params: mgr : le manager de la composante e : l'ID de l'instance à ajouter data : Une instance de la composante, elle est mise dans dense Ne doit PAS être déclaré dynamiquement

Type##_get(Type##Manager *mgr, Entity e): return la valeur de la composante pour un ID Params: mgr : le manager de la composante e : l'ID de l'instance dont on cherche la valeur de la composante Type

static inline void Type##_remove(Type##Manager *mgr, Entity e) détruit une instance de la composante Params: mgr : le manager de la composante e : l'ID de l'instance à détruire

static inline Entity Type##_get_entity(Type##Manager *mgr, int dense_id) Renvoie l'entité correspondante a la donnée considérée Params: mgr : le manager de la composante dense_id : l'emplacement dans le tableau dense de la donnée