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

I though they’d already fixed that. I package my blueprint project just fine using plugin.
Though I’m using only the function for reading available screen resolutions.

Was looking for a way to lock mouse to the center of the screen… And landed here again! for president!!

Hee hee!

Great to hear from you Bruno!

:slight_smile:

Hey , I realized today that with the Spawn Actor into specified level node, Add Instance into specified level node would also be needed. I am not anywhere near ready to try it out, but others might find it useful sooner if you made it. :slight_smile:

Can you explain a bit more what you need and also any applicable C++ code / some kind of starting point?

Congrats on your awesome Map Generator progress!

50+ Extra BP Nodes For You!

No c++ required!

No compile required!

Download and plug in!

Latest plugin download is here:

:slight_smile:

Thanks! :slight_smile:

Basically you created the Spawn Actor Into Level node that lets you specify which level an actor gets spawned into. The same functionality is also needed for the “Add StaticMesh” and “Add Instance” nodes.

I use “Add StaticMesh” to add a mesh to the world, then I use it’s return value to set an InstancedStaticMeshComponent variable which I then later feed into “Add Instance”.

I had a conversation with one of the Epic Devs about topic and they said that spawning actors into sublevels is not a recommended workflow, and it is really only ever used in the code base for a small number of things.

I think you need to take a step back and look at why you feel you need to do , and let me know as well! Cause Epic is basically saying is not the way you’re supposed to do things :slight_smile:

The main reason being that an actor spawned into a sublevel directly will get taken out of existence instantly if the sublevel is streamed out.

But again I was told that the pull request for would not be accepted because it is not a workflow that is even used by Epic for more than a few rare cases.

Do they have an alternative for procedural content generation with streaming, or is streaming just not available?

What kind of workflow do they recommend for that? How would they do a Minecraft?

So I just read the email from Marc.

I will be honest, I do not know what the optimal method for spawning would be. I will try and explain the problem.

Requirements:

  1. Instances, actors, volumes, etc, etc need to be procedurally spawned during run.
  2. Everything spawning needs to be associated with a streaming level that is already in the level.

Problems:

  1. Spawn and Add instance actions put these objects into the persistent level.
  2. There is no method(that I have found) of associating these objects with the streamed levels using blueprint.

Lets say I have a map, and it is spawned into the persistent level. For world wrap simulating a globe, I want to stream in copies of map(and everything on it) as I move east or west so there is a seamless transition between one side of the globe and another.

Hi ,

Thanks for the updated plugin and the new nodes. I am now able to propagate a fire on a mesh based on where I click.

So when I click on a mesh (provided there are enough vertices on the mesh), it gets the vertex locations. Using your closest vertex node, I create a source point for a flame emitter and spread it from there. I just got to work early week. Now comes my next challenge. My thesis is on “Material Based Fire Propagation & Degradation”. An on fire degrades. And the degradation happens from the source point (i.e in situation where I click) and spreads out. To do , I first tried vertex painting in the level editor. Depending on the vertex colors, different textures are exposed. And is using the vertex color node in material editor. Problem is is not dynamic. Neither material editor nor blueprint editor has a node that allows passing of vertex color information dynamically. If was possible, I would be able to assign a color to each vertex based of your existing vertex information nodes. would communicate with the material editor and dynamically change the textures. Can you please help create a node to do ?

Thanks!!!

CatchPhyre

You’d need a entirely different class for , instead of static mesh, you’d need to use a Dynamic Mesh, which involves a lot of C++ coding :slight_smile:

I’ll think about it but your request is quite complicated.

Your better off using a dynamic material instance and regulating which parts of the material change to being on fire.

Look up ue4 burn effect / ue3 burn effect to see what people have in the past.

Doing at vertex level just in Blueprints is going to be an uphill battle I surmise.

the key part about a “static” mesh is that it is static, I can’t modify its vertex information at runtime, you need a dynamic mesh for that, which is not yet an official UE4 class.

Check out the C++ Dynamic Mesh thread for more info!

**New UMG Node

Get Widgets of Class

Ideal for UMG Level Transitions**

I needed node for Solus and so I am now sharing it with you!

The was that I could not save a reference to my new widget because it is loaded and then a level change occurs which resets my HUD variables.

So I needed to access the widget after it was created dynamically, not relying on stored references within the HUD class.

I also did not want to have to store a reference to it in my Game Instance class cause then that leads to garbage collection issues.

I had to make the node for my own use and I have tested it as working in Solus!

**Now you can retrieve an array of any type of user-made UMG widget that is currently in your game at any!
**


**Download**

https://wiki.unrealengine.com/File:VictoryPlugin.zip

C++ Code

Here’s what my C++ for node looks like!



void UVictoryBPFunctionLibrary::GetAllWidgetsOfClass(UObject* WorldContextObject, TSubclassOf<UUserWidget> WidgetClass, TArray<UUserWidget*>& FoundWidgets)
{
	//Prevent possibility of an ever-growing array if user uses  in a loop
	FoundWidgets.Empty();
	//~~~~~~~~~~~~
	 
	if(!WidgetClass) return;
	if(!WorldContextObject) return;
	 
	UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
	if(!World) return;
	//~~~~~~~~~~~
	
	for(TObjectIterator<UUserWidget> Itr; Itr; ++Itr)
	{
		if(Itr->() != World) continue;
		//~~~~~~~~~~~~~~~~~~~~~
		
		if(Itr->IsA(WidgetClass))
		{
			FoundWidgets.Add(*Itr);
		}
	}
}



**Pic**

(right click -&gt; open in new tab to see it better)
![GetAllWidgetsOfClass.jpg|1280x960](upload://k3rJSJemWVjAQ9p7eXZQVNYeJAl.jpeg)

Enjoy!

Thanks , I will check up on the past works on burn in the meantime!

Good luck CatchPhyre!


New UMG node release, see just above!

![GetAllWidgetsOfClass.jpg|1280x960](upload://k3rJSJemWVjAQ9p7eXZQVNYeJAl.jpeg)
  • you probably want to add a call to GetIsVisible (which is being renamed to IsInViewport in 4.6), to limit returned widgets to only the top level viewport widgets, otherwise you’ll get the nested ones too.

Great idea , thanks for the info!

I will add a bool option to only retrieve top level widgets.

I actually intended that my node have the power to iterate over internal widgets in case that was something the BP user wanted to do deliberately :slight_smile:

But having an optional top level filter is a great idea!


**UMG, Get  Widgets Of Class

Updated!**


Now you have an optional bool filter to only return widgets that are at the top level, see [ Darnell's comment](https://forums.unrealengine.com/showthread.php?3851-(39)--s-Extra-Blueprint-Nodes-for-You-as-a-Plugin-No-C-Required!&p=172889&viewfull=1#post172889) for more information

My C++ Code For Node



void UVictoryBPFunctionLibrary::GetAllWidgetsOfClass(UObject* WorldContextObject, TSubclassOf<UUserWidget> WidgetClass, TArray<UUserWidget*>& FoundWidgets,bool TopLevelOnly)
{
	//Prevent possibility of an ever-growing array if user uses  in a loop
	FoundWidgets.Empty();
	//~~~~~~~~~~~~
	 
	if(!WidgetClass) return;
	if(!WorldContextObject) return;
	 
	UWorld* const World = GEngine->GetWorldFromContextObject(WorldContextObject);
	if(!World) return;
	//~~~~~~~~~~~
	
	for(TObjectIterator<UUserWidget> Itr; Itr; ++Itr)
	{
		if(Itr->() != World) continue;
		//~~~~~~~~~~~~~~~~~~~~~
		
		if( ! Itr->IsA(WidgetClass)) continue;
		//~~~~~~~~~~~~~~~~~~~
		 
		//Top Level?
		if(TopLevelOnly)
		{
			//only add top level widgets
			if(Itr->GetIsVisible())			//IsInViewport in 4.6
			{
				FoundWidgets.Add(*Itr);
			}
		}
		else
		{
			//add  internal widgets
			FoundWidgets.Add(*Itr);
		}
	}
}



Pic

![71009bd806383a480cc409a36e116fe857cc7fd1.jpeg|924x531](upload://g7Fg1q0nVexk7Osutyh5CHV6WRj.jpeg)
♥

, really need that you become a Epic developer and do it in the official release :stuck_out_tongue:
I would be not suprised

Hi ,

Does your “Get Static Mesh Vertex Locations” node gather vertex information for skeletal meshes? I noticed my scene doesn’t work with meshes with morph targets. For example, I have a blanket that has a morph target (before & after burning). I am unable to propagate fire on that. Vertex highlights do not appear over that morph target mesh while appearing on other normal static meshes. Is there a work around ?

Thanks,
CatchPhyre

I have to make that node for skeletal mesh vertex access at some point, will let you know when I do :slight_smile: