* Remove unused `EditorPropertyMember` and related hints, previouly used by
VisualScript. Such logic should be implemented in the VS module itself.
* As the above broke compatibility with the VS module, clean up the other
hacks that were still in core in support of VisualScript.
* `PROPERTY_USAGE_INTERNATIONALIZED` was only used in Object's
`get_translatable_strings()`, which is a legacy function not used anywhere.
So both are removed.
* Reordered some usage flags after the above removal to minimize the diff.
* General clean up.
Fixes#30203.
Co-authored-by: Rémi Verschelde <rverschelde@gmail.com>
* All core types masks are now correctly marked as bitfields.
* The enum hacks in MouseButtonMask and many other types are gone. This ensures that binders to other languages non C++ can actually implement type safe bitmasks.
* Most bitmask operations replaced by functions in BitField<>
* Key is still a problem because its enum and mask at the same time. While it kind of works in C++, this most likely can't be implemented safely in other languages and will have to be changed at some point. Mostly left as-is.
* Documentation and API dump updated to reflect bitfields in core types.
Non-exhaustive list of case-sensitive renames:
GDExtension -> GDNative
GDNATIVE -> GDEXTENSION
gdextension -> gdnative
ExtensionExtension ->Extension (for where there was GDNativeExtension)
EXTENSION_EXTENSION ->EXTENSION (for where there was GDNATIVE_EXTENSION)
gdnlib -> gdextension
gdn_interface -> gde_interface
gdni -> gde_interface
The main change is to caculate tangent directly from bezier curve, without going
through discretized polyline, avoiding pitfalls of discretization. A similar refacor
had been applied to Curve3D.
The test cases for Curve2D is updated, comparing floating point with is_equal_approxmiate()
instead of `==`, in order to avoid float precision problem.
The main change is to caculate tangent directly from bezier curve, without going
through discretized polyline, avoiding pitfalls of discretization.
Other changes are:
1. Add an bezier_derivative() method for Vector3, Vector2, and Math;
2. Add an tesselate_even_length() method to Curve3D, which tesselate bezier curve to even length segments adaptively;
3. Cache the tangent vectors in baked_tangent_vector_cache;
- Removed empty paragraphs in XML.
- Consistently use bold style for "Example:", on a new line.
- Fix usage of `[code]` when hyperlinks could be used (`[member]`, `[constant]`).
- Fix invalid usage of backticks for inline code in BBCode.
- Fix some American/British English spelling inconsistencies.
- Other minor fixes spotted along the way, including typo fixes with codespell.
- Don't specify `@GlobalScope` for `enum` and `constant`.
General:
- Replace most type names with strong references (such as "integer" to "[int]");
- Made the writing style closer to how the rest of the documentation is formatted.
- Use uppercase Inspector when referring to the Inspector dock.
- Describe missing MethodFlags, Variant.Type constants.
Key:
- Add " key." to the `KEY_0` to `KEY_9` constants;
- Reword some MouseButton constants;
- In a programming context, it's kind of odd hearing about the plural of "mouse".
Error:
- Reword OK constant to flow better, use `printerr()` over `print()`;
- Describe where `ERR_HELP` is used by the engine;
- Point to the Github Issues Page in ERR_BUG.
PropertyHint:
- Mention that PROPERTY_HINT_IMAGE_COMPRESS_LOSSY and PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS are unused;
- Mention that PROPERTY_HINT_PASSWORD allows a placeholder string.
- Describe PROPERTY_HINT_OBJECT_TOO_BIG, PROPERTY_HINT_MAX.
PropertyUsageFlags:
- Describe PROPERTY_USAGE_HIGH_END_GFX, PROPERTY_USAGE_ARRAY.
Generally:
- Made use of [param] more frequently;
- Link to other classes' documentation more often;
- Improve and add more examples;
- Ensure that multiple comments of an codeblock example are spaced out equally for better readability;
- Made the writing style closer to how the rest of the documentation is formatted;
- Ensure these are called "functions", not "methods".
- Fixed a few typos.
- Touched up a few cases of zero being written as "zero" or "0" where "0" or "0.0" would be more appropriate.
- Removed mentions of "(real)". In 3.x, this was associated with floats, because TYPE_FLOAT was called TYPE_REAL.
More specifically:
- Every type-safe version of a function (such as `ceili` has a consistent final note ("A type-safe version of [method ceil], returning a [int]").
- Added more details to `randomize`, `seed`.
- Corrected `floori()`'s description. It's not the same as `int()`. This was not correct behavior and has been fixed.
For `PROPERTY_HINT_ENUM` properties, enumerator names can be provided as
a comma separated list. There're a few properties that add leading
spaces to the names (e.g. `First, Second, Third`).
These spaces are included in the Inspector dropdown, which is
unexpected.
It's better to leave the surrounding spaces untouched because it could
be part of the resulting string value (the variable is a string enum).
And most other enum hints don't contain surrounding whitespaces.
This PR removes the spaces and documents this `PROPERTY_HINT_ENUM`
behavior.
Removes separate `Command` key (use `Meta` instead).
Adds an event flag to automatically remap `Command` <-> `Control` (cannot be set alongside `Control` or `Meta`).
"less" should be used for quantity, rather than "lesser".
Existing scripts that use `or_lesser` in `_get_property_list()`
will need to be updated to account for this change.