But it will not be possible in 4.7, right?
Hi there ,
first of , thank you very much for content to provide us with.
I have a question referring your Rebindable Key.
I tried to figure out from where you used OnKeyDown Event, which seems to be a reply to any Key Event occuring.
I looked through the Engine and couldnt find any Function which describe that behaviour. How did you do that?
best regards
, thank you for another excellent Unreal Engine 4 contribution!
I just found out that the function i need is implemented in UserWidget.h.
But how is the intention of getting inside an UMG widget, is event automatically consumed within widgets parent, when the child is in focus?
Hi ,
Its been a while since I posted on forum. Took a break from my thesis.
I am facing some limitations with your current vertex manipulation blueprints. One of that is I have a class called Interactive_Actor. actor class holds the thermodynamic properties of a static mesh. It also has a component called Default Mesh which gets changed to a user set static mesh through a Set Static Mesh node in the constructor. However, when I drag out the blueprint into the scene, there are no vertices highlighted. It seems the codes only work directly on static meshes dropped into the scene. Is there a way to make it work also on custom blueprint actors (static meshes with custom properties)?
Cheers!!!
omgā¦ sorry for the disturbance i missed the āshow inherit variablesāā¦
You should use StaticMeshActor as your base class for your BP, hopefully then it will work right!
Replace uses of your custom static mesh component with StaticMeshComponent ref.
Try it as a test and see how it goes!
Good luck!
BP Node to Get Your Computerās IP Address!
Dear Community,
Iāve finally succeeded at implementing a node that many have been trying to implement since the Beta!
is a BP node that gets the IP address of your computer!
My node relies on http://api.ipify.org, a free and easy way to get your current IP address.
Because node involves an HTTP request I canāt make it a static library node, so I instead made a VictoryPC class that contains only functionality.
You can easily re-parent your current player controller blueprint to use my plugin VictoryPC class!
File->Reparent
and if you are not using a PC already, make sure to go to World Settings and use my VictoryPC as your player controller!
As long as my Victory BP Library is an active plugin for you, then VictoryPC class will show up!
Download:
**Celebration!**
Yay!
Now we can get the IP address of the local computer for use with multiplayer games or webserver activities!
Enjoy!
Pic
Hereās the setup you should create in your Blueprinted version of my VictoryPC!
**C++ Source Code For You**
Here is the C++ source code I wrote just earlier today!
```
bool AVictoryPC::VictoryPC_GetMyIP_SendRequest()
{
FHttpModule* Http = &FHttpModule::Get();
if(!Http)
{
return false;
}
if(!Http->IsHttpEnabled())
{
return false;
}
//~~~~~~~~~~~~~~~~~~~
FString TargetHost = "http://api.ipify.org";
TSharedRef < IHttpRequest > Request = Http->CreateRequest();
Request->SetVerb("GET");
Request->SetURL(TargetHost);
Request->SetHeader("User-Agent", "VictoryBPLibrary/1.0");
Request->SetHeader("Content-Type" ,"text/html");
Request->OnProcessRequestComplete().BindUObject(, &AVictoryPC::HTTPOnResponseReceived);
if (!Request->ProcessRequest())
{
return false;
}
return true;
}
void AVictoryPC::HTTPOnResponseReceived(FHttpRequestPtr Request, FHttpResponsePtr Response, bool bWasSuccessful)
{
->VictoryPC_GetMyIP_DataReceived(Response->GetContentAsString());
}
```
ā„
I was stuck with dynamic generated arrays in BPā¦ and then I found a way to load image sequences with your plugin. You saved my life! ;D
I used the LoadObjectFromAssetPath node, but Iām gonna try the LoadImage node soon as well!
Iām eagerly waiting for 4.7 and see if I can deploy to apk directlyā¦
Thx again dude!
Hi !
What about a Bp that enables/disables subtitles during runtime? Can be posible?
In fact, could be posible to change the culture (cultures are the gameās languages people) during runtime?
With two features, your already graphics, custom iniās settings and key rebinding we could have an entire game menu 100% functional without game launcher working ingame in any plataform!
Anyways, thank you for the already well work! Porting Mind: Path to Thalamus to Vr and UE4 is being soo much easier thanks to your nodes
Hi! Oh youāre welcome, yay! Glad my Victory BP Library helped you out!
I know thereās a command to change localization at runtime, if you can find it via Epicās tutorials or answerhub then I can work with it as a BP node
Hi thanks for your answer!
Well the point is I havenāt found anything about that command. If it ever existed with a simple āExecute console commandā node would have been more than enough to change the gameās culture but I canāt seem to find it. What I have found (and tested and yes, it is working) is that you can pass ā-culture=frā on the commandline when launching the game and that works (I set in a shortcut). I have found in the answer HUB How do I test translations with console commands? - Rendering - Epic Developer Community Forums but the console command ā-culture=frā doesnāt work for me in the console(not recognized with and without the quotes).
Btw, I found something really usefull in terms of localization: when you use the gather text commandlet now it also gathers the soundwaves and the soundcues! The guys from Solus were having problems but it seems Epic Games fixed it (just posting here so people who end here getting info on the subject can read it )
, setting the subtitles on and off in runntime should be super easy in C++ because in the project settings menu there is indeed and option to set the subtitles on and off and well, if you have managed to do blueprints to rebind keys during runntimes subtitles should be really easy.
Keep on the good workk!! I canāt wait to show you guys what I am doing
Hee hee yup I know, I am the C++ programmer for Solus, and I worked with Epic directly to resolve 3-4 substantial bugs with the Localization system to get the commandlets working better.
I think you should ask on the answerhub if there is a way to change the culture of the game without having to restart the game! Then let me know know what response you get, and if you send link I can post there too.
**Subtitles**
I am trying to meet a deadline but something like should work
```
void SetSubtitlesActive(bool MakeActive)
{
GEngine->bSubtitlesEnabled = MakeActive;
//Clear any existing if setting subtitles off!
if(!MakeActive)
{
FSubtitleManager * SM = FSubtitleManager::GetSubtitleManager();
if (SM)
{
SM->KillAllSubtitles();
}
}
}
```
What do you think?
Let me know if you think there's a more elegant way to do it than talking to GEngine directly.
**Load Texture 2D From File!
JPG, PNG, BMP, ICO, EXR, and ICNS are Supported File Formats !**
With node you can load a Texture 2D from a file during runtime!
I output for you the width and height of the loaded image!
Now you can easily create Texture 2Dās from image files in Blueprints, during runtime!
Special Note!
Sweeney liked node!
Enjoy!
PS: Make sure to include the file extension when you use node!
**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
TArray<uint8> RawFileData;
if (!FFileHelper::LoadFileToArray(RawFileData, * FullFilePath))
{
return NULL;
}
//Create T2D!
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);
//Valid?
if (!LoadedT2D)
{
return NULL;
}
//Out!
Width = ImageWrapper->GetWidth();
Height = ImageWrapper->GetHeight();
//Copy!
void* TextureData = LoadedT2D->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(TextureData, UncompressedBGRA->GetData(), UncompressedBGRA->Num());
LoadedT2D->PlatformData->Mips[0].BulkData.Unlock();
//Update!
LoadedT2D->UpdateResource();
}
}
// Success!
IsValid = true;
return LoadedT2D;
}
```
Download Link (6.5mb)
UE4 Wiki, Plugin Download Page
's Suite of Powerful UMG Nodes
Here are the 3 core BP nodes that Iāve been using to make of my complicated interacting UMG menus, including an in-game file browser and a menu that allows you to change the materials on any skeletal mesh, while in-game!
These nodes are available to you now!
**Get Widgets of Class**
Allows you to not have to store references everywhere to your widgets, making it easy to interact with the Player Controller and My Character blueprints :)
Also makes it easy to remove a loading screen after a level transition, without storing refs in Game Instance class
Epic added node of mine, it should be in 4.7 !
Remove Widgets Of Class
You can find and remove any widget any way, no matter where you are in BP! (here I am in the Level BP)
** Tip:**
If you make a general superclass for your widgets (Reparent to a blank UserWidget of your own making), you can clear your entire UI system from the viewport with a single call to RemoveAllWidgetsOfClass, supplying the class that is your super class for your user widgets!
So lets say you have 3 user widgets that you made, make a 4th that is blank, reparent your existing 3 to your new empty 4th widget (āWidgetMasterā for example).
Now you can just call RemoveAllWidgetsOfClass on your new 4th widget, WidgetMaster, and 3 of your existing widgets will be removed automatically from the viewport!
**Is Widget Of Class In Viewport**
Take action based on the dynamic lookup of whether a certain widget is currently visible!
No need to store refs or bools anywhere, just do a dynamic look up that is lightning fast!
**If you turn "Top Level Only" off** you can iterate over the internal widgets of the visible wdigets that have been added to the viewport!
ā„
![9b7a621d3332fdafbe78b687447eb1c37f3f558c.jpeg|1035x750](upload://mbqdc9TTsCkJHaeTMyxg2GR6Hak.jpeg)
Nice plugin .
I got a problem, i like use your nodes to read / write in the ini file, but i like use with a custom ini file, i added to the plugin for :
VictoryBPFunctionLibrary.h
VictoryBPFunctionLibrary.cpp
And in the game folder Config/ added the āDefaultGameSettings.iniā file with
now in the editor, in the Level Blueprint i using nodes and the print node to print in the screen.
Then i got 2 problems:
1Āŗ- When i read the value to get the name, i got āā = nothing, but if set before the value to x name, i got the name changed, but no idea where is saved, because the name no is in the inis of the game folder or engine folder (and donāt is in my file or in the created saved files but is changed in somewhere).
2Āŗ- My friend Moss, tell me i need load the ini in cache creating a new class, i have created in the game project :
GameSettingsConfig.h
GameSettingsConfig.cpp
and now generate a empty (with 2 space lines) files in the Saved/ and but without the varsā¦
Then where is saved that data and how make works correctly ?
Thanks.
,
One idea for super handy node would be to write a UFUNCTION to expose the ability to add and search for data in a TMap via blueprint. TMapās canāt be exposed directly to blueprints as a UPROPERTY, but it would be very very hand to have the ability to store stuff in a container that can be searched quickly via blueprint. Itās one of the major shortcomings of using arrays in blueprint beyond a certain point because to search on them begins to take a long compared to a dictionary/hash map
Thatās a great idea!
I could make an Actor that you spawn that could store tmaps
The one is how to define the types of the tmap
I might have to just go with some stock variants like
FString,FString,
FString,int32
FString,Vector
buuut, is rather limiting
The types have to be defined for the TMap at compile thoughā¦
sooooo
How about you tell me what Tmap combination you need, and other people can do the same, and Iāll just keep making tmaps on one actor, the TMapActor, and whichever one you need is the one you use.
Obviously not a perfect solution but I have no idea how to allow you to pick the tmap types via BP, maybe the reason they are not BP exposed in first place.
But what Iāve described as a solution could work , as one extra actor is a lot less troublesome that having really slow lookups of large amounts of data, constantly, during game.
**New Node
Save String Array To File**
The previous String File IO could only save a single line of text, even if you put "
" into your string
So I"ve made a new node that lets you save multiple lines of text to file, each FString of the array is on its own line!
See pic!
Enjoy!
Download Link (6.5mb)
UE4 Wiki, Plugin Download Page