summaryrefslogtreecommitdiff
path: root/NET/worlds/scape/DroneLoader.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-02-12 22:33:32 -0800
committerFuwn <[email protected]>2026-02-12 22:33:32 -0800
commitc7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch)
treedf9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/DroneLoader.java
downloadworldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz
worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip
Initial commit
Diffstat (limited to 'NET/worlds/scape/DroneLoader.java')
-rw-r--r--NET/worlds/scape/DroneLoader.java80
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();
+ }
+ }
+}