//using System;
//using Assets.Source.Patterns;
//using DG.Tweening;
//using UnityEngine;

//namespace Assets.Source.General
//{
//    public class GameCamera : Singleton<GameCamera>
//    {
//        public Camera Camera;
//        public Transform Target;
//        public float LerpSpeed = 5;

//        private float _defaultHeight;

//        protected override void Awake()
//        {
//            base.Awake();
//            _defaultHeight = transform.position.z;
//        }

//        void FixedUpdate()
//        {
//            var pos = Vector3.Lerp(transform.position, Target.position, Time.fixedDeltaTime * LerpSpeed);
//            pos.z = _defaultHeight;
//            transform.position = pos;
//        }

//        public void ShakePos(CamShakeArgs args)
//        {
//            Camera.DOShakePosition(args.Duration, args.Strength, args.Vibrato, args.Randomness);
//        }
//    }

//    [Serializable]
//    public class CamShakeArgs
//    {
//        public float Duration = 0.5f;
//        public float Strength = 0.4f;
//        public int Vibrato = 7;
//        public float Randomness = 90f;
//    }
//}
