]> git.tdb.fi Git - r2c2.git/blobdiff - source/3d/vehicletype.cpp
Add signals for adding and removing vehicles
[r2c2.git] / source / 3d / vehicletype.cpp
index 9cbfa28f3eac5c891a938c43c0a28e2b21037048..0c6465898987396d00fe5f0dd664da091b507b23 100644 (file)
@@ -59,30 +59,30 @@ VehicleType3D::~VehicleType3D()
 const GL::Object *VehicleType3D::get_fixed_axle_object(unsigned i) const
 {
        if(i>=axle_objects[0].size())
-               throw InvalidParameterValue("Axle index out of range");
+               throw out_of_range("VehicleType3D::get_fixed_axle_object");
        return axle_objects[0][i];
 }
 
 const GL::Object *VehicleType3D::get_bogie_object(unsigned i) const
 {
        if(i>=bogie_objects.size())
-               throw InvalidParameterValue("Bogie index out of range");
+               throw out_of_range("VehicleType3D::get_bogie_object");
        return bogie_objects[i];
 }
 
 const GL::Object *VehicleType3D::get_bogie_axle_object(unsigned i, unsigned j) const
 {
        if(i>=bogie_objects.size())
-               throw InvalidParameterValue("Bogie index out of range");
+               throw out_of_range("VehicleType3D::get_bogie_axle_object");
        if(j>=axle_objects[i+1].size())
-               throw InvalidParameterValue("Axle index out of range");
+               throw out_of_range("VehicleType3D::get_bogie_axle_object");
        return axle_objects[i+1][j];
 }
 
 const GL::Object *VehicleType3D::get_rod_object(unsigned i) const
 {
        if(i>=rod_objects.size())
-               throw InvalidParameterValue("Rod index out of range");
+               throw out_of_range("VehicleType3D::get_rod_object");
        return rod_objects[i];
 }
 
@@ -100,9 +100,9 @@ GL::Object *VehicleType3D::get_object(const string &name)
                        string kind = name.substr(1, colon-1);
 
                        map<string, string> params;
-                       params["length"] = lexical_cast(type.get_length()*1000);
-                       params["width"] = lexical_cast(type.get_width()*1000);
-                       params["height"] = lexical_cast(type.get_height()*1000);
+                       params["length"] = lexical_cast<string>(type.get_length()*1000);
+                       params["width"] = lexical_cast<string>(type.get_width()*1000);
+                       params["height"] = lexical_cast<string>(type.get_height()*1000);
                        if(colon!=string::npos)
                        {
                                string::size_type start = colon+1;
@@ -137,7 +137,7 @@ GL::Object *VehicleType3D::get_object(const string &name)
                        }
                }
                else
-                       return catalogue.get<GL::Object>(name);
+                       return &catalogue.get<GL::Object>(name);
        }
        return ptr;
 }
@@ -158,7 +158,9 @@ GL::Technique *VehicleType3D::create_technique(const map<string, string> &params
        tex->storage(GL::RGB, 2, 1);
        tex->set_min_filter(GL::NEAREST);
        tex->set_mag_filter(GL::NEAREST);
-       unsigned char data[6] = { color>>16, color>>8, color, color2>>16, color2>>8, color2 };
+       unsigned char data[6];
+       data[0] = color>>16;  data[1] = color>>8;  data[2] = color;
+       data[3] = color2>>16; data[4] = color2>>8; data[5] = color2;
        tex->image(0, GL::RGB, GL::UNSIGNED_BYTE, data);
        pass.set_texture(0, tex);