diff options
Diffstat (limited to 'src/entityGrouping.c')
-rw-r--r-- | src/entityGrouping.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/entityGrouping.c b/src/entityGrouping.c new file mode 100644 index 0000000..1fa8a81 --- /dev/null +++ b/src/entityGrouping.c @@ -0,0 +1,37 @@ +#include "entityGrouping.h" +#include "entitiesInclude.h" +#include "game.h" +#include "world.h" + +void addEntityGroupToWorld(Game * game, EntityId id, int groupSize, Vector3 position, Vector3 spacing) { + int i; + WorldEntry entries[groupSize]; + + for (i = 0; i < groupSize; ++i) + entries[i] = (WorldEntry){ + id, + Vector3Add(position, Vector3Multiply((Vector3){i, i, i}, spacing)), + QuaternionIdentity() + }; + + addEntriesToWorld( + &game->world, + game, + entries, + sizeof(entries) / sizeof(WorldEntry) + ); +} + +void addSoldatoGroupWithLeader(Game * game, EntityId leader, int groupSize, Vector3 position, Vector3 spacing) { + // Add leader. + addEntryToWorld(&game->world, game, (WorldEntry){leader, position, QuaternionIdentity()}); + + // Add soldato + addEntityGroupToWorld( + game, + ENTITY_SOLDATO, + groupSize, + Vector3Add(position, spacing), + spacing + ); +} |