コード例 #1
0
	void MultiText::set_text(const String& text)
	{
		// hold temporary pointer to the used font
		// this is so we won't get unnecessary font reloads when changing text
		ManagedResources::ManagedFontPtr font;
		if (m_lines.size() > 0)
		{
			font = m_lines[0]->get_font();
		}

		// clear previous lines
		for (unsigned int i = 0; i < m_lines.size(); ++i)
		{
			m_lines[i]->__change_parent(nullptr);
		}
		m_lines.clear();
		m_node->clear();

		// loop over the string split by \n character
		std::istringstream f(text);
		String current;    
		while (getline(f, current, '\n')) {
			
			// create the text line
			TextPtr text = TextPtr(new Text(Entity::m_renderer, m_font, current, m_font_size));
			text->__change_parent(m_node.get());
			text->set_static(m_static);
			m_lines.push_back(text);
		}

		// required text positioning
		m_need_text_positioning = true;
		transformations_update();
	}
コード例 #2
0
void TutorialLevel::update(){
    if (Menu::isNewLevel()) {
        float pixelDensityX = (float)Global::FbWidth / Global::ScreenWidth;
        levelTitle = TextPtr(new Text("Level1", glm::vec4(0, 0, 0, 1), glm::vec3(-0.5, 0, 0), "FourPixel", 75));
        
        levelTitle->setPosition(glm::vec3(0-levelTitle->getTextWidth()/2.0/pixelDensityX + .05, 0, 0)); 
        PTR_CAST(TextRender, RenderEngine::getRenderElement("text"))->addText(levelTitle);
        Menu::setNewLevel(false);
    }

    if(debugPlayer->isActive()){
        ASSERT(getCamera("Camera1") != getCamera("DebugCamera"), "Equal camera");
        setMainCamera("DebugCamera");
        getCamera("Camera1")->fix();
    }
    else if(cinematicPlayer->isActive() && includeCinema){
        ASSERT(getCamera("Camera1") != getCamera("CinematicCamera"), "Equal camera");
        setMainCamera("CinematicCamera");
        setCullingCamera("CinematicCamera");
        player->setActive(false);
    }
    else{
        player->setActive(true);
        setMainCamera("Camera1");
        setCullingCamera("Camera1");
        getCamera("Camera1")->fix(false, true, false);
    }
    timer += TimeManager::getDeltaTime() / 15.0;
    //l1->setDirection(glm::vec3(20.0 * sin(timer * 3.1), 5.0 * sin(timer * 3.4 + 5.0) + 30.0, 20.0 * sin(timer * 3.8 + 2.0)));
    //l1->setPosition(gridCenter + l1->getDirection()*1.0f);
    //l1->setViewMatrix(glm::lookAt(
    //    gridCenter + l1->getDirection(),
    //    gridCenter, glm::vec3(0, 1, 0)));

    // gridCenter + l1->getDirection(),
    // gridCenter, glm::vec3(0, 1, 0)));
    if (!Menu::isActive()) {
        glm::vec4 titleColor = levelTitle->getColor();
        if(titleColor.w > 0){
            titleColor.w -= (float)TimeManager::getDeltaTime() * 0.3f;
            levelTitle->setColor(titleColor);
        }
        if (Menu::isNovice() && !cinematicPlayer->isActive()) {
            RenderEngine::removeRenderElement("text");
            RenderEngine::addRenderElement("text", RenderElementPtr(new TextRender()), 10);
            glfwSetInputMode(Global::window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
            RenderEngine::toggleElementsForMenu();
            Menu::displayPage("UserGuide");
            Menu::setNovice(false);
        }
        if(Menu::getCurrentPage() == "UserGuide") {
            player->setActive(false);
        } else {
            player->setActive(true);
        }
    }

    if(player->getPosition().y <= resetHeight){
            LevelManager::resetLevel();
    }

    sky->loadIdentity();
    sky->scale(glm::vec3(-90.0f,-90.0f,-90.0f));
    sky->translate(Director::getScene()->getCamera()->getEye());
}