Skip to content

Commit 3877c9f

Browse files
committed
Remove now-fixed workaround Godot issues 64365
1 parent 594f2a2 commit 3877c9f

File tree

1 file changed

+21
-21
lines changed
  • scripts/extension_api_parser

1 file changed

+21
-21
lines changed

scripts/extension_api_parser/api.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -235,29 +235,29 @@ def merge_builtins_size_info(api_json: dict, build_config: BuildConfig) -> None:
235235
for item in api_json["builtin_classes"]:
236236
name = item["name"]
237237
item["size"] = builtin_class_sizes[name]
238-
# TODO: correct me once https://github.com/godotengine/godot/pull/64365 is merged
239-
for member in builtin_class_member_offsets.get(name, ()):
240-
for item_member in item["members"]:
241-
if item_member["name"] == member["member"]:
242-
item_member["offset"] = member["offset"]
243-
# Float builtin in extension_api.json is always 64bits long,
244-
# however builtins made of floating point number can be made of
245-
# 32bits (C float) or 64bits (C double)
246-
# But Color is a special case: it is always made of 32bits floats !
247-
if name == "Color":
248-
item_member["type"] = "meta:float"
249-
elif item_member["type"] == "float":
250-
if build_config in (BuildConfig.FLOAT_32, BuildConfig.FLOAT_64):
251-
item_member["type"] = "meta:float"
252-
else:
253-
assert build_config in (BuildConfig.DOUBLE_32, BuildConfig.DOUBLE_64)
254-
item_member["type"] = "meta:double"
255-
elif item_member["type"] == "int":
256-
# Builtins containing int is always made of int32
257-
item_member["type"] = "meta:int32"
238+
for member_offset in builtin_class_member_offsets.get(name, ()):
239+
for item_member in item.get("members", ()):
240+
if item_member["name"] == member_offset["member"]:
241+
# Add the offset field
242+
item_member["offset"] = member_offset["offset"]
243+
244+
# Overwrite the type (typically `int` -> `meta:uint32`)
245+
# This is needed given the actual size of the type depends on
246+
# the structure (e.g. `Color` is always composed of 32bits floats)
247+
# and the build config (`float` in a structure can reference either
248+
# 32 or 64bits... while the float builtin is always 64bits !)
249+
if item_member["type"] in ("float", "int"):
250+
item_member["type"] = f"meta:{member_offset['meta']}"
251+
252+
# Note it's possible to have more members than offets, the remaining
253+
# members being properties (e.g. `Rec2` has `start` and `size`, then
254+
# an additional `end` which is computed from the first two)
255+
258256
break
259257
else:
260-
raise RuntimeError(f"Member `{member}` doesn't seem to be part of `{name}` !")
258+
raise RuntimeError(
259+
f"Member `{member_offset}` doesn't seem to be part of `{name}` !"
260+
)
261261

262262
# Variant&Object are not present among the `builtin_classes`, only their size is provided.
263263
# So we have to create our own custom entry for them.

0 commit comments

Comments
 (0)