mirror of
https://bitbucket.org/projectswg/cucore.git
synced 2026-08-03 03:15:59 -04:00
Changed buildouts to instead use an sdb file
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
package services.objects;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -60,8 +60,6 @@ import resources.control.Intent;
|
||||
import resources.control.Manager;
|
||||
import resources.objects.SWGObject;
|
||||
import resources.objects.building.BuildingObject;
|
||||
import resources.objects.buildouts.BuildoutLoader;
|
||||
import resources.objects.buildouts.SnapshotLoader;
|
||||
import resources.objects.creature.CreatureObject;
|
||||
import resources.objects.tangible.TangibleObject;
|
||||
import resources.player.Player;
|
||||
@@ -77,7 +75,7 @@ import services.spawn.SpawnerService;
|
||||
import services.spawn.StaticService;
|
||||
|
||||
public class ObjectManager extends Manager {
|
||||
|
||||
|
||||
private final MapManager mapService;
|
||||
private final StaticService staticService;
|
||||
private final SpawnerService spawnerService;
|
||||
@@ -95,7 +93,7 @@ public class ObjectManager extends Manager {
|
||||
radialService = new RadialService();
|
||||
database = new CachedObjectDatabase<SWGObject>("odb/objects.db");
|
||||
objectAwareness = new ObjectAwareness();
|
||||
objectMap = new HashMap<>();
|
||||
objectMap = new Hashtable<>(16*1024);
|
||||
maxObjectId = 1;
|
||||
|
||||
addChildService(mapService);
|
||||
@@ -152,63 +150,18 @@ public class ObjectManager extends Manager {
|
||||
System.err.println("ObjectManager: Unknown terrain '" + terrainStr + "'");
|
||||
Log.e("ObjectManager", "Unknown terrain: %s", terrainStr);
|
||||
}
|
||||
loadBuildouts(terrain);
|
||||
loadSnapshots(terrain);
|
||||
ClientObjectLoader loader = new ClientObjectLoader();
|
||||
Map<Long, SWGObject> objects = loader.loadClientObjects(terrain);
|
||||
objectMap.putAll(objects);
|
||||
for (SWGObject obj : objects.values())
|
||||
loadClientObject(obj);
|
||||
} else {
|
||||
Log.w("ObjectManager", "Did not load client objects. Reason: Disabled.");
|
||||
System.out.println("ObjectManager: Did not load client objects. Reason: Disabled!");
|
||||
}
|
||||
}
|
||||
|
||||
private void loadBuildouts(Terrain terrain) {
|
||||
long startLoad = System.nanoTime();
|
||||
System.out.println("ObjectManager: Loading buildouts...");
|
||||
Log.i("ObjectManager", "Loading buildouts...");
|
||||
BuildoutLoader loader = new BuildoutLoader();
|
||||
if (terrain != null)
|
||||
loader.loadBuildoutsForTerrain(terrain);
|
||||
else
|
||||
loader.loadAllBuildouts();
|
||||
List <SWGObject> buildouts = loader.getObjects();
|
||||
for (SWGObject obj : buildouts) {
|
||||
loadBuildout(obj);
|
||||
}
|
||||
objectMap.putAll(loader.getObjectTable());
|
||||
double loadTime = (System.nanoTime() - startLoad) / 1E6;
|
||||
System.out.printf("ObjectManager: Finished loading %d buildouts. Time: %fms%n", buildouts.size(), loadTime);
|
||||
Log.i("ObjectManager", "Finished loading buildouts. Time: %fms", loadTime);
|
||||
}
|
||||
|
||||
private void loadSnapshots(Terrain terrain) {
|
||||
long startLoad = System.nanoTime();
|
||||
System.out.println("ObjectManager: Loading snapshots...");
|
||||
Log.i("ObjectManager", "Loading snapshots...");
|
||||
SnapshotLoader loader = new SnapshotLoader();
|
||||
if (terrain != null)
|
||||
loader.loadSnapshotsForTerrain(terrain);
|
||||
else
|
||||
loader.loadAllSnapshots();
|
||||
List <SWGObject> snapshots = loader.getObjects();
|
||||
for (SWGObject obj : snapshots) {
|
||||
loadSnapshot(obj);
|
||||
}
|
||||
objectMap.putAll(loader.getObjectTable());
|
||||
double loadTime = (System.nanoTime() - startLoad) / 1E6;
|
||||
System.out.printf("ObjectManager: Finished loading %d snapshots. Time: %fms%n", snapshots.size(), loadTime);
|
||||
Log.i("ObjectManager", "Finished loading snapshots. Time: %fms", loadTime);
|
||||
}
|
||||
|
||||
private void loadBuildout(SWGObject obj) {
|
||||
if (obj instanceof TangibleObject || obj instanceof BuildingObject) {
|
||||
objectAwareness.add(obj);
|
||||
}
|
||||
if (obj.getObjectId() >= maxObjectId) {
|
||||
maxObjectId = obj.getObjectId() + 1;
|
||||
}
|
||||
mapService.addMapLocation(obj, MapManager.MapType.STATIC);
|
||||
}
|
||||
|
||||
private void loadSnapshot(SWGObject obj) {
|
||||
private void loadClientObject(SWGObject obj) {
|
||||
if (obj instanceof TangibleObject || obj instanceof BuildingObject) {
|
||||
objectAwareness.add(obj);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user