1 #include <bz/gfx/particle_drawing.h>
3 #include <bz/fx/particle_simulation_internal.h>
4 #include <bz/gfx/gfx.h>
6 //static void drawBasicParticle(size_t particleCount, float ticks, float spawnTick[], float lifetimes[], float positionX[], float positionY[], float sizes[], float colors[], float alpha[]);
8 void bzGfxDrawParticles(BZParticleSimulationID simulation, BZDrawQueueID drawQueue) {
11 for (size_t i = 0; i < simulation->maxParticles; ++i) {
12 float particleStartTicks = simulation->spawnTime[i];
13 float lifetime = simulation->lifetime[i];
14 if (particleStartTicks + lifetime >= simulation->time) {
15 if (simulation->alpha[i] < 0.25f) {
17 } else if (simulation->alpha[i] < 0.50f) {
18 bzFillP(23130);//bzFillP(23130);
19 } else if (simulation->alpha[i] < 0.75f) {
20 bzFillP(32125);//bzFillP(32125);
22 bzFillP(32735);//bzFillP(0xFF); // FIXME
25 bzSetPaletteColor(0, 0, simulation->color[i]);
26 //bzSetGlobalBlendColor(simulation->color[i]);
28 bzMatrixSRT(&m, simulation->positionX[i], simulation->positionY[i], simulation->angle[i], simulation->size[i], simulation->size[i]);
29 bzSetGlobalViewMatrix(&m);
30 //bzMatrixTRS(&m, 0, 0, simulation->angle[i], simulation->size[i], simulation->size[i]);
31 //bzSetGlobalLocalMatrix(&m);
33 if (drawQueue != NULL) {
34 bzGfxDrawQueueRun(drawQueue);
36 bzCircFill(0, 0, 1, 0);
43 bzSetGlobalViewMatrix(&m);
44 //bzSetGlobalLocalMatrix(&m);
45 bzSetPaletteColor(0, 0, 0);
46 //bzSetGlobalBlendColor(0xFF);
49 //void bzGfxDrawParticles(BZParticleSimulationID simulation) {
52 // FIXME, allow registering draw lists for particles
54 // BZParticleSimulationDrawFunction drawFunction = drawBasicParticle; // FIXME, allow register others
55 // drawFunction(simulation->maxParticles, simulation->time, simulation->spawnTime, simulation->lifetime, simulation->positionX, simulation->positionY, simulation->size, simulation->color, simulation->alpha);
58 /*static void drawBasicParticle(size_t particleCount, float time, float spawnTime[], float lifetimes[], float positionX[], float positionY[], float sizes[], float colors[], float alpha[]) {
59 for (size_t i = 0; i < particleCount; ++i) {
60 float particleStartTicks = spawnTime[i];
61 float lifetime = lifetimes[i];
62 if (particleStartTicks + lifetime >= time) {
63 if (alpha[i] < 0.25f) {
65 } else if (alpha[i] < 0.50f) {
66 bzFillP(23130);//bzFillP(23130);
67 } else if (alpha[i] < 0.75f) {
68 bzFillP(32125);//bzFillP(32125);
70 bzFillP(32735);//bzFillP(0xFF); // FIXME
73 bzGfxDrawQueueRun(BZDrawQueueID drawQueue);
74 //bzCircFill(positionX[i], positionY[i], sizes[i], colors[i]);
80 //nil,32800.99988,▒,░,32735.99988