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), }); }