X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Faxle.cpp;h=4344eeacf76a480b52a63fc597c7d4b992318291;hb=b1cfc4fbf0d12c60bbe4b9c014a33c658554e7d7;hp=5123106e5c805f8736292d7996ec47d7f97080c6;hpb=4b7008978ce5b67e7e1db14b4a359e4ab1881bbd;p=r2c2.git diff --git a/source/3d/axle.cpp b/source/3d/axle.cpp index 5123106..4344eea 100644 --- a/source/3d/axle.cpp +++ b/source/3d/axle.cpp @@ -1,12 +1,3 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2011 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - -#include -#include #include "axle.h" #include "vehicle.h" #include "vehicletype.h" @@ -16,34 +7,17 @@ using namespace Msp; namespace R2C2 { Axle3D::Axle3D(const Vehicle3D &v, unsigned a): - GL::ObjectInstance(*v.get_type().get_axle_object(a)), - vehicle(v.get_vehicle()), + VehiclePart3D(v, *v.get_type().get_axle_object(a)), bogie(0), - axle(vehicle.get_axle(a)) -{ } - -Axle3D::Axle3D(const Vehicle3D &v, unsigned b, unsigned a): - GL::ObjectInstance(*v.get_type().get_bogie_axle_object(b, a)), - vehicle(v.get_vehicle()), - bogie(&vehicle.get_bogie(b)), - axle(bogie->axles[a]) -{ } - -void Axle3D::render(GL::Renderer &renderer, const GL::Tag &tag) const + axle(vehicle.get_vehicle().get_axle(a)) { - if(!vehicle.get_track()) - return; - - ObjectInstance::render(renderer, tag); + if(axle.type->bogie) + bogie = &vehicle.get_vehicle().get_bogie(axle.type->bogie->index); } -void Axle3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const +void Axle3D::update_matrix() { - 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); + matrix = vehicle.Object3D::get_matrix(); if(bogie) { @@ -51,10 +25,8 @@ void Axle3D::setup_render(GL::Renderer &renderer, const GL::Tag &) const matrix.rotate(bogie->direction, 0, 0, 1); } - matrix.translate(axle.type->position, 0, axle.type->wheel_dia/2); + matrix.translate(axle.type->local_position, 0, axle.type->wheel_dia/2); matrix.rotate(axle.angle, 0, 1, 0); - - renderer.matrix_stack() *= matrix; } } // namespace R2C2