From 95b3f5993151db7607f69132adc604e27e0f55ce Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Tue, 11 Aug 2009 12:40:08 +0000 Subject: implements misc_model rotation angle --- src/model/map.cc | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) (limited to 'src/model/map.cc') diff --git a/src/model/map.cc b/src/model/map.cc index 164be3e..5d699e6 100644 --- a/src/model/map.cc +++ b/src/model/map.cc @@ -660,7 +660,9 @@ void MapFile::load_fragmentgroup(Model *model, const FragmentGroup::Type class_t // default rotation speed 45 degrees per second class_speed = 45.0f; } + } + if (class_type != FragmentGroup::None) { group->set_transform(true); } @@ -669,6 +671,11 @@ void MapFile::load_fragmentgroup(Model *model, const FragmentGroup::Type class_t group->set_axis(class_axis); group->set_speed(class_speed); + math::Vector3f group_center(map_center); + if (group->transform()) { + group_center += group->location(); + } + for (Materials::iterator mit = map_materials.begin(); mit != map_materials.end(); mit++) { // split the Primitives with this material into fragments Primitives *primitives = (*mit).second; @@ -682,9 +689,9 @@ void MapFile::load_fragmentgroup(Model *model, const FragmentGroup::Type class_t Triangle *triangle = (*tris_it); if (!triangle->detail()) { size_t count = 0; - count += fragment->add_vertex(triangle->v0()-map_center, triangle->normal(), false); - count += fragment->add_vertex(triangle->v1()-map_center, triangle->normal(), false); - count += fragment->add_vertex(triangle->v2()-map_center, triangle->normal(), false); + count += fragment->add_vertex(triangle->v0()-group_center, triangle->normal(), false); + count += fragment->add_vertex(triangle->v1()-group_center, triangle->normal(), false); + count += fragment->add_vertex(triangle->v2()-group_center, triangle->normal(), false); if (count == 3) model->model_tris_count++; } @@ -695,9 +702,9 @@ void MapFile::load_fragmentgroup(Model *model, const FragmentGroup::Type class_t Triangle *triangle = (*tris_it); if (triangle->detail()) { size_t count = 0; - count += fragment->add_vertex(triangle->v0()-map_center, triangle->normal(), true); - count += fragment->add_vertex(triangle->v1()-map_center, triangle->normal(), true); - count += fragment->add_vertex(triangle->v2()-map_center, triangle->normal(), true); + count += fragment->add_vertex(triangle->v0()-group_center, triangle->normal(), true); + count += fragment->add_vertex(triangle->v1()-group_center, triangle->normal(), true); + count += fragment->add_vertex(triangle->v2()-group_center, triangle->normal(), true); if (count == 3) { model->model_tris_count++; model->model_tris_detail_count++; @@ -718,10 +725,10 @@ void MapFile::load_fragmentgroup(Model *model, const FragmentGroup::Type class_t Quad *quad = (*quad_it); if (!quad->detail()) { size_t count = 0; - count += fragment->add_vertex(quad->v0()-map_center, quad->normal(), false); - count += fragment->add_vertex(quad->v1()-map_center, quad->normal(), false); - count += fragment->add_vertex(quad->v2()-map_center, quad->normal(), false); - count += fragment->add_vertex(quad->v3()-map_center, quad->normal(), false); + count += fragment->add_vertex(quad->v0()-group_center, quad->normal(), false); + count += fragment->add_vertex(quad->v1()-group_center, quad->normal(), false); + count += fragment->add_vertex(quad->v2()-group_center, quad->normal(), false); + count += fragment->add_vertex(quad->v3()-group_center, quad->normal(), false); if (count == 4) model->model_quad_count++; } @@ -732,10 +739,10 @@ void MapFile::load_fragmentgroup(Model *model, const FragmentGroup::Type class_t Quad *quad = (*quad_it); if (quad->detail()) { size_t count = 0; - count += fragment->add_vertex(quad->v0()-map_center, quad->normal(), false); - count += fragment->add_vertex(quad->v1()-map_center, quad->normal(), false); - count += fragment->add_vertex(quad->v2()-map_center, quad->normal(), false); - count += fragment->add_vertex(quad->v3()-map_center, quad->normal(), false); + count += fragment->add_vertex(quad->v0()-group_center, quad->normal(), false); + count += fragment->add_vertex(quad->v1()-group_center, quad->normal(), false); + count += fragment->add_vertex(quad->v2()-group_center, quad->normal(), false); + count += fragment->add_vertex(quad->v3()-group_center, quad->normal(), false); if (count == 4) { model->model_quad_count++; model->model_quad_detail_count++; -- cgit v1.2.3