using System.Linq; using UnityEditor; using UnityEngine; namespace StarterAssets { public partial class StarterAssetsDeployMenu : ScriptableObject { // prefab paths private const string ThirdPersonPrefabPath = "/ThirdPersonController/Prefabs/"; private const string PlayerArmaturePrefabName = "PlayerArmature"; #if STARTER_ASSETS_PACKAGES_CHECKED /// /// Check the Armature, main camera, cinemachine virtual camera, camera target and references /// [MenuItem(MenuRoot + "/Reset Third Person Controller Armature", false)] static void ResetThirdPersonControllerArmature() { var thirdPersonControllers = FindObjectsOfType(); var player = thirdPersonControllers.FirstOrDefault(controller => controller.GetComponent() && controller.CompareTag(PlayerTag)); GameObject playerGameObject; // player if (player == null) HandleInstantiatingPrefab(StarterAssetsPath + ThirdPersonPrefabPath, PlayerArmaturePrefabName, out playerGameObject); else playerGameObject = player.gameObject; // cameras CheckCameras(ThirdPersonPrefabPath, playerGameObject.transform); } [MenuItem(MenuRoot + "/Reset Third Person Controller Capsule", false)] static void ResetThirdPersonControllerCapsule() { var thirdPersonControllers = FindObjectsOfType(); var player = thirdPersonControllers.FirstOrDefault(controller => !controller.GetComponent() && controller.CompareTag(PlayerTag)); GameObject playerGameObject; // player if (player == null) HandleInstantiatingPrefab(StarterAssetsPath + ThirdPersonPrefabPath, PlayerCapsulePrefabName, out playerGameObject); else playerGameObject = player.gameObject; // cameras CheckCameras(ThirdPersonPrefabPath, playerGameObject.transform); } #endif } }