I am trying to call the same function as Activate button of the Parent Constraint component but it seems there’s no such method in the API:
Guess the code is hidden in the component’s editor script. Was trying to achieve the same result using SetTranslationOffset and SetRotationOffset which looked pretty straight forward but ended up with objects jump a bit when the function is called:
var positionDelta = parentConstraint.transform.position - source.position;
var rotationDelta = Quaternion.Inverse(source.rotation) * parentConstraint.transform.rotation;
parentConstraint.SetTranslationOffset(0, positionDelta);
parentConstraint.SetRotationOffset(0, rotationDelta.eulerAngles);
//This does the equivalent of pressing the "Activate" button
List<ConstraintSource> sources = new List<ConstraintSource>(constraint.sourceCount);
constraint.GetSources(sources);
for (int i = 0; i < sources.Count; i++)
{
Transform sourceTransform = sources*.sourceTransform;*
Something that’s not addressed by the other comments so far: If there’s scaling involved, you have to explicitly ignore it when transforming for your TranslationOffset. That is: