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;
|
||||
|
||||
@@ -15,6 +15,7 @@ import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import com.samskivert.util.CollectionUtil;
|
||||
import com.samskivert.util.SortableArrayList;
|
||||
import com.samskivert.util.Tuple;
|
||||
|
||||
import com.threerings.media.Log;
|
||||
@@ -29,7 +30,7 @@ public class SpriteManager
|
||||
*/
|
||||
public SpriteManager ()
|
||||
{
|
||||
_sprites = new ArrayList();
|
||||
_sprites = new SortableArrayList();
|
||||
_notify = new ArrayList();
|
||||
_dirty = new ArrayList();
|
||||
}
|
||||
@@ -167,7 +168,7 @@ public class SpriteManager
|
||||
tickSprites(timestamp);
|
||||
|
||||
// re-sort the sprite list to account for potential new positions
|
||||
sortSprites();
|
||||
_sprites.sort(SPRITE_COMP);
|
||||
|
||||
// notify sprite observers of any collisions
|
||||
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
|
||||
* sprite observers.
|
||||
|
||||
Reference in New Issue
Block a user