Use a SortableArrayList instead of going for object creation mania every
time we sort the sprite list. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1031 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SpriteManager.java,v 1.20 2002/01/31 01:04:13 mdb Exp $
|
// $Id: SpriteManager.java,v 1.21 2002/02/19 03:57:53 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.media.sprite;
|
package com.threerings.media.sprite;
|
||||||
|
|
||||||
@@ -15,6 +15,7 @@ import java.util.Iterator;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.samskivert.util.CollectionUtil;
|
import com.samskivert.util.CollectionUtil;
|
||||||
|
import com.samskivert.util.SortableArrayList;
|
||||||
import com.samskivert.util.Tuple;
|
import com.samskivert.util.Tuple;
|
||||||
|
|
||||||
import com.threerings.media.Log;
|
import com.threerings.media.Log;
|
||||||
@@ -29,7 +30,7 @@ public class SpriteManager
|
|||||||
*/
|
*/
|
||||||
public SpriteManager ()
|
public SpriteManager ()
|
||||||
{
|
{
|
||||||
_sprites = new ArrayList();
|
_sprites = new SortableArrayList();
|
||||||
_notify = new ArrayList();
|
_notify = new ArrayList();
|
||||||
_dirty = new ArrayList();
|
_dirty = new ArrayList();
|
||||||
}
|
}
|
||||||
@@ -167,7 +168,7 @@ public class SpriteManager
|
|||||||
tickSprites(timestamp);
|
tickSprites(timestamp);
|
||||||
|
|
||||||
// re-sort the sprite list to account for potential new positions
|
// re-sort the sprite list to account for potential new positions
|
||||||
sortSprites();
|
_sprites.sort(SPRITE_COMP);
|
||||||
|
|
||||||
// notify sprite observers of any collisions
|
// notify sprite observers of any collisions
|
||||||
handleCollisions();
|
handleCollisions();
|
||||||
@@ -202,20 +203,6 @@ public class SpriteManager
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sort the sprite list in order of ascending x-coordinate.
|
|
||||||
*/
|
|
||||||
protected void sortSprites ()
|
|
||||||
{
|
|
||||||
Object[] sprites = new Sprite[_sprites.size()];
|
|
||||||
_sprites.toArray(sprites);
|
|
||||||
Arrays.sort(sprites, SPRITE_COMP);
|
|
||||||
_sprites.clear();
|
|
||||||
for (int ii = 0; ii < sprites.length; ii++) {
|
|
||||||
_sprites.add(sprites[ii]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check all sprites for collisions with others and inform any
|
* Check all sprites for collisions with others and inform any
|
||||||
* sprite observers.
|
* sprite observers.
|
||||||
|
|||||||
Reference in New Issue
Block a user