public static void RestoreState(this Rigidbody rb, ActorFramework.RigidbodyState rigidbodyState)
    {
        //Debug.Log("Restored " + rb.gameObject.name + " to velocity: "  + rigidbodyState.velocity.magnitude);

        rb.position        = rigidbodyState.position;
        rb.rotation        = rigidbodyState.rotation;
        rb.velocity        = rigidbodyState.velocity;
        rb.angularVelocity = rigidbodyState.angularVelocity;
        rb.isKinematic     = rigidbodyState.isKinematic;
    }
        private void HandleSetPaused(bool value)
        {
            if (Rigidbody == null)
            {
                return;
            }

            if (value)
            {
                _savedState               = new RigidbodyState(Rigidbody);
                Rigidbody.isKinematic     = true;
                Rigidbody.velocity        = Vector3.zero;
                Rigidbody.angularVelocity = Vector3.zero;
                Rigidbody.position        = transform.position;
                Rigidbody.rotation        = transform.rotation;
                Rigidbody.Sleep();
            }
            else
            {
                Rigidbody.WakeUp();
                Rigidbody.RestoreState(_savedState);
            }
        }