Inheritance: ScriptableObject
        // Asset importer callback
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var onnxModel = new ModelProto();

            using (var readStream = new FileStream(ctx.assetPath, FileMode.Open))
                using (var inputStream = new CodedInputStream(readStream))
                    onnxModel.MergeFrom(inputStream);

            var model = ConvertOnnxModel(onnxModel);

            D.Log($"ONNX v{model.IrVersion}. Producer: {model.ProducerName}. Asset path: {ctx.assetPath}");
            D.Log($"Barracuda model: {model}");

            NNModelData assetData = ScriptableObject.CreateInstance <NNModelData>();

            using (var memoryStream = new MemoryStream())
                using (var writer = new BinaryWriter(memoryStream))
                {
                    ModelWriter.Save(writer, model);
                    assetData.Value = memoryStream.ToArray();
                }
            assetData.name      = "Data";
            assetData.hideFlags = HideFlags.HideInHierarchy;

            NNModel asset = ScriptableObject.CreateInstance <NNModel>();

            asset.modelData = assetData;

            ctx.AddObjectToAsset("main obj", asset, LoadIconTexture());
            ctx.AddObjectToAsset("model data", assetData);

            ctx.SetMainObject(asset);
        }