First and foremost, I don’t know enough about the plugin to consider this a bug. My project utilizes pooling which may be causing issues with the expected initialization sequences and this simple hack ended my research with no conclusions.
There are a few places in the parent MoverComponent class where RefreshSharedSettings() is called but none of them were triggering before the MovementMode objects were being initialized. The default StartingMovementMode in the CharacterMoverComponent constructor is Falling.
DefaultMovementSet/CharacterMoverComponent:
StartingMovementMode = DefaultModeNames::Falling;
From Editor crash window message:
UnrealEditor_Mover!UFallingMode::GenerateMove_Implementation() […\Plugins\Mover\Source\Mover\Private\DefaultMovementSet\Modes\FallingMode.cpp:79]
Note: Attempt to access a CommonLegacySettings property fails because it does not exist (yet?)
From Saved/Logs/{project_name}.log:
LogOutputDevice: Error: Ensure condition failed: CommonLegacySettings […\Plugins\Mover\Source\Mover\Private\DefaultMovementSet\Modes\FallingMode.cpp] [Line: 270]
LogOutputDevice: Error: Failed to find instance of CommonLegacyMovementSettings on /Game/Maps/…DefaultFallingMode. Movement may not function properly.
To get it running in Visual Studio without the mentioned errors:
Requires the ChaosMover plugin to be copied into project Plugins folder in addition to Mover and MoverExamples.
Ensure the following is in {project_name}.Build.cs:
PublicDependencyModuleNames.AddRange(new string { …, “ChaosMover”, “Mover”, “MoverExamples”, … });
Ensure the following is in {project_name}.uproject:
“Modules”: [
{
…
“AdditionalDependencies”: [
…
“Mover”,
…
]
},
“Plugins”: [
…
{
“Name”: “ChaosMover”,
“Enabled”: false
},
{
“Name”: “Mover”,
“Enabled”: true
},
{
“Name”: “MoverExamples”,
“Enabled”: true
}
…
]
Alt-click {project_name}.uproject file and Generate Visual Studio project files (may have to select Show more options first) to update project.
CustomCharacterMoverComponent.h (parent class is DefaultMovementSet/CharacterMoverComponent not base MoverComponent):
public:
virtual void OnRegister() override;
CustomCharacterMoverComponent.cpp:
void UCustomCharacterMoverComponent::OnRegister()
{
Super::OnRegister();
RefreshSharedSettings(); // CommonLegacyMovementSettings not initialized for the MovementModes without this line.
}
FWIW