-
Notifications
You must be signed in to change notification settings - Fork 8
Current status of 4.1.0
Artur K edited this page Apr 29, 2021
·
9 revisions
- Codebase brought up to date with upstream 3.3 ( with some exceptions, mainly in parts that were removed/refactored )
- Introduced
EnttECS.- There are multiple
Enttregistries ( GameEntity/game registry, RenderingEntity/renderer registry, etc. ) - GameEntity replaces ObjectID
- There are multiple
- Each Object contains also a GameEntity
- Renderer objects are no longer generic
RIDs but system-specificRenderingEntity - disabled WebRTC and WebSocket engine modules ( it's not very likely we'll need those )
- split up renderer implementation into components, so the source/header sizes are more manageable
- fix a few incorrectly named icons
- Removed almost all usages of list-like types from the renderer
- Refactored draw_rect method into 2:
draw_rect_filled/draw_rect_stroke -
CanvasItem'sdraw_polygonanddraw_colored_polygontakeSpans as parameters now - Split a few classes into Logic/ComponentData
- Control and ControlData
- Buton and ButtonDrawableComponent
- Proper Game->Renderer synchronization points + worker thread/graph support using enkiTS
- Untangling Renderer entity interdependencies.
- remove occluder list from RasterizerCanvasLightOccluderInstanceComponent
- check if
Variantmarshaller is usingentt::to_integralcorrectly ( maybe it should only use the idx part of the entity's id?)
Supports two operation modes:
-
Extract reflection data from all/selected files in a given folder/path into a JSON file.
-
Use the previously generated JSON file to create type/method runtime data ( basically replace the hand-written
bind_methodswith automatically created ones ) -
Internal changes
- Signal/slot connections no longer store binds arrays and
connectno longer takes them as a parameter. - Add disconnect_all method that breaks all specific signal connections from this object to the target.
- make
Object::freeinto virtual public function, callable from scripts. - more rendering server's methods take
Span<>parameters- canvas_item_add_multiline
- introduce
object_for_entityhelper that convertsGameEntityintoObject * - compacted data type layouts by reordering their members to reduce the amount of memory used to hold them.
-
Dictionaryclasskeytype has been set toStringNameinstead ofVariant -
FileAccessRefis copyable no longer and gained support for being assigned fromFileAccess * -
DirAccessandDirAccessRefare no longer copyable. -
Threadis usingstd::thread::id's internally. - fix a leak in the
PacketPeerUDPconstructor. - change the reflection file format slightly to closer match the one generated by the
socutility. -
ClassDB::_set_class_headerhandles external paths better. -
ClassDB::add_virtual_methodno longer takes additionalis_virtualparameter, the assumption is that it's always virtual. -
ClassDB::bind_helperno longer takes unusedinstance_typeparameter. - add
PROFILE_VALUEandPROFILE_VALUE_CFGmacros that record named values in profiling runs. - ObjectDB is now just a simple namespace with two methods.
- Variant now supports construction/conversion to
GameEntity/RenderingEntityand conversion toSpan<Color>. -
SceneTree::flush_transform_notificationsnow usesentt::view<DirtXFormMarker,SceneTreeLink>to visit all nodes. - Introduced a common enum for text alignment:
UiTextAlign
- Signal/slot connections no longer store binds arrays and
-
Removals
- remove Pvrtc and Etc/Etc2 texture support ( those are in use on mobiles ).
- remove virtual keyboard support
- remove big-endian support from StreamPeer
- remove raw
XPMsupport from Image.- "atlas import failed" icon is now embedded as a png file.
-
math/bsp_treesince it's not used anywhere. -
Objectsupport forusersignals. -
Objectno longer exposes call-by-name functionality to scripting languages. - object_id header, since it's no longer needed.
- RefPtr now has two separated 'entity' accessors
get_ridandget_phys_ridwhere the returned object type is RenderingEntity and generic RID. - Variant no longer has
is_sharedandis_onemethods - SceneTree::GROUP_CALL_MULTILEVEL (was unused)