53 lines
1.5 KiB
C++
53 lines
1.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "DatasmithMaxProgressManager.h"
|
|
#include "DatasmithMaxExporterDefines.h"
|
|
#include "DatasmithMaxLogger.h"
|
|
|
|
#include "Windows/AllowWindowsPlatformTypes.h"
|
|
MAX_INCLUDES_START
|
|
#include "Max.h"
|
|
MAX_INCLUDES_END
|
|
|
|
DWORD WINAPI fn(LPVOID Arg)
|
|
{
|
|
return (0);
|
|
}
|
|
|
|
FDatasmithMaxProgressManager::FDatasmithMaxProgressManager()
|
|
: ProgressStart(0.f)
|
|
, ProgressEnd(100.f)
|
|
, ProgressBarCounter(1)
|
|
{
|
|
LPVOID Arg = 0;
|
|
FString emptyMsg("");
|
|
|
|
GetCOREInterface()->ProgressStart(*emptyMsg, TRUE, fn, Arg);
|
|
}
|
|
|
|
FDatasmithMaxProgressManager::~FDatasmithMaxProgressManager()
|
|
{
|
|
while (ProgressBarCounter--)
|
|
{
|
|
GetCOREInterface()->ProgressEnd();
|
|
}
|
|
}
|
|
|
|
void FDatasmithMaxProgressManager::SetMainMessage(const TCHAR* InProgressMessage)
|
|
{
|
|
LPVOID Arg = 0;
|
|
|
|
//Calling ProgressStart is the only way to change the main progress bar message without doing a whole UI (possibly a few seconds long) refresh.
|
|
GetCOREInterface()->ProgressStart(InProgressMessage, TRUE, fn, Arg);
|
|
++ProgressBarCounter;
|
|
}
|
|
|
|
void FDatasmithMaxProgressManager::ProgressEvent(float InProgressRatio, const TCHAR* InProgressString)
|
|
{
|
|
FString Msg;
|
|
int Progress = (int)(ProgressStart + (ProgressEnd - ProgressStart) * InProgressRatio);
|
|
Msg = TEXT("(") + FString::FromInt(Progress) + TEXT("%) ") + InProgressString;
|
|
GetCOREInterface()->ProgressUpdate(Progress, TRUE, *Msg.Left(255)); // Max doesn't allow for more than 256 characters (undocumented, but crashes)
|
|
}
|
|
|
|
#include "Windows/HideWindowsPlatformTypes.h" |