Added ability to easily create 2D Sprites via Scene Hierarchy Panel
Added script creation through HazelnutHZ-41, HZ-37
Added ability to create C# scripts from within Hazelnut
You can now open C# scripts in Visual Studio from Hazelnut by DOUBLE-CLICKING on the file in the Content Browser (opens in the firstVisual Studio instance that you opened)
Creating or deleting a C# script from Hazelnut now regenerates the C# project
C# Assemblies are no longer built into Assets/Scripts/Binaries, they're built into Binaries in the project base directory (although Hazel will still look in Assets/Scripts/Binaries just in case)
Added the ability to unparent an Entity via C#
Setting Parent to null will now cause the Entity to be unparented
Some RigidBody changes
Entities with dynamic RigidBodies now store their transform in local space just like all other entities
Added setter for RigidBodyComponent.BodyType, meaning we can now convert RigidBodies from static to dynamic (and vice versa) during runtime!
Re-added equality operators for Entity and Prefab
Runtime now pre-loads all required assets when loading a scene
Previously this was done on-demand which caused frame time spikes
In the future requires a workflow with domains or something
Reworked the editor console GitLab #200, HZ-63
Added back Clear on Play button
Switched filter icons to Font Awesome glyphs, they look better and they don't require us to use additional textures
Console is no longer cleared after 500 (499) messages
Console now automatically scrolls to the latest message
Automatic scrolling only happens if you're scrolled all the way to the bottom, meaning it can be stopped by scrolling up in the console
Added Depth of Field
C# bindings for DOF settings
Added Show Gizmos in Play Mode
Can also now control gizmos in play mode if setting is checked
Added Renderer::CopyImage
Added ImageUsage::HostRead
Added Transfer bool to ImageSpecification for transfer ops
ValueWrapper/FieldStorage fixes (needs more fixing)
Added Spot Lights
Only one shadow casting spot light for now
Added proper soft shadow support for spot lights
Added discard to Renderer2D.glsl shader for better transparency
Changed TransformComponent to store rotation as quaternion
Import of assets where a sub-mesh is rotated around Y-Axis by an exact multiple of 90 degrees
Distortion of animated assets if bones are similarly Gimbal-Locked
Rotating via ImGuizmo no longer forces rotation into range -180 to 180.
Activating ImGuizmo over a an Entity with gimbal locked rotation is now less likely to inadvertently change the transform.
No small drift due numerical precision issues in matrix operations.
SHIFT-CLICK in viewport now selects "root" Entity
SHIFT-CLICKING the left mouse button in the viewport will now select the clicked-on objects top-level Entity. This is useful when the object you've clicked on is a small part of a dynamic mesh: SHIFT-CLICK will now select the whole object, which makes it easy to move that object around or CTRL-D duplicate it.
RIGHT-CTRL, and SHIFT keys now affect selection also (used to be only LEFT-CTRL, LEFT-SHIFT)
If an Entity is selected, then any meshes in child entities are also submitted to the renderer as "selected" (this gives you the orange outline in the viewport around the Entityand all of its children, so you can see much clearer exactly what will be moved around if you were to change selected entities transform etc.)
C# Entities can now be compared using == and !=
Added DOUBLE CLICKING on an asset field in a component now opens that asset in the relevant editor / window
Some multi-entity gizmo changes
Rotation gizmo is now rendered correctly when rotating multiple entities at once
Disabled scaling gizmo when editing multiple entities due to severe bug. Scaling via the properties panel still works
Added AudioEventsManager class to process and dispatch Audio Events
Material Tables now use AssetHandles instead of Ref<MaterialAsset>
Added a way to set entities' transforms to the Editor Camera's transform + alternate ways to create cameras in scene
Changed default ScriptModulePath to Assets/Scripts/Binaries
Changed Hazel::Timer internally to use microseconds instead of nanoseconds for HUGE performance gains
Reworked how Content Browser items being "opened" is handled
The new method of handling Content Browser item activation is now more inline with other item actions
The new method allows other areas of the engine to handle item activation, so EditorLayer now handles when a scene asset is double clicked, by opening it in the viewport
This new method will also allow e.g script files to be opened in Visual Studio by DOUBLE CLICKING on it in the future (planning on adding that soon)
Improved Convex Mesh Collider Cooking
It's no longer possible to set a zero-area triangle threshold of 0 (will be capped at 0.01)
If we fail to cook a convex submesh because a zero-area triangle was detected we will attempt to cook it again without checking for zero-area triangles, since it's more of an optimization. We may want to change this so that we still check for zero-area triangles but set the threshold really low
Improved failed cooking log messages
PhysicsLayerManager no longer allows having multiple layers with the same name
Added virtual functions to AssetEditorPanel to optionally push ImGui style to window
Added a guard to AudioCommandsRegistry shutdown to prevent overwriting file with empty registry
The open state of panels is now serialized between sessions
Box Collider 2D and Circle Collider 2D now takes offset into account
Hazel now builds the script core if it's not already built on launch