Download

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

Hey rama, found a bug with the newest version (Sep 4th download) and I have tested it in 2 different projects. If you get the Create Object function and cast from it, it will crash PIE with: Fatal error: [File:D:\BuildFarm\buildmachine_++depot+UE4-Releases+4.9\Engine\Source\Runtime\CoreUObject\Private\Templates\Casts.cpp] [Line: 11] (insert cast line here). Engine: 4.9.1

Is there a way to have a node that let’s you use an obj file just like we can do with textures from external folders? ( With a UV so I can use the “GetTextureFromPath” node to apply texture to it using dynamic material instance ).
It can be an awesome addition to my game’s MapBuilder.

Create Object is Deprecated, Use Construct Object From Class (4.9)

In 4.9 my Create Obj node is obsolete, as Epic has finally (yay!) added this node:

"
In Blueprints, you can now spawn baser object types (not just actors/components). The Construct Object From Class node takes a class and creates a new object of that type, similar to Spawn Actor From Class (except for types that are not an actor).

The “Outer” input will serve as the new object’s owner, which controls the lifetime of the created object.
For actor classes, you’ll still use the Spawn Actor From Class node. And for widgets, you’ll use the Create Widget node. In a future release we may try to combine these different features.
"


**Deprecation Messages in BP Libraries**

I am going to add a deprecation warning to my current node.

For anyone who is curious how to do this, here's the .h code for my CreateObject node with deprecation. warning



```


UFUNCTION(BlueprintCallable, Category = "VictoryBPLibrary", meta = (**DeprecatedFunction**, **DeprecationMessage**="Epic has introduced Construct Object as of 4.9.0, I recommend you use that instead! -Rama", HidePin = "WorldContextObject", DefaultToSelf = "WorldContextObject"))
	static UObject* CreateObject(UObject* WorldContextObject, UClass* TheObjectClass);


```


:)

Rama

Please dont put my plugin at the engine level, just put it at the project level :slight_smile:

I’ve had no trouble compiling for win32 using Texture2D Load From File, but I have not tested HTML5 / mac due to my own personal time limitations (I am doing all this Victory BP Library stuff without monetary compensation of any kind).

:slight_smile:

Rama

Can you explain more what you mean? What is the exact use case / functionality you want?

:slight_smile:

Rama

Powerful Victory BP Node for Physics / Collision Analysis!

Dear Community,

I’ve just released two new nodes to help you with all of your** collsion surface distance checks**!

These nodes let you easily tell how far a given point is from the actual PhysX surface of any UE4 game object with collision / primitive component!

I’ve even given you a node that let’s you directly check the distance between the physical surfaces of two objects!

See pics!

These nodes work with Characters and Skeletal Mesh actors that have physics assets!


**Distance Between Surfaces Of Two Objects**

![SurfaceDistanceBetweenBP.jpg|1275x712](upload://ywRLLph4drEwZXiZR6GnrLeasFk.jpeg)

World Point Distance To Collision Of Any Object

42686311a9773f2c63184ad34db5dc74c22ddbb9.jpeg


**My C++ For You**

Here's the C++ code for my algorithm to get the distance between the colliding surfaces of any two objects!



```


float UVictoryBPFunctionLibrary::GetDistanceBetweenComponentSurfaces(UPrimitiveComponent* CollisionComponent1, UPrimitiveComponent* CollisionComponent2, FVector& PointOnSurface1, FVector& PointOnSurface2)
{
	if(!CollisionComponent1 || !CollisionComponent2) 
        {
            return -1;
        } 

        //Closest Point on 2 to 1
	CollisionComponent2->GetDistanceToCollision(CollisionComponent1->GetComponentLocation(), PointOnSurface2);
  
	//Closest Point on 1 to closest point on surface of 2
	return CollisionComponent1->GetDistanceToCollision(PointOnSurface2, PointOnSurface1);
}

_


```



**Latest plugin download on the UE4 Wiki: (15.22 mb) **


**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.

https://www.mediafire.com/?g6uf9kt5ueb2upj

Note on Packaging Victory Plugin

Enjoy!

:slight_smile:

Rama

Anyone had any issues with Rama’s Plugin since 4.9.1 came out? Having some annoying crashes that only appeared with the latest update. Not sure if it could be plugin related or something else.

Hey Rama, first of all, I want to GREATLY thank you, for all what you done so far, you saved me a lot of time, since I’m not that great with c++, so yeah, thanks for that! :smiley:

But I come here to report a little bug, when I use your node called “Screen Shots rename move most recent”, it’s rename file extension to bmp, but screenshots taken in png, so after I load screenshot and make it texture2d, it’l be none. It can easily be fixed using your another node “Victory Load Texture 2D from file”, and choosing there png, even if file name extension is bmp.
So yeah, not a big deal since I found a fix, but it’l be neat if it worked perfectly good. :slight_smile:

Best regards.

You’re probably using my Create Object node? That is known to crash now, and I will be uploading a fix soon

In the meantime here is the correct node to be using now, which Epic released in 4.9:

[FONT=Comic Sans MS]Welcome to the forums normal_ST!

Great catch!

I’ve updated my plugin to rename files with .png extension



	//Generate new Full File Path!
	FString NewFullFilePath = NewAbsoluteFolderPath + "/" + NewName + **".png"**;
	 
	//Move File!
	return RenameFile(NewFullFilePath, ScreenShotsDir + "/" + OriginalFileName);
}



**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:VictoryPluginPackaged.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


**Note on Packaging Victory Plugin**

https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=368790&viewfull=1#post368790

Enjoy!

:)

Rama

Rama, thanks for the fix it worked! But I want to ask about one more thing, can you add overwrite functionality to this node? Because if the file with “New name” name exist, it will do nothing.
Or “Remove File” node will be great actually :smiley:

Thanks for everything again, best regards.

PS: Oh and I actually wanted to try and add this functionality by myself, but I can’t understand how to properly open and compile your source codes.

Update: Oh and seems like your sort function or something else, take not the newly made screenshot, but the oldest available.

Hey Rama, have you thought about this?

I really don’t want to convert my project to c++ just for being able to package in Shipping 64bit :slight_smile:

Could you make this work with strings too? For example this one:

r.SetRes = "1600x900w"

:slight_smile:

How to Package My Plugin Without Affecting BP-Only Project

You can follow these steps:

  1. You can make a separate project that is c++,
  2. then package that project for shipping 64bit,
  3. then move the entire plugin folder, without Intermediate, over to your BP only project.

Intermediate folder is huge and not needed for distribution.

I am not getting paid to do anything of what I do with my Victory BP library so my time to cover every possible case is limited by my need to make money to eat and live and such.

Here is my donations page if you’d like to help remedy this matter:

Victory BP Library Donations
http://lightningfitness.org/donate/

I’ve now described how you or anyone can package for any platform and then include my plugin packaged binaries with their main, non-C++ project.

:slight_smile:

Rama

[COLOR="#0000FF"]Draw Thick Circle With Axis Control[/COLOR]

Fun node for you!

With this node you can draw circles!

And you can control their thickness, as well as how many points make up the circle!

You can also have axis control!

So you can draw circles horizontally, vertically, at angles, any way you like, with convenient BP node inputs!

See pics!

af68277ba636b7e04fc6af9b982616b2340402e4.jpeg


**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:VictoryPluginPackaged.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


**Note on Packaging Victory Plugin**

https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=368790&viewfull=1#post368790

Enjoy!

:)

Rama

I want to give the user the ability to import their own meshes into my game via the mapbuilder. So they just place their wave ( *.obj ) file in a certain folder and see it available inside the game.

Dynamic Level Generation: Create Multiple Translated/Rotated Instances of a Level!

65784d2e1f959b9e9b4ea8e4d04f78a466d2e655.jpeg

Dear Community,

The code in this node was first presented by Epic staff, Marc Audy, as code used in Fortnite.

I’ve fully implemented the code as well as making it user-friendly.

In particular I’ve presented a solution for ensuring you can spawn multiple instances of the same UE4 level, by giving you an “Instance Number” that you should increment each time you spawn an instance of a level.

This allows me to enable you to easily create as many uniquely translated and rotated instances of a level as you want!

This is ideal for Dynamic Level Generation!


**Can Include Landscapes and Other Fancy Level Features!**

In my demo I included a landscape in my level "tile."

Level Scripting / Level Blueprint

You can also include level scripting that will run uniquely per level isntance!


**Victory Load Level Instance**

![LoadLevelInst_BPNode.jpg|1280x960](upload://eYkmDTa1zneQsdBlRoVY7LDd06i.jpeg)

C++ Code For You

Here’s my implemenation of the code Marc Audy originally presented to the Community, exactly as it is in my Victory BP Library:



bool UVictoryBPFunctionLibrary::VictoryLoadLevelInstance(
	UObject* WorldContextObject, 
	FString MapFolderOffOfContent, 
	FString LevelName, 
	int32 InstanceNumber,
	FVector Location, FRotator Rotation)
{
    if(!WorldContextObject) return false;
	 
	UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
	if(!World) return false;
	//~~~~~~~~~~~
 
	//Full Name
	FString FullName = "/Game/" + MapFolderOffOfContent + "/" + LevelName;
	  
	FName LevelFName = FName(*FullName);
    FString PackageFileName = FullName;   
	
    ULevelStreamingKismet* StreamingLevel = NewObject<ULevelStreamingKismet>((UObject*)GetTransientPackage(), ULevelStreamingKismet::StaticClass());
 
	if(!StreamingLevel)
	{
		return false;
	}
	
	//Long Package Name
	FString LongLevelPackageName = FPackageName::FilenameToLongPackageName(PackageFileName);
	
	**//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Here is where a unique name is chosen for the new level asset
	//    Ensure unique names to gain ability to have multiple instances of same level!
	//	   <3 Rama**
	
	//Create Unique Name based on BP-supplied instance value
	FString UniqueLevelPackageName = LongLevelPackageName;
	UniqueLevelPackageName += "_VictoryInstance_" + FString::FromInt(InstanceNumber);
     
    //Set!
    StreamingLevel->SetWorldAssetByPackageName(FName(*UniqueLevelPackageName));
	**//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~**
	 
    if (World->IsPlayInEditor())
    {
        FWorldContext WorldContext = GEngine->GetWorldContextFromWorldChecked(World);
        StreamingLevel->RenameForPIE(WorldContext.PIEInstance);
    }
 
    StreamingLevel->LevelColor = FColor::MakeRandomColor();
    StreamingLevel->bShouldBeLoaded = true;
    StreamingLevel->bShouldBeVisible = true;
    StreamingLevel->bShouldBlockOnLoad = false;
    StreamingLevel->bInitiallyLoaded = true;
    StreamingLevel->bInitiallyVisible = true;
 
	//Transform
    StreamingLevel->LevelTransform = FTransform(Rotation,Location);
 
    StreamingLevel->PackageNameToLoad = LevelFName;
          
    if (!FPackageName::DoesPackageExist(StreamingLevel->PackageNameToLoad.ToString(), NULL, &PackageFileName))
    {        
        return false;
    }
  
	//~~~
	
	//Actual map package to load
	StreamingLevel->PackageNameToLoad = FName(*LongLevelPackageName);
	
	//~~~
	
    // Add the new level to world.
    World->StreamingLevels.Add(StreamingLevel);
     
    return true;
 }	



**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:VictoryPluginPackaged.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


**Note on Packaging Victory Plugin**

https://forums.unrealengine.com/showthread.php?3851-(39)-Rama-s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=368790&viewfull=1#post368790

Enjoy!

:)

Rama

The new node looks very interesting!

So if you have an instance of a level, will it maintain all the same characteristics of that level at all times, or only the characteristics that existed when you spawned the instance?

So in my case, if my main map is the primary map, and I spawn map instances to handle world wrap, will the instances update automatically or will I have to respawn them to get updated info into them?

My guess is that it will be only the meshes ( maybe materials too ) because there is only one graph for the level’s logic in blueprint, and it can’t have duplicated variables.

load level instance = Rama the hero! :slight_smile:
you finally implemented an essential part of my wip strategy game, thanks!
and thanks to the guys dealing with it on the other 2 threads, it is worthy to read them to understand what happens: