pipeline.add_renderable(engineer.get_layout_3d().get_scene());
- GL::PipelinePass *pass = &pipeline.add_pass(0);
- pass->depth_test = &GL::DepthTest::lequal();
- pass->lighting = &engineer.get_lighting();
+ GL::Pipeline::Pass *pass = &pipeline.add_pass(0);
+ pass->set_depth_test(&GL::DepthTest::lequal());
+ pass->set_lighting(&engineer.get_lighting());
GLtk::Image *image;
add(*(image = new GLtk::Image(&tex)));
{
const Vehicle &veh = train.get_vehicle(0);
const Vector &pos = veh.get_position();
- float angle = veh.get_direction();
+ Angle angle = veh.get_rotation();
if(!forward)
- angle += M_PI;
- float c = cos(angle);
- float s = sin(angle);
+ angle += Angle::half_turn();
+ Vector fwd_vec = rotated_vector(Vector(1, 0, 0), angle);
+ Vector side_vec = rotated_vector(Vector(0, -1, 0), angle);
float l = veh.get_type().get_length();
switch(mode)
{
case ROOF:
- camera.set_position(GL::Vector3(pos.x-l*c, pos.y-l*s, pos.z+0.07));
- camera.set_look_direction(GL::Vector3(c, s, -0.2));
+ camera.set_position(pos-l*fwd_vec+Vector(0, 0, 0.07));
+ camera.set_look_direction(fwd_vec-Vector(0, 0, -0.2));
break;
case SIDE:
- camera.set_position(GL::Vector3(pos.x-l*0.8*c+0.05*s, pos.y-l*0.8*s-0.05*c, pos.z+0.03));
- camera.set_look_direction(GL::Vector3(c-0.2*s, s+0.2*c, 0));
+ camera.set_position(pos-0.8f*fwd_vec+0.05f*side_vec+Vector(0, 0, 0.03));
+ camera.set_look_direction(fwd_vec-side_vec*0.2f);
break;
case HEAD:
- camera.set_position(GL::Vector3(pos.x+l*0.55*c, pos.y+l*0.55*s, pos.z+0.03));
- camera.set_look_direction(GL::Vector3(c, s, 0));
+ camera.set_position(pos+fwd_vec*(l*0.55f)+Vector(0, 0, 0.03));
+ camera.set_look_direction(fwd_vec);
break;
}
GL::Bind _bind_fbo(fbo);
fbo.clear(GL::COLOR_BUFFER_BIT|GL::DEPTH_BUFFER_BIT);
- pipeline.render_all();
+ pipeline.render();
}
void TrainView::button_release(int x, int y, unsigned btn)