Is there a way to detect the state of the editor (is it playing, simulating, stopped, or paused?) from a C++ editor plugin?
#Answer
If you have access to a UWorld you can find out this info any time!
Here’s the code for my BP Library nodes that do this
The download for my plugin is here:
bool UVictoryBPFunctionLibrary::WorldType__InEditorWorld(UObject* WorldContextObject)
{
if(!WorldContextObject) return false;
//using a context object to get the world!
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
if(!World) return false;
//~~~~~~~~~~~
return (World->WorldType == EWorldType::Editor );
}
bool UVictoryBPFunctionLibrary::WorldType__InPIEWorld(UObject* WorldContextObject)
{
if(!WorldContextObject) return false;
//using a context object to get the world!
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
if(!World) return false;
//~~~~~~~~~~~
return (World->WorldType == EWorldType::PIE );
}
bool UVictoryBPFunctionLibrary::WorldType__InGameInstanceWorld(UObject* WorldContextObject)
{
if(!WorldContextObject) return false;
//using a context object to get the world!
UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
if(!World) return false;
//~~~~~~~~~~~
return (World->WorldType == EWorldType::Game );
}
Any chance on getting a tutorial for exposing EWorldType to Blueprint? I don’t have a lot of coding experience, so I only half way understand your code here.