How Can i Used FSequencer to C++ (LevelSequencer)

TSharedPtr WeakSequencer = LevelSequenceEditor ? LevelSequenceEditor->GetSequencer() : nullptr;
if (WeakSequencer.IsValid())
{
TSharedRef FSeq = StaticCastSharedRef(WeakSequencer.ToSharedRef());
FSeq->CreateCamera(); // Error LNK2019 “public: void __cdecl FSequencer::CreateCamera(void)”
}

this My code some part Create LevelSequencer And Want Add Camera or ImportFBX.

So “FSequencer.h” Code has CreateCamera and ImportFBX , I Want that Code!

I Can Debug “FSequencer” Data but Can’t use in Functions

Can i ask what problem

I want to import fbx in C++ and meet the same problem. And here is how I fix it. ( There should be better ways to solve the problem but these codes works for me)

Step 1: Create level sequence asset
just search for code here: FVREditorActionCallbacks::CreateNewSequence in VREditorActions.cpp.

Step 2: Get sequncer
you need to include LevelSequenceEditor plugin to get ISequencer.
link text
my build.cs like this:

    PublicIncludePaths.AddRange(
		new string[] {
			"LevelSequenceEditor/Private",
			"LevelSequenceEditor/Classes"
		}
		);
	PublicDependencyModuleNames.AddRange(
		new string[]
		{
			"LevelSequence"
		}
		);
	PrivateDependencyModuleNames.AddRange(
		new string[]
		{
			"MovieSceneTools",
			"LevelSequenceEditor",
			"Sequencer",
			"SequencerWidgets"
		}
		);

and in my .uplugin:

"Plugins": [
	{
		"Name": "LevelSequenceEditor",
		"Enabled": true
	}
]

and if all modules are included, type these codes:

	UAssetEditorSubsystem* AssetEditorSubsystem = GEditor->GetEditorSubsystem<UAssetEditorSubsystem>();	// get sequence editor
	AssetEditorSubsystem->OpenEditorForAsset(YourLevelSeuquenceAsset);
	auto Editor = AssetEditorSubsystem->FindEditorForAsset(YourLevelSequenceAsset, false);
	FLevelSequenceEditorToolkit* LevelSequenceEditor = (FLevelSequenceEditorToolkit*)Editor;
	ISequencer* Sequencer = LevelSequenceEditor->GetSequencer().Get();	// get sequencer

Step 3: Import FBX
if you want to import fbx with a dialog box, you can use “MovieSceneToolHelpers::ImportFBXWithDialog” like this:

	UMovieScene* MovieScene = Sequencer->GetFocusedMovieSceneSequence()->GetMovieScene();
	TMap<FGuid, FString> InObjectBindingMap;
	MovieSceneToolHelpers::ImportFBXWithDialog(MovieScene, *Sequencer, InObjectBindingMap, TOptional<bool>());

else if you want it pure c++:
search OnImportFBXClicked() in MovieSceneToolHelpers.cpp Get the codes you need and put them in a AsyncTask block:

    AsyncTask(ENamedThreads::GameThread, [=]()
	    {
            // your codes here
        });

We can use the ISequencer( FSequencer derived from this class) (Dependent on modules: “Slate”,“SlateCore”,“LevelSequenceEditor”,“Sequencer”, …) as following :

IAssetEditorInstance* AssetEditor = GEditor->GetEditorSubsystem()->FindEditorForAsset(LevelSequence.Get(), false);
ILevelSequenceEditorToolkit* LevelSequenceEditor = static_cast<ILevelSequenceEditorToolkit*>(AssetEditor);
TWeakPtr WeakSequencer = LevelSequenceEditor ? LevelSequenceEditor->GetSequencer() : nullptr;
if (WeakSequencer.IsValid() == true )
{
ISequencer* Sequencer = WeakSequencer.Pin().Get();
if (Sequencer != nullptr)
{
Sequencer->OnPlay(true); // or some other apis
}
}