Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Widgets/DamageNumberWidgetPoolManager.h"
- UDamageNumberWidgetPoolManager::UDamageNumberWidgetPoolManager()
- {
- bWantsInitializeComponent = true;
- }
- void UDamageNumberWidgetPoolManager::TickComponent(float DeltaTime, ELevelTick TickType, FActorComponentTickFunction* ThisTickFunction)
- {
- Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
- for (UFloatingCombatText* Widget : ActiveWidgetPool)
- {
- Widget->UpdateLocation();
- }
- }
- void UDamageNumberWidgetPoolManager::BeginPlay()
- {
- Super::BeginPlay();
- }
- UFloatingCombatText* UDamageNumberWidgetPoolManager::GetFloatingCombatTextFromPool(const FText& InText, const FVector& InLocation, const FLinearColor& InColor, const FVector2D& InScale)
- {
- if (!InactiveWidgetPool.IsEmpty())
- {
- UFloatingCombatText* Widget = InactiveWidgetPool.Pop();
- Widget->SetPoolVariables(InText, InLocation, InColor, InScale);
- Widget->SetVisibility(ESlateVisibility::HitTestInvisible);
- ActiveWidgetPool.Add(Widget);
- return Widget;
- }
- UFloatingCombatText* NewWidget = CreateWidget<UFloatingCombatText>(GetWorld(), FloatingCombatTextClass);
- if (NewWidget)
- {
- NewWidget->AddToViewport();
- NewWidget->SetPoolVariables(InText, InLocation, InColor, InScale);
- NewWidget->PoolManager = this;
- ActiveWidgetPool.Add(NewWidget);
- return NewWidget;
- }
- return nullptr;
- }
- void UDamageNumberWidgetPoolManager::ReturnFloatingCombatTextToPool(UFloatingCombatText* Widget)
- {
- ActiveWidgetPool.RemoveSingle(Widget);
- InactiveWidgetPool.Add(Widget);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement