CARLA
 
载入中...
搜索中...
未找到
UtilActorFactory.cpp
浏览该文件的文档.
1// Copyright (c) 2023 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#include "UtilActorFactory.h"
8
9#include "Carla/Actor/ActorBlueprintFunctionLibrary.h" // 包含Actor蓝图函数库,用于创建和管理Actor定义
10#include "Carla/Util/EmptyActor.h" // 包含空Actor类,用于生成不可见的Actor
11#include "Carla/Game/CarlaEpisode.h" // 包含Carla游戏环节类,用于访问游戏世界信息
12
13// AUtilActorFactory类的方法,用于获取定义的Actor数组
14TArray<FActorDefinition> AUtilActorFactory::GetDefinitions()
15{
16 using ABFL = UActorBlueprintFunctionLibrary; // 使用别名ABFL简化UActorBlueprintFunctionLibrary的调用
17 // 使用Actor蓝图函数库创建一个通用的Actor定义
18 auto StaticMeshDefinition = ABFL::MakeGenericDefinition(
19 TEXT("util"), // Actor类别标识
20 TEXT("actor"), // Actor子类别标识
21 TEXT("empty")); // Actor名称
22
23 // 设置Actor定义对应的类为AEmptyActor,即空Actor
24 StaticMeshDefinition.Class = AEmptyActor::StaticClass();
25
26 // 返回包含空Actor定义的数组
27 return { StaticMeshDefinition };
28}
29
30// AUtilActorFactory类的方法,用于根据给定的变换和描述生成Actor
32 const FTransform &SpawnAtTransform, // 指定Actor生成的位置和方向
33 const FActorDescription &ActorDescription) // 指定Actor的描述信息
34{
35 using ABFL = UActorBlueprintFunctionLibrary; // 使用别名ABFL简化UActorBlueprintFunctionLibrary的调用
36 auto *World = GetWorld(); // 获取当前Actor工厂所在的世界
37 if (World == nullptr) // 如果世界为空,则无法生成Actor
38 {
39 UE_LOG(LogCarla, Error, TEXT("AUtilActorFactory: cannot spawn mesh into an empty world."));
40 return {}; // 返回空的Actor生成结果
41 }
42
43 // 设置Actor生成参数,覆盖碰撞处理方法,始终生成Actor
44 FActorSpawnParameters SpawnParameters;
45 SpawnParameters.SpawnCollisionHandlingOverride = ESpawnActorCollisionHandlingMethod::AlwaysSpawn;
46
47 // 在世界中生成AEmptyActor类型的Actor
48 auto *StaticMeshActor = World->SpawnActor<AEmptyActor>(
49 ActorDescription.Class, SpawnAtTransform, SpawnParameters);
50
51 // 返回Actor生成结果,包含生成的Actor指针
52 return FActorSpawnResult(StaticMeshActor);
53}
UE_LOG(LogCarla, Log, TEXT("UActorDispatcher::Destroying actor: '%s' %x"), *Id, Actor)
TSharedPtr< const FActorInfo > carla::rpc::ActorState UWorld * World
return FActorSpawnResult(StaticMeshActor)
TArray< FActorDefinition > GetDefinitions() final
获取静态网格体演员的定义
FActorSpawnResult SpawnActor(const FTransform &SpawnAtTransform, const FActorDescription &ActorDescription) final
在指定的位置生成一个演员