using LitJson; using System; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEditor; using UnityEngine; namespace Unity.XR.PXR { public class PXR_AppLog { public static string APPName = "PICO_UnitySDK"; public static int APPID = 722442; public static int productLineID = 843; public static string strXRSDK = "unity_xr_sdk"; public static string strOpenXRSDK = "unity_openxr_sdk"; #region Portal public static string strPortal = "portal"; // param public static string strPortal_Enter = "enter"; public static string strPortal_Configs_Open = "configs_open"; public static string strPortal_Configs_RequiredPICOXRPluginApplied = "configs_required_picoxr_plugin_applied"; public static string strPortal_Configs_RequiredBuildTargetAndroidApplied = "configs_required_build_target_android_applied"; public static string strPortal_Configs_RequiredAndroidSdkVersionsApplied = "configs_required_android_api_level29_applied"; public static string strPortal_Configs_ToApplyAllApplied = "configs_to_apply_all_applied"; public static string strPortal_Configs_ProjectValidation = "configs_project_validation"; public static string strPortal_Configs_OpenPICOXRProjectSetting = "configs_open_picoxr_project_setting"; public static string strPortal_Tools_Open = "tools_open"; public static string strPortal_Tools_ProjectValidation_Documentation = "tools_project_validation_documentation"; public static string strPortal_Tools_ProjectValidation_Open = "tools_project_validation_open"; public static string strPortal_Tools_BuildingBlocks = "tools_building_blocks_documentation"; public static string strPortal_Tools_PICOXRToolkitMR = "tools_picoxr_toolkit_mr_documentation"; public static string strPortal_Tools_XRProfilingToolkit = "tools_xr_profiling_toolkit_documentation"; public static string strPortal_Tools_PICODeveloperCenter = "tools_pico_developer_center_documentation"; public static string strPortal_Tools_Emulator = "tools_emulator_documentation"; public static string strPortal_Tools_MoreDeveloperTools = "tools_more_developer_tools_documentation"; public static string strPortal_Sample_Open = "samples_open"; public static string strPortal_Samples_MixedRealitySample_Documentation = "samples_mixed_reality_sample_documentation"; public static string strPortal_Samples_MixedRealitySample_GitHub = "samples_mixed_reality_sample_github"; public static string strPortal_Samples_InteractionSample_Documentation = "samples_interaction_sample_documentation"; public static string strPortal_Samples_InteractionSample_GitHub = "samples_interaction_sample_github"; public static string strPortal_Samples_MotionTrackerSample_Documentation = "samples_motion_tracker_sample_documentation"; public static string strPortal_Samples_MotionTrackerSample_GitHub = "samples_motion_tracker_sample_github"; public static string strPortal_Samples_PlatformServicesSample_Documentation = "samples_platform_services_sample_documentation"; public static string strPortal_Samples_PlatformServicesSample_GitHub = "samples_platform_services_sample_github"; public static string strPortal_Samples_SpatialAudioSample_Documentation = "samples_spatial_audio_sample_documentation"; public static string strPortal_Samples_SpatialAudioSample_GitHub = "samples_spatial_audio_sample_github"; public static string strPortal_Samples_ARFoundationSample_Documentation = "samples_arfoundation_sample_documentation"; public static string strPortal_Samples_ARFoundationSample_GitHub = "samples_arfoundation_sample_github"; public static string strPortal_Samples_AdaptiveResolutionSample_Documentation = "samples_adaptive_resolution_sample_documentation"; public static string strPortal_Samples_AdaptiveResolutionSample_GitHub = "samples_adaptive_resolution_sample_github"; public static string strPortal_Samples_ToonWorldSample_Documentation = "samples_toon_world_sample_documentation"; public static string strPortal_Samples_ToonWorldSample_GitHub = "samples_toon_world_sample_github"; public static string strPortal_Samples_MicroWarSample_Documentation = "samples_micro_war_sample_documentation"; public static string strPortal_Samples_MicroWarSample_GitHub = "samples_micro_war_sample_github"; public static string strPortal_Samples_PICOAvatarSample_Documentation = "samples_pico_avatar_sample_documentation"; public static string strPortal_Samples_PICOAvatarSample_GitHub = "samples_pico_avatar_sample_github"; public static string strPortal_Samples_URPFork_Documentation = "samples_urp_fork_documentation"; public static string strPortal_Samples_URPFork_GitHub = "samples_urp_fork_github"; public static string strPortal_About_Open = "about_open"; public static string strPortal_About_Documentation = "about_documentation"; public static string strPortal_About_Installation = "about_installation"; #endregion #region ProjectValidation public static string strProjectValidation = "project_validation"; // param public static string strProjectValidation_AndroidAPIMinSdkVersion = "android_api_min_sdk_version"; public static string strProjectValidation_ARM64 = "arm64"; public static string strProjectValidation_OneMainCamera = "one_main_camera"; public static string strProjectValidation_OneAudioListener = "one_audio_listener"; public static string strProjectValidation_BuildTargetPlatformAndroid = "build_target_platform_android"; public static string strProjectValidation_PICOXRPlugin = "picoxr_plugin"; public static string strProjectValidation_GraphicsAPIOrderForAndroid = "graphics_api_order_for_android"; public static string strProjectValidation_Unity2022NoDevelopmentBuild = "unity2022_no_development_build"; public static string strProjectValidation_Unity2022114URPLinearMSAA4OpenglesCrash = "unity2022114_urp_linear_msaa4_opengles_crash"; public static string strProjectValidation_AddPXRManager = "add_pxr_manager"; public static string strProjectValidation_ETFRUseOpenGLES3 = "etfr_use_opengles3"; public static string strProjectValidation_FTUnsafeCode = "ft_unsafe_code"; public static string strProjectValidation_URPNoHDR = "urp_no_hdr"; public static string strProjectValidation_URPGraphicsQuality = "urp_graphics_quality"; public static string strProjectValidation_MRARM64 = "mr_arm64"; public static string strProjectValidation_OneXROrigin = "one_xr_origin"; public static string strProjectValidation_ProjectKeystore = "project_keystore"; public static string strProjectValidation_ProjectKey = "project_key"; public static string strProjectValidation_UIOrientationLandscapeLeft = "ui_orientation_landscape_left"; public static string strProjectValidation_UseActivity = "use_activity"; public static string strProjectValidation_TargetAPILevelAuto = "target_api_level_auto"; public static string strProjectValidation_InstallLocationAuto = "install_location_auto"; public static string strProjectValidation_ContactOffset001 = "context_offset_001"; public static string strProjectValidation_SleepThreshold0005 = "sleep_threshold_0005"; public static string strProjectValidation_SolverIteration8 = "solver_iteration8"; public static string strProjectValidation_MaximumPixelLights = "maximum_pixel_lights"; public static string strProjectValidation_TextureQualitytoFullRes = "texture_quality_to_full_res"; public static string strProjectValidation_AnisotropicFiltering = "anisotropic_filtering"; public static string strProjectValidation_ETC2 = "etc2"; public static string strProjectValidation_ColorSpaceLinear = "color_space_linear"; public static string strProjectValidation_DisableGraphicsJobs = "disable_graphics_jobs"; public static string strProjectValidation_Multithreaded = "multithreaded"; public static string strProjectValidation_DisplayBufferFormat = "display_buffer_format"; public static string strProjectValidation_RenderingPathToForward = "rendering_path_to_forward"; public static string strProjectValidation_Multiview = "multiview"; public static string strProjectValidation_URPIntermediatetexturetoAuto = "urp_intermediate_texture_to_auto"; public static string strProjectValidation_URPDisableSSAO = "urp_disable_ssao"; public static string strProjectValidation_FFRSubsampling = "ffr_subsampling"; public static string strProjectValidation_MSAA = "msaa"; public static string strProjectValidation_APPSWNoContentProtect = "appsw_no_content_protect"; public static string strProjectValidation_TrackingOriginModeDevice = "tracking_origin_mode_device"; public static string strProjectValidation_DisableRealtimeGI = "disable_realtime_gi"; public static string strProjectValidation_GPUSkinning = "gpu_skinning"; public static string strProjectValidation_EyeTrackingCalibration = "eye_tracking_calibration"; public static string strProjectValidation_WritePermissionAndroid14 = "write_permission_android14"; public static string strProjectValidation_Unity2020321Unity6 = "unity2020321_unity6"; public static string strProjectValidation_URPNoUseToDelete = "urp_no_use_to_delete"; public static string strProjectValidation_URPVSTNoPostProcessing = "urp_vst_no_post_processing"; public static string strProjectValidation_URPNoETFRAndFFR = "urp_no_etfr_and_ffr"; public static string strProjectValidation_APPSWNeed = "appsw_need"; public static string strProjectValidation_LateLatchingNeed = "late_latching_need"; public static string strProjectValidation_LateLatchingOrOverlay = "late_latching_or_overlay"; public static string strProjectValidation_Overlay7 = "overlay7"; public static string strProjectValidation_SuperResolutionOrSubsampling = "super_resolution_or_subsampling"; public static string strProjectValidation_SharpeningOrSubsampling = "sharpening_or_subsampling"; public static string strProjectValidation_Unity6URPOpenGLESMultiPassNoMSAA = "unity6_urp_opengles_multi_pass_no_msaa"; public static string strProjectValidation_Overlay4 = "overlay4"; public static string strProjectValidation_Unity6RunInBackground = "unity6_run_in_background"; public static string strProjectValidation_MRC = "mrc"; public static string strProjectValidation_DisplayRefreshRatesDefault = "display_refresh_rates_default"; public static string strProjectValidation_VKOptimizeBufferDiscards = "vk_optimize_buffer_discards"; // 3.3.0 new add public static string strProjectValidation_SubsamplingOpenXR182Earlier = "subsampling_openxr_182_earlier"; #endregion #region BuildingBlocks public static string strBuildingBlocks = "building_blocks"; // param public static string strBuildingBlocks_PICOControllerTracking = "pico_controller_tracking"; public static string strBuildingBlocks_ControllerCanvasInteraction = "controller_canvas_interaction"; public static string strBuildingBlocks_PICOHandTracking = "pico_hand_tracking"; public static string strBuildingBlocks_XRHandTracking = "xr_hand_tracking"; public static string strBuildingBlocks_XRIHandInteraction = "xri_hand_interaction"; public static string strBuildingBlocks_XRIGrabInteraction = "xri_grab_interaction"; public static string strBuildingBlocks_XRIPokeInteraction = "xri_poke_interaction"; public static string strBuildingBlocks_PICOVideoSeethrough = "pico_video_seethrough"; public static string strBuildingBlocks_PICOVideoSeethroughEffect = "pico_video_seethrough_effect"; public static string strBuildingBlocks_PICOBodyTracking = "pico_body_tracking"; public static string strBuildingBlocks_PICOBodyTrackingDebug = "pico_body_tracking_debug"; public static string strBuildingBlocks_PICOObjectTracking = "pico_object_tracking"; public static string strBuildingBlocks_PICOSpatialAudioFreeField = "pico_spatial_audio_free_field"; public static string strBuildingBlocks_PICOSpatialAudioAmbisonics = "pico_spatial_audio_ambisonics"; // 3.3.0 new add public static string strBuildingBlocks_PICOSpatialAnchorSample = "pico_spatial_anchor_sample"; public static string strBuildingBlocks_PICOSpatialMesh = "pico_spatial_mesh"; public static string strBuildingBlocks_PICOSceneCapture = "pico_scene_capture"; public static string strBuildingBlocks_PICOCompositionLayerOverlay = "pico_composition_layer_overlay"; public static string strBuildingBlocks_PICOCompositionLayerUnderlay = "pico_composition_layer_underlay"; #endregion #region PICO Debugger public static string strPICODebugger = "XRSDK_PICO_debugger"; public static string strPICODebugger_Enable = strPICODebugger + "_enable"; public static string strPICODebugger_LauncherButton = strPICODebugger + "_launcher_button"; public static string strPICODebugger_InitialPosition = strPICODebugger + "_initial_position"; public static string strPICODebugger_MaxLogCount = strPICODebugger + "_max_log_count"; public static string strPICODebugger_RulerResetButton = strPICODebugger + "_ruler_reset_button"; #endregion private static bool isInited = false; private static void TryInitAppLog() { #if UNITY_EDITOR_WIN if (isInited) { return; } isInited = true; Debug.Log($"TryInitAppLog "); AppLog_init("722442", "PICO_UnitySDK"); #endif } /// /// Call the buried point collection wherever it is required, and pass in the name and parameters of the buried point (in a dictionary structure). /// /// /// public static void PXR_OnEvent(string param, string value) { #if UNITY_EDITOR_WIN if (PXR_ProjectSetting.GetProjectConfig().isDataCollectionDisabled) { return; } // Debug.Log($"PXR_OnEvent eventName:{strXRSDK}, param:{param}, value:{value}"); try { var contentData = new JsonData() { [param] = value, }; TryInitAppLog(); AppLog_onEvent(strXRSDK, contentData.ToJson()); } catch (Exception e) { //Debug.LogError($"PXR_OnEvent param:{param}, value={value}, e={e}."); } #endif } /// /// Call the buried point collection wherever it is required, and pass in the name and parameters of the buried point (in a dictionary structure). /// /// /// public static void PXR_OnEvent(string eventName, string param, string value = "1") { #if UNITY_EDITOR_WIN if (PXR_ProjectSetting.GetProjectConfig().isDataCollectionDisabled) { return; } //Debug.Log($"PXR_OnEvent eventName:{eventName}, param:{param}, value:{value}"); try { var contentData = new JsonData() { [param] = value, }; TryInitAppLog(); AppLog_onEvent(eventName, contentData.ToJson()); } catch (Exception e) { //Debug.LogError($"PXR_OnEvent param:{param}, value={value}, e={e}."); } #endif } public static void PXR_SetLogEnabled(bool enable) { #if UNITY_EDITOR_WIN Debug.Log($"PXR_SetLogEnabled start enable={enable}"); if (enable) { AppLog_setLogEnabled(1); } else { AppLog_setLogEnabled(0); } #endif } public static void PXR_AppLogDestroy(DestroyCallback observer) { #if UNITY_EDITOR_WIN AppLog_destroy(observer); #endif } private const string DllName = "applogrs"; [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern void AppLog_init(string appid, string channel); [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern void AppLog_setEventVerifyEnabled(uint enabled); [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern void AppLog_setLogEnabled(uint enabled); [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern UInt64 AppLog_getDeviceId(); public delegate void LoggerCallback(string message); [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern void AppLog_setLogger(LoggerCallback observer); [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern void AppLog_onEvent(string eventName, string param); public delegate void DestroyCallback(); [DllImport(DllName, CallingConvention = CallingConvention.Cdecl)] public static extern void AppLog_destroy(DestroyCallback destory_callback); } }