Exemplo n.º 1
0
void RenderSystem::receive(const ComponentAddedEvent<ParallaxComponent> &parallaxComponentAddedEvent)
{
    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:");
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 4
0
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;
}
Exemplo n.º 5
0
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;
}
Exemplo n.º 6
0
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");
	}
}
Exemplo n.º 7
0
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");
}
Exemplo n.º 8
0
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;
}
Exemplo n.º 9
0
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");
}
Exemplo n.º 10
0
void BasicScene::onBackCallBack(Ref* pSender)
{
	auto director = Director::getInstance();
	director->getRunningScene()->cleanup();
	director->popScene();
}