Skip to main content

GD0401: The class must derive from Redot.RedotObject or a derived class

==================================== ====================================== Value ==================================== ====================================== Rule ID GD0401 Category Usage Fix is breaking or non-breaking Breaking - If changing the inheritance chain

Non-breaking - If removing the [GlobalClass] attribute Enabled by default Yes ==================================== ======================================

Cause

A type annotated with the [GlobalClass] attribute does not derive from RedotObject.

Rule description

The [GlobalClass] has no effect for types that don't derive from RedotObject. Every global class must ultimately derive from RedotObject so it can be marshalled.

// This type is not registered as a global class because it doesn't derive from RedotObject.
[GlobalClass]
class SomeType { }

// This type is a global class because it derives from Redot.Node
// which ultimately derives from RedotObject.
[GlobalClass]
class MyNode : Node { }

// This type is a global class because it derives from Redot.Resource
// which ultimately derives from RedotObject.
[GlobalClass]
class MyResource : Resource { }

How to fix violations

To fix a violation of this rule, change the type to derive from RedotObject or remove the [GlobalClass] attribute.

When to suppress warnings

Do not suppress a warning from this rule. Adding the [GlobalClass] to a type that doesn't derive from RedotObject is an easy mistake to make and this warning helps users realize that it may result in unexpected errors.