void HierarchyLoadLink::create_recursive(kernel::Model *m, kernel::ParticleIndex root, kernel::ParticleIndex cur, RMF::NodeConstHandle name, kernel::ParticleIndexes rigid_bodies, Data &data) { set_association(name, m->get_particle(cur)); unsigned int state = get_coords_state(name, intermediate_particle_factory_, reference_frame_factory_); data.load_static.setup_particle(name, m, cur, rigid_bodies); data.load_local_coordinates.setup_particle(name, state, m, cur, rigid_bodies); data.load_static_coordinates.setup_particle(name, state, m, cur, rigid_bodies); data.load_global_coordinates.setup_particle(name, state, m, cur, rigid_bodies); if (core::RigidBody::get_is_setup(m, cur)) { rigid_bodies.push_back(cur); } RMF::NodeConstHandles ch = name.get_children(); for (unsigned int i = 0; i < ch.size(); ++i) { if (ch[i].get_type() == RMF::REPRESENTATION) { kernel::ParticleIndex child = m->add_particle(ch[i].get_name()); atom::Hierarchy(m, cur) .add_child(atom::Hierarchy::setup_particle(m, child)); create_recursive(m, root, child, ch[i], rigid_bodies, data); } } do_setup_particle(m, root, cur, name); }
IMPATOM_BEGIN_NAMESPACE void CenterOfMass::do_setup_particle(Model *m, ParticleIndex pi, const ParticleIndexes &pis) { Refiner *refiner = new core::FixedRefiner(IMP::get_particles(m, pis)); do_setup_particle(m, pi, refiner); }