private bool DoesParticleShareConstraints(IObiConstraints constraints, int index, List <int> particles, bool[] selected) { bool shared = false; for (int i = 0; i < constraints.GetBatchCount(); ++i) { var batch = constraints.GetBatch(i); 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); }
private void DeactivateConstraintsWithInactiveParticles(IObiConstraints constraints, List <int> particles) { for (int j = 0; j < constraints.GetBatchCount(); ++j) { var batch = constraints.GetBatch(j); 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; } } } } }