#if TOOLS using Godot; using GodotHostTest.addons.godot_di; namespace GodotHostTest.GodotDI; public partial class ServiceSource { // it's inside ServiceSource so that it can safely access nameof(_serviceScope) public partial class ScopeInspectorPlugin : EditorInspectorPlugin { public override bool _CanHandle(GodotObject @object) { var result = @object.GetScript().AsGodotObject() is CSharpScript script && GodotScriptPathCache.TryGetTypeFromPath(script.ResourcePath, out var type) && type.IsAssignableTo(typeof(ServiceSource)); return result; } public override bool _ParseProperty(GodotObject @object, Variant.Type type, string name, PropertyHint hintType, string hintString, PropertyUsageFlags usageFlags, bool wide) { // We handle properties of type integer. if (name != nameof(_serviceScope)) return false; // Create an instance of the custom property editor and register // it to a specific property path. AddPropertyEditor(name, new ScopePickerEditor()); // Inform the editor to remove the default property editor for // this property type. return true; } } } #endif