The point is that `RayCast`s are checked against objects' `collision_layer`(s), but they themselves are considered no to _belong_ to any layer. Therefore, the correct name for their property is `collision_mask`, rather than `collision_layer`.
Only renaming is needed since the behavior was already the right one, only that it wasn't matching what users would expect from the name and description of the property.
Fixes#7589, where it's also discussed.
Resetting `grab.active`, but also `mouse_inside` so that after reappearing it must be hovered again -even if the mouse is still over it- in order to get a highlight. That is consistent to the way other controls in the engine, e.g. buttons, work.
Fixes#12130.
Prior to this, the value assumed for the interval between the start of the track and the first frame would be the one of the first key if
- *seeking/playing a continuous track*;
- *seeking a discrete track*.
And the first key would be ignored until reached -thus not modifying the target property/transform- in the remaining case; namely, *playing a discrete track*.
In other words, the inner workings of the animation system considered the unreached first key for interpolation but not for a query of every key inside a time range.
With this changes, the first key is only considered is the animation is looped and ignored otherwise. That way, in order to have a start value, you'll need an explicit key at the very beginning of the track, while having the flexibility of the animation player not touching the target value until the first key is reached.
This corresponds to the point 1) of #10752.
This field represents if the class is exposed to the scripting API.
The value is 'true' if the class was registered manually ('ClassDB::register_*class()'), otherwise it's false (registered on '_post_initialize').
- Added missing registration of classes that are meant to be exposed.
I am fixing the issue by adding DATA_PAD to the return pointer as
suggested by hi-ogawa
When using set_data in AudioStreamSample in PoolByteArray, the data is set
using a DATA_PAD to pad the pointer to the correct place as such
uint8_t *dataptr = (uint8_t *)data;
copymem(dataptr + DATA_PAD, r.ptr(), datalen);
data_bytes = datalen;
godot/scene/resources/audio_stream_sample.cpp#L473
All I am doing is adding a DATA_PAD to the return pointer to
get_data() in AudioStreamSample to change
godot/scene/resources/audio_stream_sample.cpp#L48
PoolVector<uint8_t>::Write w = pv.write();
copymem(w.ptr(), data, data_bytes);
to
PoolVector<uint8_t>::Write w = pv.write();
uint8_t *dataptr = (uint8_t *)data;
copymem(w.ptr(), dataptr + DATA_PAD, data_bytes);
Please review whether or not set or get is correct.
Because this issue seems to be fixable by removing DATA_PAD in set_data()
instead of adding DATA_PAD to get_data(). I have not tested the latter
fix
Fixes #issue, 11873