/// <summary> /// Looks up the contact constraint accessor for the given constraint type id if it exists. /// </summary> /// <param name="constraintTypeId">Constraint type id to look up a constraint accessor for.</param> /// <param name="accessor">Accessor for the given type id.</param> /// <returns>True if the constraint type id refers to a registered accessor, false otherwise.</returns> public bool TryGetContactConstraintAccessor(int constraintTypeId, out ContactConstraintAccessor accessor) { if (IsContactConstraintType(constraintTypeId) && contactConstraintAccessors.Length > constraintTypeId) { accessor = contactConstraintAccessors[constraintTypeId]; if (accessor != null) { return(true); } } accessor = null; return(false); }
public void RegisterContactConstraintAccessor(ContactConstraintAccessor contactConstraintAccessor) { var id = contactConstraintAccessor.ConstraintTypeId; if (contactConstraintAccessors == null || contactConstraintAccessors.Length <= id) { contactConstraintAccessors = new ContactConstraintAccessor[id + 1]; } if (contactConstraintAccessors[id] != null) { throw new InvalidOperationException($"Cannot register accessor for type id {id}; it is already registered by {contactConstraintAccessors[id]}."); } contactConstraintAccessors[id] = contactConstraintAccessor; }