private ICourseController GetCourseControllerFromType() { Type courseControllerType = RetrieveCourseControllerType(); ICourseController courseController = ReflectionUtils.CreateInstanceOfType(courseControllerType) as ICourseController; return(courseController); }
private void CreateCourseController() { if (enforcedCourseController != null) { CurrentCourseController = enforcedCourseController; } else if (useCustomPrefab && customPrefab != null) { Instantiate(customPrefab); return; } ICourseController defaultCourseController = GetCourseControllerFromType(); if (CurrentCourseController == null) { CurrentCourseController = defaultCourseController; if (CurrentCourseController == null) { Debug.LogError("CourseControllerSetup was not configured properly."); return; } } else { RemoveComponents(defaultCourseController.GetRequiredSetupComponents().Except(CurrentCourseController.GetRequiredSetupComponents()).ToList()); } GameObject courseControllerPrefab = CurrentCourseController.GetCourseControllerPrefab(); if (courseControllerPrefab != null) { Instantiate(CurrentCourseController.GetCourseControllerPrefab()); } }
protected override LocalizationConfig GetLocalizationConfig() { ICourseController controller = FindObjectOfType <CourseControllerSetup>().CurrentCourseController; if (controller is ILocalizationProvider localizationProvider) { return(localizationProvider.LocalizationConfig); } return(Resources.Load <LocalizationConfig>(LocalizationConfig.StandaloneDefaultLocalizationConfig)); }
/// <summary> /// Workaround to set the focus to the CourseControllerSetup if it has missing components that are required by the CourseController. /// </summary> private static void SetupCourseController() { CourseControllerSetup setup = FindObjectOfType <CourseControllerSetup>(); if (setup == null) { return; } List <Type> currentTypes = setup.GetComponents <Component>().Select(c => c.GetType()).ToList(); ICourseController courseController = setup.GetCourseControllerFromType(); bool courseControllerHasMissingComponents = courseController.GetRequiredSetupComponents().Except(currentTypes).Any(); if (courseControllerHasMissingComponents) { Selection.activeObject = setup; Debug.LogWarning($"Automatically added missing required components to {setup}."); } }
/// <summary> /// Enforces the given controller to be used, if possible. /// </summary> /// <param name="courseController">Controller to be used.</param> /// <remarks>Scene has to be reloaded to use enforced CourseController.</remarks> public static void SetEnforcedCourseController(ICourseController courseController) { enforcedCourseController = courseController; }