Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <flecs.h>
- #include <tigr.h>
- typedef struct Position {
- float x;
- float y;
- } Position;
- typedef struct RenderData {
- Tigr *src_buffer;
- Tigr *dest_buffer;
- } RenderData;
- typedef int32_t Speed;
- // Move system
- void Move(ecs_rows_t *rows) {
- ECS_COLUMN(rows, Position, p, 1);
- ECS_COLUMN(rows, Speed, s, 2);
- for (int i = 0; i < rows->count; i ++) {
- p[i].x += s[i] * rows->delta_time;
- p[i].y += s[i] * rows->delta_time;
- }
- }
- void Render(ecs_rows_t *rows) {
- ECS_COLUMN(rows, RenderData, r, 1);
- ECS_COLUMN(rows, Position, p, 2);
- for (int i = 0; i < rows->count; i ++) {
- tigrBlit(r[i].dest_buffer, r[i].src_buffer, p[i].x, p[i].y, 0, 0, 512, 512);
- tigrPrint(r[i].dest_buffer, tfont, 10, 20 + 10 * i, tigrRGB(0xff, 0xff, 0xff), "Entity %i: %f,%f", i, p[i].x, p[i].y);
- }
- }
- int main(int argc, char *argv[]) {
- Tigr *screen = tigrWindow(1024, 576, "Tony", TIGR_AUTO);
- Tigr *tiger = tigrLoadImage("assets/images/tiger.png");
- ecs_world_t* world = ecs_init_w_args(argc, argv);
- ECS_COMPONENT(world, Position);
- ECS_COMPONENT(world, Speed);
- ECS_COMPONENT(world, RenderData);
- //ECS_SYSTEM(world, Move, EcsOnUpdate, Position, Speed);
- ECS_SYSTEM(world, Render, EcsOnUpdate, RenderData, Position);
- ECS_ENTITY(world, MyEntity, Position, RenderData);
- ecs_set(world, MyEntity, Position, {256, 50});
- ecs_set(world, MyEntity, RenderData, {tiger, screen});
- ecs_set_target_fps(world, 60);
- while (!tigrClosed(screen))
- {
- tigrClear(screen, tigrRGB(0x80, 0x90, 0xa0));
- ecs_progress(world, 0);
- tigrPrint(screen, tfont, 10, 10, tigrRGB(0xff, 0xff, 0xff), "FT: %.6f", tigrTime());
- tigrUpdate(screen);
- }
- tigrFree(tiger);
- tigrFree(screen);
- return ecs_fini(world);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement