Rama's Vertex Snap Editor Plugin, Download for You!

Hi Rama,

With this plugin included in my project I’m getting the following warnings (and subsequently errors) while compiling with the “DebugGame Editor” configuration. Not sure how to fix this with UE4 being an nmake-based project. Any ideas?

My plugin only works in Development Editor because it includes UnrealEd, when doing non-Development builds you will need to exclude the plugin.

I am shortly going to divide the plugin up so that the BP nodes are accessible in non-development builds :slight_smile:


Ah, good call; didn’t even think about that. It does work with the Debug Editor configuration though, so that’s good enough. Thanks!

Hi there!

With the help of Lion I have now fixed my plugin so that at least the Blueprint Nodes portion will work in a shipping game build


Direct Download Link


This is awesome, im sad it didnt work for unreal engine 4.4.0. Is there any way that this could work on the newer version

I did compile my vertex snap editor in 4.4 !

You can download it here, instructions on the wiki page :slight_smile:

Let me know how it goes!


I just tested all functionality of my vertex snap plugin in 4.4

-different vertex shapes



-snap to surface normal

-reset rotation

  • T key for instant translation

  • and also undo/redo of any number of vertex snapping!

It all worked!



Just to let you know, I have been having problems running your plugin in UE 4.4 (latest version 17:08, 19 August 2014 no. 2).

The problem stems from two pointers not being initialised:

SelectedVertexBuffer = nullptr;
HighlightedVertexBuffer = nullptr;

Needed to be added to your JoyInit function, as they were causing constant crashing when right clicking on an object, when that object wasn’t selected.
It would also crash occasionally when left clicking.


Would you consider putting up your plugin on GitHub, BitBucket or other?

I only ask because we make use of Git Submodules when handling project plugins, which keeps things contained and has the bonus of keeping additional binary files out of our main project repository :slight_smile:

I have also started writing Git source control (Tutorial) for the Official UE4 Wiki for those who are interested in such workflows. Feel free to add to it, as I am currently in-between moving houses and will not have much time to update the wiki for some time.

Can you explain more about this, why it is useful? So far the workflow of downloading / uploading to wiki has worked fine for me, and all the source is in the download anyways, let me know!

[FONT=Comic Sans MS]Thank You Vernatia!

I have been meaning to get around to debugging that crash, and you just fixed it for me!

Thanks so much for posting!

And congrats on your first post! An exceptionally helpful first post for me!

Welcome to the forums!

New Plugin Build is Live!

The fix Vernatia mentioned is now live!


I’m trying to use your plugin to help with a performance optimisation for reflection render targets - that is, to stop rendering to the render target when the destination object is not visible. I’m trying to do this using the Visibility Get Rendered Actors node, which should, if I understand this correctly, allow me to determine which actors are currently being rendered. However, it seems to not work on translucent objects, reporting that the object is never being rendered. This makes the plugin entirely useless for my needs. Is there something that can be done about this?

Congrats on your first post!

Welcome the forums!

I am just using Epic’s functions internally, I will post the code here so perhaps Epic can answer your question in greater depth, as I myself can’t comprehend why translucent objects would not be listed as being rendered ever, make sure its not an error on your end somewhere :slight_smile:

void UVictoryBPFunctionLibrary::Visibility__GetRenderedActors(TArray<AActor*>& CurrentlyRenderedActors, float MinRecentTime)
	//Empty any previous entries
	//Iterate Over Actors
	for ( TObjectIterator<AActor> Itr; Itr; ++Itr )
		if (Itr->GetLastRenderTime() > MinRecentTime)
			CurrentlyRenderedActors.Add( * Itr);
void UVictoryBPFunctionLibrary::Visibility__GetNotRenderedActors(TArray<AActor*>& CurrentlyNotRenderedActors, float MinRecentTime)
	//Empty any previous entries
	//Iterate Over Actors
	for ( TObjectIterator<AActor> Itr; Itr; ++Itr )
		if (Itr->GetLastRenderTime() <= MinRecentTime)
			CurrentlyNotRenderedActors.Add( * Itr);

Thank you! Really great work!

Rama - Thanks for creating the plugin - it is very useful…

I have a problem - if I try to launch my game, it fails with plugin not found error.

Should I just manually disable the plugin every time before launching?

I dont know about launching, but packaging the game should work fine!

why do you need to launch it?

I mostly use

  1. play in editor
  2. play in separate game window
  3. run from commandline using batch file with editor closed
  4. package game and ship to ppl


Hi, Rama!

You made a great plugin. Is it possible to ask for one more feature in the future?

If so, I’d like to have a shortcut I’m desperately missing from CryEngine. I mean - pressing Ctrl+Shift and clicking will place your currently selected object right where you clicked, based on object’s pivot. I think Unreal folk don’t know how much time is saved with this simple shortcut (e.g. in Unreal you have to fly all the way to your object and then manually and painfully move it to the destination). Also, another great one is - “Align object to object”. This one would take your currently selected object and align it to the clicked object (again, based on pivot), and match position, rotation and scale. It can be also very handy in many cases.

Hopefully we can have these one day :slight_smile: But in any case, thanks for your awesome work!

**Your Request Feature Is Already In The Plugin

Press the T Key!**

Hi there!

I already added a feature like this to my plugin!

I call it instant translate!

You press the t key and any selected objects, whether it is one or a whole group, get instantly repositioned to where your mouse cursor is!

**Furthermore, until you press T again, you can instantly move stuff just by dragging the mouse around!

This gives you much more refined placement capabilities!
Try it!

I have all hotkeys in a little pop up in top-left corner if you move your mouse to top-left corner of viewport, you’ll see it pop in!

It also shows up when you first click on a static mesh actor.

Note the plugin only works with Static Mesh Actors

The full engine integration works with BSP, Skeletal Mesh Actors, and Static, but that is still in the works on github.


Rama’s Instanced Static Mesh Editor

I added a new feature to my Vertex Snap Editor Plugin which is an optional plugin that comes with my Vertex Snap Editor Plugin!

**Super-Efficient Way to Render 1000s of Meshes!**

In this video you can see my frame rate go from 9 fps with 1500 static mesh actors in the scene, back to over 100 fps, with the simple press of a key! And all the geometry in the level is preserved!

You can now easily create a super efficient instanced static mesh from a selection of regular static meshes, and also undo the process to make individual edits!

**I explain everything in the video!**

Entire C++ Code in Download

I include my plugin’s entire C++ source code, including the new feature, in my plugin download!

**Installation Instructions**



PS: Make sure to get my latest plugin version, it includes a fix for maintaining vertex shape choice as well as current vertex scaling (change vertex scaling with and ] keys)

What a great addition EverNewJoy aka Rama

Your devotion to the UE4 Community is unquestionable and outstanding

I have a small suggestion. Would it be possible to change it so we can disable vertexes until we enable them again? Not just with the current selection, only to have them appear again when we select another mesh. They are very distracting so it would be great to be able to hide them.
Also I can’t seem to get scaling of vertexes to work with ISO keyboard layout, nothing happens when I press the key where and ] are located on ANSI layout keyboard or where they are located on ISO layout.