virtualx-engine/scene/2d
Hein-Pieter van Braam 0e29f7974b Reduce unnecessary COW on Vector by make writing explicit
This commit makes operator[] on Vector const and adds a write proxy to it.  From
now on writes to Vectors need to happen through the .write proxy. So for
instance:

Vector<int> vec;
vec.push_back(10);
std::cout << vec[0] << std::endl;
vec.write[0] = 20;

Failing to use the .write proxy will cause a compilation error.

In addition COWable datatypes can now embed a CowData pointer to their data.
This means that String, CharString, and VMap no longer use or derive from
Vector.

_ALWAYS_INLINE_ and _FORCE_INLINE_ are now equivalent for debug and non-debug
builds. This is a lot faster for Vector in the editor and while running tests.
The reason why this difference used to exist is because force-inlined methods
used to give a bad debugging experience. After extensive testing with modern
compilers this is no longer the case.
2018-07-26 00:54:16 +02:00
..
animated_sprite.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
animated_sprite.h Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
area_2d.cpp Allow editing of some unbound properties when hinted (or no range hinted) 2018-05-16 09:13:41 -03:00
area_2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
audio_stream_player_2d.cpp Fix possible bug with AudioStreamPlayer2D audio position 2018-07-10 22:57:50 -03:00
audio_stream_player_2d.h Improved stream paused fade code 2018-07-09 21:58:33 -03:00
back_buffer_copy.cpp Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
back_buffer_copy.h Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
camera_2d.cpp Fix Camera2D drag margin property is affected by zoom property #18912 2018-05-16 01:53:38 +02:00
camera_2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
canvas_item.cpp Fix CanvasItem search for a CanvasLayer 2018-07-18 20:34:21 +02:00
canvas_item.h Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
canvas_modulate.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
canvas_modulate.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
collision_object_2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
collision_object_2d.h Further fixes to KinematicBody2D API, support for sync motion in moving objects 2018-07-17 08:58:04 -03:00
collision_polygon_2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
collision_polygon_2d.h Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
collision_shape_2d.cpp Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
collision_shape_2d.h Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
joints_2d.cpp Changes to how node paths are selected from property, allowing setting a hint. 2018-06-27 20:50:25 -03:00
joints_2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
light_2d.cpp Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
light_2d.h Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
light_occluder_2d.cpp Fix binding some core API methods only in tools builds 2018-04-29 19:49:26 +02:00
light_occluder_2d.h Fix binding some core API methods only in tools builds 2018-04-29 19:49:26 +02:00
line_2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
line_2d.h Line2D texture stretch mode 2018-07-16 23:16:58 +02:00
line_builder.cpp Removed unnecessary assignments 2018-07-24 09:51:03 +02:00
line_builder.h Fix Line2D tile mode for non-square textures 2018-02-25 01:49:10 +01:00
mesh_instance_2d.cpp Add missing copyright headers 2018-05-16 14:50:44 -03:00
mesh_instance_2d.h Add missing copyright headers 2018-05-16 14:50:44 -03:00
navigation2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
navigation2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
navigation_polygon.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
navigation_polygon.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
node_2d.cpp Further fixes to KinematicBody2D API, support for sync motion in moving objects 2018-07-17 08:58:04 -03:00
node_2d.h Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
parallax_background.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
parallax_background.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
parallax_layer.cpp Fixed some warnings found with Cppcheck. 2018-05-14 02:14:56 -03:00
parallax_layer.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
particles_2d.cpp Allow editing of some unbound properties when hinted (or no range hinted) 2018-05-16 09:13:41 -03:00
particles_2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
path_2d.cpp Allow editing of some unbound properties when hinted (or no range hinted) 2018-05-16 09:13:41 -03:00
path_2d.h Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
path_texture.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
path_texture.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
physics_body_2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
physics_body_2d.h Modified RigidBody, PhysicsDirectBodyState, PhysicsServer, and their respective 2D counterparts to be more consistent and to include more useful methods. 2018-07-24 05:00:56 -04:00
polygon_2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
polygon_2d.h WIP Polygon2D weight editing 2018-05-02 11:01:12 -03:00
position_2d.cpp Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
position_2d.h Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
ray_cast_2d.cpp Use internal physics processing for Nodes' internal logic 2018-04-11 09:28:14 +02:00
ray_cast_2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
remote_transform_2d.cpp Changes to how node paths are selected from property, allowing setting a hint. 2018-06-27 20:50:25 -03:00
remote_transform_2d.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
screen_button.cpp Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
screen_button.h Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
SCsub style: Fix PEP8 whitespace issues in Python files 2016-11-01 00:35:16 +01:00
skeleton_2d.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
skeleton_2d.h Style: Apply clang-format (5.0) to some missed files 2018-05-31 09:00:37 +02:00
sprite.cpp Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
sprite.h Fixes the bad calculation of margin & anchors when child of Node2D 2018-06-07 21:25:15 +02:00
tile_map.cpp Reduce unnecessary COW on Vector by make writing explicit 2018-07-26 00:54:16 +02:00
tile_map.h Defer TileMap::update_dirty_quadrants once again. 2018-07-22 15:26:14 +02:00
visibility_notifier_2d.cpp Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
visibility_notifier_2d.h Remove the selection rect for nodes that do not require it 2018-04-03 22:04:19 +02:00
y_sort.cpp Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00
y_sort.h Add missing copyright headers and fix formatting 2018-01-05 01:22:23 +01:00