diff options
Diffstat (limited to 'src/client')
-rw-r--r-- | src/client/draw.cc | 94 |
1 files changed, 56 insertions, 38 deletions
diff --git a/src/client/draw.cc b/src/client/draw.cc index cdf80c2..91032a8 100644 --- a/src/client/draw.cc +++ b/src/client/draw.cc @@ -53,39 +53,6 @@ void draw_entity_diamond(core::Entity *entity) gl::end(); } -// draw an entity of entity_type core::Entity::Default -void draw_entity_default(core::Entity *entity) -{ - render::Model *model = 0; - if (entity->modelname().size()) - model = render::Model::get(entity->modelname()); - - render::gl::push(); - render::gl::translate(entity->location()); - - if (model) { - render::gl::color(entity->color()); - model->draw(); - } else { - switch(entity->shape()) { - case core::Entity::Sphere: - draw_entity_sphere(entity); - break; - - case core::Entity::Diamond: - draw_entity_diamond(entity); - break; - - case core::Entity::Cube: - - default: - draw_entity_cube(entity); - break; - } - } - - render::gl::pop(); -} math::Vector3f v0(1.0f, -1.0f, -1.0f); @@ -105,10 +72,7 @@ void draw_ship(core::EntityControlable *entity) using math::Color; using namespace render; - gl::push(); - gl::translate(entity->location()); gl::scale(0.2f, 0.2f, 0.2f); - gl::rotate(entity->direction(), 0.0f, 0.0f, 1.0f ); Vector3f tl(0.25, 0.125, 0.125); Vector3f br(-0.25, -0.125, -0.125); @@ -169,8 +133,62 @@ void draw_ship(core::EntityControlable *entity) gl::vertex(v6); gl::vertex(v7); gl::end(); +} + + +// draw an entity of entity_type core::Entity::Default +void draw_entity_default(core::Entity *entity) +{ + render::Model *model = 0; + if (entity->modelname().size()) + model = render::Model::get(entity->modelname()); - gl::pop(); + render::gl::push(); + render::gl::translate(entity->location()); + render::gl::rotate(entity->direction(), 0.0f, 0.0f, 1.0f ); + + if (model) { + model->draw(entity); + } else { + switch(entity->shape()) { + case core::Entity::Sphere: + draw_entity_sphere(entity); + break; + + case core::Entity::Diamond: + draw_entity_diamond(entity); + break; + + case core::Entity::Cube: + + default: + draw_entity_cube(entity); + break; + } + } + + render::gl::pop(); +} + +// draw an entity of entity_type core::Entity::Controlable +void draw_entity_controlable(core::EntityControlable *entity) +{ + render::Model *model = 0; + if (entity->modelname().size()) + model = render::Model::get(entity->modelname()); + + render::gl::push(); + render::gl::translate(entity->location()); + render::gl::rotate(entity->direction(), 0.0f, 0.0f, 1.0f ); + + if (model) { + model->draw(entity); + } else { + draw_ship(entity); + } + + render::gl::pop(); + } void draw_spacegrid() @@ -224,7 +242,7 @@ void draw_world(float seconds) draw_entity_default((*it).second); break; case core::Entity::Controlable: - draw_ship(static_cast<core::EntityControlable *> ((*it).second)); + draw_entity_controlable(static_cast<core::EntityControlable *> ((*it).second)); break; default: break; |