Ejemplo n.º 1
0
        public void OnObjectWasTakenTrigger(TrackableObject obj)
        {
            ObjectDetectionZone myZone = null;

            // find the zone that the object was last seen
            foreach (ObjectDetectionZone zone in ObjectDetectionManager.Instance.CurrentLayout.ObjectDetectionZones)
            {
                if (zone.Id == obj.LastSeenZoneId)
                {
                    // found the zone
                    myZone = zone;
                }
            }

            // check if rec is running
            if (StateManager.Instance.State == AllEnums.State.RECORD && !m_BlockUntilObjectIsBackAgain)
            {
                // create a scene for displaying the picking of the object
                Scene.Scene     autoScene = new Scene.Scene();
                Scene.SceneRect rect      = ObjectDetectionManager.Instance.createSceneRectForObjectDetectionZone(myZone, true);
                autoScene.Add(rect);

                AdaptiveScene adaptiveScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault());

                EditWorkflowManager.Instance.createStep(AllEnums.PBD_Mode.OBJECT_RECOGNIZED, adaptiveScene, "Benutze Objekt-" + obj.Name, obj.Name);

                m_BlockUntilObjectIsBackAgain = true;
            }
        }
Ejemplo n.º 2
0
        private void ViewPort_Drop(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent("SceneItem"))
            {
                string item = e.Data.GetData("SceneItem") as string;

                var pos    = e.GetPosition(m_Viewport);
                var hitRes = VisualTreeHelper.HitTest(m_Viewport, pos);
                RayMeshGeometry3DHitTestResult rayMeshRes = hitRes as RayMeshGeometry3DHitTestResult;
                if (rayMeshRes != null)
                {
                    double x = (double)rayMeshRes.PointHit.X;
                    double y = (double)rayMeshRes.PointHit.Y;

                    Scene.SceneItem s = null;
                    if (item == typeof(SceneRect).ToString())
                    {
                        s = new Scene.SceneRect(x, y, 50, 50, System.Windows.Media.Color.FromRgb(0, 255, 0));
                    }
                    else if (item == typeof(SceneText).ToString())
                    {
                        s = new Scene.SceneText(x, y, "Text", System.Windows.Media.Color.FromRgb(255, 255, 255), 10.0, new FontFamily("Arial"));
                    }
                    else if (item == typeof(SceneTextViewer).ToString())
                    {
                        s = new Scene.SceneTextViewer(x, y, 0.2, 0.2, "Text", new FontFamily("Arial"), 10.0, System.Windows.Media.Color.FromRgb(255, 255, 255));
                    }
                    else if (item == typeof(SceneCircle).ToString())
                    {
                        s = new Scene.SceneCircle(x, y, 10, 0.0, Math.PI * 2.0, System.Windows.Media.Color.FromRgb(0, 255, 0));
                    }
                    else if (item == typeof(SceneImage).ToString())
                    {
                        s = new Scene.SceneImage(x, y, 100, 100, null);
                    }
                    else if (item == typeof(SceneVideo).ToString())
                    {
                        s = new Scene.SceneVideo(x, y, 100, 100, null);
                    }
                    else if (item == typeof(ScenePolygon).ToString())
                    {
                        s = new Scene.ScenePolygon(new Polygon(new Vector2[] { new Vector2(0 + x, 0 + y), new Vector2(50 + x, 50 + y), new Vector2(50 + x, y) }), System.Windows.Media.Color.FromRgb(0, 255, 0));
                    }
                    else if (item == typeof(SceneAudio).ToString())
                    {
                        s = new Scene.SceneAudio(null);
                    }

                    if (s != null)
                    {
                        SceneManager.Instance.CurrentScene.Add(s);
                    }
                    else
                    {
                        throw new NotImplementedException();
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public Scene.SceneRect createSceneRectForObjectDetectionZone(ObjectDetectionZone z, bool isUsedForRecord)
        {
            int x_offset = SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.X;
            int y_offset = SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Y;

            float h = ((float)z.Height / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Height);
            float w = ((float)z.Width / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Width);
            float x = ((float)(z.X - x_offset) / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Width);
            float y = 1.0f - h - ((float)(z.Y - y_offset) / (float)SettingsManager.Instance.Settings.SettingsTable.KinectDrawing_AssemblyArea.Height);

            Color c = System.Windows.Media.Color.FromRgb(255, 255, 0); // yellow

            // TODO: maybe later

            /*
             * if (b.wasRecentlyTriggered() && !isUsedForRecord)
             * {
             *  c = System.Windows.Media.Color.FromRgb(255, 0, 0); // red
             * }
             */

            Scene.SceneRect rect = new Scene.SceneRect(x, y, w, h, c);
            return(rect);
        }