aboutsummaryrefslogtreecommitdiff
path: root/src/entityGrouping.c
blob: 1fa8a813e738382234f3b98db02a8a74856aed07 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
    );
}