UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
AssetImportData.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
8#include "UObject/Object.h"
9#include "Misc/SecureHash.h"
10#include "AssetImportData.generated.h"
11
13USTRUCT()
15{
17
18#if WITH_EDITORONLY_DATA
19
21
22 FAssetImportInfo(const FAssetImportInfo& In) : SourceFiles(In.SourceFiles) { }
23 FAssetImportInfo& operator=(const FAssetImportInfo& In) { SourceFiles = In.SourceFiles; return *this; }
24
25 FAssetImportInfo(FAssetImportInfo&& In) : SourceFiles(MoveTemp(In.SourceFiles)) { }
26 FAssetImportInfo& operator=(FAssetImportInfo&& In) { SourceFiles = MoveTemp(In.SourceFiles); return *this; }
27
28 struct FSourceFile
29 {
30 FSourceFile() = default;
31
32 FSourceFile(FString InRelativeFilename, const FDateTime& InTimestamp = 0, const FMD5Hash& InFileHash = FMD5Hash(), const FString& InDisplayLabelName = FString())
35 , FileHash(InFileHash)
37 {}
38
40 FString RelativeFilename;
41
44
46 FMD5Hash FileHash;
47
49 FString DisplayLabelName;
50 };
51
53 ENGINE_API FString ToJson() const;
54
57
59 void Insert(const FSourceFile& InSourceFile) { SourceFiles.Add(InSourceFile); }
60
63
64#endif // WITH_EDITORONLY_DATA
65};
66
68
69/* todo: Make this class better suited to multiple import paths - maybe have FAssetImportInfo use a map rather than array? */
70UCLASS(EditInlineNew, MinimalAPI)
72{
73public:
75
76
77 virtual bool IsEditorOnly() const override { return true; }
78
79#if WITH_EDITOR
88 UFUNCTION(BlueprintCallable, Category = "AssetImportData")
89 ENGINE_API void ScriptedAddFilename(const FString& InPath, int32 Index, FString SourceFileLabel);
90#endif //WITH_EDITOR
91
92
93#if WITH_EDITORONLY_DATA
94
96 UPROPERTY()
98
100 UPROPERTY()
102
104 UPROPERTY(VisibleAnywhere, Category="File Path")
105 FAssetImportInfo SourceData;
106
107public:
108
111
113 ENGINE_API void Update(const FString& AbsoluteFilename, FMD5Hash *Md5Hash = nullptr);
114
115 //@third party BEGIN SIMPLYGON
117 ENGINE_API void Update(const FString& AbsoluteFileName, const FMD5Hash PreComputedHash);
118 //@third party END SIMPLYGON
119
121 ENGINE_API void UpdateFilenameOnly(const FString& InPath);
122
124 ENGINE_API void UpdateFilenameOnly(const FString& InPath, int32 Index);
125
127 ENGINE_API void AddFileName(const FString& InPath, int32 Index, FString SourceFileLabel = FString());
128
131
132#if WITH_EDITOR
133 UE_DEPRECATED(5.4, "Implement the version that takes FAssetRegistryTagsContext instead.")
134 virtual void AppendAssetRegistryTags(TArray<FAssetRegistryTag>& OutTags) {}
136 virtual void AppendAssetRegistryTags(FAssetRegistryTagsContext Context) {}
137
139 UFUNCTION(BlueprintCallable, meta=(DisplayName="GetFirstFilename", ScriptName="GetFirstFilename"), Category="AssetImportData")
140 ENGINE_API FString K2_GetFirstFilename() const;
141#endif
142 ENGINE_API FString GetFirstFilename() const;
143
145 const FAssetImportInfo& GetSourceData() const { return SourceData; }
146
148#if WITH_EDITOR
149 UFUNCTION(BlueprintCallable, meta=(DisplayName="ExtractFilenames", ScriptName="ExtractFilenames"), Category="AssetImportData")
150 ENGINE_API TArray<FString> K2_ExtractFilenames() const;
151#endif
154
156
157 int32 GetSourceFileCount() const { return SourceData.SourceFiles.Num(); }
158
160 static ENGINE_API FString ResolveImportFilename(const FString& InRelativePath, const UPackage* Outermost);
162
164 static ENGINE_API FString SanitizeImportFilename(const FString& InPath, const UPackage* Outermost);
165 static ENGINE_API FString SanitizeImportFilename(const FString& InPath, const FString& PackagePath);
166#if WITH_EDITOR
174 {
175 return false;
176 }
177#endif
178
179 ENGINE_API virtual void PostLoad() override;
180
182 ENGINE_API FString SanitizeImportFilename(const FString& InPath) const;
183
184protected:
185
187 ENGINE_API FString ResolveImportFilename(const FString& InRelativePath) const;
188
190 ENGINE_API virtual void Serialize(FStructuredArchive::FRecord Record) override;
191
192#endif // WITH_EDITORONLY_DATA
193};
194
195
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_BODY(...)
Definition ObjectMacros.h:765
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
#define USTRUCT(...)
Definition ObjectMacros.h:746
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
Definition AssetRegistryTagsContext.h:98
Definition StructuredArchiveSlots.h:144
Definition Array.h:670
Definition AssetImportData.h:72
Definition Object.h:95
Definition Package.h:216
U16 Index
Definition radfft.cpp:71
Definition AssetImportData.h:15
Definition DateTime.h:76
Definition SecureHash.h:133
Definition Optional.h:131