ld33_umonster
changeset 1:bed0e207acb6
improved gen_box
author | John Tsiombikas <nuclear@member.fsf.org> |
---|---|
date | Sat, 22 Aug 2015 23:17:57 +0300 |
parents | 4a6683050e29 |
children | 35349df5392d |
files | src/meshgen.cc src/meshgen.h |
diffstat | 2 files changed, 36 insertions(+), 2 deletions(-) [+] |
line diff
1.1 --- a/src/meshgen.cc Sat Aug 22 07:15:00 2015 +0300 1.2 +++ b/src/meshgen.cc Sat Aug 22 23:17:57 2015 +0300 1.3 @@ -394,8 +394,41 @@ 1.4 } 1.5 } 1.6 1.7 -// ----- heightmap ------ 1.8 +// ----- box ------ 1.9 +void gen_box(Mesh *mesh, float xsz, float ysz, float zsz, int usub, int vsub) 1.10 +{ 1.11 + static const float face_angles[][2] = { 1.12 + {0, 0}, 1.13 + {M_PI / 2.0, 0}, 1.14 + {M_PI, 0}, 1.15 + {3.0 * M_PI / 2.0, 0}, 1.16 + {0, M_PI / 2.0}, 1.17 + {0, -M_PI / 2.0} 1.18 + }; 1.19 1.20 + if(usub < 1) usub = 1; 1.21 + if(vsub < 1) vsub = 1; 1.22 + 1.23 + mesh->clear(); 1.24 + 1.25 + for(int i=0; i<6; i++) { 1.26 + Matrix4x4 xform; 1.27 + Mesh m; 1.28 + 1.29 + gen_plane(&m, 1, 1, usub, vsub); 1.30 + xform.rotate(Vector3(face_angles[i][1], face_angles[i][0], 0)); 1.31 + xform.translate(Vector3(0, 0, 0.5)); 1.32 + m.apply_xform(xform); 1.33 + 1.34 + mesh->append(m); 1.35 + } 1.36 + 1.37 + Matrix4x4 scale; 1.38 + scale.set_scaling(Vector3(xsz, ysz, zsz)); 1.39 + mesh->apply_xform(scale, Matrix4x4::identity); 1.40 +} 1.41 + 1.42 +/* 1.43 void gen_box(Mesh *mesh, float xsz, float ysz, float zsz) 1.44 { 1.45 mesh->clear(); 1.46 @@ -485,6 +518,7 @@ 1.47 } 1.48 } 1.49 } 1.50 +*/ 1.51 1.52 static inline Vector3 rev_vert(float u, float v, Vector2 (*rf)(float, float, void*), void *cls) 1.53 {
2.1 --- a/src/meshgen.h Sat Aug 22 07:15:00 2015 +0300 2.2 +++ b/src/meshgen.h Sat Aug 22 23:17:57 2015 +0300 2.3 @@ -10,7 +10,7 @@ 2.4 void gen_cone(Mesh *mesh, float rad, float height, int usub, int vsub, int capsub = 0, float urange = 1.0, float vrange = 1.0); 2.5 void gen_plane(Mesh *mesh, float width, float height, int usub = 1, int vsub = 1); 2.6 void gen_heightmap(Mesh *mesh, float width, float height, int usub, int vsub, float (*hf)(float, float, void*), void *hfdata = 0); 2.7 -void gen_box(Mesh *mesh, float xsz, float ysz, float zsz); 2.8 +void gen_box(Mesh *mesh, float xsz, float ysz, float zsz, int usub = 1, int vsub = 1); 2.9 2.10 void gen_revol(Mesh *mesh, int usub, int vsub, Vector2 (*rfunc)(float, float, void*), void *cls = 0); 2.11 void gen_revol(Mesh *mesh, int usub, int vsub, Vector2 (*rfunc)(float, float, void*), Vector2 (*nfunc)(float, float, void*), void *cls);