Don't merge dirty rectangles when moving a sprite if the rectangles
don't overlap. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@555 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: Sprite.java,v 1.28 2001/10/25 01:39:38 shaper Exp $
|
// $Id: Sprite.java,v 1.29 2001/10/25 03:01:13 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.media.sprite;
|
package com.threerings.media.sprite;
|
||||||
|
|
||||||
@@ -123,15 +123,26 @@ public class Sprite
|
|||||||
{
|
{
|
||||||
// create a starting dirty rectangle with our current position
|
// create a starting dirty rectangle with our current position
|
||||||
Rectangle dirty = new Rectangle(_bounds);
|
Rectangle dirty = new Rectangle(_bounds);
|
||||||
|
|
||||||
// move ourselves
|
// move ourselves
|
||||||
_x = x;
|
_x = x;
|
||||||
_y = y;
|
_y = y;
|
||||||
// we need to update our draw position which is based on the size
|
|
||||||
// of our current frame
|
// we need to update our draw position which is based on the
|
||||||
|
// size of our current frame
|
||||||
updateRenderOrigin();
|
updateRenderOrigin();
|
||||||
// grow the dirty rectangle to reflect our new location
|
|
||||||
dirty.add(_bounds);
|
if (dirty.intersects(_bounds)) {
|
||||||
// and invalidate the whole shebang
|
// grow the dirty rectangle to reflect our new location
|
||||||
|
dirty.add(_bounds);
|
||||||
|
} else {
|
||||||
|
// dirty the new rectangle separately from the old to
|
||||||
|
// avoid potentially creating a large dirty rectangle if
|
||||||
|
// the sprite warps from place to place
|
||||||
|
invalidate(new Rectangle(_bounds));
|
||||||
|
}
|
||||||
|
|
||||||
|
// invalidate the potentially-grown starting dirty rectangle
|
||||||
invalidate(dirty);
|
invalidate(dirty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user