Fix flocking bug

This commit is contained in:
2026-05-26 20:24:34 -05:00
parent 109318aeaf
commit 7c4b8c307f
10 changed files with 76 additions and 25 deletions
+15 -5
View File
@@ -8,13 +8,13 @@
#pragma once
#include "entitybase.h"
#define X(enumName, type, field, init, dispose) \
#define X(enumName, type, field, init, dispose, render) \
// do nothing
#include "componentlist.h"
#undef X
typedef union {
#define X(enumName, type, field, init, dispose) type field;
#define X(enumName, type, field, init, dispose, render) type field;
#include "componentlist.h"
#undef X
} componentdata_t;
@@ -24,12 +24,13 @@ typedef struct {
const char_t *name;
void (*init)(const entityid_t, const componentid_t);
void (*dispose)(const entityid_t, const componentid_t);
errorret_t (*render)(const entityid_t, const componentid_t);
} componentdefinition_t;
typedef enum {
COMPONENT_TYPE_NULL,
#define X(enumName, type, field, init, dispose) \
#define X(enumName, type, field, init, dispose, render) \
COMPONENT_TYPE_##enumName,
#include "componentlist.h"
#undef X
@@ -100,11 +101,20 @@ entityid_t componentGetEntitiesWithComponent(
/**
* Disposes of a component for the entity with component ID.
*
*
* @param entityId The entity ID.
* @param componentId The component ID.
*/
void componentDispose(
const entityid_t entityId,
const componentid_t componentId
);
);
/**
* Calls the render callback on every active component that defines one.
* Iterates all active entities and all their component slots. No-op for
* components whose definition has render == NULL.
*
* @return Error state.
*/
errorret_t componentRenderAll(void);