| version 1.1 | | version 1.2 |
|---|
| | |
| * u,v coordinate computation for segment faces | | * u,v coordinate computation for segment faces |
| * | | * |
| * $Log$ | | * $Log$ |
| * Revision 1.1 1999/06/14 22:04:31 donut | | * Revision 1.2 2003/03/09 06:34:09 donut |
| * Initial revision | | * change byte typedef to sbyte to avoid conflict with win32 byte which is unsigned |
| | | * |
| | | * Revision 1.1.1.1 1999/06/14 22:04:31 donut |
| | | * Import of d1x 1.37 source. |
| * | | * |
| * Revision 2.1 1995/05/08 10:49:34 mike | | * Revision 2.1 1995/05/08 10:49:34 mike |
| * fix lighting bug: oblong segments could be very dark. | | * fix lighting bug: oblong segments could be very dark. |
| | |
| for (sidenum=0; sidenum < MAX_SIDES_PER_SEGMENT; sidenum++) { | | for (sidenum=0; sidenum < MAX_SIDES_PER_SEGMENT; sidenum++) { |
| if (!IS_CHILD(segp->children[sidenum])) { | | if (!IS_CHILD(segp->children[sidenum])) { |
| side *sidep = &segp->sides[sidenum]; | | side *sidep = &segp->sides[sidenum]; |
| byte *vp = Side_to_verts[sidenum]; | | sbyte *vp = Side_to_verts[sidenum]; |
| int v; | | int v; |
| | | |
| for (v=0; v<4; v++) | | for (v=0; v<4; v++) |
| | |
| for (sidenum=0; sidenum < MAX_SIDES_PER_SEGMENT; sidenum++) { | | for (sidenum=0; sidenum < MAX_SIDES_PER_SEGMENT; sidenum++) { |
| if (!IS_CHILD(segp->children[sidenum])) { | | if (!IS_CHILD(segp->children[sidenum])) { |
| side *sidep = &segp->sides[sidenum]; | | side *sidep = &segp->sides[sidenum]; |
| byte *vp = Side_to_verts[sidenum]; | | sbyte *vp = Side_to_verts[sidenum]; |
| int v; | | int v; |
| | | |
| for (v=0; v<4; v++) | | for (v=0; v<4; v++) |
| | |
| for (si=0; si<MAX_SIDES_PER_SEGMENT; si++) { | | for (si=0; si<MAX_SIDES_PER_SEGMENT; si++) { |
| if (!IS_CHILD(segp->children[si])) { | | if (!IS_CHILD(segp->children[si])) { |
| side *sidep = &segp->sides[si]; | | side *sidep = &segp->sides[si]; |
| byte *vp = Side_to_verts[si]; | | sbyte *vp = Side_to_verts[si]; |
| int vv; | | int vv; |
| | | |
| for (vv=0; vv<4; vv++) | | for (vv=0; vv<4; vv++) |
| | |
| wid_result = WALL_IS_DOORWAY(segp, sidenum); | | wid_result = WALL_IS_DOORWAY(segp, sidenum); |
| if ((wid_result != WID_FLY_FLAG) && (wid_result != WID_NO_WALL)) { | | if ((wid_result != WID_FLY_FLAG) && (wid_result != WID_NO_WALL)) { |
| side *sidep = &segp->sides[sidenum]; | | side *sidep = &segp->sides[sidenum]; |
| byte *vp = Side_to_verts[sidenum]; | | sbyte *vp = Side_to_verts[sidenum]; |
| int v; | | int v; |
| | | |
| for (v=0; v<4; v++) | | for (v=0; v<4; v++) |
| | |
| // vms_vector tvec; | | // vms_vector tvec; |
| // fix dist_ratios[MAX_VERTICES_PER_POLY]; | | // fix dist_ratios[MAX_VERTICES_PER_POLY]; |
| side *sidep = &segp->sides[sidenum]; | | side *sidep = &segp->sides[sidenum]; |
| // byte *vp = Side_to_verts[sidenum]; | | // sbyte *vp = Side_to_verts[sidenum]; |
| | | |
| // This next hunk doesn't seem to affect anything. @mk, 02/13/94 | | // This next hunk doesn't seem to affect anything. @mk, 02/13/94 |
| // for (v=1; v<4; v++) { | | // for (v=1; v<4; v++) { |
| | |
| vms_matrix rotmat; | | vms_matrix rotmat; |
| uvl uvls[4],ruvmag,fuvmag,uvlo,uvhi; | | uvl uvls[4],ruvmag,fuvmag,uvlo,uvhi; |
| fix fmag,mag01; | | fix fmag,mag01; |
| byte *vp; | | sbyte *vp; |
| | | |
| Assert( (va<4) && (vb<4) ); | | Assert( (va<4) && (vb<4) ); |
| Assert((abs(va - vb) == 1) || (abs(va - vb) == 3)); // make sure the verticies specify an edge | | Assert((abs(va - vb) == 1) || (abs(va - vb) == 3)); // make sure the verticies specify an edge |
| | | |
| vp = (byte *)&Side_to_verts[sidenum]; | | vp = (sbyte *)&Side_to_verts[sidenum]; |
| | | |
| // We want vlo precedes vhi, ie vlo < vhi, or vlo = 3, vhi = 0 | | // We want vlo precedes vhi, ie vlo < vhi, or vlo = 3, vhi = 0 |
| if (va == ((vb + 1) % 4)) { // va = vb + 1 | | if (va == ((vb + 1) % 4)) { // va = vb + 1 |
| | |
| void assign_default_uvs_to_side(segment *segp,int side) | | void assign_default_uvs_to_side(segment *segp,int side) |
| { | | { |
| uvl uv0,uv1; | | uvl uv0,uv1; |
| byte *vp; | | sbyte *vp; |
| | | |
| uv0.u = 0; | | uv0.u = 0; |
| uv0.v = 0; | | uv0.v = 0; |
| | |
| | | |
| } | | } |
| | | |
| byte Edge_between_sides[MAX_SIDES_PER_SEGMENT][MAX_SIDES_PER_SEGMENT][2] = { | | sbyte Edge_between_sides[MAX_SIDES_PER_SEGMENT][MAX_SIDES_PER_SEGMENT][2] = { |
| // left top right bottom back front | | // left top right bottom back front |
| { {-1,-1}, { 3, 7}, {-1,-1}, { 2, 6}, { 6, 7}, { 2, 3} }, // left | | { {-1,-1}, { 3, 7}, {-1,-1}, { 2, 6}, { 6, 7}, { 2, 3} }, // left |
| { { 3, 7}, {-1,-1}, { 0, 4}, {-1,-1}, { 4, 7}, { 0, 3} }, // top | | { { 3, 7}, {-1,-1}, { 0, 4}, {-1,-1}, { 4, 7}, { 0, 3} }, // top |
| | |
| //int Bugseg = 27; | | //int Bugseg = 27; |
| | | |
| typedef struct { | | typedef struct { |
| byte flag, hit_type; | | sbyte flag, hit_type; |
| vms_vector vector; | | vms_vector vector; |
| } hash_info; | | } hash_info; |
| | | |