using System.Diagnostics.CodeAnalysis;
using Speckle.Core.Models;
using UnityEngine;
using Object = UnityEngine.Object;
namespace Speckle.ConnectorUnity.NativeCache
{
#nullable enable
///
/// Loads existing assets from
/// optionally accepting byName overrides
///
public sealed class ResourcesNativeCache : AbstractNativeCache
{
public bool matchByName = true;
public override bool TryGetObject(Base speckleObject, [NotNullWhen(true)] out T? nativeObject) where T : class
{
if (matchByName)
{
string? speckleName = speckleObject["name"] as string ?? speckleObject["Name"] as string;
if (!string.IsNullOrWhiteSpace(speckleName))
{
nativeObject = Resources.Load(speckleName);
if (nativeObject != null) return true;
}
}
nativeObject = Resources.Load(AssetHelpers.GetAssetName(speckleObject, typeof(T)));
return nativeObject != null;
}
public override bool TrySaveObject(Base speckleObject, Object nativeObject)
{
// Pass
return false;
}
}
}