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

Function SizeFaceEdge

editor/roomkeypaddialog.cpp:756–809  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

754}
755
756void SizeFaceEdge(room *rp, int facenum, int edge, float scale_factor) {
757 vector line_center;
758 vector vec;
759 int portal_list[MAX_VERTS_PER_ROOM];
760 int face_list[MAX_FACES_PER_ROOM];
761 int i, t, ok_to_scale;
762 int num_portal_verts;
763 int facecount = 0;
764 face *fp = &rp->faces[facenum];
765 int nextedge, vert, nextvert;
766
767 nextedge = (edge + 1) % fp->num_verts;
768 vert = fp->face_verts[edge];
769 nextvert = fp->face_verts[nextedge];
770
771 ASSERT(rp->used > 0);
772
773 num_portal_verts = BuildListOfPortalVerts(rp, portal_list);
774
775 line_center = ((rp->verts[nextvert] - rp->verts[vert]) / 2) + rp->verts[vert];
776
777 for (ok_to_scale = 1, t = 0; t < num_portal_verts; t++)
778 if (portal_list[t] == vert)
779 ok_to_scale = 0;
780
781 if (ok_to_scale) {
782 vec = rp->verts[vert] - line_center;
783 vec *= scale_factor;
784 rp->verts[vert] = vec + line_center;
785 }
786
787 for (ok_to_scale = 1, t = 0; t < num_portal_verts; t++)
788 if (portal_list[t] == nextvert)
789 ok_to_scale = 0;
790
791 if (ok_to_scale) {
792 vec = rp->verts[nextvert] - line_center;
793 vec *= scale_factor;
794 rp->verts[nextvert] = vec + line_center;
795 }
796
797 // Build a list of faces that share vertices with this edge
798 for (i = 0; i < rp->num_faces; i++) {
799 for (t = 0; t < rp->faces[i].num_verts; t++) {
800 if (rp->faces[i].face_verts[t] == vert || rp->faces[i].face_verts[t] == nextvert) {
801 face_list[facecount] = i;
802 facecount++;
803 }
804 }
805 }
806
807 // Now fixup any concave/nonplanar faces
808 FixConcaveFaces(rp, face_list, facecount);
809}
810
811// moves a face of a room by a delta amount
812void MoveRoomFace(room *rp, int facenum, float dx, float dy, float dz) {

Callers 2

OnRoompadExpandEdgeMethod · 0.85
OnRoompadContractEdgeMethod · 0.85

Calls 2

BuildListOfPortalVertsFunction · 0.85
FixConcaveFacesFunction · 0.85

Tested by

no test coverage detected