public static void MoveSmoothlyTo(Transform target, Vector3 destination, float durationSecs,
                                          CoroutineBase.CoroutineCallback callback = null)
        {
            MoveSmoothlyAnimationComponent anim = target.gameObject.AddComponent <MoveSmoothlyAnimationComponent>();

            anim.Init(destination, durationSecs, callback);
            anim.Run();
        }
        public static void LookTowardsHorizontal(Transform target, Vector3 newHorizontalLookDir, float durationSecs,
                                                 CoroutineBase.CoroutineCallback callback = null)
        {
            LookTowardsHorizontalComponent anim = target.gameObject.AddComponent <LookTowardsHorizontalComponent>();

            anim.Init(newHorizontalLookDir, durationSecs, callback);
            anim.Run();
        }
        public static void LookTowardsVertical(Transform target, Vector3 focusPoint, float durationSecs,
                                               CoroutineBase.CoroutineCallback callback = null)
        {
            LookTowardsVerticalComponent anim = target.gameObject.AddComponent <LookTowardsVerticalComponent>();

            anim.Init(focusPoint, durationSecs, callback);
            anim.Run();
        }