rj-action-library/Runtime/Godot/CachedResource.cs

38 lines
753 B
C#

using Godot;
using System.Text;
using System.Collections.Generic;
using System;
namespace Rokojori
{
public class CachedResource<T> where T:Resource
{
protected T _resource;
protected string _path;
public string path => _path;
protected Func<Resource,T> _converter;
public CachedResource( string path, Func<Resource,T> converter = null )
{
_path = path;
_converter = converter;
}
public T Get()
{
if ( _resource == null )
{
_resource = _converter == null ?
ResourceLoader.Load<T>( _path ) :
_converter( ResourceLoader.Load( _path ) );
RJLog.Log( _path, _resource );
}
return _resource;
}
}
}