text: //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////
  ///			Copyright 2021 (C) Bruno Xavier B. Leite
  //////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  #pragma once
  
  #include "MagicNodeRuntime.h"
  #include "MagicNodeKismet.h"
  
  #include "Engine/Blueprint.h"
  #include "Templates/SubclassOf.h"
  #include "AssetTypeActions_Base.h"
  #include "Editor/UnrealEd/Classes/Factories/Factory.h"
  
  #include "MagicNodeEditor.generated.h"
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  #define LOCTEXT_NAMESPACE "Synaptech"
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  UCLASS()
  class MAGICNODEEDITOR_API UMGC_ScriptFactory : public UFactory {
  	GENERATED_UCLASS_BODY()
  protected:
  	virtual bool IsMacroFactory() const { return false; }
  public:
  	virtual UObject* FactoryCreateNew(UClass* Class, UObject* InParent, FName Name, EObjectFlags Flags, UObject* Context, FFeedbackContext* Warn) override;
  };
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  static EAssetTypeCategories::Type SY_AssetCategory;
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  class FATA_MagicNode : public FAssetTypeActions_Base {
  public:
  	virtual uint32 GetCategories() override { return SY_AssetCategory; }
  	//
  	virtual FText GetName() const override { return NSLOCTEXT("AssetTypeActions","FATA_MGC","Magic Node (C++)"); }
  	virtual UClass* GetSupportedClass() const override { return UMagicNodeScript::StaticClass(); }
  	virtual FColor GetTypeColor() const override { return FColor(25,185,165); }
  	//
  	virtual FText GetAssetDescription(const FAssetData &AssetData) const override;
  	virtual void OpenAssetEditor(const TArray<UObject*>&InObjects, TSharedPtr<IToolkitHost>EditWithinLevelEditor=TSharedPtr<IToolkitHost>()) override;
  };
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  
  #undef LOCTEXT_NAMESPACE
  
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  