void ObjectManager::post_message(const ObjectID& target, const Message_CPtr& msg) { std::map<ObjectID,Object>::iterator it = m_objects.find(target); if(it == m_objects.end()) throw Exception("Invalid object ID: " + target.to_string()); Object& obj = it->second; for(Object::iterator jt=obj.begin(), jend=obj.end(); jt!=jend; ++jt) { msg->dispatch(jt->second.get()); } }
std::vector<IObjectComponent_Ptr> ObjectManager::get_components(const ObjectID& id) { std::map<ObjectID,Object>::iterator it = m_objects.find(id); if(it == m_objects.end()) throw Exception("Invalid object ID: " + id.to_string()); Object& object = it->second; std::vector<IObjectComponent_Ptr> components; for(Object::const_iterator jt=object.begin(), jend=object.end(); jt!=jend; ++jt) { components.push_back(jt->second); } return components; }