How do I consistently get changes in Parent class to reflected in Editor?

I have gotten burned on this in a few different ways where I do a compile in the Editor and it compiles without reported error. Must have compiled over 50 times trying to get the AIPerception to work with Sight and Hearing configs. Side note:I got it working.

However I did not know it was working until I got suspicious that my changes to the parent class XCaveCrawler (see below) were not being reflected in the Editor. I should have know something was wrong when in desperation, I added the Report Noise Event to the Tick event of the Player’s blueprint and I still did not see any events in the UpdatePerception(TArray SensedActor) method AND I made changes to the range for hearing and the debug circles did not change.

I closed the Editor and when I push play after opening it up, it all magically works.

I have only started working with the Engine in earnest the last 4 weeks, so I don’t have enough feel yet for when it is my lack of knowledge and when it is the tool going on the fritz.

I am starting to believe that I need to restart the editor any time I add components to the constructor of my parent C++ classes the BP are based on.

Am I doing something wrong or have a setting not flipped right?

I have the following class hierarchy inheritance:
XBaseCharacter: ACharacter
XCaveCrawler:XBaseCharacter

BP_CaveCrawler with parent XCaveCrawler.

Short version: As far as I’m aware, we just have to expect hot compile to be unreliable. Better than nothing, but doesn’t always work flawlessly.

It depends on the kinds of changes in my experience. As far as I’m aware hot compile is unreliable. Personally the bigger the code change the less luck I’ve had using hot compile. Only just moved to 4.14 so can only speak for up to 4.12.5 but yeah. I actually crashed alot when trying to play after a hot compile which was my queue to restart the editor haha.

The other thing you could need to do is compile the actual blueprint depending on what you’re changing (I’m assuming you did)

Thanks for the confirmation. I am trying not to develop bad habits early.

I didn’t think to compile the blueprint as I was in the parent class constructor only. This has burned be before with iterative changes to the parent class and the default values being set on the blueprint not changing.

All g mate. I have no proof, only a hunch, but I suspect that potentially following epic/ue4 c++ best practices with macros and code structure etc might make hot compile more reliable too. It’s usually when I’m just scatter-gunning code and experimenting that I’ve found hot reload to be worst haha.

I noticed you mentioned adding components to the base class in your original post. I would expect to definitely have to do a restart if you’re referring to adding actual actor components (ie a mesh or whatever).

Just another note - if you change default values in the base class that are exposed to blueprint in the details panel you may need to hit the yellow ‘default’ arrow button to ‘reset’ them to whatever’s in the base class.