Sets up the memory to be used by an object for lightmaps
| 514 | |
| 515 | // Sets up the memory to be used by an object for lightmaps |
| 516 | void SetupObjectLightmapMemory(object *obj) { |
| 517 | int Mnum, Fnum; |
| 518 | lightmap_object_face *lof; |
| 519 | |
| 520 | ASSERT(obj->lm_object.used == 0); |
| 521 | obj->lm_object.used = 1; |
| 522 | |
| 523 | poly_model *pm = &Poly_models[obj->rtype.pobj_info.model_num]; |
| 524 | ASSERT(pm->new_style); |
| 525 | |
| 526 | obj->lm_object.num_models = pm->n_models; |
| 527 | |
| 528 | ASSERT(pm->n_models < MAX_SUBOBJECTS); |
| 529 | int uv2size = 0; |
| 530 | |
| 531 | mprintf(1, "SETUP %d %s", obj->handle, obj->name); |
| 532 | for (Mnum = 0; Mnum < pm->n_models; Mnum++) { |
| 533 | if (IsNonRenderableSubmodel(pm, Mnum)) { |
| 534 | obj->lm_object.num_faces[Mnum] = 0; |
| 535 | obj->lm_object.lightmap_faces[Mnum] = NULL; |
| 536 | continue; |
| 537 | } |
| 538 | |
| 539 | obj->lm_object.num_faces[Mnum] = pm->submodel[Mnum].num_faces; |
| 540 | obj->lm_object.lightmap_faces[Mnum] = |
| 541 | (lightmap_object_face *)mem_malloc(obj->lm_object.num_faces[Mnum] * sizeof(lightmap_object_face)); |
| 542 | ASSERT(obj->lm_object.lightmap_faces[Mnum]); |
| 543 | |
| 544 | for (Fnum = 0; Fnum < pm->submodel[Mnum].num_faces; Fnum++) { |
| 545 | lof = &obj->lm_object.lightmap_faces[Mnum][Fnum]; |
| 546 | |
| 547 | lof->num_verts = pm->submodel[Mnum].faces[Fnum].nverts; |
| 548 | lof->lmi_handle = BAD_LMI_INDEX; |
| 549 | |
| 550 | uv2size += lof->num_verts; |
| 551 | } |
| 552 | } |
| 553 | if (uv2size) { |
| 554 | float *uvblock = (float *)mem_malloc(2 * uv2size * sizeof(float)); |
| 555 | mprintf(1, " %X %d\n", uvblock, uv2size); |
| 556 | |
| 557 | for (Mnum = 0; Mnum < pm->n_models; Mnum++) { |
| 558 | if (!IsNonRenderableSubmodel(pm, Mnum)) { |
| 559 | for (Fnum = 0; Fnum < pm->submodel[Mnum].num_faces; Fnum++) { |
| 560 | obj->lm_object.lightmap_faces[Mnum][Fnum].u2 = uvblock; |
| 561 | uvblock += pm->submodel[Mnum].faces[Fnum].nverts; |
| 562 | obj->lm_object.lightmap_faces[Mnum][Fnum].v2 = uvblock; |
| 563 | uvblock += pm->submodel[Mnum].faces[Fnum].nverts; |
| 564 | } |
| 565 | } |
| 566 | } |
| 567 | } |
| 568 | } |
| 569 | |
| 570 | // SHOULDN'T THE FOLLOWING TWO FUNCTIONS REALLY BE IN OBJECT.CPP? |
| 571 | #include "hlsoundlib.h" |
no test coverage detected