Files
UnrealEngineUWP/Engine/Plugins/Editor/AssetSearch/Source/Public/SearchQuery.h
robert manuszewski 9bfc805d98 Fixing non-unity build
#rb trivial
#preflight none

#ROBOMERGE-AUTHOR: robert.manuszewski
#ROBOMERGE-SOURCE: CL 20434539 via CL 20435531 via CL 20435614
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v949-20362246)

[CL 20448541 by robert manuszewski in ue5-main branch]
2022-06-01 03:48:09 -04:00

75 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "HAL/CriticalSection.h"
#include "Misc/ScopeLock.h"
#include "UObject/TopLevelAssetPath.h"
struct FSearchRecord
{
FString AssetName;
FString AssetPath;
FTopLevelAssetPath AssetClass;
FString object_name;
FString object_path;
FString object_native_class;
FString property_name;
FString property_field;
FString property_class;
FString value_text;
FString value_hidden;
float Score;
};
class FSearchQuery : public TSharedFromThis<FSearchQuery, ESPMode::ThreadSafe>
{
public:
typedef TFunction<void(TArray<FSearchRecord>&&)> ResultsCallbackFunction;
FSearchQuery(FString InQueryText)
: QueryText(InQueryText)
{
}
const FString QueryText;
void SetResultsCallback(ResultsCallbackFunction InCallback)
{
FScopeLock ScopeLock(&CallbackCS);
Callback = InCallback;
}
void ClearResultsCallback()
{
FScopeLock ScopeLock(&CallbackCS);
Callback = ResultsCallbackFunction();
}
bool IsQueryStillImportant() const
{
return GetResultsCallback() ? true : false;
}
ResultsCallbackFunction GetResultsCallback() const
{
ResultsCallbackFunction LocalCallback;
{
FScopeLock ScopeLock(&CallbackCS);
LocalCallback = Callback;
}
return LocalCallback;
}
private:
ResultsCallbackFunction Callback;
mutable FCriticalSection CallbackCS;
};
typedef TSharedPtr<FSearchQuery, ESPMode::ThreadSafe> FSearchQueryPtr;
typedef TWeakPtr<FSearchQuery, ESPMode::ThreadSafe> FSearchQueryWeakPtr;