62 lines
1.2 KiB
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;
|
|
}
|
|
}
|