Jul 13, 2024
FVector
move offset (3D vector) and a speed parameter to control movement.Runtime
directory (contains modules like D3D12RHI
for DirectX 12).Source
directory (contains the project-specific modules like newCPPTutorial
)..uproject
file.
{
"Name": "newCPPTutorialEditor",
"Type": "Editor",
"LoadingPhase": "PostEngineInit"
}
newCPPTutorialEditor.Target.cs
.
ExtraModuleNames.AddRange(new string[] { "newCPPTutorial", "newCPPTutorialEditor" });
Source
directory, add newCPPTutorialEditor
folder and create necessary files (.Build.cs
, source files)..h
file)newCPPTutorialEditor.h
class FNewCPPTutorialEditorModule : public IModuleInterface
{
public:
virtual void StartupModule() override;
virtual void ShutdownModule() override;
};
.cpp
file)newCPPTutorialEditor.cpp
#include "newCPPTutorialEditor.h"
IMPLEMENT_MODULE(FNewCPPTutorialEditorModule, newCPPTutorialEditor)
PublicDependencyModuleNames.AddRange(new string[] { "newCPPTutorial", "UnrealEd" });
newCPPTutorialEditor/MoveComponentVisualizer.h
and .cpp
class FMoveComponentVisualizer : public FComponentVisualizer {
// Define methods here
}
void FNewCPPTutorialEditorModule::StartupModule() {
if (GUnrealEd) {
TSharedPtr<FMoveComponentVisualizer> Visualizer = MakeShareable(new FMoveComponentVisualizer);
GUnrealEd->RegisterComponentVisualizer(UMoveComponent::StaticClass()->GetFName(), Visualizer);
Visualizer->OnRegister();
}
}
void FNewCPPTutorialEditorModule::ShutdownModule() {
if (GUnrealEd) {
GUnrealEd->UnregisterComponentVisualizer(UMoveComponent::StaticClass()->GetFName());
}
}
MoveComponentVisualizer.h
virtual void DrawVisualization(const UActorComponent* Component, const FSceneView* View, FPrimitiveDrawInterface* PDI) override;
MoveComponentVisualizer.cpp
void FMoveComponentVisualizer::DrawVisualization(const UActorComponent* Component, const FSceneView*, FPrimitiveDrawInterface* PDI) {
// Implement draw logic
}
PDI->DrawLine(StartVector, EndVector, FLinearColor::Red, SDPG_World);
Stay tuned for more tutorials!