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 static PersistentSpringManagerProperties Create(SpringManager sourceManager) { if (sourceManager == null) { return(null); } var properties = new PersistentSpringManagerProperties { simulationFrameRate = sourceManager.simulationFrameRate, dynamicRatio = sourceManager.dynamicRatio, gravity = sourceManager.gravity, collideWithGround = sourceManager.collideWithGround, groundHeight = sourceManager.groundHeight }; return(properties); }
public static PersistentSpringManagerProperties Create(SpringManager sourceManager) { if (sourceManager == null) { return(null); } var properties = new PersistentSpringManagerProperties { automaticUpdates = sourceManager.automaticUpdates, simulationFrameRate = sourceManager.simulationFrameRate, dynamicRatio = sourceManager.dynamicRatio, dynamicAdditiveMode = sourceManager.dynamicAdditiveMode, gravity = sourceManager.gravity, collideWithGround = sourceManager.collideWithGround, groundHeight = sourceManager.groundHeight, bounce = sourceManager.bounce, friction = sourceManager.friction }; return(properties); }