public override void Merge(ObiActor actor, IObiConstraintsBatch other) { var batch = other as ObiTetherConstraintsBatch; var user = actor as ITetherConstraintsUser; if (batch != null && user != null) { if (!user.tetherConstraintsEnabled) { return; } particleIndices.ResizeUninitialized((m_ActiveConstraintCount + batch.activeConstraintCount) * 2); maxLengthsScales.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); stiffnesses.ResizeUninitialized(m_ActiveConstraintCount + batch.activeConstraintCount); lambdas.ResizeInitialized(m_ActiveConstraintCount + batch.activeConstraintCount); stiffnesses.CopyReplicate(user.tetherCompliance, m_ActiveConstraintCount, batch.activeConstraintCount); for (int i = 0; i < batch.activeConstraintCount * 2; ++i) { particleIndices[m_ActiveConstraintCount * 2 + i] = actor.solverIndices[batch.particleIndices[i]]; } for (int i = 0; i < batch.activeConstraintCount; ++i) { maxLengthsScales[m_ActiveConstraintCount + i] = new Vector2(batch.maxLengthsScales[i].x, user.tetherScale); } base.Merge(actor, other); } }