From e7a0b54c4717afdfa12a8847d5bc72b7b68290b4 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Fri, 6 May 2011 17:08:21 +0000 Subject: Import submodel clip --- src/model/mapfile.cc | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) (limited to 'src/model/mapfile.cc') diff --git a/src/model/mapfile.cc b/src/model/mapfile.cc index b05880f..0abbdbd 100644 --- a/src/model/mapfile.cc +++ b/src/model/mapfile.cc @@ -1864,11 +1864,23 @@ Model * MapFile::load(std::string const &name) } } - /* TODO - * - * import submodel collision meshes - */ - + // import submodel collisionmodel meshes + if (mapfile.map_load_clip && submodel_model->collisionmodel()) { + for (CollisionModel::CollisionMeshes::iterator cmit = submodel_model->collisionmodel()->meshes().begin(); + cmit != submodel_model->collisionmodel()->meshes().end(); cmit++) { + + CollisionMesh *meshsrc = (*cmit); + CollisionMesh *meshdst = new CollisionMesh(*meshsrc); + + meshdst->set_type(meshsrc->type()); + meshdst->set_scale(meshsrc->scale() * tag_submodel->scale()); + + meshdst->set_location(tag_submodel->location() + tag_submodel->axis() * (meshsrc->location() - submodel_model->origin()) * tag_submodel->scale()); + meshdst->set_axis(tag_submodel->axis() * meshsrc->axis()); + + model->collisionmodel()->add_mesh(meshdst); + } + } // copy light tags for (Model::Lights::const_iterator lit = submodel_model->lights().begin(); lit != submodel_model->lights().end(); lit++) { @@ -1906,6 +1918,7 @@ Model * MapFile::load(std::string const &name) tag_dock->get_location().assign(tag_submodel->location() + tag_submodel->axis() * (tag_dock->location() - submodel_model->origin()) * tag_submodel->scale()); } } + delete tag_submodel; } -- cgit v1.2.3