private void HandleSlimeHasSplit(Slime arg1, Slime arg2)
    {
        SlimeCameraTargetGroup sctg = Instantiate(slimeCameraTargetGroupPrefab)?.GetComponent <SlimeCameraTargetGroup>();

        if (sctg != null)
        {
            sctg.slime = activeSlime;
            slimeCameraTargetGroups.Add(activeSlime, sctg);
        }

        arg2.OnSlimeSplit       += HandleSlimeHasSplit;
        arg2.OnGettingDestroyed += HandleSlimeGetsDestroyed;
        UpdateVirtualCameraTarget();
        slimes.Add(arg2);
    }
    private void UpdateVirtualCameraTarget()
    {
        if (activeSlime == null || playerVirtualCamera == null)
        {
            return;
        }
        SlimeCameraTargetGroup sctg = null;

        if (!slimeCameraTargetGroups.TryGetValue(activeSlime, out sctg))
        {
            sctg = Instantiate(slimeCameraTargetGroupPrefab)?.GetComponent <SlimeCameraTargetGroup>();
            if (sctg != null)
            {
                sctg.slime = activeSlime;
                slimeCameraTargetGroups.Add(activeSlime, sctg);
            }
        }

        playerVirtualCamera.m_LookAt = activeSlime.transform;
        playerVirtualCamera.m_Follow = sctg.transform; // Required SlimeCameraTargetgGroup Component to work correctly!
    }