CARLA
 
载入中...
搜索中...
未找到
PrepareAssetsForCookingCommandlet.h
浏览该文件的文档.
1// Copyright (c) 2019 Computer Vision Center (CVC) at the Universitat Autonoma
2// de Barcelona (UAB).
3//
4// This work is licensed under the terms of the MIT license.
5// For a copy, see <https://opensource.org/licenses/MIT>.
6
7#pragma once
8
10#include "Commandlets/Commandlet.h"
11#include "Runtime/Engine/Classes/Engine/ObjectLibrary.h"
12#include "Runtime/Engine/Classes/Engine/StaticMeshActor.h"
13#include "AssetRegistry/AssetRegistryModule.h"
14#include "PrepareAssetsForCookingCommandlet.generated.h"
15
16// 取消定义此API以避免与UE 4.26发生冲突
17// (see UE_4.26\Engine\Source\Runtime\Core\Public\Windows\HideWindowsPlatformAtomics.h)
18#undef InterlockedCompareExchange
19#undef _InterlockedCompareExchange
20
21/// 包含带有 @a Name 的 Package 和 @a bOnlyPrepareMaps 标志的结构体,用于
22/// 在不同阶段分离地图和道具的烹饪过程(地图将在 make import 命令期间导入,而道具将在 make package 命令期间导入)
23USTRUCT()
24struct CARLA_API FPackageParams
25{
26 GENERATED_USTRUCT_BODY()
27
28 FString Name;
29
30 bool bOnlyPrepareMaps;
31};
32
33/// 包含从 .Package.json 文件中读取的地图数据的结构体
34USTRUCT()
35struct CARLA_API FMapData
36{
37 GENERATED_USTRUCT_BODY()
38
39 FString Name;
40
41 FString Path;
42
43 bool bUseCarlaMapMaterials;
44};
45
46/// 包含从 .Package.json 文件中读取的所有资产数据的结构
47USTRUCT()
48struct CARLA_API FAssetsPaths
49{
50 GENERATED_USTRUCT_BODY()
51
52 TArray<FMapData> MapsPaths;
53
54 TArray<FString> PropsPaths;
55};
56
57UCLASS()
59 : public UCommandlet
60{
61 GENERATED_BODY()
62
63public:
64
65 /// 默认构造函数
67#if WITH_EDITORONLY_DATA
68
69 ///解析通过 @a InParams 提供的命令行参数
70 FPackageParams ParseParams(const FString &InParams) const;
71
72 /// 将包含在 Carla BaseMap 中的 UWorld 对象加载到 @a AssetData 数据结构中
73 void LoadWorld(FAssetData &AssetData);
74
75 /// 将包含在 Carla BaseTile 中的 UWorld 对象加载到 @a AssetData 数据结构中
76 void LoadWorldTile(FAssetData &AssetData);
77
78 void LoadLargeMapWorld(FAssetData &AssetData);
79
80 ///在世界中生成位于 @a AssetsPaths 中的所有静态网格物体
81 /// 可以通过设置 @a bUseCarlaMaterials 来使用 Carla 材质
82 /// 否则它将使用RoadRunner材料
83 /// 如果网格被添加到PropsMap,请将@a bIsPropMap设置为true.
84 ///
85 ///@pre 世界预计已预先加载
86 TArray<AStaticMeshActor *> SpawnMeshesToWorld(
87 const TArray<FString> &AssetsPaths,
88 bool bUseCarlaMaterials,
89 int i = -1,
90 int j = -1);
91
92 /// 将当前包含在 @a AssetData 中的世界保存到 @a DestPath
93 /// 由@a PackageName 组成,并以@a WorldName 命名
94 bool SaveWorld(
95 FAssetData &AssetData,
96 const FString &PackageName,
97 const FString &DestPath,
98 const FString &WorldName,
99 bool bGenerateSpawnPoints = true);
100
101 ///销毁之前在 @a SpawnedActors 中存储的所有已生成的角色
102 void DestroySpawnedActorsInWorld(TArray<AStaticMeshActor *> &SpawnedActors);
103
104 ///获取与名称 @a PackageName 相关联的包中包含的所有资源的 Path
105 FAssetsPaths GetAssetsPathFromPackage(const FString &PackageName) const;
106
107 /// 生成提供的 @a AssetsPaths 和 @a PropsMapPath 的 MapPaths 文件
108 void GenerateMapPathsFile(const FAssetsPaths &AssetsPaths, const FString &PropsMapPath);
109
110 ///生成包含带有 @a PackageName 的包路径的 PackagePat 文件
111 void GeneratePackagePathFile(const FString &PackageName);
112
113 /// 对于@MapsPaths中包含的每个Map数据,它创建一个World,在世界中生成其actors,并将其以.umap格式保存到由@a PackageName构建的目标路径中。
114 void PrepareMapsForCooking(const FString &PackageName, const TArray<FMapData> &MapsPaths);
115
116 /// 对于@a PropsPaths中的所有道具,它创建一个单一的世界,在世界中生成所有道具,并将其以.umap格式保存到由@a PackageName和@a MapDestPath构建的目标路径中
117 void PreparePropsForCooking(FString &PackageName, const TArray<FString> &PropsPaths, FString &MapDestPath);
118
119 /// 如果资产之间有任何瓦片,则返回
120 bool IsMapInTiles(const TArray<FString> &AssetsPaths);
121
122public:
123
124 /// 命令let的主方法和入口,接受输入参数@a Params
125 virtual int32 Main(const FString &Params) override;
126
127#endif // WITH_EDITORONLY_DATA
128
129private:
130
131 /// 从任何对象库加载的资源
132 UPROPERTY()
133 TArray<FAssetData> AssetDatas;
134
135 /// 从任何对象库加载地图内容
136 UPROPERTY()
137 TArray<FAssetData> MapContents;
138
139 /// 用于加载对象库中的地图。加载的数据存储在AssetDatas中
140 UPROPERTY()
141 UObjectLibrary *MapObjectLibrary;
142
143 /// 用于在对象库中加载资源。加载的数据存储在 AssetDatas 中
144 UPROPERTY()
145 UObjectLibrary *AssetsObjectLibrary;
146
147 ///基础地图世界从Carla内容中加载
148 UPROPERTY()
149 UWorld *World;
150
151 /// 道路节点网格的替代材料
152 UPROPERTY()
153 UMaterialInstance *RoadNodeMaterial;
154
155 /// 用于道路路缘的材料
156 UPROPERTY()
157 UMaterialInstance *CurbNodeMaterialInstance;
158
159 /// 用于道路排水沟的材料
160 UPROPERTY()
161 UMaterialInstance *GutterNodeMaterialInstance;
162
163 ///中心车道标线的替代材料
164 UPROPERTY()
165 UMaterialInstance *MarkingNodeYellow;
166
167 /// 用于外部车道的标线材料
168 UPROPERTY()
169 UMaterialInstance *MarkingNodeWhite;
170
171 /// 地形节点的替代材料
172 UPROPERTY()
173 UMaterialInstance *TerrainNodeMaterialInstance;
174
175 /// 用于SidewalkNodes的解决方法材料
176 UPROPERTY()
177 UMaterialInstance *SidewalkNodeMaterialInstance;
178
179 /// 将@a Package 保存为 .umap 格式的文件,路径为 Unreal 内容文件夹内的 @a PackagePath
180 bool SavePackage(const FString &PackagePath, UPackage *Package) const;
181
182 ///获取在虚幻内容目录中找到的第一个 .Package.json 文件,文件名为
183 /// @a PackageName
184 FString GetFirstPackagePath(const FString &PackageName) const;
185
186};
TSharedPtr< const FActorInfo > carla::rpc::ActorState UWorld * World
包含从 .Package.json 文件中读取的所有资产数据的结构
包含从 .Package.json 文件中读取的地图数据的结构体
包含带有 Name 的 Package 和 bOnlyPrepareMaps 标志的结构体,用于 在不同阶段分离地图和道具的烹饪过程(地图将在 make import 命令期间导入,而道具将在 make...