Пример #1
0
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();
	}
}
Пример #2
0
void UHealthBar::AddToCreep()
{
	if (!GetIsVisible())
	{
		AddToViewport();
	}
	
	ABasicCreep *creep = Cast<ABasicCreep>(GetOwningPlayerPawn());
	if (creep)
	{
		hp = (float)creep->GetHP() / (float)creep->GetHP();

	}
}
Пример #3
0
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();
	}
}
Пример #4
0
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);
}