Deal more gracefully if some pathological circumstance prevents us from
resolving a scene object. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2844 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneBlock.java,v 1.20 2003/07/12 04:16:32 mdb Exp $
|
// $Id: SceneBlock.java,v 1.21 2003/10/29 01:42:37 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.miso.client;
|
package com.threerings.miso.client;
|
||||||
|
|
||||||
import java.awt.Polygon;
|
import java.awt.Polygon;
|
||||||
import java.awt.Rectangle;
|
import java.awt.Rectangle;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -124,12 +125,17 @@ public class SceneBlock
|
|||||||
// resolve our objects
|
// resolve our objects
|
||||||
ObjectSet set = new ObjectSet();
|
ObjectSet set = new ObjectSet();
|
||||||
model.getObjects(_bounds, set);
|
model.getObjects(_bounds, set);
|
||||||
_objects = new SceneObject[set.size()];
|
ArrayList scobjs = new ArrayList();
|
||||||
now = System.currentTimeMillis();
|
now = System.currentTimeMillis();
|
||||||
for (int ii = 0; ii < _objects.length; ii++) {
|
for (int ii = 0, ll = set.size(); ii < ll; ii++) {
|
||||||
_objects[ii] = new SceneObject(_panel, set.get(ii));
|
SceneObject scobj = new SceneObject(_panel, set.get(ii));
|
||||||
sbounds.add(_objects[ii].bounds);
|
// ignore this object if it failed to resolve
|
||||||
obounds = GeomUtil.grow(obounds, _objects[ii].bounds);
|
if (scobj.bounds == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
sbounds.add(scobj.bounds);
|
||||||
|
obounds = GeomUtil.grow(obounds, scobj.bounds);
|
||||||
|
scobjs.add(scobj);
|
||||||
|
|
||||||
// DEBUG: check for long resolution times
|
// DEBUG: check for long resolution times
|
||||||
stamp = System.currentTimeMillis();
|
stamp = System.currentTimeMillis();
|
||||||
@@ -137,10 +143,12 @@ public class SceneBlock
|
|||||||
now = stamp;
|
now = stamp;
|
||||||
if (elapsed > 250L) {
|
if (elapsed > 250L) {
|
||||||
Log.warning("Scene object took look time to resolve " +
|
Log.warning("Scene object took look time to resolve " +
|
||||||
"[block=" + this + ", scobj=" + _objects[ii] +
|
"[block=" + this + ", scobj=" + scobj +
|
||||||
", elapsed=" + elapsed + "].");
|
", elapsed=" + elapsed + "].");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
_objects = (SceneObject[])scobjs.toArray(
|
||||||
|
new SceneObject[scobjs.size()]);
|
||||||
|
|
||||||
// resolve our default tileset
|
// resolve our default tileset
|
||||||
int bsetid = model.getDefaultBaseTileSet();
|
int bsetid = model.getDefaultBaseTileSet();
|
||||||
|
|||||||
Reference in New Issue
Block a user