mirror of
https://github.com/sinbad/StevesUEHelpers.git
synced 2025-02-23 09:35:25 +00:00
Consistent 0.5s update frequency on input images regardless of number of events
This commit is contained in:
parent
44f83c1f18
commit
2e841e3e3d
@ -15,6 +15,7 @@ TSharedRef<SWidget> UInputImage::RebuildWidget()
|
||||
bSubbedToInputEvents = true;
|
||||
GS->OnInputModeChanged.AddUniqueDynamic(this, &UInputImage::OnInputModeChanged);
|
||||
GS->OnButtonInputModeChanged.AddUniqueDynamic(this, &UInputImage::OnInputModeChanged);
|
||||
GS->OnAxisInputModeChanged.AddUniqueDynamic(this, &UInputImage::OnInputModeChanged);
|
||||
}
|
||||
UpdateImage();
|
||||
|
||||
@ -25,11 +26,12 @@ void UInputImage::OnInputModeChanged(int ChangedPlayerIdx, EInputMode InputMode)
|
||||
{
|
||||
if (ChangedPlayerIdx == PlayerIndex)
|
||||
{
|
||||
// Delay update, in case multiple received in short succession
|
||||
MarkImageDirty();
|
||||
// auto GS = GetStevesGameSubsystem(GetWorld());
|
||||
// UE_LOG(LogTemp, Warning, TEXT("Updating image for input mode change: %s Button device: %s"),
|
||||
// *UEnum::GetValueAsString(InputMode),
|
||||
// *UEnum::GetValueAsString(GS->GetLastInputButtonPressed(ChangedPlayerIdx)));
|
||||
UpdateImage();
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,6 +50,7 @@ void UInputImage::BeginDestroy()
|
||||
{
|
||||
GS->OnInputModeChanged.RemoveAll(this);
|
||||
GS->OnButtonInputModeChanged.RemoveAll(this);
|
||||
GS->OnAxisInputModeChanged.RemoveAll(this);
|
||||
}
|
||||
}
|
||||
|
||||
@ -104,4 +107,15 @@ void UInputImage::UpdateImage()
|
||||
SetBrushFromAtlasInterface(Sprite, true);
|
||||
}
|
||||
}
|
||||
DelayedUpdateImageTimer.Invalidate();
|
||||
}
|
||||
|
||||
void UInputImage::MarkImageDirty()
|
||||
{
|
||||
if (!DelayedUpdateImageTimer.IsValid())
|
||||
{
|
||||
// Delayed update
|
||||
GetWorld()->GetTimerManager().SetTimer(DelayedUpdateImageTimer, this, &UInputImage::UpdateImage, 0.5f);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -154,7 +154,7 @@ public:
|
||||
}
|
||||
|
||||
}
|
||||
TimeUntilNextSpriteCheck = 0.25f;
|
||||
TimeUntilNextSpriteCheck = 0.5f;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
@ -40,6 +40,8 @@ protected:
|
||||
UUiTheme* CustomTheme;
|
||||
|
||||
bool bSubbedToInputEvents = false;
|
||||
|
||||
FTimerHandle DelayedUpdateImageTimer;
|
||||
public:
|
||||
|
||||
/// Tell this image to display the bound action for the current input method
|
||||
@ -78,6 +80,7 @@ public:
|
||||
protected:
|
||||
|
||||
virtual TSharedRef<SWidget> RebuildWidget() override;
|
||||
virtual void MarkImageDirty();
|
||||
virtual void UpdateImage();
|
||||
|
||||
UFUNCTION()
|
||||
|
Loading…
x
Reference in New Issue
Block a user