mirror of
https://github.com/VolmitSoftware/Iris.git
synced 2025-07-18 18:23:06 +00:00
Patch
This commit is contained in:
parent
08159923d6
commit
31bf39d2e5
@ -60,7 +60,7 @@ public class Iris extends MortarPlugin
|
|||||||
super.onEnable();
|
super.onEnable();
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getCacheFolder()
|
public File getObjectCacheFolder()
|
||||||
{
|
{
|
||||||
return getDataFolder("cache", "object");
|
return getDataFolder("cache", "object");
|
||||||
}
|
}
|
||||||
|
@ -57,7 +57,7 @@ public class GenObject
|
|||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public void perfectRead(File folder, String name) throws IOException
|
public void perfectRead(File folder, String name) throws IOException
|
||||||
{
|
{
|
||||||
File file = new File(folder, IO.hash(name));
|
File file = new File(folder, IO.hash(name) + ".ioc");
|
||||||
FileInputStream fin = new FileInputStream(file);
|
FileInputStream fin = new FileInputStream(file);
|
||||||
DataInputStream din = new DataInputStream(fin);
|
DataInputStream din = new DataInputStream(fin);
|
||||||
centeredHeight = din.readBoolean();
|
centeredHeight = din.readBoolean();
|
||||||
@ -81,7 +81,7 @@ public class GenObject
|
|||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
public void perfectWrite(File folder) throws IOException
|
public void perfectWrite(File folder) throws IOException
|
||||||
{
|
{
|
||||||
File file = new File(folder, IO.hash(name));
|
File file = new File(folder, IO.hash(name) + ".ioc");
|
||||||
FileOutputStream fos = new FileOutputStream(file);
|
FileOutputStream fos = new FileOutputStream(file);
|
||||||
DataOutputStream dos = new DataOutputStream(fos);
|
DataOutputStream dos = new DataOutputStream(fos);
|
||||||
dos.writeBoolean(centeredHeight);
|
dos.writeBoolean(centeredHeight);
|
||||||
|
@ -1,13 +1,70 @@
|
|||||||
package ninja.bytecode.iris.generator.genobject;
|
package ninja.bytecode.iris.generator.genobject;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import mortar.compute.math.M;
|
||||||
|
import mortar.util.text.C;
|
||||||
|
import ninja.bytecode.iris.Iris;
|
||||||
|
import ninja.bytecode.shuriken.logging.L;
|
||||||
|
|
||||||
public class PhantomGenObject
|
public class PhantomGenObject
|
||||||
{
|
{
|
||||||
private GenObject object;
|
private GenObject object;
|
||||||
private String name;
|
private String name;
|
||||||
|
private boolean loaded;
|
||||||
|
private long lastUse;
|
||||||
|
private long evictionNotice;
|
||||||
|
private int size;
|
||||||
|
|
||||||
public PhantomGenObject(GenObject object)
|
public PhantomGenObject(GenObject object) throws IOException
|
||||||
{
|
{
|
||||||
this.object = object;
|
this.object = object;
|
||||||
this.name = object.getName();
|
this.name = object.getName();
|
||||||
|
object.perfectWrite(Iris.instance.getObjectCacheFolder());
|
||||||
|
lastUse = M.ms();
|
||||||
|
loaded = true;
|
||||||
|
size = object.getSchematic().size();
|
||||||
|
evictionNotice = 5000 + (size * 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSize()
|
||||||
|
{
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLoaded()
|
||||||
|
{
|
||||||
|
return loaded;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void attemptEviction()
|
||||||
|
{
|
||||||
|
if(loaded && M.ms() - lastUse > evictionNotice)
|
||||||
|
{
|
||||||
|
loaded = false;
|
||||||
|
object.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GenObject get()
|
||||||
|
{
|
||||||
|
if(!loaded)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
object.perfectRead(Iris.instance.getObjectCacheFolder(), name);
|
||||||
|
loaded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
catch(IOException e)
|
||||||
|
{
|
||||||
|
L.f(C.RED + "Cannot Read Cached Object: " + name);
|
||||||
|
L.ex(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
lastUse = M.ms();
|
||||||
|
|
||||||
|
return object;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user