ScreenshotUtility.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. // Copyright 2022 RLoris
  2. #pragma once
  3. #include "CoreMinimal.h"
  4. #include "Engine/Texture2D.h"
  5. #include "Kismet/BlueprintAsyncActionBase.h"
  6. #include "ScreenshotUtility.generated.h"
  7. DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOutputPin, UTexture2D*, Screenshot, FString, Path);
  8. UCLASS()
  9. class FILEHELPER_API UScreenshotUtility : public UBlueprintAsyncActionBase
  10. {
  11. GENERATED_BODY()
  12. public:
  13. UPROPERTY(BlueprintAssignable)
  14. FOutputPin Completed;
  15. UPROPERTY(BlueprintAssignable)
  16. FOutputPin Failed;
  17. public:
  18. UFUNCTION(BlueprintCallable, meta = (BlueprintInternalUseOnly = "true", WorldContext = "WorldContextObject", Keywords = "File plugin screenshot save load texture", ToolTip = "Take a screenshot, save and load it"), Category = "Screenshot")
  19. static UScreenshotUtility* TakeScreenshot(UObject* WorldContextObject, FString Filename, bool PrefixTimestamp = true, bool ShowUI = false);
  20. virtual void Activate() override;
  21. private:
  22. UFUNCTION()
  23. void _Completed(const FString Path);
  24. void _Failed();
  25. void CreateScreenshotWithoutUI(const FString& FinalName);
  26. private:
  27. const UObject* WorldContextObject = nullptr;
  28. bool Active = false;
  29. FString Filename;
  30. bool PrefixTimestamp = true;
  31. bool ShowUI = false;
  32. UPROPERTY()
  33. UTexture2D* ScreenshotTexture;
  34. };