Skip to content

Commit

Permalink
feat(abi): ✨ add InterfaceImporter for interface.json files descr…
Browse files Browse the repository at this point in the history
…ibing abi interfaces
  • Loading branch information
jasonboukheir committed Oct 24, 2023
1 parent 998fd5a commit 1d6c7ad
Show file tree
Hide file tree
Showing 8 changed files with 69 additions and 2 deletions.
8 changes: 8 additions & 0 deletions Editor/Algorand.Unity.Editor/Importers/Abi.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace Algorand.Unity.Experimental.Abi.Editor
{
[ScriptedImporter(1, "contract.json")]
public class AbiContractImporter : ScriptedImporter
public class ContractImporter : ScriptedImporter
{
public override void OnImportAsset(AssetImportContext ctx)
{
Expand Down
21 changes: 21 additions & 0 deletions Editor/Algorand.Unity.Editor/Importers/Abi/InterfaceImporter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
using System.IO;
using UnityEditor.AssetImporters;
using UnityEngine;

namespace Algorand.Unity.Experimental.Abi.Editor
{
[ScriptedImporter(1, "interface.json")]
public class InterfaceImporter : ScriptedImporter
{
public override void OnImportAsset(AssetImportContext ctx)
{
var fileName = Path.GetFileNameWithoutExtension(ctx.assetPath);
var json = File.ReadAllText(ctx.assetPath);
var asset = ScriptableObject.CreateInstance<InterfaceAsset>();
asset.@interface = AlgoApiSerializer.DeserializeJson<Interface>(json);
asset.name = fileName;
ctx.AddObjectToAsset("interface", asset);
ctx.SetMainObject(asset);
}
}
}

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Runtime/Algorand.Unity/Experimental/Abi/ContractAsset.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
namespace Algorand.Unity.Experimental.Abi
{
[HelpURL(DocUrl.Api + "Algorand.Unity.Experimental.Abi.ContractAsset.html")]
[CreateAssetMenu(menuName = "Algorand/Experimental/Abi Contract")]
[CreateAssetMenu(menuName = "Algorand/Experimental/Abi/Contract")]
public class ContractAsset : ScriptableObject
{
public Contract contract;
Expand Down
16 changes: 16 additions & 0 deletions Runtime/Algorand.Unity/Experimental/Abi/InterfaceAsset.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using UnityEngine;

namespace Algorand.Unity.Experimental.Abi
{
[HelpURL(DocUrl.Api + "Algorand.Unity.Experimental.Abi.InterfaceAsset.html")]
[CreateAssetMenu(menuName = "Algorand/Experimental/Abi/Interface")]
public class InterfaceAsset : ScriptableObject
{
public Interface @interface;

public static implicit operator Interface(InterfaceAsset asset)
{
return asset.@interface;
}
}
}
11 changes: 11 additions & 0 deletions Runtime/Algorand.Unity/Experimental/Abi/InterfaceAsset.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 1d6c7ad

Please sign in to comment.