void OnFrameSelected(object sender, FrameSelectedEventArgs e)
        {
            selectedFrame = e.Item;

            ToggleSelectedFrameBookmark(e.Location);

            if (isMethodView)
            {
                InvalidatePad();
            }
        }
Exemple #2
0
        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));
            }
        }
Exemple #3
0
        /// <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();
        }