]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/vehicletype.cpp
Use beam gates for positioning vehicles
[r2c2.git] / source / libr2c2 / vehicletype.cpp
index 2da44cc992f340f7c73e7f44e104fc4285327078..854308c71ad80cd46861bfa8786021174db40dae 100644 (file)
@@ -1,4 +1,6 @@
 #include <msp/core/maputils.h>
+#include <msp/geometry/box.h>
+#include <msp/geometry/transformedshape.h>
 #include <msp/strings/format.h>
 #include "vehicletype.h"
 
@@ -8,7 +10,7 @@ using namespace Msp;
 namespace R2C2 {
 
 VehicleType::VehicleType(const ArticleNumber &an):
-       art_nr(an),
+       ObjectType(an),
        locomotive(false),
        swap_direction(false),
        length(0),
@@ -105,7 +107,7 @@ VehicleType::Rod::Rod():
 
 
 VehicleType::Loader::Loader(VehicleType &vt):
-       DataFile::ObjectLoader<VehicleType>(vt)
+       DataFile::DerivedObjectLoader<VehicleType, ObjectType::Loader>(vt)
 {
        add("axle",       &Loader::axle);
        add("bogie",      &Loader::bogie);
@@ -113,7 +115,6 @@ VehicleType::Loader::Loader(VehicleType &vt):
        add("height",     &Loader::height);
        add("length",     &Loader::length);
        add("locomotive", &VehicleType::locomotive);
-       add("name",       &VehicleType::name);
        add("object",     &VehicleType::object);
        add("rod",        &Loader::rod);
        add("rotate_object", &VehicleType::rotate_object);
@@ -121,6 +122,13 @@ VehicleType::Loader::Loader(VehicleType &vt):
        add("width",      &Loader::width);
 }
 
+void VehicleType::Loader::finish()
+{
+       obj.shape = new Geometry::TransformedShape<float, 3>(
+               Geometry::Box<float>(obj.length, obj.width, obj.height),
+               Transform::translation(Vector(0, 0, obj.height/2)));
+}
+
 void VehicleType::Loader::axle()
 {
        Axle axl;