private static bool ModifyTurretPrefab(GameObject turretPrefab)
    {
        if (!ModificationNeeded(turretPrefab))
        {
            return(false);
        }

        // Reset parent transform
        turretPrefab.transform.position = Vector3.zero;

        // If the turret script is attached to an object with a mesh renderer, we must move it
        Turret       turret = turretPrefab.GetComponentInChildren <Turret>();
        GameObject   oldTurretGameObject = turret.gameObject;
        MeshRenderer mrend = turret.GetComponent <MeshRenderer>();

        // Create new parent object for turret visual
        GameObject turretParent = new GameObject("Turret Parent");

        turretParent.transform.parent = turretPrefab.transform;
        turret.transform.parent       = turretParent.transform;

        // Move components from turret to turret parent
        AudioSource a = MoveComponent(turret.GetComponent <AudioSource>(), turretParent);

        HandleMoveBoxCollider(turret, turretParent);

        turret = MoveComponent(turret.GetComponent <Turret>(), turretParent);

        // Update turret script references
        turret.audioSource = a;

        // Special case for Ballista Turret
        if (turret is BallistaTurret t)
        {
            t.arrow = oldTurretGameObject.transform.Find("bow/arrow").gameObject;
        }

        if (turret.GetComponent <Animator>() == null)
        {
            Animator turretAnim = turretParent.AddComponent <Animator>();
            turretAnim.runtimeAnimatorController = AssetDatabase.LoadAssetAtPath <RuntimeAnimatorController>("Assets/Animations/TurretAnimator.controller");
        }

        // Update turret ui references
        TurretUIController turretUIController = turretPrefab.GetComponentInChildren <TurretUIController>(true);

        if (turretUIController != null)
        {
            turretUIController.turret = turret.gameObject;
        }

        return(true);
    }
    public static void ConnectToTurretUI()
    {
        int modified = ForeachPrefabInFolder(TURRET_FOLDER, (turretPrefab) =>
        {
            Turret turret = turretPrefab.GetComponentInChildren <Turret>();
            if (!turret)
            {
                return(false);
            }

            TurretUIController controller = turretPrefab.GetComponentInChildren <TurretUIController>();
            if (!controller)
            {
                return(false);
            }

            controller.turret = turret.gameObject;
            return(true);
        });

        Debug.Log("Modified " + modified + " turret prefabs: " + "Connected TurretUI to Turret.");
    }