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(); }
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()); }