Editor Utility Blueprint - referencing actors

the long-term goal is to deform landscape based on spline components, so they mimic landscape spline functionality. I understand this must be done in an editor utility. Landscape splines are annoying and buggy (when interacting with pcg graphs) and I’m trying to build a toolset for someone who has no experience in game development. So developing a way that the spline deforms landscapes needs to be a seamless process in a way that landscape splines do this. my issue isn’t with the actual deformation process. my issue is setting up the references so that I do not have to rely on actor polling or extra buttons.

My best assumption is I need to cache all the splines in the editor utility blueprint then bind to a spline event. since actors can’t initialize editor utility blueprint functions. i thought using a utility actor component would be smart, but the parent actor cannot initialize the component functions, and the component has no construction script or events that i can find so how do they even communicate with each other?

the problem is caching the splines in the editor utility blueprint.

I’ve considered using an editor utility widget that has a ‘spawn spline’ button. it would be annoying to have to go to a fixed coordinates every time I spawned the spline or manually enter coordinates. If I did this, could I spawn the spline based on level viewport camera view?

Another option that has lead me to nothing but dead ends would be to just cache the splines as they are added to the level viewport… but from what i’ve found this just involves polling every time an actor is added. which i’m trying to avoid. as there does not seem to be any dispatchers that pass a reference of the actor that has been added.

which led to this option I’ve considered. from the actor’s construction script. grabbing a level reference. and dispatching an event from the level that passes the actor reference to the editor utility. I do feel like there should be a more efficient way of handling this though and i’m rather new to editor utilities.

I’m open to suggestions.

edit: i just had an idea. i just put the spline in the editor utility blueprint. then if needed copy the data over to dedicated spline management actor for runtime.
edit: with the edited idea now i’m stumbling to reference the landscape

edit: nvm. landscape patch plugin is just easier than Editor Apply Spline.

You don’t need polling — two clean options depending on what UX you want:

  1. Manual pick: add a variable of the Landscape actor’s class to your EUW, drop a Details View widget in the EUW, and bind it to that variable. You get the standard actor picker dropdown — the user clicks the landscape once and you hold a hard reference, no loops.
  2. Programmatic: use Get Editor Actor Subsystem → Get All Level Actors (or Get Selected Level Actors if your tool should act on the current selection), filter by class, and store the results once. Do this on tool open or on a button press, not per tick — that’s the ‘polling’ you want to avoid.

For your spline deformation tool specifically, a third option fits better: don’t reference the landscape at all. Put your splines in the level, and have the EUW operate on whatever spline the user selects — Get Selected Level Actors → filter for spline components, then run the deformation on each selected spline’s owning landscape. That matches how Epic’s own landscape spline flow works (select spline, act on it) and survives level streaming since you re-resolve selection instead of caching actor pointers that go stale on reload.

Also cache the Editor Actor Subsystem reference once at construct, not per call — repeated Get Editor Subsystem calls are cheap but the pattern keeps the graph readable.