コード例 #1
0
        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);
        }
コード例 #2
0
        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;
                        }
                    }
                }
            }
        }