# Rama's Extra Blueprint Nodes for UE5, No C++ Required!

**URL:** <https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476>\
**Category:** Blueprint\
**Tags:** unreal-engine, UE5-0, Blueprint\
**Created:** [May 27, 2021, 5:22am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476 "2021-05-27T05:22:49Z")\
**Posts on this page:** 20\
**Page:** 2

<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:** [June 23, 2021, 8:11pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/21 "2021-06-23T20:11:37Z")

</div>

> [@TremendouslyWET](#):
>
> Dear ,
> 
> I had to look through every single node I am using because your library is so good I can’t tell it apart from vanilla nodes!  
> Get Closest Actor Of Class In Radius Of Location, (string) Append Multiple, Viewport Position Deproject, and Widget Get Parent Of Class are the blueprints I am using at the moment, if you could find the time to add these to the UE5 version, that would be awesome! Happy coding!

> [@Zaggoth](#):
>
> Possibly a couple others but I think that’s the main ones. I have a small prototype that heavily used these nodes, I wonder if the implementation will have to drastically change in UE5.

> [@dougbott](#):
>
> Secondly, could you bring back create process node.

Thank you all for the requests, this is exactly the info I was looking for, I will be doing this soon!

> [@jobim](#):
>
> Solved! I had an “append multiple” node. To find it I exported the blueprint in ascii (.copy extension) and checked for “victory” with notepad++.

Thank you for explaining your solution for people migrating to UE5!

❤

---

<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:** [July 13, 2021, 6:56am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/22 "2021-07-13T06:56:24Z")

</div>

![image](https://d3kjluh73b9h9o.cloudfront.net/original/3X/e/7/e70b63ef37e790d1a0b61da81961cfc6dd580ff5.png)

# ========================== Victory Plugin Updated To EA 2

Hi there!

I’ve updated to EA 2 and added the requested nodes (except ServerTravel and the level streaming, will work on that soon!)

Create Process (woohoo!)

> [@TremendouslyWET](#):
>
> Get Closest Actor Of Class In Radius Of Location, (string) Append Multiple, Viewport Position Deproject, and Widget Get Parent Of Class are the blueprints I am using at the moment, if you could find the time to add these to the UE5 version, that would be awesome! Happy coding!

See original / top post for download link!

❤

---

<div class="post-metadata">

**Author:** ![telekinesticman](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/telekinesticman/32/1086650_2.png) [@telekinesticman](https://forums.unrealengine.com/u/telekinesticman)\
**Post date:** [August 18, 2021, 4:30am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/24 "2021-08-18T04:30:30Z")

</div>

Hello! I’ve been using your tool a lot in UE4 and it’s been fantastic! Me and my team are considering taking the jump to UE5, our early tests have been really successful and cut down our render times a lot. We’re making an animated series and have been trying to optimise our editor pipeline as much as possible.

I’ve used the “Victory Create Proc”, “Has Substring” and “Get Names of All Loaded Levels” nodes a few times for various pipeline tools in UE4. Would it be possible for you to get these brought over into UE5? That would be incredible! “Has Substring” is probably the lowest priority one overall but would still be handy to have.

Thank you so much from myself and my team. Your work has been an incredible help for us so far!

---

<div class="post-metadata">

**Author:** ![gypsyhipsta](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@gypsyhipsta](https://forums.unrealengine.com/u/gypsyhipsta)\
**Post date:** [September 9, 2021, 8:15am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/25 "2021-09-09T08:15:24Z")

</div>

Hi , we are using heavily the Pixel nodes, do you have any plans to enable them in the UE5? We would be very thankful for that. Thanks a lot.

---

<div class="post-metadata">

**Author:** ![Graphenes](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Graphenes](https://forums.unrealengine.com/u/Graphenes)\
**Post date:** [September 27, 2021, 4:56am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/26 "2021-09-27T04:56:29Z")

</div>

I would love to have the load/save, string/string array to disk nodes!

---

<div class="post-metadata">

**Author:** ![Tj0mmas](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Tj0mmas](https://forums.unrealengine.com/u/Tj0mmas)\
**Post date:** [October 19, 2021, 12:50pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/27 "2021-10-19T12:50:10Z")

</div>

@. First your plugin is great, it solved a few things for me.  
But why not migrate everything to UE5? Why select only a few of them?  
To migrate my project to UE5 I would personnally need :

- the sort node that was under utilities-\>Array
- Save game object get all save slot file names
- the file IO nodes

Thx for your work

---

<div class="post-metadata">

**Author:** ![ricardo.zimmerma](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@ricardo.zimmerma](https://forums.unrealengine.com/u/ricardo.zimmerma)\
**Post date:** [October 19, 2021, 9:45pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/28 "2021-10-19T21:45:18Z")

</div>

Hi @ ,  
First of all, thanks for putting the effort, this is awesome.  
Second, I am having this issue when trying to package my game after installing your plugin in UE5.

UATHelper: Packaging (Windows): ERROR: Expecting to find a type to be declared in a module rules named ‘VictoryBPLibrary’ in UE5Rules, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null. This type must derive from the ‘ModuleRules’ type defined by Unreal Build Tool.

Can someone help, please?

---

<div class="post-metadata">

**Author:** ![ricardo.zimmerma](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@ricardo.zimmerma](https://forums.unrealengine.com/u/ricardo.zimmerma)\
**Post date:** [October 20, 2021, 12:16pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/29 "2021-10-20T12:16:12Z")

</div>

Nevermind, I’ve managed to solve the issue following the steps in this thread below.  
For anyone interested:

> [@Trouble creating C++ project in UE5 EA](https://forums.unrealengine.com/t/trouble-creating-c-project-in-ue5-ea/232968/8):
>
> To prevent this, please, delete the RiderLink folder from $ENGINE$/Plugins/Developer, then regenerate project files from Unreal Editor by clicking on Tools-\>Refresh Rider Project (you can’t do this via right-clicking on the .uproject file, since UE5 project files generator is broken due to changes in UBT folder structure), then the open solution in Rider and install RiderLink in Game. This should fix the problem. Check the below link Check the comment posted by \*\*\*\*.

---

<div class="post-metadata">

**Author:** ![Daniel.Kipping](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Daniel.Kipping](https://forums.unrealengine.com/u/Daniel.Kipping)\
**Post date:** [October 28, 2021, 9:14am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/30 "2021-10-28T09:14:54Z")

</div>

The File IO Save String Array to File would be nice

---

<div class="post-metadata">

**Author:** ![Undead\_Studios](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Undead\_Studios](https://forums.unrealengine.com/u/Undead_Studios)\
**Post date:** [November 2, 2021, 3:15pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/31 "2021-11-02T15:15:49Z")

</div>

@

Love the plugin, any chance the Viewport Set Mouse Position will return?

Thx 🙂

---

<div class="post-metadata">

**Author:** ![anonymous\_user\_aff7ae0c](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@anonymous\_user\_aff7ae0c](https://forums.unrealengine.com/u/anonymous_user_aff7ae0c)\
**Post date:** [November 6, 2021, 8:43pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/32 "2021-11-06T20:43:32Z")

</div>

Hi , I finally have time and opportunity to join all the other people in thanking you very much for this awesome plugin. Great work!

For my application it would be very useful to have things like Get Actor Relative Location/Rotation and string functionality (Load String Array from File, String Combine Strings, etc.) working in UE5.

Thanks!

---

<div class="post-metadata">

**Author:** ![Regan\_Kan](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@Regan\_Kan](https://forums.unrealengine.com/u/Regan_Kan)\
**Post date:** [December 16, 2021, 2:16pm UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/33 "2021-12-16T14:16:09Z")

</div>

Hi , The downloadlink is outdated can you update it? Thanks.

---

<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:** [January 14, 2022, 3:31am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/34 "2022-01-14T03:31:15Z")

</div>

Thank you for sharing your solution!

---

<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:** [January 14, 2022, 3:32am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/35 "2022-01-14T03:32:59Z")

</div>

Dear Lovely Victory Plugin Users,

Sorry about my delay in replying to everyone

I see all of your requested nodes and will add them as soon as I can.

The answer as to why I don’t import everything is simply that I have to handle the includes differently in UE5 and so it is easier for me to add everything as needed rather than go through a very long compiling process.

I am also personally curious which nodes everyone has been using, and I am enjoying your feedback very much

> [@telekinesticman](#):
>
> I’ve used the “Victory Create Proc”, “Has Substring” and “Get Names of All Loaded Levels” nodes a few times for various pipeline tools in UE4. Would it be possible for you to get these brought over into UE5? That would be incredible! “Has Substring” is probably the lowest priority one overall but would still be handy to have.
> 
> Thank you so much from myself and my team. Your work has been an incredible help for us so far!

> [@gypsyhipsta](#):
>
> Hi , we are using heavily the Pixel nodes, do you have any plans to enable them in the UE5? We would be very thankful for that. Thanks a lot.

> [@Graphenes](#):
>
> I would love to have the load/save, string/string array to disk nodes!

> [@Daniel.Kipping](#):
>
> The File IO Save String Array to File would be nice

> [@Undead\_Studios](#):
>
> Love the plugin, any chance the Viewport Set Mouse Position will return?
> 
> Thx 🙂

> [@anonymous\_user\_aff7ae0c](#):
>
> For my application it would be very useful to have things like Get Actor Relative Location/Rotation and string functionality (Load String Array from File, String Combine Strings, etc.) working in UE5.

I will be back soon!

💖 Love and Joy to You! 💖

And Happy New Year!

2022 is going to be the Most Fun Year For All Of Us

Especially as we keep making 🌹 colorful 🌟 and fun games to inspire others!

⚡ Did you know 🌈

that when you make other people happy, as they play your game

in addition to money

🌟 You gain in happiness just because you made your players so happy? 🌟

It’s true!

🌹 So let’s keep inspiring the world everyone! ⚡

And I will do an update as soon as I can!

💖

---

<div class="post-metadata">

**Author:** ![pladux](https://d1ap1mz92jnks1.cloudfront.net/user_avatar/forums.unrealengine.com/pladux/32/1194519_2.png) [@pladux](https://forums.unrealengine.com/u/pladux)\
**Post date:** [January 15, 2022, 8:17am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/36 "2022-01-15T08:17:30Z")

</div>

, I don’t use any of your plugins, but I enjoy that you make the world a little bit better with your positive attitude in every post. Without any hate and quarrels. Thank you for that and keep bringing ❤ to the people!

---

<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:** [January 18, 2022, 1:33am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/37 "2022-01-18T01:33:16Z")

</div>

@pladux Hee hee, thank you for the Lovely Message!

Positive Attitude + ❤ to the people = ⚡ Victory! 🌹

❤

PS: I am doing a new UE5 plugin version right now!

---

<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:** [January 18, 2022, 2:32am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/38 "2022-01-18T02:32:51Z")

</div>

* * *

**New Victory Plugin 5 Update!**

* * *

Dear ⚡ Awesome 💖 UE Community, 💖

🦄 I’ve added the requested nodes! 🦄

Please do let me know if you have other requests!

Part of the reason I am doing this sort of interview process is also to trim the plugin, getting rid of nodes ppl were not using so as to make the plugin a more streamlined complimentary 🌹 Gift to You All. 🌹

❤

PS: The 🌈 Joyful Colors 🌟 version of UE5 UI doesn’t come with the plugin, but I could **upload my UI Color file** if you like!

 ![Untitled](https://d3kjluh73b9h9o.cloudfront.net/original/3X/7/f/7f2c335854e2a02bbff993cf7d2da0cde8d7c2c6.jpeg)

**Download Link Here:**

> [@Rama's Extra Blueprint Nodes for UE5, No C++ Required!](https://forums.unrealengine.com/t/victory-plugin-ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476):
>
> zap Victory Plugin For UE5 [You Can Easily Create Save Game Images With Victory Plugin for UE5!](https://forums.unrealengine.com/t/victory-plugin-ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/6) Dear Community, I am making my Victory Plugin for UE5! Please let me know which VictoryPlugin nodes you want most from the UE4 version and I can work on bringing them into UE5! ~ \*\* Community Bonus\*\*: [Easy Way to Activate Your Pineal Gland For Cleaner Coding / Faster Development Cycle](https://forums.unrealengine.com/t/victory-plugin-ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/48)~ zapzapzapzapzapzapzapzapzapzapzapzapzapzapzapzapzapzap…

---

<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:** [January 19, 2022, 3:55am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/39 "2022-01-19T03:55:12Z")

</div>

* * *

🌟 Get Text From Any 🐎 💨 Running .EXE on Your Computer! 💖

URamaVictoryPluginCreateProcessPipe Object ⚡ is Born! ⚡

* * *

⚡ Below is a picture of me capturing the output of a .exe on my computer, a video compression tool, [HandBrake](https://handbrake.fr/)! ⚡

The output of STDOUT of the .exe is coming directly into UE4, 🌹 using only Blueprints! 🌹

 ![proc2_5](https://d3kjluh73b9h9o.cloudfront.net/original/3X/7/9/79bacc83ddbf33e2e27db69543a263de9b79cef9.jpeg)

I’ve made **[a new version of the Victory Plugin](https://forums.unrealengine.com/t/39-ramas-extra-blueprint-nodes-for-you-as-a-plugin-no-c-required/3448)** ( 4.27 (win32, win64 only) in original post ) !

This new version allows you to create a 🌹 Very Special 🌹 URamaVictoryPluginCreateProcessPipe to capture your Process output, if the Process is outputting to STDOUT (console window) or STDERR

1. Construct the RamaVictoryPluginCreateProcessPipe object

2. Pass it into VictoryCreateProc

3. Call ReadFromPipe on the object periodically to get updates from your process

4. When done, please call ClosePipe on the object, and null the reference to the object (I call ClosePipe inside of object BeginDestroy, but might as well ⚡ take initiative ⚡ yourself and close the actual OS pipe yourself immediately, rather than waiting for Garbage Collection)

 ![image](https://d3kjluh73b9h9o.cloudfront.net/original/3X/0/b/0b357c1c55f696c2087e413b108c658fb3e2e113.jpeg)

* * *

**Relevant UE4 C++ Code**

* * *

.h

```auto
/** 
	Made With Love By for Use with @VictoryCreateProc
	So that you can receive feedback from your processes.
	
	♥
	
	
*/
UCLASS(Blueprintable,BlueprintType)
class URamaVictoryPluginCreateProcessPipe : public UObject
{
	GENERATED_BODY()
public:
	 
	UFUNCTION(BlueprintCallable, Category = "Joy Flow")
	bool CreatePipe();
	
	UFUNCTION(BlueprintCallable, Category = "Joy Flow")
	void ClosePipe();
	
	/** 
		This has exec pins because it is an expensive action and the output is saved/cached on the output pin, whereas a Pure node would repeat the action many times, each time node is accessed.
		
		@Return false if the pipes were not created yet
		
		♥  
	*/
	UFUNCTION(BlueprintCallable, Category = "Joy Flow")
	bool ReadFromPipe(FString& PipeContents);
	
	UFUNCTION(BlueprintPure, Category = "Joy Flow")
	bool PipeIsValid();
	
public:
	void* ReadPipe = nullptr;
	void* WritePipe = nullptr;
	
	virtual void BeginDestroy() override;
};

```

.cpp

```auto
bool URamaVictoryPluginCreateProcessPipe::CreatePipe()
{
	if(PipeIsValid())
	{
		//Ignore repeat creates without a close inbetween <3 
		return true;
	}
	return FPlatformProcess::CreatePipe( ReadPipe, WritePipe );
}
void URamaVictoryPluginCreateProcessPipe::ClosePipe()
{
	if(PipeIsValid())
	{
		FPlatformProcess::ClosePipe(ReadPipe, WritePipe);
		ReadPipe = nullptr;
		WritePipe = nullptr;
	}
}
bool URamaVictoryPluginCreateProcessPipe::ReadFromPipe(FString& PipeContents)
{
	PipeContents = "";
	
	if(!PipeIsValid()) 
	{
		return false;
	}
	PipeContents = FPlatformProcess::ReadPipe(ReadPipe);
	return true;
}
bool URamaVictoryPluginCreateProcessPipe::PipeIsValid()
{
	return ReadPipe != nullptr && WritePipe != nullptr;
}

void URamaVictoryPluginCreateProcessPipe::BeginDestroy()
{
	Super::BeginDestroy();
	// ~~~~~~~~~~~~~~~~~~~~
	
	//Close pipe if it was still open! ♥ 
	ClosePipe();
}

```

❤

---

<div class="post-metadata">

**Author:** ![M1te](https://d3kjluh73b9h9o.cloudfront.net/original/4X/2/8/5/28502927f1d97ba1051b3b47ccfe17233bf41ef0.png) [@M1te](https://forums.unrealengine.com/u/M1te)\
**Post date:** [January 19, 2022, 11:36am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/40 "2022-01-19T11:36:25Z")

</div>

Hi !! Can you help me with the UMG Color wheel for UE5? It is not visible in UMG. Is the color wheel not working or available or how to install it properly?

---

<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:** [January 20, 2022, 4:15am UTC](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476/41 "2022-01-20T04:15:54Z")

</div>

❤ 's UE5 Color Picker For You ❤

Dear UE Community,

I’ve integrated my implementation of the UE Editor Color Picker into the UE5 version of Victory Plugin!

⚡ 🌟 🌹This Color Picker, The UE Color Picker Itself, Will Indeed Work In Packaged Games 🌹 🌟 ⚡

Many Thanks To 💖 Nick Darnell 💖, for it was he who exposed the UE Color Picker Slate class ([Runtime/AppFramework](https://docs.unrealengine.com/4.26/en-US/API/Runtime/AppFramework/Widgets/Colors/SColorPicker/)) so we could use it in 🌹packaged games! 🌹

My role was to create the UMG Class wrapper of the Slate Code so that the Color Picker can be accessed from the 🌹 UMG Designer 🌹, as you can see in the video below!

[![](https://d3kjluh73b9h9o.cloudfront.net/original/4X/9/2/5/925551a4b88f0804224bd7b03e27758ea6ff8b86.jpeg "Rama's Unreal Engine 5 Color Picker, Works in Packaged Games!") ](https://www.youtube.com/watch?v=1DKMN7LFF90)

@M1te Your UMG Color Picker Gift is Ready at the Download link in [original post](https://forums.unrealengine.com/t/victory-plugin-ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476), enjoy!

* * *

UE5 C++ Code

* * *

.h

```auto
/*
	By for You
	
	You are welcome to use this code anywhere as long as you include this notice.
*/

#pragma once

//UE5 Color Picker
// Requires module in build.cs
// APPFRAMEWORK 
#include "Runtime/AppFramework/Public/Widgets/Colors/SColorPicker.h"

class SJoyColorPicker
	: public SColorPicker
{ 
	typedef SColorPicker Super;
	
public: //! < ~~~~~
	FORCEINLINE void SetColorRGB(const FLinearColor& NewColor)
	{
		//This is protected in SColorPicker 
		// so can't call it from UMG component
		SetNewTargetColorRGB( NewColor, true ); //Force Update
	}
	
//Animation
public:
 
	FLinearColor InstantColor;
	bool Animation_SkipToFinalForOneTick = false; 
	virtual void Tick( const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime ) override
	{ 
		//Skip to final, then resume normal animation behavior
		if(Animation_SkipToFinalForOneTick)
		{  
			Animation_SkipToFinalForOneTick = false;  
			Super::Tick(AllottedGeometry, InCurrentTime, 10000); //<~~~ because all the required vars like CurrentTime are private :)
			SetColorRGB(InstantColor);
			return;
			// ~~~~
		}
		
		//Animate normally!
		Super::Tick(AllottedGeometry, InCurrentTime, InDeltaTime);
	}
};

```

```auto
#pragma once

#include "CoreMinimal.h"
#include "UObject/ObjectMacros.h"
#include "Styling/SlateColor.h"
#include "Styling/SlateTypes.h"
#include "Widgets/SWidget.h"
#include "Components/Widget.h"

#include "RamaColorPicker.generated.h"

class SJoyColorPicker;

DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnJoyColorChangedEvent, const FLinearColor&, NewColor);

/**
 * Color Picker For You! ♥ 
 */
UCLASS()
class VICTORYBPLIBRARY_API URamaColorPicker : public UWidget
{
	GENERATED_UCLASS_BODY()
	
public:

	/** The currently Chosen Color for this Color Picker! ♥ */
	UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=" Color Picker",meta=(Keywords="getcolor"))
	FLinearColor JoyColor = FLinearColor::Red;
	
	/** Called whenever the color is changed programmatically or interactively by the user */
	UPROPERTY(BlueprintAssignable, Category=" Color Picker", meta=(DisplayName="OnColorChanged ( Color Picker)"))
	FOnJoyColorChangedEvent OnColorChanged;
	
	/**
	 * Directly sets the current color, for saving user preferences of chosen color, or loading existing color of an in-game clicked actor!
	 * @param InColor The color to assign to the widget
	 */
	UFUNCTION(BlueprintCallable, Category = " Color Picker",meta=(Keywords="setcolor"))
	void SetJoyColor(FLinearColor NewColor, bool SkipAnimation=false);
	
public:
	void ColorUpdated(FLinearColor NewValue);

#if WITH_EDITOR
public:
	
	// UWidget interface
	//virtual const FSlateBrush* GetEditorIcon() override;
	virtual const FText GetPaletteCategory() override;
	// End UWidget interface
	
	// UObject interface
	virtual void PostEditChangeProperty(struct FPropertyChangedEvent& PropertyChangedEvent) override;
	// End of UObject interface
	
#endif

public:
	
	//~ Begin UWidget Interface
	virtual void SynchronizeProperties() override;
	//~ End UWidget Interface
	
protected:
	//~ Begin UWidget Interface
	virtual TSharedRef<SWidget> RebuildWidget() override;
	// End of UWidget
	
	// UVisual interface
	virtual void ReleaseSlateResources(bool bReleaseChildren) override;
	// End of UVisual interface
	
protected:
	TSharedPtr<SJoyColorPicker> MySlateColorPicker;
	
};

```

```auto

#include "RamaColorPicker.h"

#include "UObject/ConstructorHelpers.h"
#include "Widgets/DeclarativeSyntaxSupport.h"
#include "SJoyColorPicker.h"

#define LOCTEXT_NAMESPACE "UMG"

URamaColorPicker::URamaColorPicker(const FObjectInitializer& ObjectInitializer)
	: Super(ObjectInitializer)
	, JoyColor(FLinearColor::Red)
{}

#if WITH_EDITOR
/*
const FSlateBrush* UJoyColorWheel::GetEditorIcon()
{
	return FUMGStyle::Get().GetBrush("Widget.Image");
}
*/ 
 
const FText URamaColorPicker::GetPaletteCategory()
{
	return LOCTEXT("Victory Plugin", "Victory Plugin");
}

void URamaColorPicker::PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent)
{
	Super::PostEditChangeProperty(PropertyChangedEvent);

	FName PropertyName = (PropertyChangedEvent.Property != NULL) ? PropertyChangedEvent.Property->GetFName() : NAME_None;
  
	//Update Picker to JoyColor property change!
	if (PropertyName == TEXT("JoyColor"))
	{  
		SetJoyColor(JoyColor,true);
	}	
} 
#endif

void URamaColorPicker::SetJoyColor(FLinearColor NewColor, bool SkipAnimation)
{
	if(!MySlateColorPicker.IsValid()) 
	{
		return;
	}
	
	//Skip Anim?
	if(SkipAnimation)
	{
		MySlateColorPicker->InstantColor = NewColor; 
		MySlateColorPicker->Animation_SkipToFinalForOneTick = true; //See SJoyColorPicker.h
	}
	else
	{
		//Set!
		MySlateColorPicker->SetColorRGB(NewColor);
	}
}

void URamaColorPicker::ColorUpdated(FLinearColor NewValue)
{
	JoyColor = NewValue; 
	 
	if(OnColorChanged.IsBound())
	{
		OnColorChanged.Broadcast(JoyColor);
	}
} 

TSharedRef<SWidget> URamaColorPicker::RebuildWidget()
{
	MySlateColorPicker = SNew( SJoyColorPicker )
		.TargetColorAttribute( JoyColor )
		.OnColorCommitted( FOnLinearColorValueChanged::CreateUObject( this, &URamaColorPicker::ColorUpdated) );
	
	return MySlateColorPicker.ToSharedRef();
}

//Release
void URamaColorPicker::ReleaseSlateResources(bool bReleaseChildren)
{
	Super::ReleaseSlateResources(bReleaseChildren);

	if(MySlateColorPicker.IsValid()) 
	{
		MySlateColorPicker.Reset();
	}
}

void URamaColorPicker::SynchronizeProperties()
{
	Super::SynchronizeProperties();
	 
	SetJoyColor(JoyColor,true);
}

/////////////////////////////////////////////////////

#undef LOCTEXT_NAMESPACE

```

[Previous page](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476.md?page=1)

[Next page](https://forums.unrealengine.com/t/ramas-extra-blueprint-nodes-for-ue5-no-c-required/231476.md?page=3)
