void RenderSystem::receive(const ComponentAddedEvent<ParallaxComponent> ¶llaxComponentAddedEvent) { auto winSize = Director::getInstance()->getWinSize(); auto pc = parallaxComponentAddedEvent.component; auto director = Director::getInstance(); auto currentScene = director->getRunningScene(); auto gameLayer = currentScene->getChildByTag(GAME_LAYER); if(gameLayer) { //add the sprites for the parallax node if(pc->background_1 != nullptr && pc->background_2 != nullptr) { pc->background_1->setPosition(Vec2(winSize.width*0.5f, winSize.height*0.5f)); pc->background_2->setPosition(Vec2(winSize.width*1.5f, winSize.height*0.5f)); gameLayer->addChild(pc->background_1, Z_ORDER::PARALLAX_NODE_BACKGROUND); gameLayer->addChild(pc->background_2, Z_ORDER::PARALLAX_NODE_BACKGROUND); if (pc->foreground_1 != nullptr) { pc->foreground_1->setPosition(Vec2(winSize.width * 1.3f, winSize.height*0.6f)); gameLayer->addChild(pc->foreground_1, Z_ORDER::PARALLAX_NODE_FOREGROUND); } } } else CCLOG("[!] gameLayer: NULL REFERENCE, RenderSystem, parallaxComponentAddedEvent:"); }
void GameManager::changeScene(SceneType sceneType) { auto director = Director::getInstance(); Scene* scene = nullptr; switch(sceneType) { case SceneType::TITLE_SCENE: { scene = TitleScene::createScene(); break; } case SceneType::GAME_SCENE: { scene = GameScene::createScene(); break; } default: { CCASSERT(false, "no scene to take"); break; } } if(!director->getRunningScene()) { director->runWithScene(scene); } else { director->replaceScene(scene); } }
bool HelloWorldScene::init() { if (!ImGuiLayer::init()) return false; addImGui([this] { auto director = Director::getInstance(); auto runningScene = director->getRunningScene(); static bool alwaysShow = true; ImGui::SetNextWindowPos(ImVec2(200, 50), ImGuiSetCond_Once); ImGui::Begin(" Scene", &alwaysShow, ImVec2(director->getWindowSize().width - 400, director->getWindowSize().height - 172), 0.0f, ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize); ImGui::Text("%.1f FPS", ImGui::GetIO().Framerate); auto x = ImGui::GetWindowPos().x; auto y = ImGui::GetWindowPos().y; runningScene->setPosition(x, -y, 0.0); runningScene->setClipSize(Size(ImGui::GetWindowSize().x, ImGui::GetWindowSize().y)); ImGui::End(); ImGui::SetNextWindowPos(ImVec2(0, 100), ImGuiSetCond_Once); ImGui::Begin(" Hierarchy", &alwaysShow, ImVec2(200, director->getWindowSize().height - 172), 0.3f, ImGuiWindowFlags_ShowBorders | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize); for (auto & child : _children) ImGui::Selectable(child->getName().c_str()); ImGui::End(); }); auto defaultShader = DefaultShader::createWithFileName("shaders/shader.shader"); for (int i = 0; i < 3000; ++i) { auto cube = Model3D::createWithFile("res/default_cube.xml"); cube->setName("Cube" + std::to_string(i)); cube->setShaderProgram(defaultShader); cube->setPosition(RandomHelper::random_int(-800, 300), RandomHelper::random_int(-300, 300), RandomHelper::random_int(-300, 300)); cube->setRotation(RandomHelper::random_int(-300, 300), RandomHelper::random_int(-300, 300), RandomHelper::random_int(-300, 300)); cube->setScale(5, 5, 5); addChild(cube); } auto texture = TextureCache::getInstance().addImage("res/wood.png"); return true; }
Msg_Layer* Msg_Layer::createWithWidgetEx(const Color4B& color, const char *fileName, int type) { Msg_Layer * pLayer = NULL; Scene * pScene = getRunningScene(); if(pScene) { if((pLayer = Msg_Layer::createWithWidget(color, fileName, type))) { pScene->addChild(pLayer); } } return pLayer; }
Msg_Layer* Msg_Layer::createEx(const Color4B& color, int type) { Msg_Layer* pLayer = NULL; Scene* pScene = getRunningScene(); if(pScene) { if((pLayer = Msg_Layer::create(color, type))) { pScene->addChild(pLayer); } } return pLayer; }
void RenderSystem::receive(const EntityDestroyedEvent &entityDestroyedEvent) { auto entity = entityDestroyedEvent.entity; if (entity.has_component<SpriteComponent>() || entity.has_component<ProgressBarComponent>() || entity.has_component<ParallaxComponent>()) { auto director = Director::getInstance(); auto currentScene = director->getRunningScene(); auto gameLayer = currentScene->getChildByTag(GAME_LAYER); if (gameLayer) { if (entity.has_component<SpriteComponent>()) { auto spriteComponent = entity.component<SpriteComponent>(); auto sprite = spriteComponent->sprite; auto batchNode = gameLayer->getChildByTag(MAIN_SPRITEBATCHNODE); if (batchNode) { batchNode->removeChild(sprite); } else CCLOG("batchNode: NULL REFERENCE, RenderSystem, entityRemovedEvent"); } if (entity.has_component<ProgressBarComponent>()) { auto progressBarComponent = entity.component<ProgressBarComponent>(); gameLayer->removeChild(progressBarComponent->background); } if (entity.has_component<ParallaxComponent>()) { auto pn = entity.component<ParallaxComponent>(); gameLayer->removeChild(pn->background_1); gameLayer->removeChild(pn->background_2); //remove foreground if present if(pn->foreground_1 != nullptr) { gameLayer->removeChild(pn->foreground_1); } } } else CCLOG("gameLayer: NULL REFERENCE, RenderSystem, entityRemovedEvent"); } }
void RenderSystem::receive(const ComponentAddedEvent<ProgressBarComponent> &progressBarAddedEvent) { auto progressBarComponent = progressBarAddedEvent.component; auto director = Director::getInstance(); auto currentScene = director->getRunningScene(); auto gameLayer = currentScene->getChildByTag(GAME_LAYER); if (gameLayer) { auto contentSize = progressBarComponent->background->getContentSize(); progressBarComponent->progressBar->setPosition(Vec2(contentSize.width / 2, contentSize.height / 2)); progressBarComponent->background->addChild(progressBarComponent->progressBar); gameLayer->addChild(progressBarComponent->background); } else CCLOG("gameLayer: NULL REFERENCE, RenderSystem, spriteAddedEvent"); }
RenderTexture * CocosTools::captureNode(Node *target) { auto director = Director::getInstance(); if (target == nullptr) { target = director->getRunningScene(); } const Size &size = target->boundingBox().size; auto renderTexture = RenderTexture::create(size.width, size.height, Texture2D::PixelFormat::RGB888); renderTexture->beginWithClear(0.0f, 0.0f, 0.0f, 0.0f); target->setAnchorPoint(Point::ZERO); target->setPosition(Point::ZERO); target->visit(); renderTexture->end(); return renderTexture; }
void RenderSystem::receive(const ComponentAddedEvent<SpriteComponent> &spriteAddedEvent) { auto sprite = spriteAddedEvent.component->sprite; auto director = Director::getInstance(); auto currentScene = director->getRunningScene(); auto gameLayer = currentScene->getChildByTag(GAME_LAYER); if (gameLayer) { auto batchNode = gameLayer->getChildByTag(MAIN_SPRITEBATCHNODE); if (batchNode) { sprite->setEntity(spriteAddedEvent.entity); batchNode->addChild(sprite); } else CCLOG("batchNode: NULL REFERENCE, RenderSystem, spriteAddedEvent"); } else CCLOG("gameLayer: NULL REFERENCE, RenderSystem, spriteAddedEvent"); }
void BasicScene::onBackCallBack(Ref* pSender) { auto director = Director::getInstance(); director->getRunningScene()->cleanup(); director->popScene(); }