diff options
| author | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
| commit | c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch) | |
| tree | df9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/DroneLoader.java | |
| download | worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip | |
Initial commit
Diffstat (limited to 'NET/worlds/scape/DroneLoader.java')
| -rw-r--r-- | NET/worlds/scape/DroneLoader.java | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/NET/worlds/scape/DroneLoader.java b/NET/worlds/scape/DroneLoader.java new file mode 100644 index 0000000..1b8052c --- /dev/null +++ b/NET/worlds/scape/DroneLoader.java @@ -0,0 +1,80 @@ +package NET.worlds.scape; + +import NET.worlds.core.IniFile; +import NET.worlds.network.URL; +import java.util.Enumeration; +import java.util.Vector; + +class DroneLoader { + private int MaxDroneLoadingRate = 2000; + static final boolean debug = false; + + DroneLoader() { + int numAvs = IniFile.gamma().getIniInt("avatars", 24); + int droneRate = IniFile.gamma().getIniInt("droneLoadRate", 8000); + this.MaxDroneLoadingRate = droneRate / numAvs; + } + + public synchronized void load(Vector droneList) { + try { + if (droneList.size() > 0) { + Vector listCopy = (Vector)droneList.clone(); + Enumeration enums = listCopy.elements(); + + while (enums.hasMoreElements()) { + PendingDrone pd = (PendingDrone)enums.nextElement(); + if (pd.getDrone().discarded) { + droneList.removeElement(pd); + } else { + loadDrone(pd); + droneList.removeElement(pd); + } + } + } + + this.wait(); + } catch (InterruptedException var5) { + } + } + + public synchronized void wakeUp() { + this.notify(); + } + + private static void loadDrone(PendingDrone pd) { + if (!pd.getLoaded()) { + Enumeration e = PosableShape.getComponentAvatars(pd.getUrl()); + if (e != null) { + while (e.hasMoreElements()) { + String avURL = (String)e.nextElement(); + pd.download(URL.make(avURL)); + } + } + + PosableShape ps; + if (VehicleShape.isVehicle(pd.getUrl())) { + ps = new VehicleShape(); + } else { + ps = new PosableShape(); + } + + boolean prog = ProgressiveAdder.get().enabled(); + if (prog) { + ProgressiveAdder.get().scheduleForAdd(pd.getDrone(), ps); + } + + ps.setURL(pd.getUrl()); + ps.setVisible(true); + ps.setBumpable(false); + if (!pd.getDrone().isPilotDrone(pd.getUrl())) { + ps.enableLOD(true); + } + + if (!prog) { + pd.getDrone().SetPendingShape(ps); + } + + pd.setLoaded(); + } + } +} |