void OnSceneGUI(SceneView sceneView) { if (!ShouldDrawBodyPoseUtilityWindow(sceneView)) { return; } s_LastFoundAnimator = FindHumanAnimatorObj(); if (s_LastFoundAnimator == null) { return; } // We don't want to show the window if the avatar isn't visible. // Specifically, we avoid changing the pose of the landmarks rig (Default Body Rig) if (!HasDisabledSkinnedMeshRenderer()) { return; } Handles.BeginGUI(); var winPos = new Rect(sceneView.position.width - k_WindowWidth - k_WindowOffsetFromEdges, sceneView.position.height - k_WindowHeight - k_WindowOffsetFromEdges - k_ToolbarHeight, k_WindowWidth, k_WindowHeight); using (new GUILayout.AreaScope(winPos, string.Empty, "Box")) { GUILayout.Label(k_CreatePoseToolLabel); using (new EditorGUI.DisabledScope(!s_LastFoundAnimator.isHuman)) { using (new GUILayout.HorizontalScope()) { m_ExternalBodyData = EditorGUIUtils.ObjectFieldWithControlIdCheck( m_ExternalBodyData, ref m_ObjectSelectorControlId, GUILayout.Width(135), GUILayout.Height(17)); using (new EditorGUI.DisabledScope(m_ExternalBodyData == null)) { if (GUILayout.Button(k_LoadExternalPose, GUILayout.Width(40), GUILayout.Height(17))) { LoadBodyPose(s_LastFoundAnimator, m_ExternalBodyData); } } } using (new GUILayout.HorizontalScope()) { if (GUILayout.Button(k_ResetPoseButton, GUILayout.Width(62))) { LoadBodyPose(s_LastFoundAnimator); } if (GUILayout.Button(k_TPoseButton, GUILayout.Width(62))) { LoadBodyPose(s_LastFoundAnimator, MarsBodySettings.instance.TPoseBodyData, true); } if (GUILayout.Button(k_SaveSelectedPoseButton, GUILayout.Width(65))) { GenerateSerializedDataFromAvatar(s_LastFoundAnimator); } } } } EditorGUIUtils.EatMouseInput(winPos, "BodyPoseUtility"); Handles.EndGUI(); }