From 80ebbbf1c04a31abd904e759d1f80258a1aa0691 Mon Sep 17 00:00:00 2001 From: NewBornRustacean Date: Fri, 1 May 2026 18:44:34 +0900 Subject: [PATCH] return Sc::zero() for unchanged --- .../src/constraint/cross_bi_incremental.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs b/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs index daf6e3cc..4562d66d 100644 --- a/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs +++ b/crates/solverforge-scoring/src/constraint/cross_bi_incremental.rs @@ -576,6 +576,11 @@ where let b_changed = self .b_source .assert_localizes(descriptor_index, &self.constraint_ref.name); + + if !a_changed && !b_changed { + return Sc::zero(); + } + let entities_a = self.extractor_a.extract(solution); let entities_b = self.extractor_b.extract(solution); let mut total = Sc::zero(); @@ -595,6 +600,11 @@ where let b_changed = self .b_source .assert_localizes(descriptor_index, &self.constraint_ref.name); + + if !a_changed && !b_changed { + return Sc::zero(); + } + let mut total = Sc::zero(); if a_changed { total = total + self.retract_a(entity_index);