Tracking issue for builtin feature-completeness · Issue #310 · godot-rust/gdext (original) (raw)
More detailed breakdown of the builtin types than present in #24.
Similar to #209 and #143, there are more builtins missing functions, here's a list of our progress when it comes to implementing all functionality.
The missing functionality here is largely going to be easy to reimplement, unless otherwise specified. We should try to reimplement what we can in rust, but for many types (like for instance the stringy types) it's likely not going to be very easy to do so. In those cases we can simply make a wrapper around a call to the InnerX
type, (for instance InnerGString
for GString
). Which simply makes a call to godot to call that function.
For anything labelled ❔ it would be good to check if all the godot methods are implemented yet. Feel free to leave a comment on this post if you do. Keep in mind that not everything is directly implemented as a method in rust, some things for instance are trait implementations, for instance Projection(Transform3D from)
was reimplemented as a impl From<Transform3D> for Projection { .. }
.
Legend
🟥 bare-bones, missing almost everything
🟡 most functions re-implemented
💚 all planned functions re-implemented, (could still mean there are QOL things we could add)
🚧 work already in progress
❔ to be confirmed if everything is re-implemented
Stringy Types
GString
💚 Tracking issue for builtin feature-completeness #310 (comment)StringName
💚 Tracking issue for builtin feature-completeness #310 (comment)NodePath
💚
Bounding Boxes
Aabb
💚 Reimplemented Aabb.rs in godot-core/src/builtin #280Rect2
💚 Reimplement Rect2 functions #242Rect2i
💚
Matrices
Basis
💚 Implement the matrix types #124Transform2D
💚 Implement the matrix types #124Transform3D
💚 Implement the matrix types #124Projection
💚 Reimplements Many Projection Methods in Rust #179fovy_of
is currently a wrapper aroundInnerProjection::get_fovy
- create_fit_aabb, initially not implemented because
Aabb
wasn't implemented
Vectors
Vector2
💚- missing documentation
- todo note - compare
slerp
with gdnative
Vector2i
💚Vector3
💚- missing slerp Reimplement slerp on Vector3 #316
Vector3i
💚Vector4
💚Vector4i
💚snapped
for int vectors 🟥
Misc Math
Plane
💚 godot-core: builtin: reimplement Plane functions/methods #268Quaternion
💚 PR #4/5 Astolfo feature/builtin-quaternion #68spherical_cubic_interpolate
spherical_cubic_interpolate_in_time
Arrays
Packed*Array
💚to_byte_array()
len()
should have a doc-alias forsize()
Add doc-aliases to functions that have their name changed from godot #232- could have
FromIterator
impl for&T
for the copy-arrays - validate that functions work as expected, see here
PackedByteArray
🟡compress/decompress
should likely just defer to godot implementationencode_*/decode_*
andget_string_from_*
can be done throughslice()
, is this sufficient?has_encoded_var
hex_encode
Standard Collections
Dictionary
🟡- Consider whether we should include the read-only semantics with
is_read_only()
andmake_read_only()
- Consider whether we should include the read-only semantics with
Array
🟡- [x]
bsearch_custom()
sort_custom()
- Consider whether we should include the read-only semantics with
is_read_only()
andmake_read_only()
- [x]
Other
Rid
💚 Implement support for RID #171Callable
💚 Add implementation of Callable #231, the unimplemented functionality is currently broken and cannot be used in gdextensionSignal
💚, not going to be easy to reimplement