From 2b4ec6377fe551cde543c4c68d45b565e013a9cc Mon Sep 17 00:00:00 2001 From: DCFApixels <99481254+DCFApixels@users.noreply.github.com> Date: Mon, 31 Mar 2025 11:58:16 +0800 Subject: [PATCH] fix cache versions check --- src/Executors/MaskQueryExecutor.cs | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/Executors/MaskQueryExecutor.cs b/src/Executors/MaskQueryExecutor.cs index 849b8ed..5676805 100644 --- a/src/Executors/MaskQueryExecutor.cs +++ b/src/Executors/MaskQueryExecutor.cs @@ -125,6 +125,7 @@ namespace DCFApixels.DragonECS.Core _maskInc = mask._incs; _maskExc = mask._excs; _count = 1 + mask._incs.Length + mask._excs.Length; + _versions = UnmanagedArrayUtility.NewAndInit(_count); } public bool Check() @@ -181,7 +182,9 @@ namespace DCFApixels.DragonECS.Core long* versionsPtr = _versions; var slots = _world._poolSlots; - bool result = _count != 1; + // Так как проверки EXC работают не правильно при отсутсвии INC, + // то проверки без INC должны всегда возвращать false. + bool result = _maskInc.Length > 0; foreach (var slotIndex in _maskInc) { versionsPtr++; @@ -193,14 +196,12 @@ namespace DCFApixels.DragonECS.Core } foreach (var slotIndex in _maskExc) { - return false; //TODO hotfix, не правильная логика проверки версия для EXC, потому сейчас она скипается - - //versionsPtr++; - //if (*versionsPtr != slots[slotIndex].version) - //{ - // result = false; - // *versionsPtr = slots[slotIndex].version; - //} + versionsPtr++; + if (*versionsPtr != slots[slotIndex].version) + { + result = false; + *versionsPtr = slots[slotIndex].version; + } } return result; }