Reminder of my new node that I just released amidst all the support posts
I’ve made a new BP node for you!
HasSubstring compliments the functionality of FindSubstring.
FinsSubstring requires more inputs and returns an index within the source string.
My node, HasSubstring, requires only 1 input and only returns whether or not the supplied substring is in the source string.
I use the C++ version of HasSubstring all the time so I felt you would all enjoy having it in BP as well!
**Example Usage ~ Search Feature**
If you wanted to make a string-based search feature, that iterated over the contents of a list of UMG Texts, you can take the user's supplied search string and use my **HasSubstring **node to find all the UMG Text widgets that contain the user's supplied search string.
**Latest plugin download is here: (about 8 mb) **
You can ensure you have the latest version by using this download link!
Please note clicking this link will not start a download instantly, it will just take you to the Media Fire file.
**Victory Plugin on Media Fire**
(6/11/15 build from Wiki, 7.91 mb)
Packaging Plugins for upgraded project in 4.8, Workaround
Here’s the solution to the packaging with plugins errors that Tekoppar posted:
**Epic Response on Answerhub**
[QUOTE=Epic Staff Pete;309191]
Ok, there is definitely an issue in 4.8. We're looking in to a fix. In the meantime, you can fix the issue by the following:
Create a new code-based project (the template chosen doesn't matter, I chose FPS)
After the newly created project has been opened in the editor, use explorer to browse to the location of that project on your computer
Search for PCLaunch.rc.res in that project (it will be found in the Intermediate directory)
Copy that file to /Engine/Intermediate/Build/Win64/Development/Launch/ and/or /Engine/Intermediate/Build/Win32/Development/Launch/ (you may have to make the Launch directory)
Open the broken project
Uncheck Rebuild in the Package Settings
Package should now work
Not ideal, but should get you unbroken and still be able to have the enabled plugins.
I’m using the file from your link, also working on 4.8.0 version.
BP nodes are working fine, but vertex snap editor just doesn’t show up, I’m selecting static meshes but no Victory Editor HotKeys button shows up, no vertices are being highlighted.
I tried toggling it on and off, etc. nothing helps. I also deleted engine cache just to be sure.
Array ~ Valid Index & Get Actor Time Alive & Get Actor Creation Time
TimeAlive and CreationTime
The above nodes let you know when a particular Actor was created (World Seconds) and for how many seconds an actor has been alive!
**Valid Index (Array)**
This node let's you always know in advance if a particular index is valid for your chosen array!
This node simplifies the process of protecting against "array out of bounds" errors with arrays!
Many thanks to Kris for contributing these nodes!
C:\Users\r\Documents\Unreal Projects\OceanProject 4.8\Plugins\VictoryPlugin\Source\VictoryEdEngine\Private\VictoryEdAlignMode.cpp(484): error C2039: 'LineTraceSingleByChannel' : is not a member of 'UWorld'
1> C:\Program Files\Epic Games\4.7\Engine\Source\Runtime\Engine\Classes\Engine/World.h(503) : see declaration of 'UWorld'
1>C:\Users\r\Documents\Unreal Projects\OceanProject 4.8\Plugins\VictoryPlugin\Source\VictoryEdEngine\Private\VictoryEdAlignMode.cpp(853): error C2039: 'LineTraceSingleByChannel' : is not a member of 'UWorld'
LineTraceSingleByChannel is absolutely a function in UWorld in 4.8!
You must not be compiling with 4.8 somehow?
There’s no way the compiler should miss finding LineTraceSingleByChannel !
GetMainAudioDevice is also new in 4.8
I’d recommend doing this:
delete intermmediate folder for the plugin and your main project
delete sln,suo,sdf for main project
right click on .uproject, and select switch engine version to 4.8
recompile both main project and plugin
I’ve been compiling just fine in 4.8 and you simply should not be getting told by compiler that functions are missing that are new in 4.8
You could also try compiling for Development Editor 64 just for more test data.
Do keep me updated on your progress with this issue!
Thank you Rama and Kris for the new nodes.
This entire BP suite makes working more convenient with every update!
Thank you again Rama for working on this!
Glad you are enjoying my Victory Plug Dakraid!
**C++ Code For You**
Here is the core C++ function involved, entire source is in the download! I wrote my own Enum for the file formats.
UTexture2D* UVictoryBPFunctionLibrary::Victory_LoadTexture2D_FromFile(const FString& FullFilePath,EJoyImageFormats ImageFormat, bool& IsValid,int32& Width, int32& Height)
IsValid = false;
UTexture2D* LoadedT2D = NULL;
IImageWrapperModule& ImageWrapperModule = FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));
IImageWrapperPtr ImageWrapper = ImageWrapperModule.CreateImageWrapper(GetJoyImageFormat(ImageFormat));
//Load From File
if (!FFileHelper::LoadFileToArray(RawFileData, * FullFilePath))
if (ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))
const TArray<uint8>* UncompressedBGRA = NULL;
if (ImageWrapper->GetRaw(ERGBFormat::BGRA, 8, UncompressedBGRA))
LoadedT2D = UTexture2D::CreateTransient(ImageWrapper->GetWidth(), ImageWrapper->GetHeight(), PF_B8G8R8A8);
Width = ImageWrapper->GetWidth();
Height = ImageWrapper->GetHeight();
void* TextureData = LoadedT2D->PlatformData->Mips.BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(TextureData, UncompressedBGRA->GetData(), UncompressedBGRA->Num());
IsValid = true;
**Latest plugin download on the UE4 Wiki: (7.91 mb) **
**Victory Plugin on Media Fire**
If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!
Please note clicking this link will not start a download instantly, it will just take you to the Media Fire file description.
Wow, I’d been looking for an image importer for what feels like forever. Thanks so much!
One question: How should I go about translating heightmap values to coordinates/z values?
I’m trying to export my heightmap from UE4, then import it with the image reader to determine the z coordinates when spawning objects, but there’s obviously going to be a difference in magnitude.
I’ve managed to get the coordinates somewhat close with hand drawn maps, but anything exported from UE4 and reimported for reference is pretty off.
For reference, if I set the landscape’s location to 0,0,0, I can get almost kind of accurate Z values by dividing the X/Y Coordinates by 100 and rounding, then adjusting the Z value until it matches up with one coordinate, at which point it generally matches up with the others.
Yea it sounds like you are going to have arbitrary scaling values that you need to apply until you end up in the proper range, and it sounds like it could vary per image.
If you come up with a formula for that I can get you a node to iteratively test faster, or you can create a Blueprint Function Library, the BP asset kind, and do the equation there and then you’ve created your own node to iteratively test with
Using my new suite of BP nodes, you can create as many of your own custom config file sections as you want!
You can both create and retrieve ini variables with any name and fundamental type that you want!
Why Use a Config Var?
Config vars have several benefits
Persistent data storage without using a SaveGame struct or GameInstance, store simple quantities of data and player customization this way! Data is stored between level loads and even after the current instance of the game is shut down.
So in this way config vars have greater persistence than the GameInstance class!
Player-Driven Customization, Players of your game can tweak the config vars that you make available for them on their hard disk, by editing the .ini file directly, just like AAA games! This is the most significant advantage of using config files, and their real core purpose.
Simplicity, simpler to use than the BP SaveSystem (which is quite wonderful by the way), but not quite as powerful in that you can only store basic data types, not UObjects and Actors.
**Organization, **you can create as many config header sections as you want using my nodes, organizing all your custom settings this way!
All of your custom created config vars and sections are stored in:
Players can navigate to this location on their harddrive to edit your ini files just like any AAA game would allow!
Here's what my **Game.ini** file looks like after running some tests!
VectorVar=X=1.000 Y=2.000 Z=9000.123
StrVar=Yay For Custom Config Vars!!!
**Now you have fully featured ability to use config variables entirely in BP!**
Hey Rama! Is there any way to have a node that can fetch static meshes in obj format so i can apply the textures i already can fetch to them?
It can be, fbx, obj, or w/e is comfortable. I think obj will be more simple to do, but again, i don’t really have a clue.
It will be really awesome to let players use their own modeled weapons, accessories, and in my game’s case, build levels with their own meshes as decoration.
With anything you’v already made ( textures, sounds, config ini ) I think the mesh fetching will make the game the ultimate moddable game.