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."); }