X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2F3d%2Fvehicle.cpp;fp=source%2F3d%2Fvehicle.cpp;h=ceded8bc04c8012af255f399763ada36074270cb;hb=4b7008978ce5b67e7e1db14b4a359e4ab1881bbd;hp=8027a1999d3827ab14dad36ced4816703f070a34;hpb=fa7cc825ea7aee9328ecd03b67617847fd128f85;p=r2c2.git diff --git a/source/3d/vehicle.cpp b/source/3d/vehicle.cpp index 8027a19..ceded8b 100644 --- a/source/3d/vehicle.cpp +++ b/source/3d/vehicle.cpp @@ -1,13 +1,17 @@ /* $Id$ This file is part of R²C² -Copyright © 2010 Mikkosoft Productions, Mikko Rasa +Copyright © 2010-2011 Mikkosoft Productions, Mikko Rasa Distributed under the GPL */ #include #include +#include +#include "axle.h" +#include "bogie.h" #include "layout.h" +#include "rod.h" #include "vehicle.h" #include "vehicletype.h" @@ -17,10 +21,47 @@ using namespace Msp; namespace R2C2 { Vehicle3D::Vehicle3D(Layout3D &l, Vehicle &v): + GL::ObjectInstance(*l.get_catalogue().get_vehicle(v.get_type()).get_body_object()), layout(l), vehicle(v), type(layout.get_catalogue().get_vehicle(vehicle.get_type())) { + unsigned n_axles = vehicle.get_type().get_axles().size(); + for(unsigned i=0; i::iterator i=axles.begin(); i!=axles.end(); ++i) + delete *i; + for(vector::iterator i=bogies.begin(); i!=bogies.end(); ++i) + delete *i; + for(vector::iterator i=rods.begin(); i!=rods.end(); ++i) + delete *i; } Point Vehicle3D::get_node() const @@ -42,12 +89,14 @@ bool Vehicle3D::is_visible() const return vehicle.get_track(); } -void Vehicle3D::render(const GL::Tag &tag) const +void Vehicle3D::render(GL::Renderer &renderer, const GL::Tag &tag) const { if(!vehicle.get_track()) return; - if(tag==0) + ObjectInstance::render(renderer, tag); + + /*if(tag==0) { GL::PushMatrix push_mat; @@ -56,9 +105,9 @@ void Vehicle3D::render(const GL::Tag &tag) const GL::rotate(vehicle.get_direction()*180/M_PI, 0, 0, 1); if(const GL::Object *obj = type.get_body_object()) - obj->render(tag); + obj->render(tag);*/ - const vector &axles = vehicle.get_type().get_axles(); + /*const vector &axles = vehicle.get_type().get_axles(); for(unsigned i=0; irender(tag); - } + }*/ - const vector &rods = vehicle.get_type().get_rods(); + /*const vector &rods = vehicle.get_type().get_rods(); for(unsigned i=0; irender(tag); - } - } + }*/ + //} +} + +void Vehicle3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const +{ + GL::Matrix matrix; + const Point &pos = vehicle.get_position(); + matrix.translate(pos.x, pos.y, pos.z); + matrix.rotate(vehicle.get_direction(), 0, 0, 1); + renderer.matrix_stack() *= matrix; } } // namespace R2C2