40 static void TagActor(
const AActor &Actor,
bool bTagForSemanticSegmentation);
49 static void TagActorsInLevel(UWorld &World,
bool bTagForSemanticSegmentation);
51 static void TagActorsInLevel(ULevel &Level,
bool bTagForSemanticSegmentation);
58 static void GetTagsOfTaggedActor(
const AActor &Actor, TSet<crp::CityObjectLabel> &Tags);
63 return (Tag == GetTagOfTaggedComponent(Component));
83 if (Object ==
nullptr)
87 return crp::CityObjectLabel::None;
89 const FString Path = Object->GetPathName();
90 TArray<FString> StringArray;
91 Path.ParseIntoArray(StringArray, TEXT(
"/"),
false);
92 if (!Path.StartsWith(TEXT(
"/Game/")))
98 for (int32 i = 1; i + 1 < StringArray.Num(); ++i)
100 if (StringArray[i] == TEXT(
"Static"))
103 if (PackLabel != crp::CityObjectLabel::None)
111 const int32 Primary = Path.Contains(
"UE5UseOnly") ? 5 : 4;
113 (StringArray.Num() > Primary ? GetLabelByFolderName(StringArray[Primary]) : crp::CityObjectLabel::None);
118 for (int32 i = StringArray.Num() - 2; i >= 0 && Label == crp::CityObjectLabel::None; --i)
120 Label = GetLabelByFolderName(StringArray[i]);
127 template <
typename T>
130 return GetLabelByPath(Object.Get());
134 static void SetStencilValue(UPrimitiveComponent &Component,
const uint32 ActorID,
146 virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
override;
151 UPROPERTY(Category =
"Tagger", EditAnywhere)
152 bool bTriggerTagObjects = false;
154 UPROPERTY(Category = "Tagger", EditAnywhere)
155 bool bTagForSemanticSegmentation = false;