void RenderSystem::m_renderTileMapWithEntities() { auto tileMap = m_entityManager->systems.system <TileMapSystem> ()->getTileMap(); if (tileMap) { int layerCount = 0; auto& layers = tileMap->GetLayers(); for (auto& layer : layers) { layerCount++; if (layer.type == tmx::ObjectGroup) { for (auto& entity : m_renderableEntities) { GraphicsComponent::Handle gchandle = entity.component <GraphicsComponent> (); if (gchandle->renderOrder == layerCount) m_renderTarget.draw(gchandle->sprite); } } else { m_renderTarget.draw(layer); } } } else { for (auto& entity : m_renderableEntities) { GraphicsComponent::Handle gchandle = entity.component <GraphicsComponent> (); m_renderTarget.draw(gchandle->sprite); } } }
float SimpleScene::GetLowerZIndex() { std::vector<SimpleLayer*> layers = GetLayers(); float min = 10000.f; for (const auto& layer : layers) // access by reference to avoid copying (?) { min = std::fmin(min, layer->GetZ()); } return min; }
void BodymovinLoader::Load(const Json::Value& val, const std::string& dir) { auto sym_loader = std::make_shared<ee::SymbolLoader>(); auto spr_loader = std::make_shared<ee::SpriteLoader>(); auto sym = std::make_shared<s2::AnimSymbol>(); s2loader::BodymovinAnimLoader loader(*std::dynamic_pointer_cast<s2::AnimSymbol>(sym), sym_loader, spr_loader); loader.LoadJson(val, dir.c_str()); SetFpsSJ::Instance()->Set(sym->GetFPS()); ViewMgr::Instance()->toolbar->ChangeTemplateMode(true); DataMgr::Instance()->name = ""; DataMgr::Instance()->GetLayers().Clear(); ViewMgr::Instance()->library->Clear(); SetSelectedSJ::Instance()->Set(-1, -1); const auto& layers = sym->GetLayers(); for (int i = 0, n = layers.size(); i < n; ++i) { const auto& src_layer = layers[i]; Layer* dst_layer = new Layer; InsertLayerSJ::Instance()->Insert(dst_layer); SetSelectedSJ::Instance()->Set(0, 0); for (int j = 0, m = src_layer->frames.size(); j < m; ++j) { const auto& src_frame = src_layer->frames[j]; KeyFrame* dst_frame = new KeyFrame(src_frame->index); dst_frame->SetLayer(dst_layer); for (auto& spr : src_frame->sprs) { dst_frame->Insert(std::dynamic_pointer_cast<ee::Sprite>(spr->Clone()), INT_MAX); } dst_frame->SetClassicTween(src_frame->tween); dst_layer->InsertKeyFrame(dst_frame); dst_frame->RemoveReference(); } } ViewMgr::Instance()->library->LoadFromSymbolMgr(*ee::SymbolMgr::Instance()); SetSelectedSJ::Instance()->Set(0, 0); }