SharedModel(shared_ptr<IStorm3D_Model> model_, shared_ptr<IStorm3D_Model> fadeModel_, const std::string &bones_, const std::string &idleAnimation_) : model(model_), fadeModel(fadeModel_), bones(bones_), idleAnimation(idleAnimation_), radius(0), radius2d(0) { boost::scoped_ptr<Iterator<IStorm3D_Model_Object *> > objectIterator(model->ITObject->Begin()); for(; !objectIterator->IsEnd(); objectIterator->Next()) { IStorm3D_Model_Object *object = objectIterator->GetCurrent(); if(!object) continue; IStorm3D_Mesh *mesh = object->GetMesh(); if(!mesh) continue; VC3 objectPosition = object->GetPosition(); float objectDistance = objectPosition.GetLength(); float distance = objectDistance + mesh->GetRadius(); if(distance > radius) radius = distance; float meshRadius = mesh->GetRadius(); if(meshRadius + objectDistance > radius2d) radius2d = meshRadius + objectDistance; } if(!bones.empty()) model->LoadBones(bones.c_str()); }