]> git.tdb.fi Git - r2c2.git/blob - source/3d/vehicletype.cpp
Add vehicles
[r2c2.git] / source / 3d / vehicletype.cpp
1 /* $Id$
2
3 This file is part of the MSP Märklin suite
4 Copyright © 2010  Mikkosoft Productions, Mikko Rasa
5 Distributed under the GPL
6 */
7
8 #include <msp/gl/meshbuilder.h>
9 #include <msp/gl/vector.h>
10 #include "vehicletype.h"
11
12 using namespace Msp;
13
14 namespace Marklin {
15
16 VehicleType3D::VehicleType3D(Catalogue3D &, const VehicleType &vt):
17         body_mesh((GL::NORMAL3, GL::VERTEX3))
18 {
19         GL::Vector3 corner(vt.get_length()/2, vt.get_width()/2, vt.get_height());
20
21         GL::MeshBuilder bld(body_mesh);
22         bld.begin(GL::QUADS);
23         bld.normal(1, 0, 0);
24         bld.vertex(corner.x, -corner.y, 0);
25         bld.vertex(corner.x, corner.y, 0);
26         bld.vertex(corner.x, corner.y, corner.z);
27         bld.vertex(corner.x, -corner.y, corner.z);
28         bld.normal(-1, 0, 0);
29         bld.vertex(-corner.x, corner.y, 0);
30         bld.vertex(-corner.x, -corner.y, 0);
31         bld.vertex(-corner.x, -corner.y, corner.z);
32         bld.vertex(-corner.x, corner.y, corner.z);
33         bld.normal(0, 1, 0);
34         bld.vertex(corner.x, corner.y, 0);
35         bld.vertex(-corner.x, corner.y, 0);
36         bld.vertex(-corner.x, corner.y, corner.z);
37         bld.vertex(corner.x, corner.y, corner.z);
38         bld.normal(0, -1, 0);
39         bld.vertex(-corner.x, -corner.y, 0);
40         bld.vertex(corner.x, -corner.y, 0);
41         bld.vertex(corner.x, -corner.y, corner.z);
42         bld.vertex(-corner.x, -corner.y, corner.z);
43         bld.normal(0, 0, 1);
44         bld.vertex(-corner.x, -corner.y, corner.z);
45         bld.vertex(corner.x, -corner.y, corner.z);
46         bld.vertex(corner.x, corner.y, corner.z);
47         bld.vertex(-corner.x, corner.y, corner.z);
48         bld.end();
49 }
50
51 } // namespace Marklin