Add state to easyrender objects

This commit is contained in:
Carlos Sanchez 2024-09-05 01:28:35 -04:00
parent ef1df7d160
commit df78b26686
2 changed files with 15 additions and 13 deletions

@ -1 +1 @@
Subproject commit b4e784495638c02367be81c84453994e2aae8692
Subproject commit 689d9b750cbb221aa3bbdb844beba333ec045a01

26
maze.c
View File

@ -31,7 +31,7 @@
#define FARCLIP 100.0
#define LIGHTANG -MPI / 4.0
#define AVGWEIGHT 0.85
// Try 0.5 and 6 or something
// Try 0.5 and 3.5 or something
#define DITHERSTART 10000
#define DITHEREND 10000
@ -241,7 +241,8 @@ void maze_generate(uint8_t *maze, int size, struct vec2i *start,
void create_painting(struct vec2i mazepos, uint8_t dir,
haloo3d_easyinstancer *ins, mecs *ecs, ecs_world *world) {
// Create the painting render instance, set up the ecs instance, etc.
haloo3d_obj_instance *painting = haloo3d_easyinstantiate(ins, PAINTINGNAME);
haloo3d_obj_instance *painting =
haloo3d_easyinstantiate(ins, PAINTINGNAME, H3D_EASYOBJSTATE_NOTRANS);
ecs_eid id = mecs_newentity(ecs, 0);
ECS_SETCOMPONENT(ecs, id, ecs_syncgrow){.obj = painting,
.scale = &world->scaleto,
@ -276,7 +277,8 @@ void kill_flippoly(haloo3d_obj_instance *obj) { free(obj->lighting); }
void create_flippoly(struct vec2i mazepos, haloo3d_easyinstancer *ins,
mecs *ecs, ecs_world *world) {
// Create the render instance, set up the ecs instance, etc.
haloo3d_obj_instance *poly = haloo3d_easyinstantiate(ins, POLYNAMES[0]);
haloo3d_obj_instance *poly =
haloo3d_easyinstantiate(ins, POLYNAMES[0], H3D_EASYOBJSTATE_NOTRANS);
vec3(poly->scale.v, 0.15, world->scaleto, 0.15);
vec3(poly->pos.v, (mazepos.x + 0.5) * world->state->cellsize, 0.35,
(mazepos.y + 0.5) * world->state->cellsize);
@ -1037,16 +1039,16 @@ int main() { // int argc, char **argv) {
vec3(light.v, 0, -MCOS(LIGHTANG), MSIN(LIGHTANG));
// WARN: the order you draw these things can matter greatly!
haloo3d_obj_instance *walli =
haloo3d_easyrender_addinstance(&render, wallo, wallt);
haloo3d_obj_instance *floori =
haloo3d_easyrender_addinstance(&render, planeo, floort);
haloo3d_obj_instance *ceili =
haloo3d_easyrender_addinstance(&render, planeo, ceilt);
haloo3d_obj_instance *walli = haloo3d_easyrender_addinstance(
&render, wallo, wallt, H3D_EASYOBJSTATE_NOTRANS);
haloo3d_obj_instance *floori = haloo3d_easyrender_addinstance(
&render, planeo, floort, H3D_EASYOBJSTATE_NOTRANS);
haloo3d_obj_instance *ceili = haloo3d_easyrender_addinstance(
&render, planeo, ceilt, H3D_EASYOBJSTATE_NOTRANS);
haloo3d_obj_instance *starti =
haloo3d_easyrender_addinstance(&render, starto, startt);
haloo3d_easyrender_addinstance(&render, starto, startt, 0);
haloo3d_obj_instance *endi =
haloo3d_easyrender_addinstance(&render, endo, endt);
haloo3d_easyrender_addinstance(&render, endo, endt, 0);
init_mazeinstances(floori, ceili, walli);
init_billboard(starti, 1.0);
init_billboard(endi, 0.25);
@ -1144,7 +1146,7 @@ int main() { // int argc, char **argv) {
for (int i = 0; i < NUMMICE; i++) {
haloo3d_obj_instance *mousei =
haloo3d_easyrender_addinstance(&render, mouseo, mouset);
haloo3d_easyrender_addinstance(&render, mouseo, mouset, 0);
init_billboard(mousei, MOUSESCALE);
// Mouse should be near the floor
mousei->pos.y = MOUSESCALE;