开发:修复优化实体更新性能的代码错误,避免嵌套优化失败

pull/1990/MERGE
ChenX 2 years ago
parent 43a5235f77
commit 6b42d6f9a6

@ -2,27 +2,32 @@ import { Entity } from "../DatabaseServices/Entity/Entity";
export function EntityUpdateWrap(ent: Entity, exec: Function)
{
let bak = ent.AutoUpdate;
let oldAutoUpdate = ent.AutoUpdate;
ent.AutoUpdate = false;
exec();
ent.DeferUpdate();
ent.AutoUpdate = bak;
if (oldAutoUpdate)//如果原先是自动更新的,那么我们更新它,否则还是不更新(避免层层嵌套导致的性能优化丢失)
ent.DeferUpdate();
ent.AutoUpdate = oldAutoUpdate;
}
export function EntitysUpdateWrap(ens: Entity[], exec: Function)
{
let baks = ens.map(e =>
{
let oldAutoUpdate = e.AutoUpdate;
e.AutoUpdate = false;
return e.AutoUpdate;
return oldAutoUpdate;
});
exec();
for (let i = 0; i < ens.length; i++)
{
let en = ens[i];
en.DeferUpdate();
en.AutoUpdate = baks[i];
if (baks[i])
{
let en = ens[i];
en.DeferUpdate();
en.AutoUpdate = true;
}
}
}

Loading…
Cancel
Save