Announcement

Collapse
No announcement yet.

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

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Hi Rama,

    Thanks for the plugin

    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.

    Code:
    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 this warning (not sure if it is related)

    Code:
    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

    Comment


      Hi Rama,

      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

      Comment


        Hello Rama,

        first of all 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: https://forums.unrealengine.com/show...l=1#post430723
        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
        Bugfix: Fixed a corrupt texture bug in the Download Image blueprint node, on some platforms.

        The new Download Image blueprint node returns a Texture 2D Dynamic, rather than a Texture 2D. It may be necessary to reauthor blueprint/code which uses this node to support the change in return type.
        Do you plan to update your "Victory Get Pixels Array from T2D" to accomodate this? It would be super usefull!
        Thanks!
        Last edited by janla; 04-15-2017, 05:55 AM.

        Comment


          Hey there Rama, 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 issue; 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. This is an issue 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 this plugin in my project without having to sacrifice the nearest texture filtering method?

          Comment


            Originally posted by Sarlack View Post
            Hi Rama,

            Thanks for the plugin

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

            Thanks
            Sarlack
            Image wrapper is in the build CS of Victory Plugin:
            Code:
            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 this, 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?

            Rama
            UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

            ♥ Rama

            Comment


              Originally posted by Loriborn View Post
              Hey there Rama, 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 issue; 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. This is an issue 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 this plugin in my project without having to sacrifice the nearest texture filtering method?
              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 this research done on your end before I can get more involved with actual coding itself


              Rama
              UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

              ♥ Rama

              Comment


                Originally posted by janla View Post
                Hello Rama,

                first of all 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.
                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 this? It would be super usefull!
                Thanks!
                ~~~

                Rama Research

                Thanks for sharing the additional info, helps me lock onto the issue 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 -> 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 -> 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:

                Code:
                /**
                	 * Textures that use the derived data cache must override this function and
                	 * provide a pointer to the linked list of platform data.
                	 */
                	virtual FTexturePlatformData** GetRunningPlatformData() { return NULL; }
                For anyone trying this at home make sure to dereference the ptr ptr carefully before trying to even think about access the ptr itself!
                Code:
                FTexturePlatformData** PtrPtr = T2D->GetRunningPlatformData();
                if(!PtrPtr) return false;
                FTexturePlatformData* PlatformDataPtr = *PtrPtr; //Check before dereferencing! ♥ Rama
                
                //Now check the ptr itself too
                if(!PlatformDataPtr)
                {
                  return false;
                }
                
                //use the platform data
                However the issue 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 time to research this.

                ~~~

                Community Assistance Requested

                Anyone want to continue this and finish it?

                We need a second version of GetPixel data that accepts FTexture2DDyanamic



                Rama
                UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                ♥ Rama

                Comment


                  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!

                  [MENTION=2168]draquod[/MENTION]

                  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!

                  Click image for larger version

Name:	LevelStreamingHide.jpg
Views:	1
Size:	202.8 KB
ID:	1126928

                  ~~~

                  Kris RedBeard

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

                  ~~~

                  Generic Array Sort

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

                  Handles:

                  FString
                  FText
                  FName
                  Int
                  Float
                  Bool

                  Click image for larger version

Name:	SortArrayGeneric.jpg
Views:	1
Size:	114.1 KB
ID:	1126929

                  ~~~

                  Here's a bunch with comments from Kris:

                  Code:
                  /**
                   *	Inserts child widget into panel widget at given location.
                   *	NOTE: The child widgets "Construct" event will be fired again!
                   *
                   *       [MENTION=209895]param[/MENTION]	Parent	- The panel to insert the child into.
                   *       [MENTION=209895]param[/MENTION]	Index	- Where to insert the new widget.
                   *       [MENTION=209895]param[/MENTION]	Content - The child widget to insert.
                   *       [MENTION=82295]r[/MENTION]eturn 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)
                  https://www.mediafire.com/?ieovbd5l9d7yub2


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

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

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

                  ~~~

                  Prior Engine Versions

                  4.12: http://www.mediafire.com/download/g4...ryPlugin12.zip

                  4.11: http://www.mediafire.com/download/jp...ryPlugin11.zip

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

                  4.14: http://www.mediafire.com/file/7915cu...ryPlugin14.zip

                  ~~~

                  Donations can be sent to me via:
                  http://lightningfitness.org/donate/



                  Rama
                  Last edited by Rama; 04-26-2017, 07:27 PM.
                  UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                  ♥ Rama

                  Comment


                    Fix For Blueprint Nativization Error, Enjoy!

                    Dear Community,

                    The issue in these quotes below has now been addressed!

                    Originally posted by Sarlack View Post
                    Hi Rama,

                    Thanks for the plugin

                    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.

                    Code:
                    Plugins\VictoryPlugin\Source\VictoryBPLibrary\Public\VictoryBPFunctionLibrary.h(39): fatal error C1083: Cannot open include file: 'ImageWrapper.h': No such file or directory
                    Originally posted by el zee View Post
                    Hi Rama,

                    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
                    In the latest 4.15 build that is now live at this link:

                    4.15 Build (HTML5, win32, win64, editor, dev packaged, and shipping)
                    https://www.mediafire.com/?ieovbd5l9d7yub2

                    The BP Nativization issue has been addressed!

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



                    Rama
                    Last edited by Rama; 04-27-2017, 01:58 AM.
                    UE4 Marketplace: Melee Weapon Plugin & Compressed Binary Save System Plugin | Rama's C++ AI Jumping Videos | Vertex Snap Editor Plugin

                    ♥ Rama

                    Comment


                      It works fine now. Thanks very much Rama

                      Comment


                        Thanks Rama.

                        Comment


                          Is there a chance to add node for unloading level instance?

                          Yes or No, this is still Awesome! Thanks Rama!

                          Comment


                            Originally posted by CarlosMarxx View Post
                            Hi Rama!

                            First of all thanks very much for this 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 this node? That would be great!

                            Keep up the good work!
                            Hi Rama, maybe you missed the question I posted on 04-10-2017. I see you have released a new version of your awesome plug-in.

                            Comment


                              4.15 Build

                              VictoryBPFunctionLibrary.cpp
                              line 4651
                              RawColorArray NULL
                              Exception thrown at 0x000007FEDF347110 (UE4Editor-Core.dll) in UE4Editor.exe: 0xC0000005: Access violation reading location 0x0000000000000002.

                              Comment


                                not work Victory_GetPixelFromT2D in 4.15 Build

                                Comment

                                Working...
                                X