Renaming BlueprintType

Okay so I tried to submit this but the bug reporter crashed lol anyways, I was renaming a UStruct declared BlueprintType, this structure was used within a Blueprint and caused an error on load which seemed to cause the editor to crash. Probably not the best of ideas on my part but thankfully I had remembered what I did most recently and was able to undo it rather quickly, if this is needed to fail it should perhaps fail alittle more gracefully, cool.

eg.

USTRUCT(BlueprintType)
struct FVectorDouble

to.

struct FVectorPeak

LogBlueprint:Error: [compiler] Error
No Struct in Break

Oh I was using 4.0.2 on Windows 7.

If you simply want to rename a type and have everything in your blueprints just magically update you can set up an active struct redirect in you DefaultEngine.ini

For example from BaseEngine.ini:

+ActiveStructRedirects=(OldStructName="VimDebugData",NewStructName="AnimBlueprintDebugData")

Agreed that it shouldn’t crash, we’ll get someone to follow up on that.

Could we add a request for a Renamer that does this in editor, via some form of Before and After table?
For cases where the editor won’t let us rename a thing, ie ButtoNAHit to ButtonAHit it would be nice to override or redirect them.

Also when renaming a function, any calls to it from anywhere else (other blueprints) don’t follow that change, so they have to manually tracked in the compiler output, which is ok, but it could be nice to have a prompt to auto-update them.

Ahh awesome so redirects work for structures too, I’ll have to make alittle bit of some notes about those. I’ll see what I can do about documenting exposing some of my C++ to Blueprint journey in the coming weeks.

I have noticed on occasions my Blueprints are being updated externally, Im not sure if thats because they have to be recompiled from other blueprint or C++ changes. The system seems pretty robust so far but I am alittle bit concerned that those propogated changes might not compile correctly at some point. We’ll see, thanks for the response guys :slight_smile:

The casing issue is an entirely different beast, and one that can’t be solved via redirects.

What kind of function renaming issues do you have?

Blueprint renames should be automatically robust as we have a GUID based identification system for refinding the renamed function.

C++ blueprint callable functions also require a redirect to be added. You can see examples of them in the BaseEngine.ini as K2FieldRedirects:

+K2FieldRedirects=(OldFieldName="Pawn.AddPitchInput",NewFieldName="Pawn.AddControllerPitchInput")

This also allows you to move functions from one class to another. If you want to rename a parameter within the function it uses the K2ParamRedirects and, for most standard blueprint callable functions, looks something like

+K2ParamRedirects=(NodeName="/Script/BlueprintGraph.K2Node_CallFunction", OldParamName="PlayerController.DeprojectMousePositionToWorld.WorldOrigin", NewParamName="WorldPosition")

Hi Marc,

Is there a list of all the types of redirect? I can’t seem to find one anywhere.

Unfortunately, no such list exists at this time. We will put a request in for some public documentation related to this topic. It may be possible to scrape through the files and find the types of redirectors that exist, though, and then look those up in code.

Thanks for getting back to me. :slight_smile:

It’d be great if there was some documentation on this, it seems like a very useful utility to have so little documentation. Also, I have had a look through the source files but haven’t found anything to remedy my particular situation.

Redirecting Struct Members to Class

If you have any ideas, please let me know.