the tile cursor did not follow the mouse cursor, and the tile grid was displayed wrong,
because the forward_canvas_draw_over_viewport function used the wrong xform and thus its
map_to_world is not the inverse of the mouse interactor world_to_map, making the tiles
draw from 0,0 of the screen instead of 0,0 of the tile map (which is in a different place)
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.
Properly draw navigation and oclusion polygons for SINGLE type tiles. Fixes#21398
Add some checks for TileID validation before accessing to it's properties. Fixes#21397
Fix 'Keep inside region' snap option for tiles with SINGLE_TILE mode. Fixes#21402
Restore hability to asign/unasign an script to a tileset. Fixes#20886
- Add pressed state to clear button
- Enable clear button on all inputs with search icon
- Remove duplicate clear buttons
- Fix rendering of icon for center and right alignments
- Add clear button to more search fields
- Add clear icon to default theme
- Add method to control enabled state of clear button
- Add property to enable clear button from inspector
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.
This change adds a new entry "Move Selection" to the "Tile Map"
menu in the tile map editor. It allows the user to easily move
as set of selected tiles.
Using `misc/scripts/fix_headers.py` on all Godot files.
Some missing header guards were added, and the header inclusion order
was fixed in the Bullet module.
- Fixes tile and collision placement for tilemaps with
`tile_origin` set to `TILE_ORIGIN_CENTER`.
- Also fixes a bug in the offset computation for collision shapes
with `flip_v` flag set to true if `tile_origin` is
`TILE_ORIGIN_BOTTOM_LEFT`.
- Now it is usable from both `CanvasItem` and `Spatial` editors.
- `EditorPlugin` API changes:
- `forward_draw_over_canvas()` becomes `forward_draw_over_viewport()`.
- `update_canvas()` becomes `update_overlays()`, which now triggers the update of every overlay on top of any 2D or 3D viewports present. Also now it returns the number of such viewports, which is useful whenever you need to know the number of draw-over calls you'll get.
- New: `[set/is]_force_draw_over_forwarding_enabled()` to force overlaying regardless it handles the current object type, in a similar fashion as `[set/is]_input_event_forwarding_always_enabled`. This kind of overlay is also on top of those for regular handled node types.
- New: `forward_force_draw_over_canvas()`, which is the callback that gets called for plugins that enable forced overlaying.
Currently we rely on some undefined behavior when Object->cast_to() gets
called with a Null pointer. This used to work fine with GCC < 6 but
newer versions of GCC remove all codepaths in which the this pointer is
Null. However, the non-static cast_to() was supposed to be null safe.
This patch makes cast_to() Null safe and removes the now redundant Null
checks where they existed.
It is explained in this article: https://www.viva64.com/en/b/0226/