I can add whatever code I like in the constructor of my custom USceneComponent (declare variables, print messages, and so on), and hot-reload works fine. As soon as I touch any of the UPROPERTY values in the constructor, however, hot-reload crashes with the following stacktrace:
If I compile with the editor closed, I have no issues or crashes at all and everything works as expected. It just seems that there’s a problem to do with refreshing the blueprints and/or the actors using them.
I should have phrased my question better. What I mean is this: If I have the class hierarchy I described before, then add the following line to the constructor the of the nested USceneComponent:
MySimpleIntProperty = 5;
From that point on, hot-reload will ALWAYS crash the editor. As long as that line of code exists in my project, hot-reload will never work again, even if the next change I make is to simply add whitespace or a comment somewhere…
On a side note, I would have thought that changing the default value of existing UPROPERTYs would have been a perfect use case for hot-reloading (and it certainly works in all other scenarios I’ve tested). In any case, surely there’s a better way for the editor to handle this than crashing with an Access Violation error.
I created a test project to demonstrate another bug, but it also demonstrates this hot-reload crash. Try making a whitespace-only change to the code and then recompile with the editor open.