Use a new, fancy version of the Iso lib scene layout renderer that takes into account a render-priority for use in handling overlapping iso objects. This may want some additional optimization in the future, but we'll see if that's really required.

git-svn-id: svn+ssh://src.earth.threerings.net/nenya/trunk@937 ed5b42cb-e716-0410-a449-f6a68f950b19
This commit is contained in:
Mike Thomas
2010-07-08 17:05:10 +00:00
parent 1254841995
commit da88a42716
6 changed files with 247 additions and 20 deletions
@@ -30,18 +30,7 @@ import flash.geom.Rectangle;
import flash.events.MouseEvent;
import com.threerings.crowd.client.PlaceView;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.media.tile.Colorizer;
import com.threerings.media.tile.NoSuchTileSetError;
import com.threerings.media.tile.TileSet;
import com.threerings.media.tile.TileUtil;
import com.threerings.miso.client.MisoMetricsTransformation;
import com.threerings.miso.data.MisoSceneModel;
import com.threerings.miso.data.ObjectInfo;
import com.threerings.miso.util.MisoContext;
import com.threerings.miso.util.ObjectSet;
import com.threerings.miso.util.MisoSceneMetrics;
import mx.core.ClassFactory;
import as3isolib.display.primitive.IsoBox;
import as3isolib.geom.Pt;
@@ -50,9 +39,26 @@ import as3isolib.display.scene.IsoGrid;
import as3isolib.display.scene.IsoScene;
import as3isolib.display.IsoView;
import com.threerings.crowd.client.PlaceView;
import com.threerings.crowd.data.PlaceObject;
import com.threerings.util.Log;
import com.threerings.media.tile.Colorizer;
import com.threerings.media.tile.NoSuchTileSetError;
import com.threerings.media.tile.TileSet;
import com.threerings.media.tile.TileUtil;
import com.threerings.miso.client.MisoMetricsTransformation;
import com.threerings.miso.client.PrioritizedSceneLayoutRenderer;
import com.threerings.miso.data.MisoSceneModel;
import com.threerings.miso.data.ObjectInfo;
import com.threerings.miso.util.MisoContext;
import com.threerings.miso.util.ObjectSet;
import com.threerings.miso.util.MisoSceneMetrics;
public class MisoScenePanel extends Sprite
implements PlaceView
{
private var log :Log = Log.getLog(MisoScenePanel);
public function MisoScenePanel (ctx :MisoContext, metrics :MisoSceneMetrics)
{
_ctx = ctx;
@@ -97,7 +103,7 @@ public class MisoScenePanel extends Sprite
_isoView.removeAllScenes();
var scene :IsoScene = new IsoScene();
scene.layoutRenderer = new ClassFactory(PrioritizedSceneLayoutRenderer);
var time :int = getTimer();
var baseArr :Array = [];
@@ -130,7 +136,7 @@ public class MisoScenePanel extends Sprite
}
if (tileSet == null) {
trace("TileManager returned null tilset: " +
log.warning("TileManager returned null tilset: " +
TileUtil.getTileSetId(tileId));
continue;
}
@@ -161,14 +167,15 @@ public class MisoScenePanel extends Sprite
}
if (objTileSet == null) {
trace("TileManager returned null TileSet: " + TileUtil.getTileSetId(objTileId));
log.warning("TileManager returned null TileSet: " +
TileUtil.getTileSetId(objTileId));
continue;
}
scene.addChild(
new ObjectTileIsoSprite(objInfo.x, objInfo.y, objTileId,
objTileSet.getTile(TileUtil.getTileIndex(objTileId), getColorizer(objInfo)),
_metrics));
objInfo.priority, _metrics));
}
time = getTimer();