FGantryExperienceTree
C++: the experience tree, built: every experience the game knows about and how they relate.
Most code never touches this directly. UGantryExperienceSubsystem builds and keeps one per world, and its Blueprint functions (Get All Experience Info, Get Experience Availability) read from it. Use this type when you need the tree in C++ outside the subsystem, such as in an editor tool or a test; UGantryExperienceSubsystem::GetExperienceTree gives read access to the subsystem's.
Build finds every experience the base lists, directly or further down, installed or not. It also finds side-loaded content (experiences no shipped asset lists, such as a DLC pack's) in the asset registry, and connects each to the parents named in its Attach To. It then decides each experience's availability.
Experiences always activate in the same order on every machine: the base first, then by depth, with ties broken by tag. When an experience ends, its chain is undone in reverse.
Build runs synchronously and loads every experience definition it reaches. The tree is a plain value owned by its caller and is not thread-safe: build and query it on the game thread.
Members
Build
bool
Builds the tree from the given base experience, replacing anything built before.
Returns false, with OutError naming the problem, when the tree itself is broken: a cycle, an experience listed by two parents, or a listed experience that also sets Attach To. Problems with a single experience (content not installed, incompatible, missing its parent) do not fail the build; they show in that experience's availability. Loads every experience definition it reaches, synchronously.
IsBuilt
bool
True after a successful Build.
Reset
void
Discards everything; the next Build starts fresh.
AddReferencedObjects
void
Reports every crawled definition to the garbage collector.
The tree holds plain pointers, so whoever owns a tree that outlives a frame must call this from its own AddReferencedObjects; otherwise an experience nothing else references (the lobby, once a round is running) is collected and the tree is left pointing at freed memory.
GetRootTag
FGameplayTag
Experience Tag of the tree's root, the base experience.
Invalid until built.
FindNode
const FGantryExperienceNode *
Node by identity tag, or null if unknown.
FindNodeByPath
const FGantryExperienceNode *
Node whose definition lives at the given path, or null.
FindNodeByGuid
const FGantryExperienceNode *
Node with the given ExperienceGuid, or null.
An invalid guid never matches.
GetKnownTags
void
Every known tag, installed or not.
GetNodes
const TMap< FGameplayTag, FGantryExperienceNode > &
Every node, keyed by identity tag.
Empty until built.
GetAvailability
EGantryExperienceAvailability
Availability for one experience.
Unknown tags report NotInstalled with a reason.
BuildActivationChain
bool
Works out the activation chain for one experience: everything that activates with it, in order.
The chain holds the requested experience and all its required parents up to the base. It adds every available optional dependency and every available experience that extends something in the chain, each with its own required parents. The order is base first, then by depth, ties broken by tag. The requested experience is not always last: an experience that extends it comes after it.
Returns false if the experience is unknown, or if it or any of its required parents is not Available. Missing optional dependencies and unavailable extending experiences are skipped, with only a verbose log line.