Download

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

[FONT=Comic Sans MS]Teleport Actor To Actor

This can be used after ending ragdoll, to send the player to a player start, or a trigger, a check point, or any actor really :slight_smile:

My node causes the player to face the exact rotation of the playerstart/trigger/checkpoint/ other actor :slight_smile:

Returns false if one of the inputs was not valid.

Enjoy!

teleportactortoactor.jpg


**C++ Source Code**

Remember I always include the entire C++ source code for all of the Victory BP Library Nodes in the actual plugin download!

Here's the .cpp for this new node



```

bool UVictoryBPFunctionLibrary::Actor__TeleportToActor(AActor* ActorToTeleport, AActor* DestinationActor)
{
	if(!ActorToTeleport) return false;
	if(!ActorToTeleport->IsValidLowLevel()) return false;
	if(!DestinationActor) return false;
	if(!DestinationActor->IsValidLowLevel()) return false;
	
	//Set Loc
	ActorToTeleport->SetActorLocation(DestinationActor->GetActorLocation());
	
	//Set Rot
	ActorToTeleport->SetActorRotation(DestinationActor->GetActorRotation());
	
	return true;
}

```

[FONT=Comic Sans MS]More Pics

Here’s some more pics of nodes I am giving you in this plugin, no C++ compile required!

Find out if game is the foreground window, and freeze/unfreeze Render Thread
b73f0925ac3084fc8a40f776f27e15580c381123.jpeg

Distance from point to Surface of Mesh
591ca1272a0519f791efebbb3471f423b128e74c.jpeg

Save Text to Hard Disk
365a341e28f39d9f74a8675fb0ad0b1e54e7f2a2.jpeg

Viewport Functions
a5954faf16f00f85d78bc214071a288cc68122de.jpeg

Determine if current world is Editor or PIE or Game Instance
cc49fd8a455dbdd97fa66e374e70ea127502e3c8.jpeg

Rama

I did that, but I don’t see any Victory Plugin.

But if I put it inside the engine plugin folder instead, it shows.

Make sure it looks something like: Unreal Projects->YourProjectName->Plugins->PLUGIN_VictoryBPLibrary

I tried that, but the plugin didn’t appear on the plugins list. But if I put it inside the engine plugin folder( UnrealEngine-4.1\Engine\Plugins ) instead, it shows.

Hmm, I’ve got it working fine from the project folder. It doesn’t appear in the default list of plugins on the right, it’s in a category at the bottom of the list on the left. I almost overlooked it.

Yes all the engine plugins are at the top, and the bottom is for project context, I believe :slight_smile:

Alex3d let us know if this info helps at all!

Here’s a pic

Rama

New BP Node

Clone Static Mesh Actor

Clones the mesh, materials, rotation, location, and physics state of a Static Mesh Actor.

You can set an optional offset of location and rotation from the original!

This is done during game-time!

You can clone the output of this node, to creating a series of actors rotated / translated from the original (like an array in 3ds max)

Or, you can numerically increment the location and rotation offsets and keep using the original in a for loop !

:slight_smile:


**Picture**

![4c4bf184ee26f08aef760fe5c670efb017557b23.jpeg|1440x1080](upload://aSWZJTY8PrNb4rR6FbAtFjt3M1d.jpeg)

C++ Code


AStaticMeshActor* UVictoryBPFunctionLibrary::Clone__StaticMeshActor(UObject* WorldContextObject, bool&IsValid, AStaticMeshActor* ToClone, FVector LocationOffset,FRotator RotationOffset)
{
	IsValid = NULL;
	if(!ToClone) return NULL;
	if(!ToClone->IsValidLowLevel()) return NULL;
	//~~~~~~~~~~~~~~~~~~~~~~~~~~~
	
	if(!WorldContextObject) return NULL;
	
	//using a context object to get the world!
    UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
	if(!World) return NULL;
	//~~~~~~~~~~~
	
	//For BPS
	UClass* SpawnClass = ToClone->GetClass();
	
	FActorSpawnParameters SpawnInfo;
	SpawnInfo.bNoCollisionFail 		= true;
	SpawnInfo.Owner 				= ToClone;
	SpawnInfo.Instigator				= NULL;
	SpawnInfo.bDeferConstruction 	= NULL;
	
	AStaticMeshActor* NewSMA = World->SpawnActor<AStaticMeshActor>(SpawnClass, ToClone->GetActorLocation() + FVector(0,0,512) ,ToClone->GetActorRotation(), SpawnInfo );
	
	if(!NewSMA) return NULL;
	
	//Copy Transform
	NewSMA->SetActorTransform(ToClone->GetTransform());
	
	//Mobility
	NewSMA->StaticMeshComponent->SetMobility(EComponentMobility::Movable	);
	
	//copy static mesh
	NewSMA->StaticMeshComponent->SetStaticMesh(ToClone->StaticMeshComponent->StaticMesh);
	
	//~~~
	
	//copy materials
	TArray<UMaterialInterface*> Mats;
	ToClone->StaticMeshComponent->GetUsedMaterials(Mats);
	
	const int32 Total = Mats.Num();
	for(int32 v = 0; v < Total; v++ )
	{
		NewSMA->StaticMeshComponent->SetMaterial(v,Mats[v]);
	}
	
	//~~~
	
	//copy physics state
	if(ToClone->StaticMeshComponent->IsSimulatingPhysics())
	{
		NewSMA->StaticMeshComponent->SetSimulatePhysics(true);
	}
	
	//~~~
	
	//Add Location Offset
	const FVector SpawnLoc = ToClone->GetActorLocation() + LocationOffset;
	NewSMA->SetActorLocation(SpawnLoc);
	
	//Add Rotation offset
	FTransform TheTransform = NewSMA->GetTransform();
	TheTransform.ConcatenateRotation(RotationOffset.Quaternion());
	TheTransform.NormalizeRotation();
	
	//Set Transform
	NewSMA->SetActorTransform(TheTransform);
	
	IsValid = true;
	return NewSMA;
}

Thanks. I probably overlooked it, because it is there.

Looking at your wiki…

I don’t see this at all. Only the V snap to vertice feature is working. U and Y does nothing.

I’ve noticed it doesn’t seem to work with meshes that are in a blueprint(Did I miss something?), Y doesn’t work if the object is over a brush/CSG geometry, works fine when over another static mesh or landscape.

The vertex snap feature and the U and Y keys are something that have to be activated via config file :slight_smile:

Did you do that part?

https://wiki.unrealengine.com/Rama's_Vertex_Snap_Editor_Plugin#Installation

None of this required to use the Blueprint nodes though! They will work as soon as editor is restarted after checking my plugin as active.


**I am giving my Vertex Snap Feature To Epic**

I am currently reworking the vertex snap feature to be integrated directly into the engine, no longer a plugin,

![2e14576c31d1833e7d7fc6208633b6c1cad77cb9.jpeg|751x633](upload://6zDxNkGn5ZFGjIGwdlDLBL5sdlv.jpeg)

![acf0bb09fe2b65ba33df013efce5e030beeec616.jpeg|923x636](upload://oFTT3489lBgfZaig4il8XUJVNTU.jpeg)

![5efd65da42eb723a2a376f30831a80d835464d1d.jpeg|925x650](upload://dyjME8XsQ4g9aEKNAiVtR1Ylpgx.jpeg)

you can vote for it here!

https://forums.unrealengine.com/showthread.php?3275-Giving-my-Vertex-Snap-Editor-Feature-to-Epic-as-Pull-Request

ooooh, yea that makes sense Xodroc! Cause BSP is not getting detected by my trace method with the Y drop-to-nearest surface feature!

Thanks for clarifying that!

I’ve not put much energy into the Plugin vertex snap and other Victory Editor Mode features since I’m busy integrating vertex snap directly into the Engine :slight_smile:


**Video of UE4 Vertex Snap Editor Integration**

This is an alpha footage video of UE4 Vertex Snapping, as a built in feature that will come with the Editor!


https://www.youtube.com/watch?v=fW23S0DlF3g


You can vote for it here!

https://forums.unrealengine.com/showthread.php?3275-Giving-my-Vertex-Snap-Editor-Feature-to-Epic-as-Pull-Request

that not for a noob like me but i like see people share ‘open’ here work and ideas, that help others learn. thx

Yes, I did. But
Anyway, I will wait for the Vertex Snap Editor Integration. :wink: Thanks

Get Screen Resolutions & Combine String

Two New BP Nodes

The download link in original post is now updated with two new nodes!


**Get Screen Resolutions**

Obtains a list of all the screen resolutions supported by the user's current display adapter!

**Option to include or exclude the refresh rates that are available for each resolution!**


**New version of Get Screen Resolutions**
![3975ab3d6a15f4e36483e111fc160973adf7e86d.jpeg|1280x960](upload://8cjjRazEUm77M7U8S6HTegXHO5n.jpeg)

Combine Strings

Combine two strings with an optional separator and labels that will appear in front of each member of the pair.


Picture

I used the two nodes above to print out a listing of all supported screen resolutions, on the press of a key, using blueprints!

(open in new tab to see full size)

https://d3ar1piqh1oeli.cloudfront.net/e/e0/ScreenResolutions.jpg/1400px-ScreenResolutions.jpg

Dear Rama,

Have i ever told you how crazy awesome you are?

**** Rama, you are unstoppable! Thank you for this.

Quick suggestion: Arrow keys move actors in the X/Y via the snap grid amount

excelent! thank you!

I just wanted to thank you for all this contribution to the community.
It’s great! and yeah you are awesome :smiley:

Rawrrr!!

(nice suggestion too, have you tried ctrl + LMB, RMB, and both mouse buttons? That feature is already built in :slight_smile: )

CTRL + LMB + mouse move = x axis
CTRL + RMB + mouse move = y axis
CTRL + Both + mouse move = z axis

Hee hee! Thanks Jacky!

Hee heeee!

I didn’t know that, but now I do! :slight_smile:

I guess I should have explained my suggestion better (but I was trying to be quick hehe). I meant using the arrow keys to nudge the actor a one (grid) slot. Sometimes you want to move that actor one space over and but the mouse moves it two, or three. It really becomes a pain when working with large objects, etc.