void OnFrameSelected(object sender, FrameSelectedEventArgs e) { selectedFrame = e.Item; ToggleSelectedFrameBookmark(e.Location); if (isMethodView) { InvalidatePad(); } }
private void InputProfile_FrameSelected(object sender, FrameSelectedEventArgs args) { previousArgs = args; if (MappingProfile != null && OutputProfile != null) { cache = new CaptureCache(); // Build the cache int startingFrame = BaseSystem.Math.Max(args.frame - cache.CacheSize, 0); for (int i = startingFrame; i <= args.frame; i++) { var elapsedTime = args.session.CaptureData[i].ElapsedMilliseconds; var skeleton = NUICaptureHelper.GetNUISkeleton(args.session.CaptureData[i].Skeleton); cache.AddNewFrame(skeleton, elapsedTime); // Filter the raw input with enabled filters. NUISkeleton filtered = skeleton; foreach (MocapFilter filter in preMapFilters) { if (filter.Enabled) { filtered = filter.Filter(cache); cache.AddFiltered(filter.Name, filtered); } } // Convert the input skeleton to the normalized skeleton (Unity) NUISkeleton mapped = MappingProfile.MapSkeleton(filtered); cache.AddMapped(mapped); // Apply any post-mapped filters selected by the user. filtered = mapped; foreach (MocapFilter filter in postMapFilters) { if (filter.Enabled) { filtered = filter.Filter(cache); cache.AddFiltered(filter.Name, filtered); } } cache.AddResult(filtered); } var s = NUICaptureHelper.GetNUISkeleton(args.session.CaptureData[args.frame].Skeleton); OutputProfile.UpdatePreview(cache.CurrentSkeleton, MappingProfile.GetHipPosition(s)); } }
/// <summary> /// Draw the Input settings for session playback. /// </summary> public override void DrawInputSettings() { MocapSession temp = EditorGUILayout.ObjectField(new GUIContent("Session"), session, typeof(MocapSession), false) as MocapSession; sessionAssetPath = AssetDatabase.GetAssetPath(temp); if (temp != session) { session = temp; base.OnInputSkeletonTypeChanged(new EventArgs()); EditorPrefs.SetString(PLAYBACK_INPUT_SESSION_ASSET_PATH_KEY, sessionAssetPath); } EditorGUI.BeginDisabledGroup(session == null); int lastFrame = session == null ? 0 : session.CaptureData.Count - 1; EditorGUILayout.BeginHorizontal(); int tempFrame = EditorGUILayout.IntField("Frame", frame); if (GUILayout.Button("<", EditorStyles.miniButton, GUILayout.Width(25f))) { tempFrame--; } if (GUILayout.Button(">", EditorStyles.miniButton, GUILayout.Width(25f))) { tempFrame++; } //bounds if (tempFrame < 0) { tempFrame = 0; } if (tempFrame > lastFrame) { tempFrame = lastFrame; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.PrefixLabel(" "); // "Start rendering" button if (skeletonRendererInstance == null) { if (GUILayout.Button(new GUIContent("Render Raw Skeleton"), EditorStyles.miniButton)) { skeletonRendererInstance = GameObject.Find(SKELETON_RENDERER_NAME); if (skeletonRendererInstance == null) { skeletonRendererInstance = new GameObject(SKELETON_RENDERER_NAME); skeletonRendererInstance.AddComponent <SkeletonRenderer>(); } skeletonRendererInstance.GetComponent <SkeletonRenderer>().UpdateSkeleton(session.CaptureData[frame].Skeleton, this.InputSkeleton); } } else // "Stop rendering" button { Color tempColor = GUI.color; GUI.color = Color.magenta; if (GUILayout.Button(new GUIContent("Stop Rendering"), EditorStyles.miniButton)) { skeletonRendererInstance = null; UnityEngine.Object.DestroyImmediate(GameObject.Find(SKELETON_RENDERER_NAME)); } GUI.color = tempColor; } EditorGUILayout.EndHorizontal(); EditorGUI.EndDisabledGroup(); if (session != null && tempFrame != frame) { frame = tempFrame; var data = new FrameSelectedEventArgs(session, frame); OnFrameSelected(data); skeletonRendererInstance = GameObject.Find(SKELETON_RENDERER_NAME); if (skeletonRendererInstance != null) { skeletonRendererInstance.GetComponent <SkeletonRenderer>().UpdateSkeleton(session.CaptureData[frame].Skeleton, this.InputSkeleton); } } SaveEditorPrefs(); }