A modded EditSaber for making beat saber maps.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

100 lines
4.0 KiB

#include "ZipUtilityPrivatePCH.h"
#include "ZipFileFunctionLibrary.h"
#include "SevenZipCallbackHandler.h"
void SevenZipCallbackHandler::OnProgress(const TString& archivePath, uint64 bytes)
{
const UObject* interfaceDelegate = ProgressDelegate;
const uint64 bytesConst = bytes;
const FString pathConst = FString(archivePath.c_str());
if (bytes > 0) {
const float ProgressPercentage = ((double)((TotalBytes)-(BytesLeft - bytes)) / (double)TotalBytes) * 100;
UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, ProgressPercentage, bytesConst]
{
//UE_LOG(LogClass, Log, TEXT("Progress: %d bytes"), progress);
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnProgress((UObject*)interfaceDelegate, pathConst, ProgressPercentage, bytesConst);
});
}
}
void SevenZipCallbackHandler::OnDone(const TString& archivePath)
{
const UObject* interfaceDelegate = ProgressDelegate;
const FString pathConst = FString(archivePath.c_str());
UZipFileFunctionLibrary::RunLambdaOnGameThread([pathConst, interfaceDelegate]
{
//UE_LOG(LogClass, Log, TEXT("All Done!"));
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnDone((UObject*)interfaceDelegate, pathConst, EZipUtilityCompletionState::SUCCESS);
});
}
void SevenZipCallbackHandler::OnFileDone(const TString& archivePath, const TString& filePath, uint64 bytes)
{
const UObject* interfaceDelegate = ProgressDelegate;
const FString pathConst = FString(archivePath.c_str());
const FString filePathConst = FString(filePath.c_str());
const uint64 bytesConst = bytes;
UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, filePathConst, bytesConst]
{
//UE_LOG(LogClass, Log, TEXT("File Done: %s, %d bytes"), filePathConst.c_str(), bytesConst);
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnFileDone((UObject*)interfaceDelegate, pathConst, filePathConst);
});
//Handle byte decrementing
if (bytes > 0) {
BytesLeft -= bytes;
const float ProgressPercentage = ((double)(TotalBytes - BytesLeft) / (double)TotalBytes) * 100;
UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, ProgressPercentage, bytes]
{
//UE_LOG(LogClass, Log, TEXT("Progress: %d bytes"), progress);
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnProgress((UObject*)interfaceDelegate, pathConst, ProgressPercentage, bytes);
});
}
}
void SevenZipCallbackHandler::OnStartWithTotal(const TString& archivePath, unsigned __int64 totalBytes)
{
TotalBytes = totalBytes;
BytesLeft = TotalBytes;
const UObject* interfaceDelegate = ProgressDelegate;
const uint64 bytesConst = TotalBytes;
const FString pathConst = FString(archivePath.c_str());
UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathConst, bytesConst]
{
//UE_LOG(LogClass, Log, TEXT("Starting with %d bytes"), bytesConst);
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnStartProcess((UObject*)interfaceDelegate, pathConst, bytesConst);
});
}
void SevenZipCallbackHandler::OnFileFound(const TString& archivePath, const TString& filePath, int size)
{
const UObject* interfaceDelegate = ProgressDelegate;
const uint64 bytesConst = TotalBytes;
const FString pathString = FString(archivePath.c_str());
const FString fileString = FString(filePath.c_str());
UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathString, fileString, bytesConst]
{
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnFileFound((UObject*)interfaceDelegate, pathString, fileString, bytesConst);
});
}
void SevenZipCallbackHandler::OnListingDone(const TString& archivePath)
{
const UObject* interfaceDelegate = ProgressDelegate;
const FString pathString = FString(archivePath.c_str());
UZipFileFunctionLibrary::RunLambdaOnGameThread([interfaceDelegate, pathString]
{
((IZipUtilityInterface*)interfaceDelegate)->Execute_OnDone((UObject*)interfaceDelegate, pathString, EZipUtilityCompletionState::SUCCESS);
});
}
bool SevenZipCallbackHandler::OnCheckBreak()
{
return bCancelOperation;
}