MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / SetupObjectLightmapMemory

Function SetupObjectLightmapMemory

Descent3/object_lighting.cpp:516–568  ·  view source on GitHub ↗

Sets up the memory to be used by an object for lightmaps

Source from the content-addressed store, hash-verified

514
515// Sets up the memory to be used by an object for lightmaps
516void 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"

Callers 3

ReadObjectFunction · 0.85

Calls 1

IsNonRenderableSubmodelFunction · 0.85

Tested by

no test coverage detected