Thank you for sharing your solution!
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
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!
Rama
Rama, 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!
@pladux Hee hee, thank you for the Lovely Message!
Positive Attitude + to the people =
Victory!
Rama
PS: I am doing a new UE5 plugin version right now!
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 Rama Gift to You All.
Rama
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!
Download Link Here:
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!
The output of STDOUT of the .exe is coming directly into UE4, using only Blueprints!
Iāve made a new version of the Victory Plugin ( 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
-
Construct the RamaVictoryPluginCreateProcessPipe object
-
Pass it into VictoryCreateProc
-
Call ReadFromPipe on the object periodically to get updates from your process
-
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)
Relevant UE4 C++ Code
.h
/**
Made With Love By Rama for Use with @VictoryCreateProc
So that you can receive feedback from your processes.
ā„
Rama
*/
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
ā„ Rama
*/
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
bool URamaVictoryPluginCreateProcessPipe::CreatePipe()
{
if(PipeIsValid())
{
//Ignore repeat creates without a close inbetween <3 Rama
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! ā„ Rama
ClosePipe();
}
Rama
Hi Rama!! 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?
Ramaā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) 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!
@M1te Your UMG Color Picker Gift is Ready at the Download link in original post, enjoy!
UE5 C++ Code
.h
/*
By Rama 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);
}
};
#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);
/**
* Rama Color Picker For You! ā„ Rama
*/
UCLASS()
class VICTORYBPLIBRARY_API URamaColorPicker : public UWidget
{
GENERATED_UCLASS_BODY()
public:
/** The currently Chosen Color for this Color Picker! ā„ Rama*/
UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="Rama Color Picker",meta=(Keywords="getcolor"))
FLinearColor JoyColor = FLinearColor::Red;
/** Called whenever the color is changed programmatically or interactively by the user */
UPROPERTY(BlueprintAssignable, Category="Rama Color Picker", meta=(DisplayName="OnColorChanged (Rama 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 = "Rama 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;
};
#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
OMG RAMA!!! Have no words in the world to thank you!!!
Hee heee!
Love and Joy to You tooo!
Have fun!
I have used this very color picker in my own packaged games
, so I know it works!
Enjoy!
Rama
Hi⦠sorry for the offtopic, but I am curious. When seeing your theme color which tries its best to make my eyes bleed, I am just wondering if you suffer from some significant vision impairment, requiring you to configure your editor color theme this way, or if itās just some sort of ā ā ā infused preference?
I am not trying to be a jerk. I am just genuinely curious why would anyone voluntarily undergo this degree of visual suffering.
(EDIT: Why the hell does this forum censor L S D? )
Lovely to hear from you again @Rawalanche !
I believe the experience you are currently having with my color theme is similar to what happens if you are in a cave for a long time with very little light, and then, after 15 years, if you just rush out into the Blazing Light of Day, it can be too much,
and the instinctive response perhaps is to think that the Light is Too Bright, rather than thinking that maybe your eyes have become too accustomed to dim places.
I believe this automatic response comes from the fact that when dealing with the realm of Perceptions, we tend to assume our perceptions are the correct and only way of perceiving, simply because they are the only set of perceptions we are experiencing, and therefore it is easy to assume that our perceptions are the only ones that even exist.
If you embrace the concept that perhaps there are Other Perceptions, and sets of perceptions that you are not currently having, that are also valid and good, and perhaps even wildly different
than your own, then you enter the realm of True Comprehension of just how vast and varied everyoneās experience of Life really is!
It is only when we encounter someone elseās choices that vary greatly
from our own that we realize⦠they must be perceiving life very differently than us!
Then of course the question becomes, how do you systematically alter your perceptions toward the set of perceptions that are only the ones that you prefer?
Once you adapt to the
Frequency Range of my Color Theme
I do think you will realize that what you are currently experiencing will transition into āWow, Instant Joy and Happiness every time I look at this color theme!ā
Yes modern culture required many curious adjustments on our part in order to fit in, and modern culture just has not done a great job with Color in my opinion, notable exceptions are tye-dye shirts and Nature Herself.
I consider it to be my responsibility to help you Pre-Adapt to the Blazingly Intense Colors
that are the guaranteed Future experience of all of us,
for so very many reasons
not the smallest of which is the fact that
Bright Pure Colors
really are Foundational Elements of Life Itself, and have great power to heal your body.
~
I am not contradicting my statement of supporting and encouraging variety of perceptions among all people, I am indicating that:
We will be having a
Perception Convergence
in the Near Future, that is already Ongoingā¦
Due to the changing physical nature of our Solar System!
The need for this convergence is already evident in your post and my reply, for communication among people, and mutual understanding (even if mutual respect is already there, true understanding
would be even better) really should be easier than it currently is!
I think our exchange already makes it obvious that a Perception Convergence among people would facilitate not just mutual respect and appreciation, but also true resonance, harmony, and the ability for us both to use the same (or similar) color theme in our UE editors!
~
To put it simply, Friendship will be greatly facilitated
by a global / solar-system-wide Perception Convergence.
Agreeing to disagree is one thing.
Finding it Easy to Agree as Friends
who can
easily
understand each otherās perspective would be
Waaaaay Better!
~
Fun Experiment
So I ask you (and anyone who reads this is welcome to try it too), is there any 1 or several colors that you do actually still enjoy, even when they are very bright?
Take a paint program maybe, and let me know what your absolute favorite very-bright colors are.
Color-Based Healing and Empowerment is Real
Ask any Flower!
Rama
Man, I really wish I could be the kind of person who experiences instant joy and happiness every time I look at that theme. Right now I experience a need to reach for a screwdriver I can shove right onto my eyeballs
Anyway, I am just having a hard time reconciliating my confusion about someone who on the one hand supports the Unreal Engine community with so many great resources and pieces of code, but on the other hand has such⦠āuniqueā taste
I mean, seeing how you approach the visual aspect of the Engine, Iād totally expect your C++ code to be totally unreadable to me, yet itās actually quite fine. So itās just this contradiction that I find so fascinating
You said the magic word @Rawalanche ! āContradiction!ā
Any time we are faced with an āapparentā contradiction (it looks smells and tastes like a contradiction, but maybe isnāt), that is a moment to dive into and research deeply.
The feeling of ācontradictionā : āWait⦠how can these two things coexist side by side in a person/situation/experience I am having?ā
Is an almost-guranteed indicator that you are experiencing an Unusual Frequency Range (UFR) and if you explore the feeling of contradiction, and the elements that seem to contradict each other, in depth,
You will almost always find there is actually Another Realm, Another Dimension,
Another Angle of Analysis
where the seemingly contradictory elements are actually Perfectly In Harmony with each other, but the Connective Tissue of these elements was previously not within your āacclimatedā perception range.
I am indicating that you and everyone are more than capable of basically anything
,
it is just that we get into a Perception Range Groove (PRG) based on what life has expected of us so far,
and you can easily exit that groove and see New Angles on Life,
if you learn to enjoy apparant contradictions / that feeling, and discover where the Connective Tissue does actually exist.
~
Facilitating Perception Range Expansion
If you obtain Essential Oil of Lavender, you will find that Lavender activate the Human Pineal Gland, and will improve both Your Unreal Engine Development Cycle
(faster programming, faster comprehension of bugs in the code, and the overall game experience) as well as making it easy for you to expand your perception range and handle frequencies and experiences that previously might have overloaded your system.
Yes, it is true, Flowers help me Code in UE C++.
~
The Awesome Power Of Unreal Engine
The Awesome Thing about Unreal Engine,
that I always appreciate every day,
is that the Ceiling of Potential of what I can create is basically non-existent,
ā If I can imagine it, I can create it, in Unreal Engine!
ā
Rama
Well Essential Oil of Lavender
helps to restore your obviously Enormous Imagination,
by stimulating your Pineal Gland
You could mix a few drops of Essential Oil of Lavender in water, and drink it daily,
and then you will see your Unreal Engine Development Cycle become more and more fun, with faster results, cleaner code, and very happy players.
Rama
PS: Now you know the Truth, My Victory Plugin is Flower-Powered UE C++ Code!
SwitchByte (uint8 faster) SwitchWildcard please!
Hello.
Iām trying to use functions Get pixels. Function āGet Pixel from T2Dā doesnāt work at all, it always returns 0 by color and false as return value. Function āGet Pixels Array from T2Dā crashes the editor.
Can anyone help understand how to use it.
Welcome to the Unreal Engine Forums @darkflash007 !!!
I have to say, that is one Sexy name you have!
Dark flash⦠trying to envision in our physical universe, what a Dark Flash would even look likeā¦
Wow!
~
What engine version are you using?
I have to test with the same engine version to be sure my solution will work for you!
Rama
Dear @Dreika
Can you please explain more what you mean?
What should the node do?
The more detailed you are, with mock up pictures and such, the better I can help
I prefer more words and media to less, to know exactly what you are trying to Achieve!
Rama
Greetins @Rama ! I hope youāre doing well
Is the victory plugin able to work with UE 5.1.0 (from Epicās ue5-main branch?) Or is it still just UE5 EA right now?