| 888 | } MeshExtents; |
| 889 | |
| 890 | bool computeExtents(CModel& model, MeshExtents& extents) { |
| 891 | bool didOne = false; |
| 892 | |
| 893 | for (int m = 0; m < (int)model.meshes.size(); m++) { |
| 894 | CMesh& subMesh = model.meshes[m]; |
| 895 | bool extentsSet = false; |
| 896 | for (int f = 0; f < (int)subMesh.faces.size(); f++) { |
| 897 | extentsSet = true; |
| 898 | didOne = true; |
| 899 | CFace& face = subMesh.faces[f]; |
| 900 | if (f == 0 && m == 0) { |
| 901 | extents.minx = subMesh.verts[face.verts[0]].x; |
| 902 | extents.miny = subMesh.verts[face.verts[0]].y; |
| 903 | extents.minz = subMesh.verts[face.verts[0]].z; |
| 904 | |
| 905 | extents.maxx = extents.minx; |
| 906 | extents.maxy = extents.miny; |
| 907 | extents.maxz = extents.minz; |
| 908 | } |
| 909 | |
| 910 | for (int v = 0; v < (int)face.verts.size(); v++) { |
| 911 | CVector3& vert = subMesh.verts[face.verts[v]]; |
| 912 | if (vert.x < extents.minx) { |
| 913 | extents.minx = vert.x; |
| 914 | } |
| 915 | if (vert.y < extents.miny) { |
| 916 | extents.miny = vert.y; |
| 917 | } |
| 918 | if (vert.z < extents.minz) { |
| 919 | extents.minz = vert.z; |
| 920 | } |
| 921 | |
| 922 | if (vert.x > extents.maxx) { |
| 923 | extents.maxx = vert.x; |
| 924 | } |
| 925 | if (vert.y > extents.maxy) { |
| 926 | extents.maxy = vert.y; |
| 927 | } |
| 928 | if (vert.z > extents.maxz) { |
| 929 | extents.maxz = vert.z; |
| 930 | } |
| 931 | } |
| 932 | } |
| 933 | |
| 934 | for (int s = 0; s < (int)subMesh.strips.size(); s++) { |
| 935 | didOne = true; |
| 936 | CTriStrip& strip = subMesh.strips[s]; |
| 937 | if (!extentsSet && s == 0 && m == 0) { |
| 938 | extentsSet = true; |
| 939 | extents.minx = subMesh.verts[strip.verts[0]].x; |
| 940 | extents.miny = subMesh.verts[strip.verts[0]].y; |
| 941 | extents.minz = subMesh.verts[strip.verts[0]].z; |
| 942 | |
| 943 | extents.maxx = extents.minx; |
| 944 | extents.maxy = extents.miny; |
| 945 | extents.maxz = extents.minz; |
| 946 | } |
| 947 |
no test coverage detected