Engine News 7/30

Engine News

New Features

Core

Improved! Compile C++ within the Editor

Hot-reload now supports adding/removing new properties/classes/structs/enums!
You will no longer see ‘generated code changes are not supported’ error when doing any structural changes to your C++ code.

&stc=1

Persona

Animation Editing Improvements

  •      FBX Importing : Doc/provide link per error/FAQ 
    

Now FBX import should provide link/rich tooltip like map error.

img2.jpg&stc=1

  •      **Double-clicking** a node within an AnimGraph will now open asset. 
    
  •      Scrub timeline has been removed from the viewport in the animation tab to avoid confusion.
    
  •      New Floating window preview.
    

img3.jpg&stc=1

  •      **Shift+Click** can now be used to expand/collapse hierarchy in the skeleton tree.
    
  •      Zoom feature in animation editor now zooms in based on current mouse position.
    
  •      Removed till: Removed after/before
    
  •      Rezero : Better tooltip
    
  •      All tabs now have simplified set ups.
    

&stc=1

  •      Added ToolBar per tab
    

img5.jpg&stc=1

&stc=1

  •      Save all Animation Assets menu
    

img7.jpg&stc=1

  •      Select bone in the viewport when bone is hidden (mesh requires to have physics asset)
    

img8.jpg&stc=1

  •      Display Info has now been simplified
    

img9.jpg&stc=1

  •      Montage slot name error message
    

&stc=1

  •      Help links have been added for each animation editor type.
    

img11.jpg&stc=1

  •      Mesh detail view clean up
    

&stc=1

  •      Reduction setting is now saved per LOD as well
    
  •      Mesh socket from Custom socket
    
  •      Retargeting option is intimidating (the combo box showing next to bone name): only showing this in Skeleton tab
    
  •      Animation editor window default size has been updated
    
  •      New Animation Thumbnails
    

img13.jpg&stc=1

Blueprints

New Editor Only Blueprint

The Blueprint will be an editor-only asset. Outside the editor only a class, generated from a blueprint, will be loaded and used.
In the future the feature will be mandatory. Currently it is optional, because it’s not 100% backward compatible.

Misc.

Editor

  •       Added ENGINE_API to FComponentInstanceDataBase so it could be used in other modules .
    
  •       Added the ability to flag custom events as CallInEditor and extended the main editor actor details view.
    
  •       New dynamic parameters now copy there parameter names from pre-existing dynamic parameters.
    
  •       Removed Paper2D texture:// usage and dependency on Editor Style.
    
  •       Removed transactions from importing normal maps.
    
  •       Actors now default to being aligned to Z-up if they are placed on the background.
    
  •       Refactored StringClassReference to be a subclass of StringAssetReference.
    

Core

  • Helper functions have been added to FreferenceCollector to be able to automatically add references to TArrays, TMaps and TSets of UObjects.

Behaviour Tree

  •       Added Behavior Tree execution order index widgets.
    
  •       Added new widget overlay system for graph panels, designed to allow more flexibility than the current brush-only implementation.
    
  •       Behaviour Trees are now correctly focused on double-click Correctly called through to parent implementation of FocusWindow().
    

Blueprints

  •       Added BP-callable accessors for spline mesh component values.
    

Persona

  •       Changed Zoom in Persona tracks to be based on mouse position instead of track center.
    
  •       Removed Persona generic delete and created specific UI commands for the notify panel to stop Persona consuming all delete input.
    

Rendering

  •      Removed scaling when calculating tangents for instanced mesh particles.
    
  •      Removed LocalToWorld scaling when calculating tangents for skinned meshes.
    
  •      Added a message warning that precomputed visibility is disabled when in ES2 mode.

Great to see the improvements to hot reload! Makes it MUCH more useful now.

Hot reload changes are really welcome, are we going to see detection of changes to C++ and auto compile in 4.4?

Uhm sorry for the question, but you still can’t compile the code within the editor when doing changes to header files, right?

Hi all,

The point is full C++ hot-reload is not availlable in “latest-preview” tag (7d7ee986 on branch master - 28/07/2014 11:28):

It was added to the “master” branch after the “latest-preview” tag in two different commits:

  1. 26f250c9 on branch master - by Robert Manuszewski, 29/07/2014 08:43

Hot-reload: support for structural changes for hot-reload (adding/removing properties/classes/structs/enums)

#change Classes will now be defer registered instead of being created during static initialization
#change Added class re-instancing after hot-reload
#change Changes to UHT to keep track of generated code changes
#change Refactored a few CoreUObject delegates to a common namespace struct.

[CL 2235479 by Robert Manuszewski in Main branch]

  1. 73fe7a96 on branch master - by Robert Manuszewski, 30/07/2014 17:06

Missing file from Hot-Reload improvements check in

[CL 2237046 by Robert Manuszewski in Main branch]

Cheers!

Does that new hot-reload improvements mean that we dont need to restart the editor AT ALL now?, or does it still have a few limits where you need to restart the editor and compile outside it?
If now we dont need to restart, its a HUGE improvement to c++, putting it on line with a scriptng lenguage, and absolutely awesome.

Sorry, the C++ recompiling improvements are actually for 4.5, guys. We branched for 4.4 a week ago, so this week’s engine news post is actually a preview for the following release. If you want to try the new C++ compiling feature this early, you’ll have to compile from GitHub ‘master’ source. By the way, 4.4 is in testing now and the Preview version is available today from the Launcher.

The C++ compiling improvements are indeed awesome though – I spent my entire Saturday working on a little C++ sprite shooter project, and I was able to keep the editor running the entire time! Well, except when my own code crashed, or if I wanted to totally revert an asset. We will try to work on that.

> are we going to see detection of changes to C++ and auto compile in 4.4?

This is something that is not yet implemented but we are going to try to get it done before 4.5. We’re really excited about that workflow.

> Does that new hot-reload improvements mean that we dont need to restart the editor AT ALL now?

Yes. You do not have to restart at all while writing C++ gameplay code.

We’re also working on making C++ compiling even faster for 4.5, especially reducing the time it takes for UnrealBuildTool to startup and check for out of date files, so your incremental compiles will complete very quickly.

–Mike

Finally, we won’t have to close the editor to recompile the change to headers :smiley: Well when 4.5 is released anyways. This will make it much faster for prototyping out functionality. The image in the post though looks like just changing a variable value in the constructor which if I am not mistaken is already possible to recompile a value change to a variable. If an image of the header file was there instead showing the new variable then that would show off that it is Hot-Reloading for changes in the header files. This is just me being nit-picky on that image. I am really looking forward to 4.4 and then 4.5 for this Hot-Reloading feature :smiley:

Can you please explain more about this feature?

It’s a move towards making the Blueprint an editor-only asset, since it is ‘source code’, and the generated class is the actual meaningful runtime element. By itself, this is a very small load time / memory optimization in cooked games, but it will enable a couple of desirable new features once we’ve switched over to it, such as being able to edit the defaults of an inherited component that was added in an ancestor blueprint, and being able to potentially get rid of the _C suffix on the generated class, reserving the ‘good name’ for the class and making the BP asset use an anonymous inner name.

Cheers,
Michael Noland

Hi Mike

Will the dependency zip packages that were released for the 4.4 preview be compatible for building the master with the c++ compiling? Would be nice to get another preview that has this in. Or am I misunderstanding and one of the released previews has it included?

I did not try this combination, instead I used the ‘latest-preview’ dependency zips to compile ‘master’ successfully: to reduce risks, I only get master updated up to the second ‘hot-reload’ commit that I reference in my previous post.
Everything went smoothly, although I did not have time to test this specific feature yet!

Edit:

No, as stated before, there is currently no preview with this feature.

Cheers

What exactly does this mean? Which component values will this give us access to?

So did the same thing and build up to this commit point. The build worked but couldn’t successfully compile a project. Had a couple of issues. First was that the generated xcode project only had schemes which would compile the whole engine. So compiling project code only wasn’t an option.

Second issue was that the compile from editor started but was getting errors in code (couldn’t find a reference to GEngine, as I was trying to log something to the screen)

Also the editor seemed buggy with mouse clicks (a lot of buttons/UI elements required to clicks to register, not sure if slate is a bit buggy at this stage). I’ll keep a watch on the commits and see if anything pops up which looks like its worth compiling again.

Hi, just to let you know, I had none of those issues with Visual Studio (under Windows).

Compiling without restarting the Editor works for anything I tried (adding variable and function members), really nice improvement, thanks a lot for this Epic!

Compile time is much longer though, and you really have to hide the Editor to get full CPU power for compilation.

Hee hee! Thanks for sharing Mike!

Woohoo!

I was actually going to mention that part about the initial file check, but sounds like you have this all sorted out already!

Great work Mike and Epic!

:slight_smile:

Rama