# (39) 's Extra Blueprint Nodes for You as a Plugin, No C++ Required!

**URL:** <https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448>\
**Category:** Blueprint\
**Tags:** unreal-engine\
**Created:** [April 29, 2014, 1:27am UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448 "2014-04-29T01:27:59Z")\
**Posts on this page:** 20\
**Page:** 28

<div class="post-metadata">

**Author:** ![CarlosCoronado](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@CarlosCoronado](https://forums.unrealengine.com/u/CarlosCoronado)\
**Post date:** [January 31, 2015, 4:13pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/555 "2015-01-31T16:13:56Z")

</div>

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](https://answers.unrealengine.com/questions/144255/how-do-i-test-translations-with-console-commands.html) 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 😃 😃 😃

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 1, 2015, 1:06pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/556 "2015-02-01T13:06:14Z")

</div>

> [@CarlosCoronado;214090](#):
>
> 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](https://answers.unrealengine.com/questions/144255/how-do-i-test-translations-with-console-commands.html) 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 😉 )

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.

````auto

**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.
````

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 1, 2015, 1:07pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/557 "2015-02-01T13:07:07Z")

</div>

\*\*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](https://forums.unrealengine.com/showthread.php?3851-(39)--s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=211685&viewfull=1#post211685)!

Enjoy!

PS: Make sure to include the file extension when you use node!

 ![LoadImageFromFile.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/3X/4/d/4dc63b797f119439c3ed0107927dc84112ec3731.jpeg)

 ![5e04c4d83d602f944fb2cfd946e90787f3b20f70.jpeg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/5/e/0/5e04c4d83d602f944fb2cfd946e90787f3b20f70.jpeg)

````auto

**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**

> **[A new, community-hosted Unreal Engine Wiki](https://forums.unrealengine.com/t/a-new-community-hosted-unreal-engine-wiki/141494)**
>
> After over a year in maintenance mode, the official Unreal Engine Wiki is now permanently offline. These resources now live on a new community-run Unreal Engine Community Wiki — https://unrealcommunity.wiki/! You will be able to find content from...

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 3, 2015, 7:39am UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/558 "2015-02-03T07:39:38Z")

</div>

**'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!**

```auto

**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!

```auto

**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)
```

---

<div class="post-metadata">

**Author:** ![Hevedy](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Hevedy](https://forums.unrealengine.com/u/Hevedy)\
**Post date:** [February 3, 2015, 12:17pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/559 "2015-02-03T12:17:25Z")

</div>

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

> [@](#):
>
> ```
> /** Get Custom Config Var! These are stored in Saved/Config/Windows/GameSettings.ini */
> UFUNCTION(BlueprintPure, Category = "VictoryBPLibrary|Config Reader")
> static FString ConfigGetCustomConfigVar_String(FString SectionName, FString VariableName);
> 
> /** Set Custom Config Var! These are stored in Saved/Config/Windows/GameSettings.ini */
> UFUNCTION(BlueprintCallable, Category = "VictoryBPLibrary|Config Writer")
> static void ConfigSetCustomConfigVar_String(FString SectionName, FString VariableName, FString Value);
> 
> ```

VictoryBPFunctionLibrary.cpp

> [@](#):
>
> FString UVictoryBPFunctionLibrary::ConfigGetCustomConfigVar\_String(FString SectionName,FString VariableName)  
> {  
> if(!GConfig) return “”;  
> // ~~~~~~~~~~~
> 
> ```
> FString Value;
> GConfig-&gt;GetString(
> *SectionName,
> *VariableName,
> Value,
> FString( TEXT( "GameSettings" ) )
> );
> return Value;
> 
> ```
> 
> }
> 
> void UVictoryBPFunctionLibrary::ConfigSetCustomConfigVar\_String(FString SectionName,FString VariableName, FString Value)  
> {  
> if(!GConfig) return;  
> // ~~~~~~~~~~~
> 
> ```
> GConfig-&gt;SetString(
> *SectionName,
> *VariableName,
> *Value,
> FString( TEXT( "GameSettings" ) )
> );
> GConfig-&gt;Flush( false, FString( TEXT( "GameSettings" ) ) );
> 
> ```
> 
> }

And in the game folder Config/ added the “DefaultGameSettings.ini” file with

> [@](#):
>
> [Profile]  
> pAccountName=HelloWorld

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

> [@](#):
>
> // Fill out your copyright notice in the Description page of Project Settings.
> 
> #pragma once
> 
> #include “.h”  
> #include “GameSettingsConfig.generated.h”
> 
> /\*\*  
> \*  
> \*/  
> UCLASS( Config = GameSettings )  
> class GAMENAME\_API UGameSettingsConfig : public UObject  
> {  
> GENERATED\_BODY()
> 
> ```
> UPROPERTY( Config )
> uint32 bBoolValue : 1;
> 
> ```
> 
> };

GameSettingsConfig.cpp

> [@](#):
>
> // Fill out your copyright notice in the Description page of Project Settings.
> 
> #include “GAMENAME.h”  
> #include “GameSettingsConfig.h”

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.

---

<div class="post-metadata">

**Author:** ![Hyperloop](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/hyperloop/32/1203427_2.png) [@Hyperloop](https://forums.unrealengine.com/u/Hyperloop)\
**Post date:** [February 4, 2015, 5:40am UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/560 "2015-02-04T05:40:53Z")

</div>

,

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

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 4, 2015, 3:54pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/561 "2015-02-04T15:54:18Z")

</div>

> [@Hyperloop;215955](#):
>
> ,
> 
> 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.

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 4, 2015, 4:00pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/562 "2015-02-04T16:00:02Z")

</div>

\*\*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!

 ![SaveStringArrayToFile.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/3X/0/2/020daf4e65ce4f5ff469d22607c45341e7a2675e.jpeg)

**Download Link (6.5mb)**

**UE4 Wiki, Plugin Download Page**

> **[A new, community-hosted Unreal Engine Wiki](https://forums.unrealengine.com/t/a-new-community-hosted-unreal-engine-wiki/141494)**
>
> After over a year in maintenance mode, the official Unreal Engine Wiki is now permanently offline. These resources now live on a new community-run Unreal Engine Community Wiki — https://unrealcommunity.wiki/! You will be able to find content from...

---

<div class="post-metadata">

**Author:** ![pwsnow](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@pwsnow](https://forums.unrealengine.com/u/pwsnow)\
**Post date:** [February 4, 2015, 4:18pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/563 "2015-02-04T16:18:56Z")

</div>

FYI if anyone is using 4.7.0 here are the steps you need to take in order to get the plugin to work. Latest version above:

1. In VictoryEdAlignMode.cpp (Line 602) change RV\_TraceParams.IgnoreActors.Empty(); to RV\_TraceParams.Ignore **Components**.Empty();

2. **Comment out** (temp measure) lines 220 & 883 in VictoryBPFunctionLibrary.cpp

3. In VictoryEdEngine.Build.cs add **“Slatecore”** (inc quotes) after “Slate”

Works perfectly!

Peter

---

<div class="post-metadata">

**Author:** ![Hyperloop](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/hyperloop/32/1203427_2.png) [@Hyperloop](https://forums.unrealengine.com/u/Hyperloop)\
**Post date:** [February 5, 2015, 7:36pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/564 "2015-02-05T19:36:21Z")

</div>

> [@;216182](#):
>
> 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.

Those stock variants seem like the most useful. most other data types could technically be stored using one of those, at the cost of some memory and conversion.

The two use cases I have would be covered by storing strings, and storing an int.

Thanks again for contributing so much to our community!

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 5, 2015, 8:09pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/565 "2015-02-05T20:09:58Z")

</div>

**BP Node to Get Your Computer’s IP Address!**

**UPDATE:** The VictoryPC class got removed from my plugin somehow between updates, post below is now fully integrated into the plugin again!

**Now you can get your computer’s IP from within UE4, from within Blueprints!**

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](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:**

> **[A new, community-hosted Unreal Engine Wiki](https://forums.unrealengine.com/t/a-new-community-hosted-unreal-engine-wiki/141494)**
>
> After over a year in maintenance mode, the official Unreal Engine Wiki is now permanently offline. These resources now live on a new community-run Unreal Engine Community Wiki — https://unrealcommunity.wiki/! You will be able to find content from...

```auto

**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!

 ![2902549c08d489d31bb43f8a7049793370d4801e.jpeg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/9/0/2902549c08d489d31bb43f8a7049793370d4801e.jpeg)

````auto

**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());
}
 

```

♥
````

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 5, 2015, 10:46pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/566 "2015-02-05T22:46:47Z")

</div>

**'s Blueprints TMap Solution!**

I’ve now made a BP TMap solution!

TMap is a data structure that is not yet exposed to BP, but I’ve made a **component-based solution** for you so that you can use TMaps in BP!

```auto

**What's a TMap?**

A TMap is a data structure based on Key,Value pairs, where for any Key there is only one Value.

 allows internal data structure look up times that are much faster than a regular dynamic array.

 also allows for the association of dissimilar data types in a way that you organize.

For example, you can map a set of integers to a set of Vectors, so that each integer is related to exactly one vector.

Or, as I provide you with in my plugin, you can **relate a String to an Actor**!

 means you can look up an Actor reference via a simple string input!

Or you can look up Vector data based on String data!

**The primary use of TMaps is for efficient lookup of data** , which dynamic arrays simply cannot do because there is no guarantee or assumption with dynamic arrays of anything like a key,value where each key has only 1 value.

**The rules of TMaps allow for efficient look up to speed up your game flow!**

```

**Actor Component**

My solution is component-based, which means you can have per-instance TMap data for your game’s actors!

**You simply add my Victory TMap Component to any actor you want!**

I used the My Character blueprint in my own tests!!!

You can use literally any actor you want, or make a new actor BP whose only role is to house the TMap Component

 ![bb75874a149303af4651f3ddd1aa90d9ed5bbf1c.jpeg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/b/b/7/bb75874a149303af4651f3ddd1aa90d9ed5bbf1c.jpeg)

```auto

**Supported Types**

![aa1ade53f3ff0021436f1a76aac85d11992bbd7c.jpeg|1265x798](upload://ogOJATwlYRl6WYup8uRYQZ9AtGc.jpeg)

```

**Supported TMap Functions**

 ![06a72fc14f4c795fe5f7fced0d14ac3be930f540.jpeg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/0/6/a/06a72fc14f4c795fe5f7fced0d14ac3be930f540.jpeg)

 ![b818ed9880a52331f6f82fb120d746a9106b591d.jpeg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/b/8/1/b818ed9880a52331f6f82fb120d746a9106b591d.jpeg)

```auto

**Additional TMap Combinations**

If you find that you cannot use my existing set of TMap Combinations to fulfill your game's needs, let me know by posting in thread and I can add additional TMaps to the component.

```

**Per Instance**

Remember that what I providing you with is a component-based solution, so you can add TMap data to as many actors in your game as you want, and have per-instance variations in the data contained therein!

Enjoy!

---

<div class="post-metadata">

**Author:** ![Dannington](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Dannington](https://forums.unrealengine.com/u/Dannington)\
**Post date:** [February 5, 2015, 10:59pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/567 "2015-02-05T22:59:42Z")

</div>

Hi - is a brilliant node (The image loader) that will make my life very much easier! I was using VaQuole to load images through a web address (to a local path) - is going to make my life so much easier!

Thanks, and thanks again for my socket plugin.

.

---

<div class="post-metadata">

**Author:** ![gpvd](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@gpvd](https://forums.unrealengine.com/u/gpvd)\
**Post date:** [February 5, 2015, 11:13pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/568 "2015-02-05T23:13:43Z")

</div>

Hello ,  
Great piece of work!  
I do have some requests on the tmap comp.  
could you also provide a node to only add unique KV pair?  
could you add a node wher value is Transform?  
and a node where value is struct?  
and lastly a node where value is targetpoint?

Many tnx in advance.

Greetz,  
G

---

<div class="post-metadata">

**Author:** ![Hyperloop](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/hyperloop/32/1203427_2.png) [@Hyperloop](https://forums.unrealengine.com/u/Hyperloop)\
**Post date:** [February 6, 2015, 4:05am UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/569 "2015-02-06T04:05:22Z")

</div>

Wow, Thanks for the Tmap nodes that will be so handy! 😃

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 6, 2015, 4:56pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/570 "2015-02-06T16:56:37Z")

</div>

> [@Dannington;216986](#):
>
> Hi - is a brilliant node (The image loader) that will make my life very much easier! I was using VaQuole to load images through a web address (to a local path) - is going to make my life so much easier!
> 
> Thanks, and thanks again for my socket plugin.
> 
> .

Hee hee! You’re welcome !

> [@gpvd;216990](#):
>
> Hello ,  
> Great piece of work!  
> could you also provide a node to only add unique KV pair?  
> could you add a node wher value is Transform?  
> and a node where value is struct?  
> and lastly a node where value is targetpoint?
> 
> Many tnx in advance.
> 
> Greetz,  
> G

" only add unique KV pair" \*\* KV pairs are unique already! That’s how a TMap works.\*\*

“value is Transform?” **What do you want the key to be?**

“targetpoint?” **you can do that already, target points are Actor, you can use FString,Actor**

“where value is struct?” **no I can’t do a generic struct like that in c++**

> [@Hyperloop;217061](#):
>
> Wow, Thanks for the Tmap nodes that will be so handy! 😃

Let me know how it goes Hyperloop!

---

<div class="post-metadata">

**Author:** ![gpvd](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@gpvd](https://forums.unrealengine.com/u/gpvd)\
**Post date:** [February 6, 2015, 6:41pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/571 "2015-02-06T18:41:33Z")

</div>

Hello ,

They key for value Transform could be an int.  
I asked about unique kv pair, because i saw in the image you posted a comment that when you add a kv pair where key already exists, the value will be overwritten.  
So i meant an extra node where adding will fail if key already exist, instead of overwrite the value.  
I thought targetpoint could be handy, so that casting/ extra checking isn’t neccesary.

Many tnx in advance.

Greetz,  
G

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 7, 2015, 8:34pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/572 "2015-02-07T20:34:24Z")

</div>

**'s Blueprints TMap Solution!**

I’ve now made a BP TMap solution!

TMap is a data structure that is not yet exposed to BP, but I’ve made a **component-based solution** for you so that you can use TMaps in BP!

My solution is component-based for per-instance variations!

 ![bb75874a149303af4651f3ddd1aa90d9ed5bbf1c.jpeg](https://d3kjluh73b9h9o.cloudfront.net/original/4X/b/b/7/bb75874a149303af4651f3ddd1aa90d9ed5bbf1c.jpeg)

```auto

**Supported Types**

![aa1ade53f3ff0021436f1a76aac85d11992bbd7c.jpeg|1265x798](upload://ogOJATwlYRl6WYup8uRYQZ9AtGc.jpeg)

```

Full details here!

> **[(39) Rama's Extra Blueprint Nodes for You as a Plugin, No C++ Required!](https://forums.unrealengine.com/showthread.php?3851-%2839%29--s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required%21&p=216979&viewfull=1#post216979)**
>
> Dear Community, 🌟 Newest Awesome Feature 🌟 (In this Complimentary (no cost) Victory Plugin!) Now You Can Get the Text Output (STDOUT or STDERR) from any .exe program, straight into Unreal Engine! This is the output of ⚡ a video compression...

---

<div class="post-metadata">

**Author:** ![Rama](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/rama/32/882413_2.png) [@Rama](https://forums.unrealengine.com/u/Rama)\
**Post date:** [February 9, 2015, 3:44pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/573 "2015-02-09T15:44:09Z")

</div>

\*\*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 in the file!**

See pic!

Enjoy!

 ![SaveStringArrayToFile.jpg](https://d3kjluh73b9h9o.cloudfront.net/original/3X/0/2/020daf4e65ce4f5ff469d22607c45341e7a2675e.jpeg)

**Download Link (6.5mb)**

**UE4 Wiki, Plugin Download Page**

> **[A new, community-hosted Unreal Engine Wiki](https://forums.unrealengine.com/t/a-new-community-hosted-unreal-engine-wiki/141494)**
>
> After over a year in maintenance mode, the official Unreal Engine Wiki is now permanently offline. These resources now live on a new community-run Unreal Engine Community Wiki — https://unrealcommunity.wiki/! You will be able to find content from...

---

<div class="post-metadata">

**Author:** ![KITATUS](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/kitatus/32/983160_2.png) [@KITATUS](https://forums.unrealengine.com/u/KITATUS)\
**Post date:** [February 9, 2015, 3:54pm UTC](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448/574 "2015-02-09T15:54:27Z")

</div>

!

Are these compat with the preview 5 4.7? :\>

[Previous page](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448.md?page=27)

[Next page](https://forums.unrealengine.com/t/39-s-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448.md?page=29)
