diff --git a/src/java/com/threerings/miso/client/MisoScenePanel.java b/src/java/com/threerings/miso/client/MisoScenePanel.java index bd5ab073d..7feb19910 100644 --- a/src/java/com/threerings/miso/client/MisoScenePanel.java +++ b/src/java/com/threerings/miso/client/MisoScenePanel.java @@ -1,5 +1,5 @@ // -// $Id: MisoScenePanel.java,v 1.55 2004/01/11 08:26:18 mdb Exp $ +// $Id: MisoScenePanel.java,v 1.56 2004/01/11 12:22:05 mdb Exp $ package com.threerings.miso.client; @@ -232,6 +232,25 @@ public class MisoScenePanel extends VirtualMediaPanel return _hcoords; } + /** + * Returns an iterator over all resolved {@link SceneBlock} instances. + */ + public Iterator enumerateResolvedBlocks () + { + return _blocks.values().iterator(); + } + + /** + * Returns the resolved block that contains the specified tile + * coordinate or null if no block is resolved for that coordinate. + */ + public SceneBlock getBlock (int tx, int ty) + { + int bx = MathUtil.floorDiv(tx, _metrics.blockwid); + int by = MathUtil.floorDiv(ty, _metrics.blockhei); + return (SceneBlock)_blocks.get(compose(bx, by)); + } + /** * Computes a path for the specified sprite to the specified tile * coordinates. @@ -378,6 +397,18 @@ public class MisoScenePanel extends VirtualMediaPanel } } + /** + * Programmatically "click" a scene object. This results in a call to + * {@link handleObjectPressed} with click coordinates in the center of + * the object. + */ + public void pressObject (SceneObject scobj) + { + int px = scobj.bounds.x + scobj.bounds.width/2; + int py = scobj.bounds.y + scobj.bounds.height/2; + handleObjectPressed(scobj, px, py); + } + /** * Called when the user presses the mouse button over a sprite. */ @@ -944,17 +975,6 @@ public class MisoScenePanel extends VirtualMediaPanel // })); } - /** - * Returns the resolved block that contains the specified tile - * coordinate or null if no block is resolved for that coordinate. - */ - protected SceneBlock getBlock (int tx, int ty) - { - int bx = MathUtil.floorDiv(tx, _metrics.blockwid); - int by = MathUtil.floorDiv(ty, _metrics.blockhei); - return (SceneBlock)_blocks.get(compose(bx, by)); - } - /** * Masks off the lower 16 bits of the supplied integers and composes * them into a single int.