/// <summary> /// Sets the part options. /// </summary> /// <param name="p">The p.</param> /// <param name="autoStrutMode">The automatic strut mode.</param> /// <param name="isRoboticHierarchy">if set to <c>true</c> [is robotic hierarchy].</param> /// <param name="applyChildren">if set to <c>true</c> [apply to all children].</param> private void SetPartOptions(Part p, Part.AutoStrutMode autoStrutMode, bool isRoboticHierarchy, bool applyChildren) { if (p == null) { return; } if (isRoboticHierarchy) { autoStrutMode = Part.AutoStrutMode.Off; } else if (Settings.Instance.AutoSelect) { autoStrutMode = p.parent == null ? Part.AutoStrutMode.Off : p.parent.parent == null ? Part.AutoStrutMode.Root : Part.AutoStrutMode.Grandparent; } var sameVesselInteraction = Settings.Instance.SameVesselInteraction | (isRoboticHierarchy && Settings.Instance.AutomaticSameVesselInteraction); ApplyPartOptions(p: p, autoStrutMode: autoStrutMode, sameVesselInteraction: sameVesselInteraction, applySymmetry: true); // ReSharper disable once InvertIf if (applyChildren) { foreach (var child in p.children) { SetPartOptions(p: child, autoStrutMode: autoStrutMode, isRoboticHierarchy: isRoboticHierarchy, applyChildren: true); } } }
/// <summary> /// Applies the part options. /// </summary> /// <param name="p">The p.</param> /// <param name="autoStrutMode">The automatic strut mode.</param> /// <param name="sameVesselInteraction">if set to <c>true</c> [same vessel interaction].</param> /// <param name="applySymmetry">if set to <c>true</c> [apply symmetry].</param> private void ApplyPartOptions(Part p, Part.AutoStrutMode autoStrutMode, bool sameVesselInteraction, bool applySymmetry) { p.autoStrutMode = autoStrutMode; p.UpdateAutoStrut(); p.rigidAttachment = Settings.Instance.RigidAttachment; p.ApplyRigidAttachment(); p.SetSameVesselCollision(value: sameVesselInteraction); // ReSharper disable once InvertIf if (applySymmetry) { foreach (var symmetryCounterpart in p.symmetryCounterparts) { ApplyPartOptions(p: symmetryCounterpart, autoStrutMode: autoStrutMode, sameVesselInteraction: sameVesselInteraction, applySymmetry: false); } } }