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

    4 New Nodes For You! Sort Array of Int/Float and Int += and -= operators for faster integer math!

    Dear Community,

    I have 4 new BP nodes for you!

    ~~~

    Efficiently Sort Integer / Float Array

    Now you can easily and efficiently sort an integer or float array, with the smallest entry being put at index 0!

    This modifies the original array, saving you from creating unnecessary duplicate array data.

    So my BP sort node is very efficient!

    Click image for larger version

Name:	SortIntAndFloatArrays.jpg
Views:	3
Size:	202.5 KB
ID:	1091263

    ~~~

    Plus Equals and Minus Equals Integer Math Operators

    Typically you have to Get an integer variable and then Set it with some value added/subtracted in order to modify an integer value.

    I find this rather cumbersome, especially because in C++ there is the += and -= operators which make adding and subtracting from integers very fast!

    Using my new BP Operators you can easily add a value to an integer or subtract a value from an integer!

    Note my operator modifies the original value and returns it, so I cannot make these operators Pure. Execution pins are required because the value is getting modified.

    Click image for larger version

Name:	PlusEqualsMinusEquals.jpg
Views:	3
Size:	219.6 KB
ID:	1091262

    ~~~

    The C++ Code Involved

    In order to make these 4 new nodes I took advantage of UPARAM(ref) which allows a BP variable to be modified in C++ and returned back to Blueprints.

    I wrote a wiki on UPARAM(ref) that you can enjoy!

    Code:
    void UVictoryBPFunctionLibrary::VictoryIntPlusEquals(UPARAM(ref) int32& Int, int32 Add, int32& IntOut)
    {  
    	Int += Add;
    	IntOut = Int; 
    } 
    void UVictoryBPFunctionLibrary::VictoryIntMinusEquals(UPARAM(ref) int32& Int, int32 Sub, int32& IntOut)
    { 
    	Int -= Sub;
    	IntOut = Int; 
    }
    ~~~

    Latest plugin download on the UE4 Wiki:
    https://wiki.unrealengine.com/File:VictoryPlugin.zip

    Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki:
    https://wiki.unrealengine.com/File:V...inPackaged.zip

    ~~~

    Victory Plugin on Media Fire

    If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

    Please note clicking this link will not start a download instantly, it will just take you to the Media Fire file description.

    Editor binaries and Packaged binaries in one file:
    Win32 Shipping and Win64 Development Supported
    https://www.mediafire.com/?g6uf9kt5ueb2upj

    ~~~

    Note on Packaging Victory Plugin

    https://forums.unrealengine.com/show...l=1#post368790

    Enjoy!



    Rama
    Last edited by Rama; 10-14-2015, 03:58 AM.
    100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

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

    Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

    Comment


      Great new nodes!
      Map Generator 1.0
      Map Generator 2.0
      Map Generator 3.0

      Comment


        Originally posted by Rama;399240a
        Plus Equals and Minus Equals Integer Math Operators
        Thanks! I always wondered why it isn't there in the first place. You are awesome as always!
        Check out my game OldSchool Nightmare : http://www.indiedb.com/games/oldschool-nightmare

        Comment


          Originally posted by Rama View Post
          Did you add this line to my version to trigger the delegate?

          Code:
          pStreaming->OnLevelLoaded.AddDynamic(this, &ADreamProjectGameMode::OnLevelLoaded);
          it would go here:

          Code:
              StreamingLevel->LevelColor = FColor::MakeRandomColor();
              StreamingLevel->bShouldBeLoaded = true;
              StreamingLevel->bShouldBeVisible = true;
              StreamingLevel->bShouldBlockOnLoad = false;
              StreamingLevel->bInitiallyLoaded = true;
              StreamingLevel->bInitiallyVisible = true;
          I did indeed and the delegate is firing (it wasn't previously due to the lack of UFUNCTION markup on the callback). The only issue right now is it seems to ignore the transform and always spawns the level at 0,0,0 regardless of what the transforms translation value is.

          I'll make a quick standalone project this weekend using engine source so I can put in some breakpoints and see what's going on with the streaming level transform not functioning. If I have anything to share that might benefit the rest of the community I'll make a proper thread to share my findings.

          Comment


            I'v found the ParticleSystemComponent has no GetColorParameter in blueprint, but only the Set one.
            So I think this one will be a nice addition to the plugin:

            Code:
            FLinearColor UMyBlueprintFunctionLibrary::GetParticleSystemColorParameter(UParticleSystemComponent* particleSystem_, FName name_)
            {
            	if (!particleSystem_)
            		return FLinearColor::Black;
            
            	FLinearColor color_;
            	particleSystem_->GetColorParameter(name_, color_);
            	return color_;
            }
            Check out my game OldSchool Nightmare : http://www.indiedb.com/games/oldschool-nightmare

            Comment


              Also, for better debugging, please check this feature request I'v posted in the "Feedback for epic" subforum, If you could implement that somehow, that would be great!
              https://forums.unrealengine.com/show...tter-debugging
              Check out my game OldSchool Nightmare : http://www.indiedb.com/games/oldschool-nightmare

              Comment


                Hey I have an update on the level streaming transform not working and it's a doozy.

                If you use the default constructor for FRotator the function silently fails and does not transform your geo.

                This invocation will fail

                Code:
                if (!LoadLevelInstance(
                			GetWorld(),
                			mapsFolder,
                			mapName,
                			levelIdx,
                			positionOffset,
                			FRotator()
                			))
                This will succeed

                Code:
                if (!LoadLevelInstance(
                			GetWorld(),
                			mapsFolder,
                			mapName,
                			levelIdx,
                			positionOffset,
                			FRotator(0,0,0)
                			))
                EDIT : Apologies if I polluted this thread. I'm a little new and may not have the right etiquette. Should I have started a new thread for this?
                Last edited by AlexM; 10-17-2015, 11:12 PM.

                Comment


                  Naw, this is the right place for it.

                  Comment


                    Originally posted by Zeustiak View Post
                    Great new nodes!
                    Hee hee!

                    Originally posted by Sahkan View Post
                    Thanks! I always wondered why it isn't there in the first place. You are awesome as always!
                    You're welcome Sahkan!

                    Originally posted by Sahkan View Post
                    Also, for better debugging, please check this feature request I'v posted in the "Feedback for epic" subforum, If you could implement that somehow, that would be great!
                    https://forums.unrealengine.com/show...tter-debugging
                    I already created a set of debug messages to give you class function and also exact line number here:

                    How to get a UE4 FString of Calling Class Function and Line Number
                    https://forums.unrealengine.com/show...ne-Number-Rama

                    Originally posted by Sahkan View Post
                    I'v found the ParticleSystemComponent has no GetColorParameter in blueprint, but only the Set one.
                    This is strange! And its true of all the gets, GetFloat, GetVector, etc very odd indeed.

                    I'll look into this further



                    Rama
                    Last edited by Rama; 10-19-2015, 04:24 AM.
                    100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

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

                    Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                    Comment


                      Originally posted by AlexM View Post
                      Hey I have an update on the level streaming transform not working and it's a doozy.

                      If you use the default constructor for FRotator the function silently fails and does not transform your geo.

                      This invocation will fail

                      Code:
                      if (!LoadLevelInstance(
                      			GetWorld(),
                      			mapsFolder,
                      			mapName,
                      			levelIdx,
                      			positionOffset,
                      			FRotator()
                      			))
                      This will succeed

                      Code:
                      if (!LoadLevelInstance(
                      			GetWorld(),
                      			mapsFolder,
                      			mapName,
                      			levelIdx,
                      			positionOffset,
                      			FRotator(0,0,0)
                      			))
                      EDIT : Apologies if I polluted this thread. I'm a little new and may not have the right etiquette. Should I have started a new thread for this?
                      Thanks for sharing your research AlexM!

                      It will surely help others out!



                      Rama
                      100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

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

                      Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                      Comment


                        Get a Hard-drive accurate listing of all Save Game Objects!

                        Click image for larger version

Name:	SaveObjectListing.jpg
Views:	5
Size:	258.7 KB
ID:	1091460

                        Get a Hard-drive accurate listing of all Save Game Objects!

                        Dear Community,

                        This node gives you a hard-drive accurate listing of all save game files that you've created!

                        I am referring to UE4's Save Object system!

                        You can now access a full listing in a developer build or in a packaged game, to know all the save files that have been saved!

                        These save files are stored in GameDir/Saved/SaveGames

                        Click image for larger version

Name:	SaveObjectBP.jpg
Views:	5
Size:	267.5 KB
ID:	1091461

                        ~~~

                        UE4 Blueprint Save System?


                        If you did not know, you can use UE4's save system like this:

                        1. Create a new blueprint based on SaveGame
                        2. Add your variables to the blueprint that you want to save the values of
                        3. in level BP or some other blueprint, create a save game object, and set the values of that object
                        4. Save this object to a Save Game Slot, as shown in my pictures
                        5. You can load a save game object from a Slot name at any time!

                        6. Now with my new Victory BP Library, you can obtain a full listing of all existing save games as stored on your computer's hard disk! This let's you know whether a file exists before you try to load it! You can also find out how many save files exist from within BP!

                        ~~~

                        Latest plugin download on the UE4 Wiki:
                        https://wiki.unrealengine.com/File:VictoryPlugin.zip

                        Latest plugin packaged binaries, Win32 Shipping and Win64 Development on UE4 Wiki:
                        https://wiki.unrealengine.com/File:V...inPackaged.zip

                        ~~~

                        Victory Plugin on Media Fire

                        If your browser is not updating the Wiki download page to the most recent version, you can use my alternative Media Fire download link!

                        Editor binaries and Packaged binaries in one file:
                        Win32 Shipping and Win64 Development Supported
                        https://www.mediafire.com/?g6uf9kt5ueb2upj

                        Enjoy!



                        Rama
                        100+ UE4 C++ Tutorials on the UE4 Code Wiki, including UE4 Multi-Threading!

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

                        Visit www.ue4code.com to see lots of videos about my C++ Creations! ♥ Rama

                        Comment


                          Originally posted by Rama View Post
                          I already created a set of debug messages to give you class function and also exact line number here:

                          How to get a UE4 FString of Calling Class Function and Line Number
                          https://forums.unrealengine.com/show...ne-Number-Rama
                          Thanks this is awesome!
                          Check out my game OldSchool Nightmare : http://www.indiedb.com/games/oldschool-nightmare

                          Comment


                            Here is an other idea for a new node!
                            Make debug nodes that have Thickness input.
                            For the moment you can adjust the thickness only to DebugLines.
                            Just just you did your circle, use your math magic powers :P
                            Check out my game OldSchool Nightmare : http://www.indiedb.com/games/oldschool-nightmare

                            Comment


                              Sometimes I wonder how much of the victory plugin would be converted back to blueprint and setup as a BP macro library and BP function libary. Could be useful in its own right and would help one make the move from BP's to C++ easily since theres so few C++ beginner tuts out there for UE4.
                              Tek LLC a personal Candaian Company running BlenderTek & UnrealTek is currently looking for help to bring back submarine simulator gaming with a new genre of sub sims: Cold War! (1945-1991) Operation: Trident SubSim Dev Diary Thread - Donations

                              Comment


                                Originally posted by Sahkan View Post
                                Here is an other idea for a new node!
                                Make debug nodes that have Thickness input.
                                For the moment you can adjust the thickness only to DebugLines.
                                Just just you did your circle, use your math magic powers :P
                                I beleive only draw debug line 3d does that and isnt used in traces. But im just guessing.
                                Tek LLC a personal Candaian Company running BlenderTek & UnrealTek is currently looking for help to bring back submarine simulator gaming with a new genre of sub sims: Cold War! (1945-1991) Operation: Trident SubSim Dev Diary Thread - Donations

                                Comment

                                Working...
                                X