fix cache versions check

This commit is contained in:
DCFApixels 2025-03-31 11:58:16 +08:00
parent 90746306f1
commit 2b4ec6377f

View File

@ -125,6 +125,7 @@ namespace DCFApixels.DragonECS.Core
_maskInc = mask._incs; _maskInc = mask._incs;
_maskExc = mask._excs; _maskExc = mask._excs;
_count = 1 + mask._incs.Length + mask._excs.Length; _count = 1 + mask._incs.Length + mask._excs.Length;
_versions = UnmanagedArrayUtility.NewAndInit<long>(_count); _versions = UnmanagedArrayUtility.NewAndInit<long>(_count);
} }
public bool Check() public bool Check()
@ -181,7 +182,9 @@ namespace DCFApixels.DragonECS.Core
long* versionsPtr = _versions; long* versionsPtr = _versions;
var slots = _world._poolSlots; var slots = _world._poolSlots;
bool result = _count != 1; // Так как проверки EXC работают не правильно при отсутсвии INC,
// то проверки без INC должны всегда возвращать false.
bool result = _maskInc.Length > 0;
foreach (var slotIndex in _maskInc) foreach (var slotIndex in _maskInc)
{ {
versionsPtr++; versionsPtr++;
@ -193,14 +196,12 @@ namespace DCFApixels.DragonECS.Core
} }
foreach (var slotIndex in _maskExc) foreach (var slotIndex in _maskExc)
{ {
return false; //TODO hotfix, не правильная логика проверки версия для EXC, потому сейчас она скипается versionsPtr++;
if (*versionsPtr != slots[slotIndex].version)
//versionsPtr++; {
//if (*versionsPtr != slots[slotIndex].version) result = false;
//{ *versionsPtr = slots[slotIndex].version;
// result = false; }
// *versionsPtr = slots[slotIndex].version;
//}
} }
return result; return result;
} }