void CachedWidget::frameEntered(float dt) { MyGUI::IntSize size = getSize(); size.width = next_pot(size.width); size.height = next_pot(size.height); bool need_recreate = !m_target; if (!need_recreate) { if (size.width > m_target->getWidth()) need_recreate = true; if (size.height > m_target->getHeight()) need_recreate = true; } if (need_recreate) { if (m_target) { m_target->resize(size); } else { m_target = static_cast<mygui::RenderManager*>(MyGUI::RenderManager::getInstancePtr())->createTarget(size); } setRenderItemTexture(m_target->getTexture()); _updateView(); } else { if (!m_replaced_layer->isOutOfDate() && !m_render_content) return; } if (m_target) { m_target->begin(); Sandbox::Transform2d tr = m_target->graphics()->GetTransform(); m_target->graphics()->SetTransform(tr.translated(-getAbsoluteLeft(),-getAbsoluteTop()).translated(m_suboffset)); doRenderToTarget(m_target); m_target->graphics()->SetTransform(tr); m_target->end(); } }
void SkinItem::_setTextureName(const std::string& _texture) { mTextureName = _texture; mTexture = RenderManager::getInstance().getTexture(mTextureName); setRenderItemTexture(mTexture); }
void CachedWidget::initialiseOverride() { Base::initialiseOverride(); MyGUI::Gui::getInstance().eventFrameStart += MyGUI::newDelegate( this, &CachedWidget::frameEntered ); m_target = static_cast<mygui::RenderManager*>(MyGUI::RenderManager::getInstancePtr())->createTarget(getSize()); if (m_target) setRenderItemTexture(m_target->getTexture()); }
void SkinItem::_createSkinItem(ResourceSkin* _info) { mStateInfo = _info->getStateInfo(); // все что с текстурой можно тоже перенести в скин айтем и setRenderItemTexture mTextureName = _info->getTextureName(); mTexture = RenderManager::getInstance().getTexture(mTextureName); setRenderItemTexture(mTexture); std::string categoryName = SubWidgetManager::getInstance().getCategoryName(); // загружаем кирпичики виджета FactoryManager& factory = FactoryManager::getInstance(); for (VectorSubWidgetInfo::const_iterator iter = _info->getBasisInfo().begin(); iter != _info->getBasisInfo().end(); ++iter) { IObject* object = factory.createObject(categoryName, (*iter).type); if (object == nullptr) continue; ISubWidget* sub = object->castType<ISubWidget>(); sub->_setCroppedParent(static_cast<Widget*>(this)); sub->setCoord((*iter).coord); sub->setAlign((*iter).align); mSubSkinChild.push_back(sub); addRenderItem(sub); // ищем дефолтные сабвиджеты if (mMainSkin == nullptr) mMainSkin = sub->castType<ISubWidgetRect>(false); if (mText == nullptr) mText = sub->castType<ISubWidgetText>(false); } _setSkinItemState("normal"); }