ExposedClasses
ExposedClasses
#Overview
name: ExposedClasses
The value of this variable can be defined or overridden in .ini config files. 3
.ini config files referencing this setting variable.
It is referenced in 3
C++ source files.
#Summary
#Usage in the C++ source code
The purpose of ExposedClasses is to define a list of classes that are exposed to AnimNext systems within Unreal Engine 5. This setting variable is part of the AnimNext experimental plugin, which is likely related to animation systems in the engine.
The AnimNext plugin relies on this setting variable. Specifically, it is used in the UAnimNextConfig class, which is part of the AnimNext module.
The value of this variable is set through the Unreal Engine editor. It is defined as a UPROPERTY with the Config and EditAnywhere specifiers, which means it can be modified in the project settings and saved to configuration files.
ExposedClasses interacts with the FObjectProxyFactory system. When the ExposedClasses array is modified, it triggers a refresh of the FObjectProxyFactory.
Developers must be aware that changes to this variable will affect which classes are accessible to AnimNext systems. It’s crucial to ensure that only appropriate classes are exposed to maintain system integrity and performance.
Best practices when using this variable include:
- Only expose classes that are necessary for AnimNext functionality.
- Ensure that exposed classes are properly implemented and optimized for use with AnimNext systems.
- Be cautious when modifying this variable, as it can have far-reaching effects on the animation system.
- Document any changes made to ExposedClasses to maintain clarity for the development team.
- Test thoroughly after making changes to ensure no unintended side effects occur in the animation system.
#Setting Variables
#References In INI files
Location: <Workspace>/Engine/Plugins/Experimental/AnimNext/Config/BaseAnimNext.ini:2, section: [/Script/AnimNext.AnimNextConfig]
- INI Section:
/Script/AnimNext.AnimNextConfig
- Raw value:
(Class="/Script/Engine.World",AccessorName="UE_World")
- Is Array:
True
Location: <Workspace>/Engine/Plugins/Experimental/AnimNext/Config/BaseAnimNext.ini:3, section: [/Script/AnimNext.AnimNextConfig]
- INI Section:
/Script/AnimNext.AnimNextConfig
- Raw value:
(Class="/Script/Engine.CharacterMovementComponent",AccessorName="UE_CharacterMovementComponent")
- Is Array:
True
Location: <Workspace>/Engine/Plugins/Experimental/AnimNext/Config/BaseAnimNext.ini:4, section: [/Script/AnimNext.AnimNextConfig]
- INI Section:
/Script/AnimNext.AnimNextConfig
- Raw value:
(Class="/Script/AnimNext.AnimNextMeshComponent",AccessorName="UE_AnimNextMeshComponent")
- Is Array:
True
#References in C++ code
#Callsites
This variable is referenced in the following C++ source code:
#Loc: <Workspace>/Engine/Plugins/Experimental/AnimNext/Source/AnimNext/Internal/AnimNextConfig.h:26
Scope (from outer to inner):
file
class class UAnimNextConfig : public UObject
Source code excerpt:
/** The classes that are exposed to AnimNext systems */
UPROPERTY(Config, EditAnywhere, Category = "Exposed Classes")
TArray<FAnimNextObjectAccessorConfig> ExposedClasses;
};
#Loc: <Workspace>/Engine/Plugins/Experimental/AnimNext/Source/AnimNext/Private/AnimNextConfig.cpp:9
Scope (from outer to inner):
file
function void UAnimNextConfig::PostEditChangeProperty
Source code excerpt:
using namespace UE::AnimNext;
if(PropertyChangedEvent.Property->GetFName() == GET_MEMBER_NAME_CHECKED(UAnimNextConfig, ExposedClasses))
{
FObjectProxyFactory::Refresh();
}
SaveConfig();
}
#Loc: <Workspace>/Engine/Plugins/Experimental/AnimNext/Source/AnimNext/Private/Param/ObjectProxyFactory.cpp:43
Scope (from outer to inner):
file
namespace UE::AnimNext
function void FObjectProxyFactory::Refresh
Source code excerpt:
GObjectProxyFactory.Reset();
for(const FAnimNextObjectAccessorConfig& AccessorConfig : GetDefault<UAnimNextConfig>()->ExposedClasses)
{
UClass* Class = AccessorConfig.Class.LoadSynchronous();
if(Class && AccessorConfig.AccessorName != NAME_None)
{
GObjectProxyFactory.RegisterObjectAccessor(AccessorConfig.AccessorName, Class);
}