QScriptValue toScriptValueComponentMap(QScriptEngine *engine, const Entity::ComponentMap &components) { // Expose the set of components as a JavaScript _associative_ array. (array[component1Id] = component11, etc.) QScriptValue obj = engine->newObject(); Entity::ComponentMap::const_iterator iter = components.begin(); while(iter != components.end()) { if ((*iter).second) obj.setProperty((*iter).first, engine->newQObject((*iter).second.get())); ++iter; } return obj; }
void ECBrowser::RemoveEntity(EntityPtr entity) { if (!entity) return; for(EntityWeakPtrList::iterator iter = entities_.begin(); iter != entities_.end(); ++iter) if (iter->lock() == entity) { EntityPtr ent_ptr = iter->lock(); disconnect(entity.get(), SIGNAL(ComponentAdded(IComponent*, AttributeChange::Type)), this, SLOT(OnComponentAdded(IComponent*, AttributeChange::Type))); disconnect(entity.get(), SIGNAL(ComponentRemoved(IComponent*, AttributeChange::Type)), this, SLOT(OnComponentRemoved(IComponent*, AttributeChange::Type))); const Entity::ComponentMap components = ent_ptr->Components(); for (Entity::ComponentMap::const_iterator i = components.begin(); i != components.end(); ++i) RemoveComponentFromGroup(i->second); entities_.erase(iter); break; }
void ECBrowser::RemoveEntity(const EntityPtr &entity) { if (!entity) return; EntityMap::iterator iter = entities_.find(entity->Id()); if (iter != entities_.end()) { Entity *entity = iter->second.lock().get(); if (entity) { disconnect(entity, SIGNAL(ComponentAdded(IComponent*, AttributeChange::Type)), this, SLOT(OnComponentAdded(IComponent*, AttributeChange::Type))); disconnect(entity, SIGNAL(ComponentRemoved(IComponent*, AttributeChange::Type)), this, SLOT(OnComponentRemoved(IComponent*, AttributeChange::Type))); const Entity::ComponentMap components = entity->Components(); for (Entity::ComponentMap::const_iterator i = components.begin(); i != components.end(); ++i) RemoveComponentFromGroup(i->second); } entities_.erase(iter); }