Download

How do I get the Source and target locations of my beam emitter?

I am spawning some beam emitters and listing them in an array.

c636ec67e0da081375864512ba05680f12b2bd7c.png

Then, on tick, I need to check the location vectors of their Source and Target, so I loop through the array.

7d5300071bdeda25202f915211a924a156e689ad.png

But I’m not being given the option to get the location, only the option to set it.

00e8b92a120162cc2fe8cb02125f1559d02bb868.png

Can anyone see what I have missed?

It’s time for a four-day bump.

Help!

I’ve tried looking it up with the context sensitive checkbox clicked off. I can’t find anything remotely similar to what I want.

Is this something that can only be done with C++?

Even in C++ I dont see a function to Get the target point from ParticleSystemComponent.

So I think that the TargetPoint and EndPoint are properties belonging to emitter instances. There is an array called ‘EmitterInstances’ in ParticleSystemComponent class. perhaps you should iterate through that array (or get the right EmitterInstance using EmitterIndex as array index). Once you get that try casting it to ‘ParticleBeam2EmitterInstance’. This one has a member array named ‘UserSetTargetArray’. You can then use the ‘TargetIndex’ to get the right item (whcich is a Vector) from that array.

NOTE: I did not try this myself using Blueprints. But it should work.

Sorry, I couldn’t get this to work. I don’t understand the EmitterInstance bit. :frowning: It would throw an error if I cast to emitter, and would only let me cast to emitter class, but I couldn’t do anything with that.

When I create the beam source point (using Spawn Emitter at Location), the return type is a Particle System Component Reference, and it’s on this reference that I also create the beam’s end point (using Set Beam Target Point). Should it not be on this reference that I GET the target point’s location, rather than casting to another return type?

Sorry if I’m being thick. I’ve been stuck on this so long, I can no longer see the wood for the trees. :frowning:

Why don’t you create a struct and store the values in there within the array? Or perhaps attach the endpoint to an invisible mesh that you can then get the location of?

The SetBeamTargetPoint function in ParticleSystemComponent is actually a wrapper. It picks up an EmitterInstance from its EmitterInstance array and defers the call to it. There is a function with the same name SetBeamTargetPoint defined in the EmitterInstance class which actually does the job of adding the given point to UserSetTargetArray array.

But we dont have a function to get the targetpoints from ParticleSystemComponent.

So in C++, i would do

I will try this in an actual project today or tomorrow and also try and find a way to do this in Blueprint.

@Jazcentral,

I’ve got bad news for you. Unfortunately the EmitterInstances array is not exposed in blueprints. SO looks like its doable only in C++
:frowning: :frowning:

UPDATE:
I have added 7 additional nodes to Particle System Component by editing the source code. If anyone is interested, they can get the code from my UE4 fork:
https://github.com/alwintom/UnrealEngine

I have also created a pull request to integrate it into UE4 master branch here:
https://github.com/EpicGames/UnrealEngine/pull/2080

Here are the nodes:
3676ca8de36528a2be9850f412b2707a26b352b7.jpeg

Nice work! Bookmarking this for future reference

UPDATE:
My pull request has been accepted. The change is now available in master branch.

For which version is it going to be included?

That I do not know. I will update this thread when I have more information. Epic needs to run tests before they make this change available in a new release.

Please quote me so I get notified. Thanks for the awesome contribution :slight_smile:

@Zarkopafilis
Sure, no problem.

Excellent addition @mindfane, looking forward to using these when they appear :slight_smile:

@Jezcentral @Anadin @6ixpool

This change is now available in 4.13 preview

Amazing! I can see some people making good use of that.

@mindfane Thank you so much. :slight_smile: