// recursive helper method private void saveVelocitiesHelper(Transform transform) { Rigidbody rb = transform.gameObject.GetComponent <Rigidbody>(); if (rb != null) { SavedVelocityInfo savedInfo = new SavedVelocityInfo(rb.velocity, rb.angularVelocity); savedVelocities.Add(transform.gameObject, savedInfo); } foreach (Transform child_trans in transform) { saveVelocitiesHelper(child_trans); } }
private void resumeVelocitiesHelper(Transform transform) { Rigidbody rb = transform.gameObject.GetComponent <Rigidbody>(); if (rb != null) { SavedVelocityInfo savedInfo = savedVelocities[transform.gameObject]; rb.velocity = savedInfo.GetVelocity(); rb.angularVelocity = savedInfo.GetAngularVelocity(); } foreach (Transform child_trans in transform) { resumeVelocitiesHelper(child_trans); } }