From 83d6c17799c4d448a67ab5cdad02954282fa5c94 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Sat, 1 Nov 2008 13:33:18 +0000 Subject: server-side model loading, initial @dock function --- src/render/draw.cc | 70 ++++++++++++++++++++++++------------------------------ 1 file changed, 31 insertions(+), 39 deletions(-) (limited to 'src/render/draw.cc') diff --git a/src/render/draw.cc b/src/render/draw.cc index 69dcecb..7bbb89c 100644 --- a/src/render/draw.cc +++ b/src/render/draw.cc @@ -53,8 +53,8 @@ typedef std::map Globes; Globes globes_list; // function to test flags -inline bool flag_is_set(unsigned int const spawnflags, unsigned int const flag) { - return ((spawnflags & flag) == flag); +inline bool flag_is_set(unsigned int const flags, unsigned int const flag) { + return ((flags & flag) == flag); } /* ---- Prepare the renderer state --------------------------------- */ @@ -75,51 +75,43 @@ void pass_prepare(float seconds) core::Entity *entity = (*it); // load entity models and light flare textures - if (!entity->model() && entity->modelname().size()) { - entity->entity_model = Model::load(entity->modelname()); - - if (!entity->model()) { - entity->entity_modelname.clear(); - entity->entity_radius = 0.25; - } else { - // set entity radius to model radius - entity->entity_radius = entity->entity_model->radius(); + if (!entity->model() && entity->modelname().c_str()[0]) { + entity->set_modelname(entity->modelname()); + } + + if (entity->model()) { + model::Model *model = entity->model(); - for (Model::Lights::iterator lit = entity->model()->lights().begin(); lit != entity->model()->lights().end(); lit++) { - Light *light = (*lit); + for (Model::Lights::iterator lit = model->lights().begin(); lit != model->lights().end(); lit++) { + Light *light = (*lit); - // load light texture - std::stringstream flarename; - flarename << "bitmaps/fx/flare" << std::setfill('0') << std::setw(2) << light->flare(); - light->render_texture = Textures::load(flarename.str()); - } + // load light texture + std::stringstream flarename; + flarename << "bitmaps/fx/flare" << std::setfill('0') << std::setw(2) << light->flare(); + light->render_texture = Textures::load(flarename.str()); + } - for(Model::Engines::iterator eit = entity->model()->engines().begin(); eit != entity->model()->engines().end(); eit++) { - Engine *engine = (*eit); + for(Model::Engines::iterator eit = model->engines().begin(); eit != model->engines().end(); eit++) { + Engine *engine = (*eit); - if (!engine->flare()) engine->engine_flare = 1; + if (!engine->flare()) engine->engine_flare = 1; - // load engine texture - std::stringstream flarename; - flarename << "bitmaps/fx/flare" << std::setfill('0') << std::setw(2) << engine->flare(); - engine->render_texture = Textures::load(flarename.str()); - } + // load engine texture + std::stringstream flarename; + flarename << "bitmaps/fx/flare" << std::setfill('0') << std::setw(2) << engine->flare(); + engine->render_texture = Textures::load(flarename.str()); + } - for (Model::Flares::iterator flit = entity->model()->flares().begin(); flit != entity->model()->flares().end(); flit++) { - Flare *flare = (*flit); + for (Model::Flares::iterator flit = model->flares().begin(); flit != model->flares().end(); flit++) { + Flare *flare = (*flit); - // load flare texture - std::stringstream flarename; - flarename << "bitmaps/fx/flare" << std::setfill('0') << std::setw(2) << flare->flare(); - flare->render_texture = Textures::load(flarename.str()); - } + // load flare texture + std::stringstream flarename; + flarename << "bitmaps/fx/flare" << std::setfill('0') << std::setw(2) << flare->flare(); + flare->render_texture = Textures::load(flarename.str()); } } - - if (!entity->state()) { - entity->entity_clientstate = new core::ClientState(entity); - } - + entity->state()->state_visible = false; entity->state()->state_detailvisible = false; entity->state()->state_targetable = false; @@ -147,8 +139,8 @@ void pass_prepare(float seconds) if (entity->type() == core::Entity::Globe) { core::EntityGlobe *globe = static_cast(entity); - // add the globe to the globes list + // add the globe to the globes list globes_list[globe->state()->distance()] = globe; // load globe textures -- cgit v1.2.3