コード例 #1
0
ファイル: Flash.cpp プロジェクト: smarmy/DPOC
void Flash::update()
{
  for (auto it = m_damageNumbers.begin(); it != m_damageNumbers.end();)
  {
    it->color.a = 255 - (2 * it->life);
    it->life++;
    if (it->life == 32)
    {
      it = m_damageNumbers.erase(it);
    }
    else
    {
      ++it;
    }
  }

  if (isFlashing())
  {
    m_ticks++;
    if (m_ticks >= m_speed)
    {
      m_currentFlash++;
      m_ticks = 0;
    }
  }

  if (isFading())
  {
    m_fadeCounter -= m_fadeSpeed;
  }

  if (activeEffect())
  {
    if (!m_activeEffect->complete())
    {
      m_activeEffect->update();
    }
    else
    {
      delete m_activeEffect;
      m_activeEffect = 0;
    }
  }
}
コード例 #2
0
FGAEffectHandle FGAActiveEffectContainer::AddActiveEffect(FGAEffectSpec& EffectIn, const FGAEffectContext& Ctx)
{
	FGAEffectHandle handle = FGAEffectHandle::GenerateHandle();
	TSharedPtr<FGAActiveDuration> tempPeriodic = MakeShareable(new FGAActiveDuration(Ctx, EffectIn, handle));
	tempPeriodic->ActivateEffect();

	FGAActiveEffect activeEffect(handle, EffectIn, Ctx.Target->GetWorld()->GetTimeSeconds(),
								EffectIn.UIData, EffectIn.EffectCue);

	activeEffect.Duration = EffectIn.EffectDuration.Duration;
	activeEffect.Period = EffectIn.EffectDuration.Period;

	RepActiveEffects.Add(activeEffect);


	ActiveEffects.Add(handle, tempPeriodic);

	return handle;
}