Hi there! I’ve been working in Blueprint for a long time, and have been making tools in it, so when the new Editor Widgets appeared I was stoked. I have been working on a Plugin and wanted to call a function in FBlueprintEditorCommands, but I cannot for the life of me get it to work. Any time I try to access anything to do with it (Or the file Kismet/Private/BlueprintEditorCommands.h where it resides) I get linker error LNK2019 (Unresolved External Symbol).
I have tried to include every header file I can think of (I even copied all #includes from another file that calls the function I want) and also included every Module I could think of (to my projects .Build.cs file) but to no avail.
So I somewhat desperately turn to you guys (Although I am well versed in Blueprint, I am quite new to Unreal C++), what am I missing, and how do I get access to it? How do you even figure out what you need to include?
Here’s my function trying to access the file:
void AExposeHelper::ReregisterCommands() {
FBlueprintEditorCommands Hello = FBlueprintEditorCommands::Get();
}
And here is the file I am trying to access:
// Copyright 1998-2019 Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "EditorStyleSet.h"
#include "Framework/Commands/Commands.h"
class FNodeSpawnInfo;
class UEdGraph;
class UEdGraphNode;
//////////////////////////////////////////////////////////////////////////
// FBlueprintEditorCommands
/** Set of kismet 2 wide commands */
class FBlueprintEditorCommands : public TCommands<FBlueprintEditorCommands>
{
public:
FBlueprintEditorCommands()
: TCommands<FBlueprintEditorCommands>( TEXT("BlueprintEditor"), NSLOCTEXT("Contexts", "BlueprintEditor", "Blueprint Editor"), NAME_None, FEditorStyle::GetStyleSetName() )
{
}
virtual void RegisterCommands() override;
// File-ish commands
TSharedPtr< FUICommandInfo > CompileBlueprint;
TSharedPtr< FUICommandInfo > RefreshAllNodes;
TSharedPtr< FUICommandInfo > DeleteUnusedVariables;
TSharedPtr< FUICommandInfo > FindInBlueprints;
TSharedPtr< FUICommandInfo > FindReferencesFromClass;
TSharedPtr< FUICommandInfo > FindReferencesFromBlueprint;
TSharedPtr< FUICommandInfo > RepairCorruptedBlueprint;
// Edit commands
TSharedPtr< FUICommandInfo > FindInBlueprint;
TSharedPtr< FUICommandInfo > ReparentBlueprint;
// View commands
TSharedPtr< FUICommandInfo > ZoomToWindow;
TSharedPtr< FUICommandInfo > ZoomToSelection;
TSharedPtr< FUICommandInfo > NavigateToParent;
TSharedPtr< FUICommandInfo > NavigateToParentBackspace;
TSharedPtr< FUICommandInfo > NavigateToChild;
// Preview commands
TSharedPtr< FUICommandInfo > ResetCamera;
TSharedPtr< FUICommandInfo > EnableSimulation;
TSharedPtr< FUICommandInfo > ShowFloor;
TSharedPtr< FUICommandInfo > ShowGrid;
// Debugging commands
TSharedPtr< FUICommandInfo > EnableAllBreakpoints;
TSharedPtr< FUICommandInfo > DisableAllBreakpoints;
TSharedPtr< FUICommandInfo > ClearAllBreakpoints;
TSharedPtr< FUICommandInfo > ClearAllWatches;
// New documents
TSharedPtr< FUICommandInfo > AddNewVariable;
TSharedPtr< FUICommandInfo > AddNewLocalVariable;
TSharedPtr< FUICommandInfo > AddNewFunction;
TSharedPtr< FUICommandInfo > AddNewMacroDeclaration;
TSharedPtr< FUICommandInfo > AddNewAnimationGraph;
TSharedPtr< FUICommandInfo > AddNewEventGraph;
TSharedPtr< FUICommandInfo > AddNewDelegate;
// Development commands
TSharedPtr< FUICommandInfo > SaveIntermediateBuildProducts;
TSharedPtr< FUICommandInfo > GenerateNativeCode;
TSharedPtr< FUICommandInfo > ShowActionMenuItemSignatures;
// SSC commands
TSharedPtr< FUICommandInfo > BeginBlueprintMerge;
};
//////////////////////////////////////////////////////////////////////////
// FBlueprintSpawnNodeCommands
/** Handles spawn node commands for the Blueprint Editor */
class FBlueprintSpawnNodeCommands : public TCommands<FBlueprintSpawnNodeCommands>
{
public:
FBlueprintSpawnNodeCommands()
: TCommands<FBlueprintSpawnNodeCommands>(TEXT("BlueprintEditorSpawnNodes"), NSLOCTEXT("Contexts", "BlueprintEditor_SpawnNodes", "Blueprint Editor - Spawn Nodes by chord"), NAME_None, FEditorStyle::GetStyleSetName())
{
}
virtual void RegisterCommands() override;
/**
* Returns a graph action assigned to the passed in chord
*
* @param InChord The chord to use for lookup
* @param InDestGraph The graph to create the graph action for, used for validation purposes and to link any important node data to the graph
* @param InOutDestPosition Position to start placing nodes, will be updated to be at the next safe position for node placement
* @param OutNodes All nodes spawned by this operation
*/
void GetGraphActionByChord(FInputChord& InChord, UEdGraph* InDestGraph, FVector2D& InOutDestPosition, TArray<UEdGraphNode*>& OutNodes) const;
private:
/** An array of all the possible commands for spawning nodes */
TArray< TSharedPtr< class FNodeSpawnInfo > > NodeCommands;
};
//////////////////////////////////////////////////////////////////////////
// FSCSEditorViewportCommands
class FSCSEditorViewportCommands : public TCommands<FSCSEditorViewportCommands>
{
public:
FSCSEditorViewportCommands()
: TCommands<FSCSEditorViewportCommands>(TEXT("SCSEditorViewport"), NSLOCTEXT("Contexts", "SCSEditorViewport", "SCS Editor Viewport"), NAME_None, FEditorStyle::GetStyleSetName())
{}
virtual void RegisterCommands() override;
TSharedPtr< FUICommandInfo > DeleteComponent;
};
Thanks in advance // Skye OuO