public ErrorCode InitWithSettings(InitializationSettings settings) { CInitializationSettings cSettings = new CInitializationSettings() { persistent_cache = IntPtr.Zero, // Using default one. swappy_tracer_fn = null, // It will be set by native library. fidelity_params_callback = settings.fidelityParamsCallback, training_fidelity_params = IntPtr.Zero, endpoint_uri_override = IntPtr.Zero, swappy_version = 0, // It will be set by native library. max_num_metrics = settings.maxNumMetrics, api_key = IntPtr.Zero }; if (settings.trainingFidelityParams != null) { CProtobufSerialization cs = CProtobufSerialization.Create(settings.trainingFidelityParams); cSettings.training_fidelity_params = Marshal.AllocHGlobal(Marshal.SizeOf(cs)); Marshal.StructureToPtr(cs, cSettings.training_fidelity_params, true); m_Ptrs.Add(cSettings.training_fidelity_params); } if (!string.IsNullOrEmpty(settings.endpointUriOverride)) { cSettings.endpoint_uri_override = Marshal.StringToHGlobalAnsi(settings.endpointUriOverride); m_Ptrs.Add(cSettings.endpoint_uri_override); } return(m_LibraryMethods.InitWithSettings(ref cSettings)); }
ErrorCode StartInternal() { m_SetupConfig = Resources.Load("SetupConfig") as SetupConfig; if (m_SetupConfig == null) { Debug.LogWarning( "SetupConfig can not be loaded, open Google->Android Performance Tuner to setup the plugin."); return(ErrorCode.NoSettings); } if (!m_SetupConfig.pluginEnabled) { Debug.LogWarning( "Android Performance Tuner plugin is not enabled, open Google->Android Performance Tuner to enable the plugin."); return(ErrorCode.TuningforkNotInitialized); } var annotationStatus = CheckAnnotationMessage(m_SetupConfig); var fidelityStatus = CheckFidelityMessage(m_SetupConfig); if (annotationStatus != ErrorCode.Ok) { return(annotationStatus); } if (fidelityStatus != ErrorCode.Ok) { return(fidelityStatus); } InitializationSettings settings = new InitializationSettings(); if (!m_SetupConfig.useAdvancedFidelityParameters) { settings.trainingFidelityParams = new TFidelity(); MessageUtil.SetQualityLevel(settings.trainingFidelityParams, QualitySettings.GetQualityLevel()); } settings.endpointUriOverride = m_endPoint; if (m_SetupConfig.mode == TunerMode.Experiments) { settings.fidelityParamsCallback = Callbacks.FidelityParamsCallbackImpl; } settings.maxNumMetrics = m_MetricLimits; var errorCode = m_AdditionalLibraryMethods.InitWithSettings(settings); if (errorCode != ErrorCode.Ok) { m_AdditionalLibraryMethods.FreePointers(); return(errorCode); } m_OnStop += () => m_AdditionalLibraryMethods.FreePointers(); CreateSceneObject(); m_SceneObject.StartCoroutine(CallbacksCheck()); if (!SwappyIsEnabled()) { EnableUnityFrameTicks(); } if (!m_SetupConfig.useAdvancedAnnotations) { EnableDefaultAnnotationsMode(); } if (!m_SetupConfig.useAdvancedFidelityParameters) { EnableDefaultFidelityMode(); } AddAutoFlush(); AddAutoLifecycleUpdate(); CheckNetworkReachability(); return(errorCode); }