private void Awake()
        {
            m_CinemachineConfiner = FindObjectOfType <Cinemachine.CinemachineConfiner>();
            if (m_CinemachineConfiner != null)
            {
                m_OriginalCameraBound = m_CinemachineConfiner.m_BoundingShape2D;
            }

            m_CinemachineVirtualCamera = cinemachineVirtualCamera;
            if (m_CinemachineVirtualCamera != null)
            {
                m_CinemachineTransform      = m_CinemachineVirtualCamera.transform;
                m_CinemachineComposer       = m_CinemachineVirtualCamera.GetCinemachineComponent <Cinemachine.CinemachineFramingTransposer>();
                m_OriginalCameraFollowPoint = m_CinemachineVirtualCamera.Follow;
                m_OriginalOrthographicSize  = m_CinemachineVirtualCamera.m_Lens.OrthographicSize;
            }

            if (m_CinemachineComposer != null)
            {
                m_OriginalDeadZoneWidth  = m_CinemachineComposer.m_DeadZoneWidth;
                m_OriginalDeadZoneHeight = m_CinemachineComposer.m_DeadZoneHeight;
            }

            m_VirtualTransform        = new GameObject("VirtualTransform").transform;
            m_VirtualTransform.parent = gameObject.transform;

            GetComponent <Collider2D>().isTrigger = true;

            if (cameraBound != null)
            {
                cameraBound.isTrigger = true;
            }
        }
    public void ReplaceCameraConfiner(Cinemachine.CinemachineConfiner newValue)
    {
        var index     = GameComponentsLookup.CameraConfiner;
        var component = (SemoGames.GameCamera.CameraConfinerComponent)CreateComponent(index, typeof(SemoGames.GameCamera.CameraConfinerComponent));

        component.Value = newValue;
        ReplaceComponent(index, component);
    }
    public GameEntity SetCameraConfiner(Cinemachine.CinemachineConfiner newValue)
    {
        if (hasCameraConfiner)
        {
            throw new Entitas.EntitasException("Could not set CameraConfiner!\n" + this + " already has an entity with SemoGames.GameCamera.CameraConfinerComponent!",
                                               "You should check if the context already has a cameraConfinerEntity before setting it or use context.ReplaceCameraConfiner().");
        }
        var entity = CreateEntity();

        entity.AddCameraConfiner(newValue);
        return(entity);
    }
    public void ReplaceCameraConfiner(Cinemachine.CinemachineConfiner newValue)
    {
        var entity = cameraConfinerEntity;

        if (entity == null)
        {
            entity = SetCameraConfiner(newValue);
        }
        else
        {
            entity.ReplaceCameraConfiner(newValue);
        }
    }