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

Gamepad UMG 4.15 !

Here you go @Joure!

Dear Community,

Here is gamepad UMG for 4.15!

is a full project you can play with!

Enjoy!

:heart:

That was fast. You rock, thanks !!!

:heart::heart::heart:

I’m under a very tight deadline to convert a project with a lot of ISMs into individual interactive objects (subject to performance). I can hit the deadline if I could have selected a static mesh actor and “replace actor with selected in content browser.” But the project I was handed contains a ton of ISMs, obviously that process doesn’t work when I’m trying to replace an instance of a static mesh inside an ISM with an interactive Actor. Copying and pasting transforms is so slow and painful and there are so, so many to convert.

What I really need is a tool where I can select an ISM actor and break it into individual static mesh actors, preserving transforms. Then replace some SM instances with my interactive actors. Then select the remainder and recompose them back into an ISM actor.

Before I burn precious investigating the Victory plugin, does anyone know if or any other tool can solve my problem? (I’m in Unreal 4.15)

that works for mobile(ios + android). but there are some functions which is only for desktop. so u have to put those inside proper pre-processor.
also u have to add in plugins white space list.

hi , does anyone know how to get to compile with Linux? I’m using it to pass custom strings for stuff like server name ect but it doesn’t seem to build with Linux?

Hi , just a small with your Get/Set custom configs nodes. They work well but if I manually change a setting in the ini file it seems the change doesn’t propagate until I restart the editor. I take it the settings must be cached at editor load , that being said, if you write values using your nodes the changes seem to stick. Is there a way to refresh these cached values using another ‘refresh ini’ node or something like that?

Thanks!

The answers you seek lie in ConfigCacheIni.h and .cpp :slight_smile:

I see how to update individual section from memory to file:



/**
	 * Update a single property in the config file, for the section that is specified.
	 */
	CORE_API bool UpdateSinglePropertyInSection(const TCHAR* DiskFilename, const TCHAR* PropertyName, const TCHAR* SectionName);


But you want to go the other way :slight_smile:

Closest thing I can find to what you want is



static bool LoadGlobalIniFile(FString& FinalIniFilename, const TCHAR* BaseIniName, const TCHAR* Platform=NULL, bool bForceReload=false, bool bRequireDefaultIni=false, bool bAllowGeneratedIniWhenCooked=true, const TCHAR* GeneratedConfigDir = *FPaths::GeneratedConfigDir());


How about you run a few tests, or poke around in the engine code, and see if you can find an example of reloading an ini from disk? Then I could add that code to Victory Plugin :slight_smile:

:heart:

Hee hee!

:heart:

Hi !

First of thanks very much for wonderful plugin.

I’m using your “File IO Save String Array to File” and realized that there’s no way to clear the file once it’s created. In other words, it always appends new data to the existing file content. ¿Could you add a “Clear/Append” boolean input pin to node? That would be great!

Keep up the good work!

Hi again, ! I use your fantastic blueprint node Victory Create Process.
Actually, I run a c# program that updates game files via ftp(download images from server to game folder).
I can pass args and check is program steel working or not.
But, is there way to get result (simply get code like 0 or 1). I know that is not very good, but it is pretty efficient method:)
If there any way to get result, please, let me know!
And again, thanx for plugin!:heart:

Hi ,

Thanks for the plugin:D

I get an error when packaging to win64. I’m using ue4 4.15.1 release from github.
The problem happens when nativization is on during packaging. Works ok when it is disabled.


Plugins\VictoryPlugin\Source\VictoryBPLibrary\Public\VictoryBPFunctionLibrary.h(39): fatal error C1083: Cannot open include file: 'ImageWrapper.h': No such file or directory

and I get warning (not sure if it is related)


UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: g:\code\github\ue4_release\engine\source\runtime\core\public\Containers/EnumAsByte.h(19): warning C4996: 'TEnumAsByte_EnumClass<true>': TEnumAsByte is not intended for use with enum classes - please derive your enum class from uint8 instead. Please update your code to the new API before upgrading to the next release, otherwise your project will no longer compile.
UATHelper: Packaging (Windows (64-bit)): UnrealBuildTool: g:\code\github\ue4_release\engine\source\runtime\core\public\Containers/EnumAsByte.h(10): note: see declaration of 'TEnumAsByte_EnumClass<true>''

Thanks
Sarlack

Hi,

I get the same as Sarlack – blueprint nativization fails on packaging. I was able to replicate by creating a blank project, and dropping any victory node in a bp. using standard epic nodes it works fine.

Would be great if you could get it to work!

Cheers, LZ

Hello ,

first of thank you very much for the great plugin!

I’ve one question regarding the “Download Image” node.
Currently it returns a Texture 2DDynamic reference which unfortunately can’t be hooked up to let’s say the “Victory Get Pixels Array from T2D” node which requires a Texture 2D reference.
However I’ve seen people doing exactly that here: Social Network Plugin (Facebook) - Marketplace - Epic Developer Community Forums
It doesn’t seem to work anymore on UE 4.15 though

Do you know what the problem is here? or how I can read the pixel data from the texture returned by the “Download Image” node?

Thanks for your help in advance!
Best,
Jan

EDIT:
I’ve just found out that Epic changed the return value in a Bugfix on 4.15

Do you plan to update your “Victory Get Pixels Array from T2D” to accomodate ? It would be super usefull!
Thanks!

Hey there , I just had a real quick question. I’m utilizing your BP plugin for a project of mine and I just have to say that it’s been a fantastic help so far. However, I have a small; whenever I use the “load texture” nodes to load an image from the local PC for use as an ingame texture, the texture has the default trilinear filtering. Even when using the available nodes in the editor to change the compression settings, filtering settings, etc. the texture remains trilinearly filtered. is an as I need the textures to be filtered to the nearest neighbor, but also loaded at runtime. Is there any solution or perhaps a fix so that I can use plugin in my project without having to sacrifice the nearest texture filtering method?

Image wrapper is in the build CS of Victory Plugin:



PrivateDependencyModuleNames.AddRange(
			new string]
			{
				"CoreUObject", 
				"Engine", 
				"InputCore",
				
				"RHI",
				"RenderCore",
				 
				"HTTP",
				"UMG", "Slate", "SlateCore",
				
				**"ImageWrapper",**
				
				"PhysX", 
				
				"HeadMountedDisplay",
  
                "AIModule"	
			}
			);


So I dont understand why nativization is not recognizing , and adding the ImageWrapper module during nativization of your project. Sounds like an engine bug to me related to nativization + plugins because I am not sure** how to tell the Nativization process to include additional modules beyond including them in the plugin build cs that needs them.**

Does anyone have any ideas?

I can help you if you do some research for me, look through Texture.h and Texture2D.h in the source code, and tell me if you see any option to change the filtering to the option you want during runtime.

I am very busy so I need some of research on your end before I can get more involved with actual coding itself :slight_smile:

:heart:


**Research **

Thanks for sharing the additional info, helps me lock onto the faster :)

Texture2D and Texture2DDynamic both derive from UTexture, but that is their common base class, so you can't cast a Texture2DDynamic to Texture2D.

Because if you can do that, you can convert Texture2DDynamic -&gt; Texture2D via a UTexture initialization.

I've looked through the 4.15 Engine source code and Texture2DDynamic is used in only a few places, and there doesn't seem to be a conversion to UTexture2D. 

The only use of Texture2DDynamic currently appears to be Download image -&gt; Set Brush From Texture 2D dynamic.

Or it can be used with a Texture Parameter in a material shader.


I've figured out how to get the platform data from Texture2DDynamic

You have to use UTexture base class which returns a pointer to a pointer:



```


/**
	 * Textures that use the derived data cache must override  function and
	 * provide a pointer to the linked list of platform data.
	 */
	virtual FTexturePlatformData** GetRunningPlatformData() { return NULL; }


```



For anyone trying  at home make sure to dereference the ptr ptr carefully before trying to even think about access the ptr itself!


```


FTexturePlatformData** PtrPtr = T2D->GetRunningPlatformData();
if(!PtrPtr) return false;
FTexturePlatformData* PlatformDataPtr = *PtrPtr; //Check before dereferencing! ♥ 

//Now check the ptr itself too
if(!PlatformDataPtr)
{
  return false;
}

//use the platform data


```



However the is that the platform data for a Texture2DDynamic does not appear to be valid because I guess Texture2DDynamic does not use derived data cache.

**So that means we need to use the FTextureSource itself, I think, to get the byte data.**

But I do not see how to get the byte data from FTextureSource where I will know what the color ordering is to convert to FLinearColor and I am out of  to research .

Community Assistance Requested

Anyone want to continue and finish it?

We need a second version of GetPixel data that accepts FTexture2DDyanamic

:heart:

New Victory Plugin Nodes, Community Contributions

Dear Community,

I’ve uploaded a new build of Victory Plugin that has new nodes in it from 2 community members!

   @draquod

Draquod added RemoveFromStreamingLevels to compliment the existing nodes, thanks!

I also added Hide and Unload Streaming level.

Please note you can just set the bool parameters on UStreamingLevelKismet to show/hide and load/unload a streaming level via bShouldBeVisible and bShouldBeLoaded.

You get a UStreamingLevelKismet ptr when you use my Load Level Instance node which is now part of the main UE4 Engine release!


** RedBeard**

 has added many nodes to the Victory Plugin in  latest update!

Generic Array Sort

One of the most exciting nodes from is a Generic Array Sorting Node!

Handles:

FString
FText
FName
Int
Float
Bool


Here's a bunch with comments from :



```


/**
 *	Inserts child widget into panel widget at given location.
 *	NOTE: The child widgets "Construct" event will be fired again!
 *
 *       @param	Parent	- The panel to insert the child into.
 *       @param	Index	- Where to insert the new widget.
 *       @param	Content - The child widget to insert.
 *       @return slot assigned to content.
 */
static class UPanelSlot* **InsertChildAt**(class UWidget* Parent, int32 Index, UWidget* Content);

/** Flushes the current key state for target player controller. */
static void **FlushPressedKeys**(class APlayerController* PlayerController);

/** 
 *	Helper function to calculate vertical FOV from horizontal FOV and aspect ratio.
 *	Useful to for determining distance from camera fit in-game objects to the width of the screen.
 */
static float **HorizontalFOV**(float VerticalFOV, float AspectRatio);

/** 
 *	Helper function to calculate vertical FOV from horizontal FOV and aspect ratio.
 *	Useful to for determining distance from camera fit in-game objects to the height of the screen.
 */
static float **VerticalFOV**(float HorizontalFOV, float AspectRatio);

static FVector **GetVectorRelativeLocation**(FVector ParentLocation, FRotator ParentRotation, FVector ChildLocation);

static FVector **GetComponentRelativeLocation**(class USceneComponent* ParentComponent, class USceneComponent* ChildComponent);

static FVector **GetActorRelativeLocation**(class AActor* ParentActor, class AActor* ChildActor);

static FRotator **GetRotatorRelativeRotation**(FRotator ParentRotation, FRotator ChildRotation);

static FRotator **GetComponentRelativeRotation**(class USceneComponent* ParentComponent, class USceneComponent* ChildComponent);

static FRotator **GetActorRelativeRotation**(class AActor* ParentActor, class AActor* ChildActor);

static bool **StringIsEmpty**(const FString& Target);


```



Download Links

4.15 Build (HTML5, win32, win64, editor, dev packaged, and shipping)

:heart: Please note I now use the UE4 Marketplace C++ Plugin Standard when packaging Victory plugin for you :heart:

  1. Win64 Development
  2. Win64 Shipping <~~~~~~ NEW!
  3. Win32 Development
  4. Win32 Shipping
  5. HTML5 Development
  6. HTML5 Shipping <~~~~~~ NEW!

Please see my instructions for Packaging UE4 Plugins With Your Game.


**Prior Engine Versions**

**4.12: **http://www.mediafire.com/download/g441k2815r5b045/VictoryPlugin12.zip

**4.11: **http://www.mediafire.com/download/jp91b9atphm2obt/VictoryPlugin11.zip

**4.13: **https://www.mediafire.com/?7kt9fepwa1pgs0y

**4.14: ** http://www.mediafire.com/file/7915cuk19c3nbfw/VictoryPlugin14.zip

Donations can be sent to me via:

:heart:

Fix For Blueprint Nativization Error, Enjoy!

Dear Community,

The in these quotes below has now been addressed!

In the latest 4.15 build that is now live at link:

4.15 Build (HTML5, win32, win64, editor, dev packaged, and shipping)

The BP Nativization has been addressed!

Please try the latest build and see if it works for you!

:heart:

It works fine now. Thanks very much :slight_smile: