Files
UnrealEngine/Engine/Source/Editor/UnrealEd/Public/WorldPersistentFolders.h
2025-05-18 13:04:45 +08:00

40 lines
1.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "ActorFolder.h"
#include "Folder.h"
#include "WorldFoldersImplementation.h"
class ULevel;
// Class handling a list of actor folder objects of a world
class FWorldPersistentFolders : public FWorldFoldersImplementation
{
typedef FWorldFoldersImplementation Super;
public:
FWorldPersistentFolders(UWorldFolders& InWorldFolders);
virtual ~FWorldPersistentFolders() {}
UNREALED_API static UActorFolder* GetActorFolder(const FFolder& InFolder, UWorld* InWorld, bool bInAllowCreate = false);
//~ Begin FWorldFoldersImplementation
virtual bool AddFolder(const FFolder& InFolder) override;
virtual bool RemoveFolder(const FFolder& InFolder, bool bShouldDeleteFolder) override;
virtual bool RenameFolder(const FFolder& InOldFolder, const FFolder& InNewFolder) override;
virtual bool ContainsFolder(const FFolder& InFolder) const override;
//~ End FWorldFoldersImplementation
private:
static UActorFolder* CreateActorFolder(const FFolder& InFolder, UWorld* InWorld);
static ULevel* GetRootObjectContainer(const FFolder& InFolder, UWorld* InWorld);
void ModifyFolderAndDetectChanges(ULevel* InLevel, const FFolder::FRootObject& InRootObject, TFunctionRef<void()> Operation);
bool IsUsingActorFolders(const FFolder& InFolder);
UActorFolder* GetActorFolder(const FFolder& InFolder) const;
UActorFolder* CreateActorFolder(const FFolder& InFolder);
friend UWorldFolders;
};