4using UnityEngine.UIElements;
5using UnityEditor.SceneManagement;
6using UnityEngine.SceneManagement;
13 private VisualTreeAsset m_VisualTreeAsset =
default;
16 [MenuItem(
"CAVERN/Orbbec Tools",
false, 102)]
20 wnd.titleContent =
new GUIContent(
"Orbbec Tools");
26 VisualElement root = rootVisualElement;
29 VisualElement panelSetup = m_VisualTreeAsset.Instantiate();
32 VisualElement avatarSetup = root.Q(
"AvatarSetup");
33 BodyTracker bodyTracker = FindFirstObjectByType<BodyTracker>();
36 if (bodyTracker ==
null)
38 avatarSetup.style.visibility = Visibility.Hidden;
42 Button orbbecSetupButton = root.Q<Button>(
"OrbbecSetupButton");
43 orbbecSetupButton.RegisterCallback<ClickEvent, VisualElement>(OrbbecSetup, avatarSetup);
45 Button avatarSetupButton = root.Q<Button>(
"AvatarSetupButton");
46 avatarSetupButton.RegisterCallback<ClickEvent>(AddSampleAvatar);
49 private void OrbbecSetup(ClickEvent evt, VisualElement avatarSetup)
52 GameObject bodyTrackerPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
"Packages/com.spelunx.cavern.orbbec.sdk/Prefabs/BodyTracker.prefab", typeof(GameObject));
53 GameObject bodyTrackerManagerPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
"Packages/com.spelunx.cavern.orbbec.sdk/Prefabs/BodyTrackerManager.prefab", typeof(GameObject));
54 GameObject bodyTrackerInstance = (GameObject)PrefabUtility.InstantiatePrefab(bodyTrackerPrefab);
55 GameObject bodyTrackerManagerInstance = (GameObject)PrefabUtility.InstantiatePrefab(bodyTrackerManagerPrefab);
60 avatarSetup.style.visibility = Visibility.Visible;
63 EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
66 private void AddSampleAvatar(ClickEvent evt)
68 BodyTracker bodyTracker = FindFirstObjectByType<BodyTracker>();
71 GameObject bodyTrackerAvatarPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(
"Packages/com.spelunx.cavern.orbbec.sdk/Prefabs/BodyTrackerAvatar.prefab", typeof(GameObject));
72 GameObject bodyTrackerAvatarInstance = (GameObject)PrefabUtility.InstantiatePrefab(bodyTrackerAvatarPrefab);
75 bodyTrackerAvatarInstance.GetComponent<
BodyTrackerAvatar>().SetBodyTracker(bodyTracker);
79 EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene());
Manager class to pass data from FrameDataProvider to BodyTracker.
BodyTracker represents the BodyData from the ORBBEC sensor as a skeleton. Important: BodyTracker pref...