Skip to content

Commit

Permalink
Fix C# Hint NodeType and ResourceType HintString
Browse files Browse the repository at this point in the history
  • Loading branch information
ZerxZ committed May 8, 2024
1 parent 2042420 commit 06b716d
Showing 1 changed file with 36 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -590,6 +590,11 @@ private static bool TryGetMemberExportHint(

if (variantType == VariantType.Object && type is INamedTypeSymbol memberNamedType)
{
if (TryGetNodeOrResourceType(exportAttr, out hint, out hintString))
{
return true;
}

if (memberNamedType.InheritsFrom("GodotSharp", "Godot.Resource"))
{
hint = PropertyHint.ResourceType;
Expand All @@ -607,6 +612,37 @@ private static bool TryGetMemberExportHint(
}
}

static bool TryGetNodeOrResourceType(AttributeData exportAttr, out PropertyHint hint, out string? hintString)
{
hint = PropertyHint.None;
hintString = null;

if (exportAttr.ConstructorArguments.Length <= 1) return false;

var hintValue = exportAttr.ConstructorArguments[0].Value;

var hintEnum = hintValue switch
{
null => PropertyHint.None,
int intValue => (PropertyHint)intValue,
_ => (PropertyHint)(long)hintValue
};

if (!hintEnum.HasFlag(PropertyHint.NodeType) && !hintEnum.HasFlag(PropertyHint.ResourceType))
return false;

var hintStringValue = exportAttr.ConstructorArguments[1].Value?.ToString();
if (string.IsNullOrWhiteSpace(hintStringValue))
{
return false;
}

hint = hintEnum;
hintString = hintStringValue;

return true;
}

static string GetTypeName(INamedTypeSymbol memberSymbol)
{
if (memberSymbol.GetAttributes()
Expand Down

0 comments on commit 06b716d

Please sign in to comment.