mirror of
https://github.com/libretro/scummvm.git
synced 2025-03-04 17:29:11 +00:00
FULLPIPE: Made object sorting stable. This removes flicker in many scenes
This commit is contained in:
parent
a46ac56015
commit
c9d01a0cfd
@ -469,10 +469,18 @@ bool Scene::compareObjPriority(const void *p1, const void *p2) {
|
||||
if (((const GameObject *)p1)->_priority > ((const GameObject *)p2)->_priority)
|
||||
return true;
|
||||
|
||||
if (((const GameObject *)p1)->_priority == ((const GameObject *)p2)->_priority)
|
||||
if (((const GameObject *)p1)->_cnum > ((const GameObject *)p2)->_cnum)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
void Scene::objectList_sortByPriority(Common::Array<StaticANIObject *> &list, bool skipFirst) {
|
||||
// Ensure the sort is stable
|
||||
for (uint i = 0; i < list.size(); i++)
|
||||
list[i]->_cnum = i;
|
||||
|
||||
if (skipFirst) {
|
||||
Common::Array<StaticANIObject *>::iterator s = list.begin();
|
||||
|
||||
@ -485,6 +493,10 @@ void Scene::objectList_sortByPriority(Common::Array<StaticANIObject *> &list, bo
|
||||
}
|
||||
|
||||
void Scene::objectList_sortByPriority(Common::Array<PictureObject *> &list, bool skipFirst) {
|
||||
// Ensure the sort is stable
|
||||
for (uint i = 0; i < list.size(); i++)
|
||||
list[i]->_cnum = i;
|
||||
|
||||
if (skipFirst) {
|
||||
Common::Array<PictureObject *>::iterator s = list.begin();
|
||||
|
||||
|
@ -110,8 +110,9 @@ enum ObjType {
|
||||
class CObject {
|
||||
public:
|
||||
ObjType _objtype;
|
||||
uint _cnum;
|
||||
|
||||
CObject() : _objtype(kObjTypeDefault) {}
|
||||
CObject() : _objtype(kObjTypeDefault), _cnum(0) {}
|
||||
virtual bool load(MfcArchive &in) { return true; }
|
||||
virtual void save(MfcArchive &out) { error("Not implemented for obj type: %d", _objtype); }
|
||||
virtual ~CObject() {}
|
||||
|
Loading…
x
Reference in New Issue
Block a user