void TextGroup::AttachPage(TextPageWeakPtr page, bool updateRendererState) { auto ptr = page.lock(); if (ptr == nullptr) return; mTextPageList.push_back(page); if (updateRendererState && ptr->GetIsVisible() && mRenderer->GetActiveTextGroup().lock().get() == this) { mRenderer->InvalidateShaderBuffer(); } }
void UHealthBar::AddToCreep() { if (!GetIsVisible()) { AddToViewport(); } ABasicCreep *creep = Cast<ABasicCreep>(GetOwningPlayerPawn()); if (creep) { hp = (float)creep->GetHP() / (float)creep->GetHP(); } }
void TextGroup::DetachPage(TextPageWeakPtr page, bool updateRendererState) { auto ptr = page.lock(); if (ptr == nullptr) return; int removeCount = 0; std::remove_if(mTextPageList.begin(), mTextPageList.end(), [ptr, &removeCount](TextPageWeakPtr a)->bool { if (a.lock() == ptr) { ++removeCount; return true; } return false; }); if (updateRendererState && removeCount > 0 && ptr->GetIsVisible() && mRenderer->GetActiveTextGroup().lock().get() == this) { mRenderer->InvalidateShaderBuffer(); } }
void CGuiModel::Draw(const CGuiWidgetDrawParms& parms) const { CGraphics::SetModelMatrix(x34_worldXF); if (!xb8_model) return; if (!GetIsFinishedLoading()) return; const CModel* model = xb8_model.GetObj(); if (!model) return; if (GetIsVisible()) { zeus::CColor moduCol = xa8_color2; moduCol.a() *= parms.x0_alphaMod; xb0_frame->EnableLights(xcc_lightMask, const_cast<CBooModel&>(model->GetInstance())); // if (xb6_29_cullFaces) // CGraphics::SetCullMode(ERglCullMode::Front); switch (xac_drawFlags) { case EGuiModelDrawFlags::Shadeless: { CModelFlags flags(0, 0, 3, zeus::skWhite); flags.m_extendedShader = EExtendedShader::Flat; model->Draw(flags); break; } case EGuiModelDrawFlags::Opaque: { CModelFlags flags(1, 0, 3, moduCol); flags.m_extendedShader = EExtendedShader::Lighting; model->Draw(flags); break; } case EGuiModelDrawFlags::Alpha: { CModelFlags flags(5, 0, (u32(xb7_24_depthWrite) << 1) | u32(xb6_31_depthTest), moduCol); flags.m_noCull = !xb6_29_cullFaces; flags.m_noZWrite = !xb7_24_depthWrite; model->Draw(flags); break; } case EGuiModelDrawFlags::Additive: { CModelFlags flags(7, 0, (u32(xb7_24_depthWrite) << 1) | u32(xb6_31_depthTest), moduCol); flags.m_noCull = !xb6_29_cullFaces; flags.m_noZWrite = !xb7_24_depthWrite; flags.m_depthGreater = xb6_30_depthGreater; model->Draw(flags); break; } case EGuiModelDrawFlags::AlphaAdditiveOverdraw: { CModelFlags flags(5, 0, xb6_31_depthTest, moduCol); flags.m_noCull = !xb6_29_cullFaces; flags.m_noZWrite = !xb7_24_depthWrite; model->Draw(flags); flags.x0_blendMode = 7; flags.x1_matSetIdx = 0; flags.x2_flags = (u32(xb7_24_depthWrite) << 1) | u32(xb6_31_depthTest); flags.x4_color = moduCol; flags.m_noCull = !xb6_29_cullFaces; model->Draw(flags); break; } default: break; } // if (xb6_29_cullFaces) // CGraphics::SetCullMode(ERglCullMode::None); xb0_frame->DisableLights(); } CGuiWidget::Draw(parms); }