Commit graph

462 commits

Author SHA1 Message Date
Haoyu Qiu e8838f4385 Fixes crash when clearing guides in empty scene 2019-12-05 16:19:00 +08:00
Tomasz Chabora 66cefde2b0 Fix box selection being cancelled immediately 2019-11-27 21:07:51 +01:00
Rémi Verschelde 083d088de3
Merge pull request #33583 from qarmin/fix_overflows_unitialized
Fix some overflows and unitialized variables
2019-11-20 21:31:12 +01:00
Rafał Mikrut 99d8626f4a Fix some overflows and unitialized variables 2019-11-20 16:22:16 +01:00
Tomasz Chabora 7e5340261a Cancel drag when selection changes 2019-11-19 16:02:04 +01:00
Rémi Verschelde d8cf3aa5ab
Merge pull request #33700 from nekomatata/sprite-add-label-overlap
Fixed "Add Sprite..." label overlapping with zoom controls
2019-11-19 09:49:52 +01:00
Tomasz Chabora 43d762fce3 Consider locked moving objects when updating viewport 2019-11-18 21:08:14 +01:00
PouleyKetchoupp 6d14251b0d Fixed "Add Sprite..." label overlapping with zoom controls 2019-11-18 11:52:01 +01:00
Michael Alexsander c77ce40c3b Minor adjustment in the "Game Camera Override" button's tooltip. 2019-11-11 11:46:23 -03:00
MCrafterzz a4a105d4ee Added options to disable movement/scaling handles in 2D 2019-11-11 13:33:14 +01:00
Rémi Verschelde 2143f46df2
Merge pull request #33516 from qarmin/small_fixes
Memory leaks and crash fixes
2019-11-10 10:17:19 +01:00
Rafał Mikrut 7dda9309f9 Memory leak and crash fixes 2019-11-10 09:49:13 +01:00
Tomasz Chabora 2bde99f790 Fix some small text mistakes 2019-11-08 23:31:29 +01:00
MCrafterzz b32b439c00 Added movement handles to 2D 2019-11-08 15:48:26 +01:00
Rémi Verschelde 621dc7022f
Merge pull request #27742 from rxlecky/camera-replication
Game camera override
2019-11-08 10:02:18 +01:00
Rémi Verschelde 245c99175c
Merge pull request #33361 from codecustard/master
Fixes improper undo state for pivot setting
2019-11-05 15:54:53 +01:00
codecustard f643786b96 Fixes improper undo state for pivot setting
After setting the pivot of a node, if you undo.... it will not revert the pivot to the previous state.
2019-11-05 05:59:03 -08:00
Tomasz Chabora e3cfb006a0 Allow zooming while panning 2019-11-04 12:33:24 +01:00
Rémi Verschelde 4569f5ec82
Merge pull request #33182 from MCrafterzz/scaleSnap
Added snapping for scaling in 2D editor
2019-11-02 11:12:54 +01:00
MCrafterzz 3a8a7fc31c Added snapping for scaling in 2D editor 2019-11-02 09:43:15 +01:00
Hugo Locurcio 27ad8609e2
Improve the primary line setting display in the Configure Snap dialog
This merges the "steps" suffix into the SpinBox using its `suffix`
property.
2019-10-30 22:19:30 +01:00
Rémi Verschelde 9e1be8f8aa
Merge pull request #32934 from ajweeks/fix-scale-origin
Fix 2D scale gizmo placement
2019-10-30 12:04:10 +01:00
Hugo Locurcio c7e5dd9ef0
Add primary grid lines to the 2D editor
A "primary" line is drawn every 8 steps by default,
which makes it easier to measure distances for snapping.

This value can be configured in the Configure Snap dialog.
2019-10-29 15:47:38 +01:00
Rémi Verschelde f259beb4f1
Merge pull request #33048 from KoBeWi/smarts_vs_grids
Make Ruler Tool depend on grid snap only
2019-10-25 12:06:03 +02:00
Tomasz Chabora 50528b966d Make Ruler Tool depend on grid snap only 2019-10-24 22:31:19 +02:00
volzhs 4beeb0fc0f Fix ruler origin is moving with zoom 2019-10-25 05:19:13 +09:00
Erik 8b0546d93b Implement game camera override
Implemented uniform API in Viewport class to override 2D and/or
3D camera.

Added buttons in 2D and 3D editor viewport toolbars that override
the running game camera transform with the editor viewport camera
transform. Implemented via remote debugger protocol and camera
override API.

Removed LiveEditFuncs function pointers from ScriptDebugger class.
Since the debugger got access to the SceneTree instance (if one
exists), there is no need to store the function pointers. The live
edit functions in SceneTree are used directly instead. Also removed
the static version of live edit functions in SceneTree for the same
reason. This reduced the SceneTree -> Debugger coupling too since
the function pointers don't need to be set from SceneTree anymore.

Moved script_debugger_remote.h/cpp from 'core/' to 'scene/debugger/'.
This is because the remote debugger is now using SceneTree directly
and 'core/' classes should not depend on 'scene/' classes.
2019-10-23 02:51:32 +01:00
AJ Weeks fb7a4ce63e Fix canvas scale gizmo placement 2019-10-22 18:17:54 +01:00
AJ Weeks 59d2c71227 Add arcs to indicate angle being measured by ruler 2019-10-19 19:45:56 +01:00
qarmin 616ab4fac2 Small fixes to redundand code, copy paste bugs 2019-10-14 11:40:55 +02:00
Gilles Roudière fff953ac8b Move grid snapping to an independent button 2019-10-10 21:10:08 +02:00
Pedro Ciambra afdfe651a1 Remove Show Ruler shortcut (fixes #32639)
Removed default shortcut because of the conflict mentioned in the issue.
Command + Shift + T would conflict with Soft Reload Script,
and this shortcut doesn't seem to be needed very often.
2019-10-08 18:26:21 -03:00
Gilles Roudière 0e834b3924 Increase grid size limit 2019-10-07 22:59:51 +02:00
Osama El Hariri 90ea3787ec Add angle to ruler tool 2019-10-06 18:04:49 +03:00
Hanif Bin Ariffin 79e83b7c92 Fixed warnings text using custom font and color setting.
Fixes #31917
Added missing font and color override.
2019-10-04 07:20:18 -04:00
lupoDharkael 0a0f596dfb Add checks after ResourceLoader::load() 2019-09-29 14:17:42 +02:00
Rémi Verschelde e426169e4c
Merge pull request #32341 from KoBeWi/be_gone
Clean snapping lines after resize
2019-09-25 18:45:13 +02:00
Michael Alexsander Silva Dias 5ed5465023 Replace "GuiMiniTabMenu" with "GuiTabMenu" and tweak it 2019-09-25 12:53:42 -03:00
Tomasz Chabora 37bf283195 Clean snapping lines after resize 2019-09-25 16:56:44 +02:00
Rémi Verschelde 076dc9803a
Merge pull request #32119 from Calinou/unify-axis-colors
Use the same axis colors consistently in the 2D and 3D editors
2019-09-25 13:03:47 +02:00
Tomasz Chabora 5476250356 Initialize snap_target and make sure it disappears 2019-09-20 22:26:26 +02:00
Hugo Locurcio 95f6f81dc2
Display the current zoom percentage in the 2D editor
This makes it possible for the user to know precisely the current
zoom level. The zoom percentage can be clicked to reset it to 100%
(similar to Firefox).
2019-09-17 20:36:10 +02:00
Hugo Locurcio c2bcc3f700
Use the same axis colors consistently in the 2D and 3D editors 2019-09-13 14:08:41 +02:00
Michael Alexsander Silva Dias ab6daed467 Add icon for the ruler tool 2019-09-02 11:45:03 -03:00
Tomasz Chabora 05e5faa876 Add 2D ruler tool 2019-09-01 18:36:41 +02:00
Rémi Verschelde 1222df0ad0
Merge pull request #31585 from 2shady4u/removeguides
Added button/shortcut for removing all guides
2019-08-26 13:51:10 +02:00
shaderbeast c6fb6a6a21 Added button/shortcut for removing all guides
Added undo/redo


Correctly added has_meta
2019-08-24 22:58:16 +02:00
Rémi Verschelde 2e5ba32b4b
Merge pull request #31545 from groud/add_smart_snapping_display
Displays smart snapping guides when snapped
2019-08-22 13:12:09 +02:00
Gilles Roudière 692a78db19 Displays smart snapping guides when snapped 2019-08-21 22:15:51 +02:00
Tomasz Chabora 9520d9706a Edit TileMap only with TOOL_SELECT 2019-08-21 20:56:15 +02:00
Hugo Locurcio 108f9646f5
Add an outline to box selection rectangles for better visibility
This also refactors selection box color definitions
to avoid repetition.
2019-08-15 22:27:32 +02:00
Hugo Locurcio 9e1c23a353
Reorganize various menus for consistency and conciseness
- Clean up the recent scripts dialog to match the recent scenes dialog
- Add "..." at the end of shortcuts that cause a modal dialog to appear

This closes #31148.
2019-08-13 11:52:10 +02:00
Rémi Verschelde 9da24f7e3d
Merge pull request #30938 from nobuyukinyuu/2d-editor-zoom-p1
Changes default canvas_item_editor coarse zoom level from 1.5 to sqrt(2)
2019-07-30 00:57:43 +02:00
nobuyuki_nyuu 3f516622c3 Changes default coarse 2d zoom level from 1.5 to sqrt(2). 2019-07-29 17:12:03 -05:00
Bojidar Marinov 68b5f101c7
Make it so that 2D viewport does not pan while editing tilemaps
Fixes #30875
2019-07-28 17:00:05 +03:00
Rémi Verschelde 017b224a87
Merge pull request #30713 from bojidar-bg/30615-trackpad-2d-viewport
Improve touchpad support in 2d editor viewport
2019-07-22 14:06:28 +02:00
Bojidar Marinov e37594824f
Improve touchpad support in 2d editor viewport
Implements ideas from #30615
2019-07-20 17:55:02 +03:00
Rémi Verschelde d15cf7b672
Merge pull request #30576 from qarmin/lgtm_coverage
Changed some code reported by LGTM and Coverity
2019-07-20 12:00:13 +02:00
qarmin 6cbaf7662f Changed some code showed in LGTM and Coverage 2019-07-20 08:09:57 +02:00
Cameron Reikes d4bed7586d Lower priority of anchor helper input
- Fixes #30132
2019-07-16 11:33:40 -07:00
Hugo Locurcio 0fb80d7b0f
Use resize cursors when hovering or dragging guides in the 2D editor
This also tweaks the casing in undo/redo action names for consistency.

This closes #30550.

Co-authored-by: Emmanuel Barroga <emmanuelbarroga@gmail.com>
2019-07-15 14:24:45 +02:00
Hugo Locurcio 5c0ee4a790
Improve line drawing in the 2D editor
- Use antialiasing (only visible when using the GLES3 renderer)
- Scale line widths on hiDPI displays

This also removes some debugging prints.
2019-07-11 16:05:09 +02:00
Rémi Verschelde 11b8bf5572
Merge pull request #30103 from groud/center_2D_editor
Centers the 2D viewport in the editor
2019-06-27 15:14:23 +02:00
Rémi Verschelde eaaff9da31
Merge pull request #29941 from qarmin/redundant_code_and_others
Remove redundant code, possible NULL pointers and others
2019-06-27 01:05:18 +02:00
Gilles Roudière 1b53ea79e2 Centers the 2D viewport in the editor 2019-06-26 23:03:15 +02:00
qarmin 4e5310cc60 Some code changed with Clang-Tidy 2019-06-26 15:08:25 +02:00
Tomasz Chabora c81525ec05 Allow to remove 2D editor limits 2019-06-25 00:19:44 +02:00
Rémi Verschelde d61d1af64d
Merge pull request #29489 from groud/fixes_nan
Fixes NaN errors with anchors mode
2019-06-18 09:53:25 +02:00
Tomasz Chabora f472f0491c Allow to change 2D pan hotkey 2019-06-05 22:44:52 +02:00
Gilles Roudière df0a69bbac Fixes NaN errors with anchors mode 2019-06-04 21:58:21 +02:00
Bojidar Marinov 647fb155c3
Fix constant redrawing of the editor when selecting a Control in a Container
Fixes #29313
2019-05-30 18:25:22 +03:00
Rémi Verschelde c088386c5b
Merge pull request #29109 from RandomShaper/fix_onion_skinning
Fix onion skinning
2019-05-23 07:58:27 +02:00
Michael Alexsander Silva Dias c18e4f0f01 Add undo/redo to Node2D bone creation 2019-05-21 17:17:25 -03:00
Pedro J. Estébanez 3b17e6de33 Remove ghost of canvas zoom controls during onion skinning 2019-05-20 22:36:34 +02:00
Pedro J. Estébanez 4dd9efe757 Fix canvas zoom controls lazy position update
After hiding/showing rulers, zoom controls were kept at the wrong position until an update happened because of other reason.
2019-05-20 22:35:31 +02:00
Gilles Roudiere e875f05c3b Improve the anchors and margin workflow 2019-05-13 18:55:31 +02:00
Rémi Verschelde ae41e35191
Merge pull request #27676 from qarmin/small_fixes_2
Small fixes to static analyzer bugs
2019-05-01 08:19:04 +02:00
Rémi Verschelde 36d4f86ed9
Merge pull request #27707 from Calinou/tweak-message-wording
Improve wording of various messages and make casing more consistent
2019-04-30 11:10:36 +02:00
Sintinium d1fa546dc9 Undo support for locking and grouping for both 2D and 3D 2019-04-26 18:16:59 -05:00
Rémi Verschelde a342131eba
Merge pull request #27673 from qarmin/small_fixes
Small fixes, mostly duplicated code
2019-04-22 12:00:34 +02:00
Hugo Locurcio 0fc0641e7d
Fix rotation offset/snap fields being cut off in Configure Snap dialog 2019-04-22 00:51:48 +02:00
Hugo Locurcio 35a0162167
Improve wording of various messages and make casing more consistent
This also adds the number of selected projects to the confirmation
dialog that appears before removing projects.
2019-04-21 14:37:14 +02:00
Guilherme Felipe d835738045 Small ux improvement 2019-04-20 17:43:23 -03:00
Juan Linietsky 296c74072c Implement autokeying in Animation editor. 2019-04-15 00:49:03 -03:00
qarmin 856a8226a5 Small fixes, mostly dupicated code 2019-04-08 11:03:37 +02:00
Tomasz Chabora 7abd0a3976 Allow panning while moving a node 2019-04-07 16:43:21 +02:00
Rémi Verschelde 945f7f83d3
Merge pull request #27330 from qarmin/fix_bones_not_showing_after_create
Show bones after creating
2019-04-05 16:39:55 +02:00
Rémi Verschelde a61ad365f5
Merge pull request #27677 from akien-mga/Wimplicit-fallthrough
Fix -Wimplicit-fallthrough warnings from GCC 8
2019-04-05 16:12:45 +02:00
Juan Linietsky 19a6a6286a Ability to make CanvasLayers have pseudo 3D depth. 2019-04-05 10:25:51 -03:00
Rémi Verschelde fc370b3feb Fix -Wimplicit-fallthrough warnings from GCC 8
Adds `FALLTHROUGH` macro to specify when a fallthrough is intentional.
Can be replaced by `[[fallthrough]]` if/when we switch to C++17.

The warning is now enabled by default for GCC on `extra` warnings level
(part of GCC's `-Wextra`). It's not enabled in Clang's `-Wextra` yet,
but we could enable it manually once we switch to C++11. There's no
equivalent feature in MSVC for now.

Fixes #26135.
2019-04-05 15:14:53 +02:00
qarmin 8460d0678c Small fixes to static analyzer bugs 2019-04-04 22:00:16 +02:00
Rémi Verschelde d9b9c9f98a
Merge pull request #27567 from Calinou/selection-boxes-use-accent-color
Use the editor theme's accent color for 2D/3D selections and rotations
2019-04-04 17:45:01 +02:00
Hugo Locurcio d59b210aec
Use the editor theme's accent color for 2D/3D selections and rotations 2019-03-31 23:54:46 +02:00
qarmin 1b6e0d04f0 Show bones after creating 2019-03-22 19:14:54 +01:00
qarmin 138698e51f Do not lose focus when moving through scene tree 2019-03-06 12:10:09 +01:00
marxin 8d51618949 Add -Wshadow=local to warnings and fix reported issues.
Fixes #25316.
2019-02-20 19:44:12 +01:00
marxin 7ae160f661 Fix 2 more UBSAN issues (#25217). 2019-02-14 20:47:35 +01:00
Rémi Verschelde c5dcbeb160 Scene: Ensure classes match their header filename
Also drop some unused files.

Renamed:
- `scene/2d/navigation2d.h` -> `navigation_2d.h`
- `scene/2d/screen_button.h` -> `touch_screen_button.h`
- `scene/3d/scenario_fx.h` -> `world_environment.h`
- `scene/audio/audio_player.h` -> `audio_stream_player.h`
- `scene/resources/bit_mask.h` -> `bit_map.h`
- `scene/resources/color_ramp.h` -> `gradient.h`
- `scene/resources/shape_line_2d.h` -> `line_shape_2d.h`
- `scene/resources/scene_format_text.h` -> `resource_format_text.h`
- `scene/resources/sky_box.h` -> `sky.h`

Dropped:
- `scene/resources/bounds.h`
2019-02-12 17:21:48 +01:00
Rémi Verschelde ba0a4a942e i18n: Sync translation template with current source 2019-02-10 13:19:03 +01:00
Rémi Verschelde 1bed784c9a
Merge pull request #25380 from godotengine/fix_pivot
Fixes the pivot setting with control nodes
2019-01-27 18:20:06 +01:00
Gilles Roudiere d3619f8743 Disables the Layout menu when a Control node is child of a container 2019-01-27 16:36:10 +01:00
Gilles Roudiere 3cfd80b0bf Fixes the pivot setting with control nodes 2019-01-27 15:51:45 +01:00
groud 8676370aa5 Fixes Node2D selection not adapting to editor zoom level 2019-01-24 20:43:11 +01:00
groud 056ea997e5 Displays the pivot all the time and rotate the icon 2019-01-18 19:30:45 +01:00
jlahman b8a524efa3 Fix order of a nullptr test in canvas item editor 2019-01-16 01:11:11 -05:00
groud c48f92e394 Fixes 2D bones selection 2019-01-09 20:55:04 +01:00
Rémi Verschelde b16c309f82 Update copyright statements to 2019
Happy new year to the wonderful Godot community!
2019-01-01 12:58:10 +01:00
Rémi Verschelde 17c3c64a80 i18n: Sync translation template with current source
Also French translation update and misc fixes to source strings.
2018-12-13 14:47:24 +01:00
Robert Morse bce3599bd7 Fixed an issue with the Path2D plugin editor not supporting the capability to split curves as its toolbar buttons originally advertised. 2018-12-07 08:27:36 -06:00
Michael Alexsander Silva Dias e4d0ecce7a General enhancements to the Polygon2D, TextureRegion, and TileSet editors 2018-12-06 03:29:27 -02:00
groud 60f2e94c08 Fixes drag and drog of image files on scaled nodes 2018-11-16 16:55:28 +01:00
Ibrahn Sahir ed337085cf Fixed various uninitialised member variables in editor plugins. 2018-11-11 17:32:47 +00:00
Rémi Verschelde eef2625ae5
Merge pull request #23059 from groud/change_ci_selection
Allow the Container children selection but don't allow them to move
2018-11-09 10:04:34 +01:00
groud 742a9d9023 Fixes uniform scaling issues (for real this time) 2018-11-06 21:51:48 +01:00
groud c2b6a900fc Fixes uniform scaling weird behavior 2018-11-05 23:31:57 +01:00
groud 0c2ebbe626 Add an overlay on editor to display error messages 2018-10-30 18:53:58 +01:00
groud a05ef683a5 Allow the Container children selection but don't allow them to move 2018-10-30 14:56:55 +01:00
Rémi Verschelde cb30b60de6
Merge pull request #23112 from groud/fix_viewport_not_updating
Fixes viewport scrollbars not updating with plugins
2018-10-19 11:19:49 +02:00
groud ced6f43455 Fixes viewport scrollbars not updating with plugins 2018-10-18 14:06:57 +02:00
Zaven Muradyan b58c46fc9c Add tooltip to skeleton menu button.
Fixes #23008.
2018-10-17 00:53:29 -07:00
Aaron Franke 4f7b33cdcf Remove redundant "== false" code
Some of this code has been re-organized.
f
2018-10-06 16:20:41 -04:00
Rémi Verschelde 540db0a0e7
Merge pull request #22329 from DualMatrix/no_select
Made children of Containers not selectable.
2018-10-02 16:39:00 +02:00
groud dfe81b9840 Place the ruler text vertically 2018-09-27 16:50:40 +02:00
Rémi Verschelde 298a6ad73c
Merge pull request #22290 from groud/add_2dimensional_scale
Add both X and Y scale in the scale editor
2018-09-25 10:25:13 +02:00
groud bad5ec61b1 Add both X and Y scale in the scale editor 2018-09-25 09:50:25 +02:00
Chaosus 943d0a90f5 Added viewport border color setting for canvas item editor 2018-09-24 16:16:40 +03:00
DualMatrix 44e996fdc5 Made children of Containers not selectable.
Made children of Containers not selectable.
2018-09-23 22:26:05 +02:00
Juan Linietsky d9e88bccbe
Merge pull request #22295 from groud/fix_2D_IK
Fixes 2D Inverse Kinematic
2018-09-20 17:55:37 -03:00
groud de01b7941d Fixes 2D IK 2018-09-20 22:33:49 +02:00
Rémi Verschelde 76ca46d1f4
Merge pull request #22225 from groud/fix_draw_on_viewport
Fixes drawing of the 2D plugins on the 3D view
2018-09-20 21:45:16 +02:00
DualMatrix 494354c835 Added ability to hide edit lock and groups in editor view
Added ability to hide edit lock and groups in editor view
2018-09-20 11:35:26 +02:00
groud e1c92e32e6 Fixes selection of toplevel CanvasItems in the editor 2018-09-19 11:05:24 +02:00
groud 5172642c32 Fixes drawing of the 2D plugins on the 3D view 2018-09-18 20:00:07 +02:00
Michael Alexsander Silva Dias 75d5d81b8a Remove unnecessary "OK"s text settings 2018-09-15 21:40:50 -03:00
Chaosus 2fe0365661 Few unifications between canvas_item and spatial editors 2018-09-15 18:44:26 +03:00
Rémi Verschelde d934cbcbc9 Set default CanvasItemEditor zoom shortcut to KEY_EQUAL
At least on en_US QWERTY (and various QWERTY-derived variants)
and fr_FR AZERTY, "+" is an indirect key obtained by pressing
"Shift" + "=", so using "=" in the binding makes it easier to
access.

It doesn't work this way on other layouts like de_DE QWERTZ though,
but since 'script_editor/zoom_in' also uses KEY_EQUAL, setting
the same for consistency.

Fixes #22067.
2018-09-14 21:42:47 +02:00
willnationsdev 5436abefe4 Refactor editor icon retrieval 2018-09-14 09:27:56 -05:00
Rémi Verschelde 1a16dabfb5
Merge pull request #21982 from luzpaz/misc-typos
Misc. typos
2018-09-13 10:59:00 +02:00
luz.paz 08bde5b2de Misc. typos
Found via `codespell -q 3 -I ../godot-word-whitelist.txt --skip="./thirdparty,*.po"`
2018-09-12 21:39:17 -04:00
Rémi Verschelde f98d946cd9
Merge pull request #21934 from groud/add_scale_mode
Add a scale mode to the 2D editor
2018-09-12 14:24:33 +02:00
Rémi Verschelde 1db4b307f9
Merge pull request #21984 from groud/fix_2D_selection
Fix 2D selection
2018-09-12 11:13:36 +02:00
Rémi Verschelde 277b24dfb7 Make core/ includes absolute, remove subfolders from include path
This allows more consistency in the manner we include core headers,
where previously there would be a mix of absolute, relative and
include path-dependent includes.
2018-09-12 09:52:22 +02:00
groud 9dc81e6ca7 Fix 2D selection 2018-09-11 20:58:01 +02:00
groud 2f316bc608 Add a scale mode to the 2D editor 2018-09-11 17:48:57 +02:00
groud 1d83f36a26 Fixes 2D nodes lock not working 2018-09-09 22:17:54 +02:00
Chaosus 66c25d4829 Added possibility to change color of 2d editor grid 2018-08-19 10:04:16 +03:00
Rémi Verschelde 2062d6126d
Merge pull request #20587 from groud/fix_2deditor_scrollable_zone
Fixes bugs on the 2D editor scrollable area
2018-08-13 09:03:34 +02:00
Hugo Locurcio 1368bcfc53
Use a standard "OK" text for confirmation buttons in error dialogs
[ci skip]
2018-08-05 16:49:22 +02:00
groud eb7f4ddcce Fixes bugs on the 2D editor scrollable area 2018-07-30 01:05:13 +02:00
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