# michelecolella/drone-control-ml architecture

> Architecture diagram of the GitHub repository michelecolella/drone-control-ml, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/michelecolella/drone-control-ml
- Repository: https://github.com/michelecolella/drone-control-ml

## Overview

The checked-in package is Inspector Gadgets, a Unity Editor workflow-enhancement plugin; the README instead describes a drone-training project, whose source tree is not present here. The principal workflow is configuring or inspecting Unity objects through enhanced inspectors, attributes, and property menus, alongside separate hierarchy and Project-window tools. The sampled files support some drawer, preference, and context-menu wiring; other package capabilities are represented by their listed source files, without assuming unsampled call paths.

Main entry points: [`Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/Transform/TransformPropertyDrawer.cs`](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/Transform/TransformPropertyDrawer.cs) (Transform tools), [`Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyContextMenu.cs`](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyContextMenu.cs) (Property context menu), [`Packages/com.kybernetik.inspector-gadgets/Runtime/AutoPrefs.cs`](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Runtime/AutoPrefs.cs) (Auto preferences), [`Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Property Drawers/ShowPreviewAttributeDrawer.cs`](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Property%20Drawers/ShowPreviewAttributeDrawer.cs) (Preview drawer)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_inspect["Inspector UI"]
  node_showpreview_attr["Preview attribute"]
  node_showpreview_drawer["Preview drawer"]
  node_inspectable_drawer["Inspectable members"]
  node_object_drawer["Object fields<br/>[ObjectDrawer.cs]"]
  node_transform_drawer["Transform tools"]
end

subgraph group_workflow["Editor Workflow"]
  node_hierarchy["Enhanced hierarchy"]
  node_advanced_drag["Asset copy and move"]
  node_subasset_drag["Subasset moves"]
end

subgraph group_serialization["Property Tools"]
  node_serialization["Serialization utilities<br/>[Serialization.cs]"]
  node_property_menu["Property context menu"]
  node_clipboard["Property clipboard"]
  node_watcher["Property watcher<br/>[WatcherWindow.cs]"]
end

subgraph group_settings["Preferences"]
  node_runtime_prefs["Auto preferences<br/>[AutoPrefs.cs]"]
  node_editor_prefs["Editor preferences"]
  node_prefs["Preference settings<br/>[Preferences.cs]"]
end

node_user(("Unity developer"))
node_unity_editor["Unity Editor"]

node_user -->|"uses"| node_unity_editor
node_unity_editor -->|"dispatches drawing"| node_showpreview_drawer
node_showpreview_attr -->|"configures"| node_showpreview_drawer
node_unity_editor -->|"dispatches drawing"| node_inspectable_drawer
node_unity_editor -->|"draws fields"| node_object_drawer
node_unity_editor -->|"draws transforms"| node_transform_drawer
node_unity_editor -->|"invokes hierarchy UI"| node_hierarchy
node_unity_editor -->|"invokes project UI"| node_advanced_drag
node_unity_editor -->|"invokes project UI"| node_subasset_drag
node_unity_editor -->|"invokes menu"| node_property_menu
node_property_menu -->|"delegates context menu"| node_transform_drawer
node_runtime_prefs -->|"notifies changes"| node_editor_prefs
node_transform_drawer -->|"reads preferences"| node_runtime_prefs

click node_showpreview_attr "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Runtime/Attributes/Property%20Drawers/ShowPreviewAttribute.cs"
click node_showpreview_drawer "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Property%20Drawers/ShowPreviewAttributeDrawer.cs"
click node_inspectable_drawer "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Inspectables/InspectableAttributeDrawer.cs"
click node_object_drawer "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/ObjectDrawer.cs"
click node_transform_drawer "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/Transform/TransformPropertyDrawer.cs"
click node_hierarchy "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Other/EnhancedHierarchy.cs"
click node_advanced_drag "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Project/AdvancedDragAndDrop.cs"
click node_subasset_drag "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Project/DragAndDropSubAssets.cs"
click node_serialization "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/Serialization.cs"
click node_property_menu "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyContextMenu.cs"
click node_clipboard "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyClipboard.cs"
click node_watcher "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/WatcherWindow.cs"
click node_runtime_prefs "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Runtime/AutoPrefs.cs"
click node_editor_prefs "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Other/Data/AutoPrefs.Editor.cs"
click node_prefs "https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Other/Data/Preferences.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_showpreview_attr,node_showpreview_drawer,node_inspectable_drawer,node_object_drawer,node_transform_drawer toneBlue
class node_hierarchy,node_advanced_drag,node_subasset_drag toneAmber
class node_serialization,node_property_menu,node_clipboard,node_watcher toneMint
class node_runtime_prefs,node_editor_prefs,node_prefs toneRose
class node_user,node_unity_editor toneIndigo
```

## Components

### Inspector UI

- [Preview attribute](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Runtime/Attributes/Property%20Drawers/ShowPreviewAttribute.cs): `Packages/com.kybernetik.inspector-gadgets/Runtime/Attributes/Property Drawers/ShowPreviewAttribute.cs`
- [Preview drawer](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Property%20Drawers/ShowPreviewAttributeDrawer.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Property Drawers/ShowPreviewAttributeDrawer.cs`
- [Inspectable members](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Inspectables/InspectableAttributeDrawer.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Attributes/Inspectables/InspectableAttributeDrawer.cs`
- [Object fields](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/ObjectDrawer.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/ObjectDrawer.cs`
- [Transform tools](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/Transform/TransformPropertyDrawer.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Inspector/Transform/TransformPropertyDrawer.cs`

### Editor Workflow

- [Enhanced hierarchy](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Other/EnhancedHierarchy.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Other/EnhancedHierarchy.cs`
- [Asset copy and move](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Project/AdvancedDragAndDrop.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Project/AdvancedDragAndDrop.cs`
- [Subasset moves](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Project/DragAndDropSubAssets.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Project/DragAndDropSubAssets.cs`

### Property Tools

- [Serialization utilities](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/Serialization.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/Serialization.cs`
- [Property context menu](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyContextMenu.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyContextMenu.cs`
- [Property clipboard](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyClipboard.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/SerializedPropertyClipboard.cs`
- [Property watcher](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/WatcherWindow.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Serialization/WatcherWindow.cs`

### Preferences

- [Auto preferences](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Runtime/AutoPrefs.cs): `Packages/com.kybernetik.inspector-gadgets/Runtime/AutoPrefs.cs`
- [Editor preferences](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Other/Data/AutoPrefs.Editor.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Other/Data/AutoPrefs.Editor.cs`
- [Preference settings](https://github.com/michelecolella/drone-control-ml/blob/main/Packages/com.kybernetik.inspector-gadgets/Editor/Other/Data/Preferences.cs): `Packages/com.kybernetik.inspector-gadgets/Editor/Other/Data/Preferences.cs`

### Other components

- **Unity developer**
- **Unity Editor**

## Connections

- Unity developer → Unity Editor: uses
- Unity Editor → Preview drawer: dispatches drawing
- Preview attribute → Preview drawer: configures
- Unity Editor → Inspectable members: dispatches drawing
- Unity Editor → Object fields: draws fields
- Unity Editor → Transform tools: draws transforms
- Unity Editor → Enhanced hierarchy: invokes hierarchy UI
- Unity Editor → Asset copy and move: invokes project UI
- Unity Editor → Subasset moves: invokes project UI
- Unity Editor → Property context menu: invokes menu
- Property context menu → Transform tools: delegates context menu
- Auto preferences → Editor preferences: notifies changes
- Transform tools → Auto preferences: reads preferences
