| 144 | } |
| 145 | |
| 146 | void Scene::clear() |
| 147 | { |
| 148 | if (m_resources) |
| 149 | { |
| 150 | m_resources->clean(); |
| 151 | } |
| 152 | for (auto& gameObject : m_gameObjectArray) |
| 153 | { |
| 154 | if (!gameObject->isPermanent()) |
| 155 | { |
| 156 | Debug::Log->debug("<Scene> Deleting GameObject {0}", gameObject->getId()); |
| 157 | gameObject->deleteObject(); |
| 158 | } |
| 159 | } |
| 160 | Debug::Log->debug("<Scene> Cleaning GameObject Array"); |
| 161 | m_gameObjectArray.erase( |
| 162 | std::remove_if(m_gameObjectArray.begin(), m_gameObjectArray.end(), |
| 163 | [](const std::unique_ptr<Script::GameObject>& ptr) { |
| 164 | return (!ptr->isPermanent()); |
| 165 | }), |
| 166 | m_gameObjectArray.end()); |
| 167 | Debug::Log->debug("<Scene> Cleaning Sprite Array"); |
| 168 | m_spriteArray.erase(std::remove_if(m_spriteArray.begin(), m_spriteArray.end(), |
| 169 | [this](const std::unique_ptr<Graphics::Sprite>& ptr) { |
| 170 | if (!ptr->getParentId().empty() |
| 171 | && this->doesGameObjectExists(ptr->getParentId())) |
| 172 | return false; |
| 173 | return true; |
| 174 | }), |
| 175 | m_spriteArray.end()); |
| 176 | Debug::Log->debug("<Scene> Cleaning Sprite Array"); |
| 177 | m_colliderArray.erase( |
| 178 | std::remove_if(m_colliderArray.begin(), m_colliderArray.end(), |
| 179 | [this](const std::unique_ptr<Collision::PolygonalCollider>& ptr) { |
| 180 | if (!ptr->getParentId().empty() |
| 181 | && this->doesGameObjectExists(ptr->getParentId())) |
| 182 | return false; |
| 183 | return true; |
| 184 | }), |
| 185 | m_colliderArray.end()); |
| 186 | Debug::Log->debug("<Scene> Clearing MapScript Array"); |
| 187 | m_scriptArray.clear(); |
| 188 | Debug::Log->debug("<Scene> Scene Cleared !"); |
| 189 | } |
| 190 | |
| 191 | vili::node Scene::dump() const |
| 192 | { |
no test coverage detected