Example #1
0
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);
}
Example #2
0
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);
}