private void DeactivateConstraintsWithInactiveParticles(IObiConstraints constraints, List <int> particles) { foreach (var batch in constraints.GetBatchInterfaces()) { for (int i = batch.activeConstraintCount - 1; i >= 0; --i) { particles.Clear(); batch.GetParticlesInvolved(i, particles); for (int k = 0; k < particles.Count; ++k) { if (!IsParticleActive(particles[k])) { batch.DeactivateConstraint(i); break; } } } } }
private bool DoesParticleShareConstraints(IObiConstraints constraints, int index, List <int> particles, bool[] selected) { bool shared = false; foreach (var batch in constraints.GetBatchInterfaces()) { for (int j = 0; j < batch.activeConstraintCount; ++j) { particles.Clear(); batch.GetParticlesInvolved(j, particles); if (shared |= IsParticleSharedInConstraint(index, particles, selected)) { break; } } if (shared) { break; } } return(shared); }