4.7 preview 3 - Delay not available in standard macros

I can’t add a delay into the standard macros anymore in 4.7 preview 3. Is this a new change?

I see no mention of it in the release notes, and it can be added just fine in a BP macro.

Thanks!

Hi ,

I just tested this in the 4.7 Preview but I couldn’t get your results. The delay node added correctly for me. Could you post some screenshots so I can see exactly what’s going on it your project?

1 Like

The delay works fine in the normal BP macros indeed, try to add it to the engine’s ‘StandardMacros’ (where all the normal for loops etc resides). That’s the only place I can’t add it. If I copy a section of nodes from elsewhere all but the delay gets pasted so it’s something wonky going on… Wasn’t like that in 4.6.

Thank you for the report. I see what you are talking about now, I was able to reproduce it in the 4.7.0 Preview. I’ve created JIRA UE-7819 in our tracking software and our developers will be investigating the issue further.

Cheers,

TJ

Excellent, thank you. I should’ve been clearer in my first post I realize but good to see this looked into.

Cheers!

Hi ,

I have an update for the report, our devs informed me that this is by design. The reason is, Latent nodes (any node with the clock symbol like below) cannot be used in a macro that can then be used inside of a function. To keep errors from occurring, they blocked all latent nodes inside of the engines StandardMacro library.

27561-latentnode01.jpg

Ok, I’m not too surprised to hear that but good to know it’s working as expected in 4.7 then. Thanks!

In 4.7 I cannot place delays in any macros.

I can not create a WhileLoopWithDelay either because of this.

Epic, please give us some news. I also really need a WhileLoopWithDelay which I created in a custom Macro Library in 4.6.1 but it’s no longer possible in 4.7… Either give us a workaround or make delays usable in macros again! The macro only needs to be accessible in the event graph, not in functions.

Hello ,

I have a workaround that may be viable depending on the intended use. This is what I came up with.

Copy the nodes from the loop you want to use and paste them into your graph. You can then collapse them down as shown.

I then set up the collapsed nodes as they were plus my delay add on of course.

Finished Example:

One last quick NOTE: I was able to add a delay to macros when making them inside of a Macro Library. You could then make delay macros for class by making a corresponding Macro library. This way you can just right click and type the name of the macro to pull it up. Example: If you make a macro library for Actor blueprints, you can then pull up that Macro in all Actor blueprints via the right click menu. I hope this helps.

Make it a great day

Thanks, but a collapsed graph is not really a workaround since I need this macro in many different blueprints.
Also, making a macro library only for actors also is not acceptable since I need to call this macro in many different type of blueprints, not only actors.

So please either fix it or give us a better workaround :slight_smile:

Hello ,

I do have a workaround, however it is a bit hacky. If you don’t want to make a macro library for all of the blueprints that can contain a delay (NOT recommended). This is how you would do it (in 4.7.2 I haven’t tested it else where)

I was able to come up with this after playing around with the macro libraries for a few seconds.

You will need to create a Macro Library that derives from the Object class.

When inside your new Macro Library you will then need to take the Collapsed loop with a delay, Copy and paste it into the Macro library. This should bypass the checks the editor is making for delays because it is contained inside of the collapsed node (You cannot copy and past a delay directly). All that is left is to hook it up like so:

NOTE: When attaching the pin together you cannot have the same names (Example the “index” pin cannot be named "index: pin if it is attached to a pin named “index”) I got around this by adding in spaces, it looks basically the same to use but completely different to the computer :slight_smile:

Make it a great day

Thanks a lot Rudy, that’s great! Hopefully this bypassing of the editor checks wont get “fixed” too soon :wink:

Unfortunately it does not seem to work :frowning: I have my WhileLoopWithDelay in a custom MacroLibrary of type Object, and I can use the macro from everywhere, but once it is executed during runtime the game ends and the engine says

“PIE:Error: Error Infinite Loop detected in GameMode_Play , asserted during Branch with the following Call Stack”

So the engine seems to think that the macro would cause an infinite loop… Which is not even possible at all with a delay inside of the loop.

The exact same thing actually happens if I just use a regular WhileLoop and connect a delay after the LoopBody exec pin.

This is how my macro looks like:

http://puu.sh/gN05o/77d6455b7a.png

Hello ,

I was able to reproduce the results that you are getting on our end. This is due to the logic in your loop. The second pin (Then 1) does not have a delay. This is what is tripping the infinite loop error. I was able to get around the error by putting the delay before the sequence. I hope this helps.

Make it a great day

Thanks! I didn’t think of this.

You only need to pack the Delay node though.