aboutsummaryrefslogtreecommitdiff
path: root/sprite_system.c
blob: 99360fce247ea6695ed2a47898022a069d4cd980 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "asset.h"
#include "components.h"
#include "render.h"
#include "world.h"

void sprite_system(const World* world) {
	int i;
	unsigned bits;
	const CSprite* sprite;
	const CPosition* pos;
	const Bitmap* b;

	for (i = 0; i < world->entity_count; i++) {
		bits = world->bitmask[i];
		if ((bits & ctype_position) && (bits & ctype_sprite)) {
			pos = &world->positions[i];
			sprite = &world->sprites[i];

			b = get_bitmap(sprite->id);
			render_bitmap(b, pos->x, pos->y, &sprite->rect);
		}
	}
}