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

Function DrawRoomVisPnts

Descent3/renderobject.cpp:861–918  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

859
860#define VIS_TABLE_RESOLUTION 6
861void DrawRoomVisPnts(object *obj) {
862 int roomnum = obj->roomnum;
863 if ((!ROOMNUM_OUTSIDE(roomnum)) && (roomnum != -1) && (Rooms[roomnum].used)) {
864 room *rp = &Rooms[roomnum];
865 int t;
866 int j;
867 for (t = 0; t < rp->num_portals; t++) {
868 face *src_fp = &rp->faces[rp->portals[t].portal_face];
869 float src_width, src_height;
870 vector src_upper_left, src_center;
871 matrix src_matrix;
872 vector src_verts[MAX_VERTS_PER_FACE], *src_vertp[MAX_VERTS_PER_FACE];
873 for (j = 0; j < src_fp->num_verts; j++) {
874 src_verts[j] = rp->verts[src_fp->face_verts[j]];
875 src_vertp[j] = &src_verts[j];
876 }
877 vector fvec = -src_fp->normal;
878 vm_VectorToMatrix(&src_matrix, &fvec, NULL, NULL);
879 ComputeDebugVisFaceUpperLeft(rp, src_fp, &src_upper_left, &src_width, &src_height, &src_center);
880
881 if (src_width > VIS_TABLE_RESOLUTION) {
882 float num = src_width / VIS_TABLE_RESOLUTION;
883 src_width = VIS_TABLE_RESOLUTION;
884 src_upper_left += (src_matrix.rvec * (num / 2));
885 src_matrix.rvec *= num;
886 }
887 if (src_height > VIS_TABLE_RESOLUTION) {
888 float num = src_height / VIS_TABLE_RESOLUTION;
889 src_height = VIS_TABLE_RESOLUTION;
890 src_upper_left -= (src_matrix.uvec * (num / 2));
891 src_matrix.uvec *= num;
892 }
893 vector src_vector, src_ybase;
894 src_ybase = src_upper_left;
895 for (int sy = 0; sy < src_height; sy++, src_ybase -= src_matrix.uvec) {
896 src_vector = src_ybase;
897 for (int sx = 0; sx < src_width; sx++, src_vector += src_matrix.rvec) {
898 vector src2 = src_vector;
899 // vector subvec=src_center-src_vector;
900 // float mag=vm_GetMagnitudeFast (&subvec);
901 // subvec/=(mag*4);
902 // src2+=subvec;
903 if ((check_point_to_face(&src2, &src_fp->normal, src_fp->num_verts, src_vertp))) {
904 DrawColoredDisk(&src2, 1.0f, 0.0f, 0.0f, .1f, .7f, 0.25f, 1);
905 continue;
906 }
907
908 src2 += 0.1f * rp->faces[rp->portals[t].portal_face].normal;
909 if (!fvi_QuickRoomCheck(&src2, rp, false) && !fvi_QuickRoomCheck(&src2, rp, true)) {
910 DrawColoredDisk(&src2, 0.0f, 1.0f, 0.0f, .1f, .7f, 0.25f, 1);
911 continue;
912 }
913 DrawColoredDisk(&src2, 0.0f, 0.0f, 1.0f, .1f, .7f, 0.25f, 1);
914 }
915 }
916 }
917 }
918}

Callers 1

GameRenderWorldFunction · 0.85

Calls 5

check_point_to_faceFunction · 0.85
DrawColoredDiskFunction · 0.85
fvi_QuickRoomCheckFunction · 0.85
vm_VectorToMatrixFunction · 0.50

Tested by

no test coverage detected