public void BuildObjects(GameObject springBoneRoot, GameObject colliderRoot, IEnumerable <string> requiredBones)
            {
                var managerProperties = PersistentSpringManagerProperties.Create(
                    springBoneRoot.GetComponentInChildren <SpringManager>());

                SpringBoneSetup.DestroySpringManagersAndBones(springBoneRoot);

                if (requiredBones != null)
                {
                    FilterBoneRecordsByRequiredBonesAndCreateUnrecordedBones(springBoneRoot, requiredBones);
                }

                var initialTransforms = GameObjectUtil.BuildNameToComponentMap <Transform>(springBoneRoot, true);

                foreach (var record in pivotRecords)
                {
                    BuildPivotFromSerializer(initialTransforms, record);
                }

                var setupMaps = SpringBoneSetupMaps.Build(springBoneRoot, colliderRoot);

                foreach (var record in springBoneRecords)
                {
                    BuildSpringBoneFromSerializer(setupMaps, record);
                }

                var springManager = springBoneRoot.AddComponent <SpringManager>();

                if (managerProperties != null)
                {
                    managerProperties.ApplyTo(springManager);
                }
                SpringBoneSetup.FindAndAssignSpringBones(springManager);
            }
            public void BuildObjects(GameObject springBoneRoot, GameObject colliderRoot, IEnumerable <string> requiredBones)
            {
                DestroyOldSpringBones(springBoneRoot);
                if (requiredBones != null)
                {
                    FilterBoneRecordsByRequiredBonesAndCreateUnrecordedBones(springBoneRoot, requiredBones);
                }

                var initialTransforms = GameObjectUtil.BuildNameToComponentMap <Transform>(springBoneRoot, true);

                foreach (var record in pivotRecords)
                {
                    SetupPivotFromSerializer(initialTransforms, record);
                }

                var setupMaps = SpringBoneSetupMaps.Build(springBoneRoot, colliderRoot);

                foreach (var record in springBoneRecords)
                {
                    SetupSpringBoneFromSerializer(setupMaps, record);
                }

                var springManager = GameObjectUtil.AcquireComponent <SpringManager>(springBoneRoot, true);

                SpringBoneSetup.FindAndAssignSpringBones(springManager);
            }
 public static SpringBoneSetupMaps Build(GameObject springBoneRoot, GameObject colliderRoot)
 {
     return(new SpringBoneSetupMaps
     {
         allChildren = GameObjectUtil.BuildNameToComponentMap <Transform>(springBoneRoot, true),
         sphereColliders = GameObjectUtil.BuildNameToComponentMap <SpringSphereCollider>(colliderRoot, true),
         capsuleColliders = GameObjectUtil.BuildNameToComponentMap <SpringCapsuleCollider>(colliderRoot, true),
         panelColliders = GameObjectUtil.BuildNameToComponentMap <SpringPanelCollider>(colliderRoot, true),
     });
 }