using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using Speckle.Core.Models;
using Object = UnityEngine.Object;
namespace Speckle.ConnectorUnity.NativeCache
{
#nullable enable
///
/// In memory native object cache
///
public sealed class MemoryNativeCache : AbstractNativeCache
{
public IDictionary LoadedAssets { get; set; } = new Dictionary();
public override bool TryGetObject(Base speckleObject, [NotNullWhen(true)] out T? nativeObject) where T : class
{
if (TryGetObject(speckleObject, out Object? e) && e is T t)
{
nativeObject = t;
return true;
}
nativeObject = null;
return false;
}
public bool TryGetObject(Base speckleObject, [NotNullWhen(true)] out Object? nativeObject)
{
return LoadedAssets.TryGetValue(speckleObject.id, out nativeObject);
}
public override bool TrySaveObject(Base speckleObject, Object nativeObject)
{
return LoadedAssets.TryAdd(speckleObject.id, nativeObject);
}
}
}