SimpleJavaEngine/src/main/java/speiger/src/coreengine/assets/reloader/ResourceReloader.java

62 lines
1.2 KiB
Java

package speiger.src.coreengine.assets.reloader;
import java.util.Set;
import speiger.src.collections.objects.sets.ObjectLinkedOpenHashSet;
public class ResourceReloader
{
Set<IReloadableResource> resources = new ObjectLinkedOpenHashSet<IReloadableResource>();
boolean globalRemoval = false;
boolean reloading = false;
public <T extends IReloadableResource> T addReloadableResource(T resource)
{
return addReloadableResource(resource, false);
}
public <T extends IReloadableResource> T addReloadableResource(T resource, boolean init)
{
if(resources.add(resource) && init)
{
resource.reload();
}
return resource;
}
public void removeReloadableResource(IReloadableResource resource)
{
if(globalRemoval || reloading)
{
return;
}
resources.remove(resource);
}
public boolean isReloading()
{
return reloading;
}
public void reloadResources()
{
reloading = true;
for(IReloadableResource resource : resources)
{
resource.reload();
}
reloading = false;
}
public void deleteResources()
{
globalRemoval = true;
for(IReloadableResource resource : resources)
{
resource.destroy();
}
resources.clear();
globalRemoval = false;
}
}