From 47ffe28504c436c22581d33cad196a97b74b3274 Mon Sep 17 00:00:00 2001 From: Respirant Date: Wed, 30 Dec 2020 15:31:23 +0300 Subject: [PATCH] add documentation and minor design changes --- .../Private/RuntimeFilesDownloaderBPLibrary.cpp | 3 +-- .../Public/RuntimeFilesDownloaderBPLibrary.h | 4 ++-- RuntimeFilesDownloader4260.zip | Bin 0 -> 15589 bytes 3 files changed, 3 insertions(+), 4 deletions(-) create mode 100644 RuntimeFilesDownloader4260.zip diff --git a/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Private/RuntimeFilesDownloaderBPLibrary.cpp b/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Private/RuntimeFilesDownloaderBPLibrary.cpp index 798a86e..3f67e35 100644 --- a/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Private/RuntimeFilesDownloaderBPLibrary.cpp +++ b/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Private/RuntimeFilesDownloaderBPLibrary.cpp @@ -27,7 +27,6 @@ URuntimeFilesDownloaderBPLibrary* URuntimeFilesDownloaderBPLibrary::CreateDownlo URuntimeFilesDownloaderBPLibrary* URuntimeFilesDownloaderBPLibrary::DownloadFile(const FString& URL, FString SavePath) { - URuntimeFilesDownloaderBPLibrary* Downloader = NewObject(); FileUrl = URL; FileSavePath = SavePath; @@ -45,7 +44,7 @@ URuntimeFilesDownloaderBPLibrary* URuntimeFilesDownloaderBPLibrary::DownloadFile return this; } -void URuntimeFilesDownloaderBPLibrary::OnReady(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful) +void URuntimeFilesDownloaderBPLibrary::OnReady_Internal(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful) { RemoveFromRoot(); Request->OnProcessRequestComplete().Unbind(); diff --git a/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Public/RuntimeFilesDownloaderBPLibrary.h b/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Public/RuntimeFilesDownloaderBPLibrary.h index 993b490..8858db1 100644 --- a/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Public/RuntimeFilesDownloaderBPLibrary.h +++ b/RuntimeFilesDownloader/Source/RuntimeFilesDownloader/Public/RuntimeFilesDownloaderBPLibrary.h @@ -72,11 +72,11 @@ public: * @return Returns itself. */ UFUNCTION(BlueprintCallable, Category = "RuntimeFilesDownloader") - URuntimeFilesDownloaderBPLibrary* DownloadFile(const FString & URL, FString SavePath); + URuntimeFilesDownloaderBPLibrary* DownloadFile_Internal(const FString & URL, FString SavePath); private: - void OnReady(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful); + void OnReady_Internal(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful); void OnProgress_Internal(FHttpRequestPtr Request, int32 BytesSent, int32 BytesReceived); }; diff --git a/RuntimeFilesDownloader4260.zip b/RuntimeFilesDownloader4260.zip new file mode 100644 index 0000000000000000000000000000000000000000..66495b0484c4714575e8476a0b66d9d19ac97ef9 GIT binary patch literal 15589 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 BE!Y46 literal 0 HcmV?d00001