sdraw_mods_cvr/ml_lme/vendor/LeapCSharp/MetadataUtil.cs
SDraw 85925a7072
Custom event classes for patched methods
Update to LeapCSharp 6.15.0
2024-04-27 00:23:03 +03:00

138 lines
No EOL
4.7 KiB
C#

/******************************************************************************
* Copyright (C) Ultraleap, Inc. 2011-2024. *
* *
* Use subject to the terms of the Apache License 2.0 available at *
* http://www.apache.org/licenses/LICENSE-2.0, or another agreement *
* between Ultraleap and you, your company or other organization. *
******************************************************************************/
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.Rendering;
namespace Leap
{
/// <summary>
/// This class captures information regarding use of the Ultraleap Unity Plugin
/// This data is anonymized and only sent to Ultraleap when you choose to allow it.
/// You can change your analytics preferences in the Ultraleap Tracking Control Panel.
/// "Settings > Help Improve Tracking"
/// </summary>
#if UNITY_EDITOR
[UnityEditor.InitializeOnLoad]
#endif
public class MetadataUtil
{
[System.Serializable]
private struct Analytics
{
public Telemetry telemetry;
}
[System.Serializable]
private struct Telemetry
{
public string app_name;
public string app_type;
public string engine_name;
public string engine_version;
public string plugin_version;
public string installation_source;
public string interaction_system;
public string render_pipeline;
}
#if UNITY_EDITOR
// Fire a one-off call to capture metadata at edit time on the first editor update
static MetadataUtil()
{
UnityEditor.EditorApplication.update -= FirstEditorUpdate;
UnityEditor.EditorApplication.update += FirstEditorUpdate;
}
static void FirstEditorUpdate()
{
UnityEditor.EditorApplication.update -= FirstEditorUpdate;
// This will capture some values within the editor that may not be accessible in builds
// e.g. Plugin Source and Plugin Versions
GetMetaData();
}
#endif
public static string GetMetaData()
{
Analytics analytics = new Analytics();
analytics.telemetry = new Telemetry();
analytics.telemetry.app_name = Application.productName;
analytics.telemetry.app_type = GetAppType();
analytics.telemetry.engine_name = "Unity";
analytics.telemetry.engine_version = Application.unityVersion;
analytics.telemetry.plugin_version = Leap.Unity.UltraleapSettings.Instance.PluginVersion;
analytics.telemetry.installation_source = Leap.Unity.UltraleapSettings.Instance.PluginSource;
analytics.telemetry.interaction_system = GetInteractionSystem();
analytics.telemetry.render_pipeline = GetRenderPipeline();
string json = JsonUtility.ToJson(analytics, true);
return json;
}
static string GetAppType()
{
string appType = "Build";
#if UNITY_EDITOR
appType = "Editor";
#endif
return appType;
}
static string GetRenderPipeline()
{
string renderPipeline = "Built In";
if (QualitySettings.renderPipeline != null)
{
renderPipeline = QualitySettings.renderPipeline.GetType().ToString().Split(".").Last();
}
else if (GraphicsSettings.currentRenderPipeline != null)
{
renderPipeline = GraphicsSettings.currentRenderPipeline.GetType().ToString().Split(".").Last();
}
return renderPipeline;
}
static string GetInteractionSystem()
{
// Physical Hands
if (GameObject.Find("Physical Hands Manager") ||
GameObject.Find("Left HardContactHand") ||
GameObject.Find("Left SoftContactHand") ||
GameObject.Find("Left NoContactHand"))
{
return "Physical Hands";
}
// Interaction Engine
if (GameObject.Find("Interaction Hand (Left)"))
{
return "Interaction Engine";
}
// XR Hands
if (Leap.Unity.UltraleapSettings.Instance.leapSubsystemEnabled ||
Leap.Unity.UltraleapSettings.Instance.updateLeapInputSystem ||
Leap.Unity.UltraleapSettings.Instance.updateMetaInputSystem)
{
return "UL XR Hands";
}
return "Unknown";
}
}
}