UDCore (or Unreal Directive Core), is an open-source Unreal Engine plugin that's designed from the ground-up to provide quality-of-life functionalities to enhance the development experience.
This plugin was started by Dylan "Tezenari" Amos as part of the Unreal Directive initiative to empower Unreal Engine developers with knowledge and tools to better allow them to build amazing things.
UDCore's philosophy revolves around the following --
This plugin will be updated sporadically with new functionality.
Instruction on how to install the UDCore plugin. I recommend checking out the Quick Start page over on the documentation website.
UDCore can be installed directly by using the Plugin Downloader plugin on the marketplace.
Install Plugin Downloader from the Unreal Engine Marketplace
Enable the Plugin Downloader plugin
Edit -> Plugins.Plugin Downloader and enable it.Download UDCore
Go to Edit -> Plugins
Click on Download in the upper left of the Plugins window
Enter the following info in the Download Plugin window
Click on Download in the bottom right of the Download Plugin window
Wait for download to complete
Restart the Unreal Engine editor when prompted
Enable the UDCore plugin
Edit -> Plugins.Plugin Downloader and enable it.Clone the repository:
git clone https://github.com/UnrealDirective/UDCore.gitCopy the plugin to your Unreal Engine project:
Plugins directory.UDCore folder into the Plugins directory.Enable the plugin:
Edit > Plugins.UDCore and enable it.Here are examples on how you can go about using some of the functions in UDCore. For more detailed information, please check out the documentation.
Async Move to Location:
.cpp
#include "AI/UDAT_MoveToLocation.h"
#include "GameFramework/Controller.h"
#include "GameFramework/Actor.h"
void AExampleCharacter::MovePlayerToLocation()
{
UWorld* World = GetWorld();
AController* Controller = GetController();
const FVector Destination(100.0f, 200.0f, 300.0f);
constexpr float AcceptanceRadius = 100.0f;
constexpr bool bDebugLineTrace = false;
UUDAT_MoveToLocation* MoveToLocationTask = UUDAT_MoveToLocation::MoveToLocation(
World,
Controller,
Destination,
AcceptanceRadius,
bDebugLineTrace);
if (MoveToLocationTask)
{
MoveToLocationTask->Completed.AddDynamic(this, &ThisClass::OnMoveToLocationCompleted);
}
}
void AExampleCharacter::OnMoveToLocationCompleted(bool bSuccess)
{
// Called when UUDAT_MoveToLocation has completed with either a success or fail.
// Add your logic here.
}Contains Letters:
FString StringToCheck = "Example123"
bool bHasLetters = UUDCoreFunctionLibrary::ContainsLetters(StringToCheck);Contains Numbers:
FString StringToCheck = "Example123"
bool bHasNumbers = UUDCoreFunctionLibrary::ContainsNumbers(StringToCheck);Filter Characters:
FString StringToCheck = "Example 123 !@#"
bool bFilterOutLetters = false;
bool bFilterOutNumbers = false;
bool bFilterOutSpecialCharacters = true;
bool bFilterOutSpaces = true;
// "Example 123 !@#" would become "Example123"
FString FilteredString = UUDCoreFunctionLibrary::FilterCharacters(
StringToCheck,
bFilterOutLetters,
bFilterOutNumbers,
bFilterOutSpecialCharacters,
bFilterOutSpaces);Is Not Empty:
FText TextToCheck = "Example123"
bool bIsNotEmpty = UUDCoreFunctionLibrary::IsNotEmpty(TextToCheck);Focus Actors In Viewport:
TArray<AActor*> ActorsToFocus;
bool bFocusInstantly = true;
// Populate ActorsToFocus with actors
UUDCoreEditorActorSubsystem::FocusActorsInViewport(ActorsToFocus, bFocusInstantly);Get All Level Classes:
TArray<UClass*> LevelClasses = UUDCoreEditorActorSubsystem::GetAllLevelClasses();Filter Static Mesh Actors:
TArray<AStaticMeshActor*> StaticMeshActors;
TArray<AActor*> ActorsToFilter;
// Populate ActorsToFilter with actors
UUDCoreEditorActorSubsystem::FilterStaticMeshActors(StaticMeshActors, ActorsToFilter);Filter Actors By Name:
TArray<AActor*> FilteredActors;
TArray<AActor*> ActorsToFilter;
FString ActorNameToFind = "ExampleName";
// Populate ActorsToFilter with actors
UUDCoreEditorActorSubsystem::FilterActorsByName(ActorsToFilter, FilteredActors, ActorNameToFind, EUDInclusivity::Include);Filter Actors By Class:
TArray<AActor*> FilteredActors;
TArray<AActor*> ActorsToFilter;
// Populate ActorsToFilter with actors
UUDCoreEditorActorSubsystem::FilterActorsByClass(ActorsToFilter, FilteredActors, AStaticMeshActor::StaticClass(), EUDInclusivity::Include);We welcome contributions to enhance the functionality of UDCore. Please follow these steps to contribute:
git checkout -b feature/YourFeature).git commit -am 'Add new feature').git push origin feature/YourFeature).UDCore is licensed under the MIT License. See the LICENSE file for more details.
For support, please visit our GitHub Issues page.