Advertisement
Guest User

DamageNumberWidgetPoolManager.cpp

a guest
Dec 23rd, 2023
38
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. #include "Widgets/DamageNumberWidgetPoolManager.h"
  2.  
  3. UDamageNumberWidgetPoolManager::UDamageNumberWidgetPoolManager()
  4. {
  5. bWantsInitializeComponent = true;
  6. }
  7.  
  8. void UDamageNumberWidgetPoolManager::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
  9. {
  10. Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
  11.  
  12. for (UFloatingCombatText* Widget : ActiveWidgetPool)
  13. {
  14. Widget->UpdateLocation();
  15. }
  16. }
  17.  
  18. void UDamageNumberWidgetPoolManager::BeginPlay()
  19. {
  20. Super::BeginPlay();
  21. }
  22.  
  23. UFloatingCombatText* UDamageNumberWidgetPoolManager::GetFloatingCombatTextFromPool(const FText& InText, const FVector& InLocation, const FLinearColor& InColor, const FVector2D& InScale)
  24. {
  25. if (!InactiveWidgetPool.IsEmpty())
  26. {
  27. UFloatingCombatText* Widget = InactiveWidgetPool.Pop();
  28. Widget->SetPoolVariables(InText, InLocation, InColor, InScale);
  29. Widget->SetVisibility(ESlateVisibility::HitTestInvisible);
  30. ActiveWidgetPool.Add(Widget);
  31.  
  32. return Widget;
  33. }
  34.  
  35. UFloatingCombatText* NewWidget = CreateWidget<UFloatingCombatText>(GetWorld(), FloatingCombatTextClass);
  36. if (NewWidget)
  37. {
  38. NewWidget->AddToViewport();
  39. NewWidget->SetPoolVariables(InText, InLocation, InColor, InScale);
  40. NewWidget->PoolManager = this;
  41. ActiveWidgetPool.Add(NewWidget);
  42.  
  43. return NewWidget;
  44. }
  45.  
  46. return nullptr;
  47. }
  48.  
  49. void UDamageNumberWidgetPoolManager::ReturnFloatingCombatTextToPool(UFloatingCombatText* Widget)
  50. {
  51. ActiveWidgetPool.RemoveSingle(Widget);
  52. InactiveWidgetPool.Add(Widget);
  53. }
  54.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement