Skip to content

Commit 5913469

Browse files
committed
Merge pull request #111431 from Ivorforce/registration-order-3
Reorder registration of types, to register supertypes before subtypes.
2 parents 755934f + 9843a01 commit 5913469

File tree

5 files changed

+50
-33
lines changed

5 files changed

+50
-33
lines changed

core/register_core_types.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,8 +181,8 @@ void register_core_types() {
181181

182182
GDREGISTER_CLASS(Shortcut);
183183
GDREGISTER_ABSTRACT_CLASS(InputEvent);
184-
GDREGISTER_ABSTRACT_CLASS(InputEventWithModifiers);
185184
GDREGISTER_ABSTRACT_CLASS(InputEventFromWindow);
185+
GDREGISTER_ABSTRACT_CLASS(InputEventWithModifiers);
186186
GDREGISTER_CLASS(InputEventKey);
187187
GDREGISTER_CLASS(InputEventShortcut);
188188
GDREGISTER_ABSTRACT_CLASS(InputEventMouse);

editor/doc/doc_tools.cpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -382,7 +382,18 @@ static Variant get_documentation_default_value(const StringName &p_class_name, c
382382
if (ClassDB::can_instantiate(p_class_name) && !ClassDB::is_virtual(p_class_name)) { // Keep this condition in sync with ClassDB::class_get_default_property_value.
383383
default_value = ClassDB::class_get_default_property_value(p_class_name, p_property_name, &r_default_value_valid);
384384
} else {
385-
// Cannot get default value of classes that can't be instantiated
385+
// Cannot get default value of classes that can't be instantiated.
386+
387+
// Let's see if the abstract class has an explicitly set default.
388+
const HashMap<StringName, Variant> *default_properties = ClassDB::default_values.getptr(p_class_name);
389+
if (default_properties) {
390+
const Variant *property = default_properties->getptr(p_property_name);
391+
if (property) {
392+
r_default_value_valid = true;
393+
return *property;
394+
}
395+
}
396+
386397
List<StringName> inheriting_classes;
387398
ClassDB::get_direct_inheriters_from_class(p_class_name, &inheriting_classes);
388399
for (const StringName &class_name : inheriting_classes) {

scene/main/canvas_item.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1496,6 +1496,9 @@ void CanvasItem::_bind_methods() {
14961496
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "use_parent_material"), "set_use_parent_material", "get_use_parent_material");
14971497
// ADD_PROPERTY(PropertyInfo(Variant::BOOL,"transform/notify"),"set_transform_notify","is_transform_notify_enabled");
14981498

1499+
// Supply property explicitly; workaround for GH-111431 docs issue.
1500+
ADD_PROPERTY_DEFAULT("physics_interpolation_mode", PhysicsInterpolationMode::PHYSICS_INTERPOLATION_MODE_INHERIT);
1501+
14991502
ADD_SIGNAL(MethodInfo("draw"));
15001503
ADD_SIGNAL(MethodInfo("visibility_changed"));
15011504
ADD_SIGNAL(MethodInfo("hidden"));

scene/register_scene_types.cpp

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,14 @@ void register_scene_types() {
414414
GDREGISTER_VIRTUAL_CLASS(MissingNode);
415415
GDREGISTER_ABSTRACT_CLASS(InstancePlaceholder);
416416

417+
GDREGISTER_ABSTRACT_CLASS(CanvasItem);
418+
419+
GDREGISTER_VIRTUAL_CLASS(Texture);
420+
GDREGISTER_VIRTUAL_CLASS(Texture2D);
421+
422+
GDREGISTER_VIRTUAL_CLASS(Material);
423+
GDREGISTER_CLASS(PlaceholderMaterial);
424+
417425
GDREGISTER_ABSTRACT_CLASS(Viewport);
418426
GDREGISTER_CLASS(SubViewport);
419427
GDREGISTER_CLASS(ViewportTexture);
@@ -428,22 +436,20 @@ void register_scene_types() {
428436
GDREGISTER_CLASS(HTTPRequest);
429437
GDREGISTER_CLASS(Timer);
430438
GDREGISTER_CLASS(CanvasLayer);
431-
GDREGISTER_CLASS(CanvasModulate);
432439
GDREGISTER_CLASS(ResourcePreloader);
433440
GDREGISTER_CLASS(Window);
434441

435442
GDREGISTER_CLASS(StatusIndicator);
436443

437444
/* REGISTER GUI */
438445

439-
GDREGISTER_CLASS(ButtonGroup);
440-
GDREGISTER_VIRTUAL_CLASS(BaseButton);
441-
442446
OS::get_singleton()->yield(); // may take time to init
443447

444448
GDREGISTER_CLASS(Control);
449+
GDREGISTER_VIRTUAL_CLASS(BaseButton);
445450
GDREGISTER_CLASS(Button);
446451
GDREGISTER_CLASS(Label);
452+
GDREGISTER_VIRTUAL_CLASS(Range);
447453
GDREGISTER_ABSTRACT_CLASS(ScrollBar);
448454
GDREGISTER_CLASS(HScrollBar);
449455
GDREGISTER_CLASS(VScrollBar);
@@ -457,10 +463,11 @@ void register_scene_types() {
457463
GDREGISTER_CLASS(CheckButton);
458464
GDREGISTER_CLASS(LinkButton);
459465
GDREGISTER_CLASS(Panel);
460-
GDREGISTER_VIRTUAL_CLASS(Range);
466+
GDREGISTER_CLASS(ButtonGroup);
461467

462468
OS::get_singleton()->yield(); // may take time to init
463469

470+
GDREGISTER_CLASS(Container);
464471
GDREGISTER_CLASS(TextureRect);
465472
GDREGISTER_CLASS(ColorRect);
466473
GDREGISTER_CLASS(NinePatchRect);
@@ -472,7 +479,6 @@ void register_scene_types() {
472479
GDREGISTER_CLASS(HSeparator);
473480
GDREGISTER_CLASS(VSeparator);
474481
GDREGISTER_CLASS(TextureButton);
475-
GDREGISTER_CLASS(Container);
476482
GDREGISTER_CLASS(BoxContainer);
477483
GDREGISTER_CLASS(HBoxContainer);
478484
GDREGISTER_CLASS(VBoxContainer);
@@ -496,6 +502,9 @@ void register_scene_types() {
496502
GDREGISTER_VIRTUAL_CLASS(VideoStream);
497503

498504
#ifndef ADVANCED_GUI_DISABLED
505+
GDREGISTER_CLASS(AcceptDialog);
506+
GDREGISTER_CLASS(ConfirmationDialog);
507+
499508
GDREGISTER_CLASS(FileDialog);
500509

501510
GDREGISTER_CLASS(PopupMenu);
@@ -517,9 +526,6 @@ void register_scene_types() {
517526
GDREGISTER_CLASS(RichTextEffect);
518527
GDREGISTER_CLASS(CharFXTransform);
519528

520-
GDREGISTER_CLASS(AcceptDialog);
521-
GDREGISTER_CLASS(ConfirmationDialog);
522-
523529
GDREGISTER_CLASS(SubViewportContainer);
524530
GDREGISTER_CLASS(SplitContainer);
525531
GDREGISTER_CLASS(HSplitContainer);
@@ -599,16 +605,6 @@ void register_scene_types() {
599605
GDREGISTER_VIRTUAL_CLASS(GeometryInstance3D);
600606
GDREGISTER_CLASS(Camera3D);
601607
GDREGISTER_CLASS(AudioListener3D);
602-
#ifndef XR_DISABLED
603-
GDREGISTER_CLASS(XRCamera3D);
604-
GDREGISTER_CLASS(XRNode3D);
605-
GDREGISTER_CLASS(XRController3D);
606-
GDREGISTER_CLASS(XRAnchor3D);
607-
GDREGISTER_CLASS(XROrigin3D);
608-
GDREGISTER_CLASS(XRBodyModifier3D);
609-
GDREGISTER_CLASS(XRHandModifier3D);
610-
GDREGISTER_CLASS(XRFaceModifier3D);
611-
#endif // XR_DISABLED
612608
GDREGISTER_CLASS(MeshInstance3D);
613609
GDREGISTER_CLASS(OccluderInstance3D);
614610
GDREGISTER_ABSTRACT_CLASS(Occluder3D);
@@ -645,9 +641,9 @@ void register_scene_types() {
645641
GDREGISTER_CLASS(GPUParticlesAttractorVectorField3D);
646642
GDREGISTER_CLASS(CPUParticles3D);
647643
GDREGISTER_CLASS(Marker3D);
648-
GDREGISTER_CLASS(ModifierBoneTarget3D);
649644
GDREGISTER_CLASS(RootMotionView);
650645
GDREGISTER_VIRTUAL_CLASS(SkeletonModifier3D);
646+
GDREGISTER_CLASS(ModifierBoneTarget3D);
651647
GDREGISTER_CLASS(RetargetModifier3D);
652648
GDREGISTER_CLASS(SpringBoneSimulator3D);
653649
GDREGISTER_VIRTUAL_CLASS(SpringBoneCollision3D);
@@ -659,6 +655,17 @@ void register_scene_types() {
659655
GDREGISTER_CLASS(ConvertTransformModifier3D);
660656
GDREGISTER_CLASS(AimModifier3D);
661657

658+
#ifndef XR_DISABLED
659+
GDREGISTER_CLASS(XRCamera3D);
660+
GDREGISTER_CLASS(XRNode3D);
661+
GDREGISTER_CLASS(XRController3D);
662+
GDREGISTER_CLASS(XRAnchor3D);
663+
GDREGISTER_CLASS(XROrigin3D);
664+
GDREGISTER_CLASS(XRBodyModifier3D);
665+
GDREGISTER_CLASS(XRHandModifier3D);
666+
GDREGISTER_CLASS(XRFaceModifier3D);
667+
#endif // XR_DISABLED
668+
662669
OS::get_singleton()->yield(); // may take time to init
663670

664671
#ifndef PHYSICS_3D_DISABLED
@@ -844,10 +851,7 @@ void register_scene_types() {
844851
GDREGISTER_CLASS(VisualShaderNodeParticleAccelerator);
845852
GDREGISTER_CLASS(VisualShaderNodeParticleEmit);
846853

847-
GDREGISTER_VIRTUAL_CLASS(Material);
848-
GDREGISTER_CLASS(PlaceholderMaterial);
849854
GDREGISTER_CLASS(ShaderMaterial);
850-
GDREGISTER_ABSTRACT_CLASS(CanvasItem);
851855
GDREGISTER_CLASS(CanvasTexture);
852856
GDREGISTER_CLASS(CanvasItemMaterial);
853857
SceneTree::add_idle_callback(CanvasItemMaterial::flush_changes);
@@ -891,6 +895,7 @@ void register_scene_types() {
891895
GDREGISTER_CLASS(LightOccluder2D);
892896
GDREGISTER_CLASS(OccluderPolygon2D);
893897
GDREGISTER_CLASS(BackBufferCopy);
898+
GDREGISTER_CLASS(CanvasModulate);
894899

895900
OS::get_singleton()->yield(); // may take time to init
896901

@@ -1005,8 +1010,6 @@ void register_scene_types() {
10051010
GDREGISTER_CLASS(CameraAttributesPhysical);
10061011
GDREGISTER_CLASS(CameraAttributesPractical);
10071012
GDREGISTER_CLASS(World2D);
1008-
GDREGISTER_VIRTUAL_CLASS(Texture);
1009-
GDREGISTER_VIRTUAL_CLASS(Texture2D);
10101013
GDREGISTER_CLASS(Sky);
10111014
GDREGISTER_CLASS(CompressedTexture2D);
10121015
GDREGISTER_CLASS(PortableCompressedTexture2D);

servers/register_server_types.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -273,16 +273,16 @@ void register_server_types() {
273273

274274
GDREGISTER_ABSTRACT_CLASS(PhysicsServer2D);
275275
GDREGISTER_VIRTUAL_CLASS(PhysicsServer2DExtension);
276+
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectBodyState2D);
276277
GDREGISTER_VIRTUAL_CLASS(PhysicsDirectBodyState2DExtension);
278+
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectSpaceState2D);
277279
GDREGISTER_VIRTUAL_CLASS(PhysicsDirectSpaceState2DExtension);
278280

279281
GDREGISTER_NATIVE_STRUCT(PhysicsServer2DExtensionRayResult, "Vector2 position;Vector2 normal;RID rid;ObjectID collider_id;Object *collider;int shape");
280282
GDREGISTER_NATIVE_STRUCT(PhysicsServer2DExtensionShapeResult, "RID rid;ObjectID collider_id;Object *collider;int shape");
281283
GDREGISTER_NATIVE_STRUCT(PhysicsServer2DExtensionShapeRestInfo, "Vector2 point;Vector2 normal;RID rid;ObjectID collider_id;int shape;Vector2 linear_velocity");
282284
GDREGISTER_NATIVE_STRUCT(PhysicsServer2DExtensionMotionResult, "Vector2 travel;Vector2 remainder;Vector2 collision_point;Vector2 collision_normal;Vector2 collider_velocity;real_t collision_depth;real_t collision_safe_fraction;real_t collision_unsafe_fraction;int collision_local_shape;ObjectID collider_id;RID collider;int collider_shape");
283285

284-
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectBodyState2D);
285-
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectSpaceState2D);
286286
GDREGISTER_CLASS(PhysicsRayQueryParameters2D);
287287
GDREGISTER_CLASS(PhysicsPointQueryParameters2D);
288288
GDREGISTER_CLASS(PhysicsShapeQueryParameters2D);
@@ -307,7 +307,9 @@ void register_server_types() {
307307

308308
GDREGISTER_ABSTRACT_CLASS(PhysicsServer3D);
309309
GDREGISTER_VIRTUAL_CLASS(PhysicsServer3DExtension);
310+
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectBodyState3D);
310311
GDREGISTER_VIRTUAL_CLASS(PhysicsDirectBodyState3DExtension);
312+
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectSpaceState3D);
311313
GDREGISTER_VIRTUAL_CLASS(PhysicsDirectSpaceState3DExtension)
312314
GDREGISTER_VIRTUAL_CLASS(PhysicsServer3DRenderingServerHandler)
313315

@@ -317,8 +319,6 @@ void register_server_types() {
317319
GDREGISTER_NATIVE_STRUCT(PhysicsServer3DExtensionMotionCollision, "Vector3 position;Vector3 normal;Vector3 collider_velocity;Vector3 collider_angular_velocity;real_t depth;int local_shape;ObjectID collider_id;RID collider;int collider_shape");
318320
GDREGISTER_NATIVE_STRUCT(PhysicsServer3DExtensionMotionResult, "Vector3 travel;Vector3 remainder;real_t collision_depth;real_t collision_safe_fraction;real_t collision_unsafe_fraction;PhysicsServer3DExtensionMotionCollision collisions[32];int collision_count");
319321

320-
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectBodyState3D);
321-
GDREGISTER_ABSTRACT_CLASS(PhysicsDirectSpaceState3D);
322322
GDREGISTER_CLASS(PhysicsRayQueryParameters3D);
323323
GDREGISTER_CLASS(PhysicsPointQueryParameters3D);
324324
GDREGISTER_CLASS(PhysicsShapeQueryParameters3D);
@@ -332,16 +332,16 @@ void register_server_types() {
332332

333333
#ifndef XR_DISABLED
334334
GDREGISTER_ABSTRACT_CLASS(XRInterface);
335+
GDREGISTER_ABSTRACT_CLASS(XRTracker);
335336
GDREGISTER_CLASS(XRVRS);
337+
GDREGISTER_CLASS(XRPositionalTracker);
336338
GDREGISTER_CLASS(XRBodyTracker);
337339
GDREGISTER_CLASS(XRControllerTracker);
338340
GDREGISTER_CLASS(XRFaceTracker);
339341
GDREGISTER_CLASS(XRHandTracker);
340342
GDREGISTER_CLASS(XRInterfaceExtension); // can't register this as virtual because we need a creation function for our extensions.
341343
GDREGISTER_CLASS(XRPose);
342-
GDREGISTER_CLASS(XRPositionalTracker);
343344
GDREGISTER_CLASS(XRServer);
344-
GDREGISTER_ABSTRACT_CLASS(XRTracker);
345345
#endif // XR_DISABLED
346346

347347
if constexpr (GD_IS_CLASS_ENABLED(MovieWriterPNGWAV)) {

0 commit comments

Comments
 (0)