Follow-up to: "Blueprint refs not being marked dirty"

Hello again team! My previous question was correctly closed: [Blueprint refs not being marked [Content removed]

I was unable to find generic solution that basically solves the backlogged issue. I copied over the current `ConstructMarkDirtyNodeForProperty()` solution used in `VariableSetHandler` and `CallFunctionHandler` to other BP nodes that take references: `BreakStruct`, `SetFieldsInStruct`, `VariableSetRef`, and `AddRemoveDelegate` to my knowledge. This ended up covering about half of our uses, the other half being input reference pins from non-Variable nodes.

This has understandably led to some follow-up questions:

  1. Would you be interested in taking this partial solution?
  2. For the remaining offenders, I’m looking to manually insert a `Mark Property Dirty` node. Do you use it on Fortnite? Do you recommend using it?
    1. If not, how do you currently address this issue? Is there some custom property type we can introduce to BP that will handle this behavior?
  3. You mentioned going to Iris as a solution. Unfortunately, since we are on 5.3, this is a non-starter. Replays compatibility also prevents us from going to Iris for a while. Does Iris circumvent this issue somehow? I was under the impression Iris used all of push-model under the hood.

Thanks again for the help!

[Attachment Removed]

Hi Kelvin,

Sorry for the delay.

If you have changes for us to look at, then you could always put up a PR with what you’re proposing. I won’t guarantee that they’ll get integrated, though.

Fortnite _does_ use the MarkPropertyDirty node, but it’s quite rare (I’ve only found a couple of instances in the content that I have synced). If you feel that you need it, then you can certainly add one. However, it _might_ be a little slower than what’s auto-generated because it needs to iterate properties on the class.

For your last question, I’ll have someone from the Networking team weigh in.

Thanks,

Dave

[Attachment Removed]

Actually, maybe I can partially address that last question. Fortnite also makes very liberal use of the MARK_PROPERTY_DIRTY* macros in C++ code. While they do use Blueprints, they also use a significant amount of native code, which is where the bulk of these dirty calls are coming from.

[Attachment Removed]