void Scene::addObject(ObjectPtr pObject) { SIACheckRet(!pObject.get()); SIAAssert(m_pGameLayer); auto pEntity = pObject->entity(); SIAAssert(pEntity); m_modelController.addCommand(std::make_shared<Commands::AddEntity>(pEntity), [pObject, this] () { auto pView = pObject->view(); SIAAssert(pView); m_pGameLayer->addGameView(pView); m_pObjects.push_back(pObject); SIADebug("Added object on scene."); }, nullptr); }
void Scene::eraseObject(ObjectPtr pObject) { SIACheckRet(!pObject); SIAAssert(m_pGameLayer); auto pEntity = pObject->entity(); SIAAssert(pEntity); m_modelController.addCommand(std::make_shared<Commands::EraseEntity>(pEntity), [pObject, this] () { auto pView = pObject->view(); SIAAssert(pView); m_pGameLayer->eraseGameView(pView); m_pObjects.erase(std::remove_if(m_pObjects.begin(), m_pObjects.end(), [&pObject] (ObjectPtr& pObj) { return pObject.get() == pObj.get(); }), m_pObjects.end()); SIADebug("Removed object from scene."); }, nullptr); }