Ejemplo n.º 1
0
 private void OnDestroy()
 {
     _trackable      = null;
     _buildingObject = null;
     _floorContainer = null;
     //GC.Collect();
 }
Ejemplo n.º 2
0
        private List <TrackableObject> GenerateTestObjects(int objectCount)
        {
            List <TrackableObject> trackedItems = new List <TrackableObject>();

            for (int n = 0; n < objectCount; n++)
            {
                var item = new TrackableObject()
                {
                    Id   = Guid.NewGuid(),
                    Name = $"Test Name {n}"
                };

                item.Children.Add(new TrackableSubObject()
                {
                    Id = Guid.NewGuid(), Name = "Child 1", Description = $"Child 1 of Parent {n}"
                });
                item.Children.Add(new TrackableSubObject()
                {
                    Id = Guid.NewGuid(), Name = "Child 2", Description = $"Child 2 of Parent {n}"
                });

                trackedItems.Add(item);
            }

            return(trackedItems);
        }
Ejemplo n.º 3
0
        //checks whether object fullfils current ending conditions
        public void checkObjectCondition(TrackableObject obj)
        {
            if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count)
            {
                string endConditionObjectName = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber).EndConditionObjectName;

                if (m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber).Mode == AllEnums.PBD_Mode.OBJECT_RECOGNIZED)
                {
                    long now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
                    if (m_ObjectwasFoundOnce)
                    {
                        if (now - m_UsedObjectLastSeenTimestamp > 3000) // < 3seconds
                        {
                            // object was used correctly and is back again
                            NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.TRACKABLE_OBJECT);
                            WorkingstepChanged();
                            m_ObjectwasFoundOnce = false;
                        }
                    }

                    if (obj.Name == endConditionObjectName)
                    {
                        m_UsedObjectLastSeenTimestamp = now;
                        m_ObjectwasFoundOnce          = true;
                    }
                }
                else if (obj.Name == endConditionObjectName)
                {
                    NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.TRACKABLE_OBJECT);
                    WorkingstepChanged();
                }
            }
        }
Ejemplo n.º 4
0
 public void OnObjectRecognized(TrackableObject obj)
 {
     if (m_LoadedWorkflow != null)
     {
         ObjectRecognized(obj);
     }
 }
Ejemplo n.º 5
0
        public void SaveAndAddObjectToDatabase(Image <Bgra, byte> tempCropImg)
        {
            // check if object dir exists
            if (!Directory.Exists(ProjectConstants.OBJECT_DIR))
            {
                // if not create it
                Directory.CreateDirectory(ProjectConstants.OBJECT_DIR);
            }

            // save the scanned image using milliseconds as a uid
            long   millis    = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
            string imagePath = ProjectConstants.OBJECT_DIR + "\\" + millis + ".jpg";

            tempCropImg.Save(imagePath);

            TrackableObject obj = new TrackableObject();

            obj.Image         = imagePath;
            obj.ImageFullPath = System.IO.Path.GetFullPath(imagePath);
            obj.Name          = "Erkanntes Objekt";
            obj.Category      = "Group 1";                  // improve with pbd
            DatabaseManager.Instance.insertTrackableObject(obj);
            DatabaseManager.Instance.listTrackableObject(); // refresh
            BackendControl.Instance.refreshGUI();
        }
Ejemplo n.º 6
0
 public void runPBDObjectThereCheck()
 {
     if (m_LastSeenObject != null)
     {
         long now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;
         foreach (TrackableObject obj in DatabaseManager.Instance.Objects)
         {
             if (obj.Id == m_LastSeenObject.Id)
             {
                 // was the object seen in the last ten seconds?
                 if (now - obj.LastSeenTimeStamp < 10000)
                 {
                     // it was seen - all good
                     m_LastSeenObject = obj;
                     PBDManager.Instance.disablePBDBlockAgain();
                 }
                 else
                 {
                     // it was not seen - trigger PBD stuff
                     PBDManager.Instance.OnObjectWasTakenTrigger(obj);
                 }
                 break;
             }
         }
     }
 }
Ejemplo n.º 7
0
 public TargetTrackRequest(string _requestedType, TrackableObject _requestingObject, float _requestRadius, Action <TrackableObject, bool> _callback)
 {
     requestedType    = _requestedType;
     requestingObject = _requestingObject;
     requestRadius    = _requestRadius;
     callback         = _callback;
 }
Ejemplo n.º 8
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.º 9
0
    // Use this for initialization
    void Start()
    {
        mrs      = GetComponentsInChildren <MeshRenderer>();
        headMat  = mrs[0].material;
        bodyMat  = mrs[1].material;
        regColor = headMat.color;

        actorScript    = GetComponent <TestCustomActor>();
        leftTrackable  = playerLeftHand.GetComponent <TrackableObject>();
        rightTrackable = playerRightHand.GetComponent <TrackableObject>();

        leftBlade  = playerLeftHand.GetComponentInChildren <EnergyBlade>();
        rightBlade = playerRightHand.GetComponentInChildren <EnergyBlade>();

        leftHandLabel  = "L" + playerIndex;
        rightHandLabel = "R" + playerIndex;

        SyncVarsWithActorScript();

        //VRHead = GameObject.FindGameObjectWithTag("MainCamera");


        /*
         * if (isBuildPlayer) {
         *      mrs[0].enabled = false;
         * }
         */
    }
Ejemplo n.º 10
0
        public void MergeTrackingEnumerableTest()
        {
            Guid[] ids = new Guid[] { Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid() };

            List <TrackableObject> contextList = new List <TrackableObject>()
            {
                new TrackableObject()
                {
                    Id = ids[0], TextValue = "Modify 1"
                },
                new TrackableObject()
                {
                    Id = ids[1], TextValue = "Modify 2"
                },
                new TrackableObject()
                {
                    Id = ids[2], TextValue = "Delete 102"
                }
            };

            contextList.StartTracking();
            Assert.IsFalse(contextList.HasChanges());

            TrackableObject contextAdd = new TrackableObject()
            {
                Id = ids[3], TextValue = "Add 101"
            };

            contextList.Add(contextAdd);
            contextAdd.New();
            Assert.IsTrue(contextList.HasChanges());

            contextList.First(item => item.Id == ids[2]).Delete();


            List <TrackableObject> merge = new List <TrackableObject>()
            {
                new TrackableObject()
                {
                    Id = ids[0], TextValue = "Modify 1"
                },
                new TrackableObject()
                {
                    Id = ids[1], TextValue = "Modify 2"
                },
                new TrackableObject()
                {
                    Id = ids[2], TextValue = "Delete 102"
                }
            };

            merge.MergeTracking(contextList);
            Assert.IsTrue(merge.HasChanges());

            Assert.AreEqual(4, merge.Count);

            Assert.IsTrue(merge.First(item => item.Id == ids[3]).IsNew());
            Assert.IsTrue(merge.First(item => item.Id == ids[2]).IsDeleted());
        }
Ejemplo n.º 11
0
 private void RemoveObjectFromCanvas(TrackableObject obj)
 {
     if (trackableObjects.TryGetValue(obj.Id, out var color))
     {
         var e = (UIElement)LogicalTreeHelper.FindLogicalNode(MainCanvas, "e" + obj.Id.ToString());
         MainCanvas.Children.Remove(e);
         e = null;
     }
 }
        internal PropertyChangedRecord(ViewModel.ViewModelController controller, TrackableObject trackableObject, string propertyName, string v) : base(ActionTypes.ChangeProperty, controller, trackableObject)
        {
            ObjectType   = trackableObject.GetType().ToString();
            PropertyName = propertyName;
            Value        = v;
#if DEBUGUNDOREDO
            Debug.WriteLine($@">>> PropertyChangedRecord.PropertyChangedRecord: Created {UnitDescription} record, Id: {Id}, PropertyName: {PropertyName}, Value: {v}");
#endif
        }
Ejemplo n.º 13
0
 public void HookOnTrackingChanged()
 {
     _trackable = FindObjectOfType <TrackableObject>();
     if (_trackable)
     {
         _trackable.OnTrackingChanged += _trackable_OnTrackingChanged;
         _turbine = _trackable.GetComponentInChildren <AnimationController>(true);
     }
 }
Ejemplo n.º 14
0
        private void initContent(TrackableObject obj)
        {
            content = obj;

            textBoxName.Text    = obj.Name;
            textBoxGroup.Text   = obj.Category;
            labelIdText.Content = obj.Id;
            imageCarrier.Source = new BitmapImage(new Uri(obj.ImageFullPath));
        }
Ejemplo n.º 15
0
 /// <summary>
 /// Delete object callback
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 ///
 ///
 private void Menuitem_Delete_Click(object sender, RoutedEventArgs e)
 {
     if (m_ObjectsListView.SelectedIndex != -1)
     {
         TrackableObject obj = (TrackableObject)m_ObjectsListView.SelectedItem;
         DatabaseManager.Instance.deleteTrackableObject(obj);
         DatabaseManager.Instance.listTrackableObject(); // refresh
         m_ObjectsListView.Items.Refresh();
     }
 }
Ejemplo n.º 16
0
 private void AddObjectToCanvas(TrackableObject c, TextBlock t)
 {
     if (float.IsNaN(c.Location.X) || float.IsNaN(c.Location.Y))
     {
         return;
     }
     MainCanvas.Children.Add(t);
     Canvas.SetLeft(t, c.Location.X * 100 + 500);
     Canvas.SetTop(t, c.Location.Y * 100 + 500);
 }
Ejemplo n.º 17
0
 public void OnTargetFound(TrackableObject _target, bool _success)
 {
     if (_success == true)
     {
         agent.currentTarget = _target.trackedObject;
     }
     else
     {
         agent.currentTarget = null;
     }
 }
Ejemplo n.º 18
0
        private void DrawObject(TrackableObject obj, Color color)
        {
            Dispatcher.Invoke(() =>
            {
                var textBlock = CreateObjectUI(color, obj.Id.ToString());

                RemoveObjectFromCanvas(obj);

                AddObjectToCanvas(obj, textBlock);
            });
        }
Ejemplo n.º 19
0
 public void OnFoodFound(TrackableObject _target, bool _success)
 {
     if (_success == true)
     {
         agent.foodTarget = _target;
     }
     else
     {
         agent.foodTarget = null;
     }
 }
Ejemplo n.º 20
0
 private void UDTEventHandler_OnTargetBuilt(object sender, TargetBuiltEventArgs args)
 {
     if (_trackable)
     {
         _trackable.OnTrackingChanged -= Trackable_OnTrackingChanged;
     }
     _trackable = args.TrackableObject;
     _trackable.OnTrackingChanged += Trackable_OnTrackingChanged;
     _buildingObject = _trackable.GetComponentInChildren <BuildingObject>(true);
     _floorContainer = _buildingObject.GetComponentInChildren <FloorContainer>(true);
     HouseViewModel.Instance.MaxFloor = _floorContainer.Floors.Count - 1;
 }
Ejemplo n.º 21
0
 private void ObjectsListView_MouseDoubleClick(object sender, MouseButtonEventArgs e)
 {
     // check if an object is selected
     if (m_ObjectsListView.SelectedItems.Count == 1)
     {
         foreach (var item in m_ObjectsListView.SelectedItems)
         {
             TrackableObject obj = item as TrackableObject;
             ObjectDetectionManager.Instance.DisplayObjectEditDialog(obj);
         }
     }
 }
Ejemplo n.º 22
0
        public bool ObjectAlteredCallback(TrackableObject obj)
        {
            bool ret = false;

            ret = Database.DatabaseManager.Instance.updateTrackableObject(obj);
            if (ret)
            {
                Database.DatabaseManager.Instance.listTrackableObject(); // refresh
                BackendControl.Instance.refreshGUI();
            }

            return(ret);
        }
Ejemplo n.º 23
0
        private void RadarEventReceived(object sender, TrackableObject e)
        {
            if (e != null)
            {
                Color color;
                if (!trackableObjects.TryGetValue(e.Id, out color))
                {
                    color = Color.FromRgb((byte)rand.Next(0, 256), (byte)rand.Next(0, 256), (byte)rand.Next(0, 256));
                    trackableObjects.Add(e.Id, color);
                }

                DrawObject(e, color);
            }
        }
Ejemplo n.º 24
0
 /// <summary>
 /// deletes the given object from the database
 /// </summary>
 /// <param name="obj">object to delete</param>
 ///
 ///
 public void deleteTrackableObject(TrackableObject obj)
 {
     try
     {
         using (ITransaction transaction = sess.BeginTransaction())
         {
             sess.Delete(obj);
             transaction.Commit();
         }
     }
     catch (Exception e)
     {
         Logger.Instance.Log(e.Message, Logger.LoggerState.ERROR);
     }
 }
Ejemplo n.º 25
0
        public void PrintTrackingTest()
        {
            int changesDetected = 0;

            TrackableObject context = new TrackableObject();

            context.StartTracking();
            context.WhenChanged(() => changesDetected++);

            context.Print();

            Assert.IsFalse(context.HasChanges());           //We dont expect print to show up as having changes.
            Assert.IsTrue(context.IsPrintRequired());
            Assert.AreEqual(1, changesDetected);
        }
Ejemplo n.º 26
0
        public void InitPBDLogic()
        {
            long now = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

            foreach (TrackableObject obj in DatabaseManager.Instance.Objects)
            {
                // was the object seen in the last two seconds?
                if (now - obj.LastSeenTimeStamp < 2000)
                {
                    // it was seen - save it
                    m_LastSeenObject = obj;
                    break;
                }
            }
        }
Ejemplo n.º 27
0
 public void FindFood(FoodTrackRequest _request, Action <FoodTrackResult> callback)
 {
     for (int i = 0; i < deadObjects.Count; i++)
     {
         TrackableObject possibleFood = deadObjects[i];
         float           foodDistance = Vector3.Distance(possibleFood.objectPosition, _request.requestingObject.objectPosition);
         if (foodDistance <= _request.requestRadius)
         {
             callback(new FoodTrackResult(possibleFood, true, _request.callback));
         }
         else
         {
             callback(new FoodTrackResult(null, false, _request.callback));
         }
     }
 }
Ejemplo n.º 28
0
        protected static IReadOnlyDictionary <string, TrackablePropertyChangedEventObject> PrintChangedValues(
            TrackableObject p)
        {
            if (p == null)
            {
                Debug.WriteLine($"Object is NULL");
                return(null);
            }

            var changes = p.ChangedProperties;

            foreach (var item in changes)
            {
                Debug.WriteLine($"{item.Key} :: {item.Value.OldValue} ==> {item.Value.NewValue}");
            }

            return(changes);
        }
Ejemplo n.º 29
0
        public void HasChangedTest()
        {
            TrackableObject context = new TrackableObject();

            context.StartTracking();
            Assert.IsFalse(context.HasChanges());

            context.IntValue = 2;
            Assert.IsTrue(context.HasChanges());


            context.StartTracking();
            Assert.IsFalse(context.HasChanges());

            context.NotMappedValue = "test";
            Assert.IsFalse(context.HasChanges());

            context.TextValue = "test";
            Assert.IsTrue(context.HasChanges());
        }
Ejemplo n.º 30
0
        /// <summary>
        /// updates the given TrackableObject in the Database
        /// </summary>
        /// <param name="obj">object to update</param>
        ///
        ///
        public bool updateTrackableObject(TrackableObject obj)
        {
            bool ret = true;

            try
            {
                using (ITransaction transaction = sess.BeginTransaction())
                {
                    sess.Update(obj);
                    transaction.Commit();
                }
            }
            catch (Exception e)
            {
                ret = false;
                Logger.Instance.Log(e.Message, Logger.LoggerState.ERROR);
            }

            return(ret);
        }
 public void TestMethodTrackableObj()
 {
     TrackableObject<Person> trackable = new TrackableObject<Person>(new Person(1, "1`2123"));
     trackable.OnDirtyStatusChanged += trackable_OnDirtyStatusChanged;
     trackable.Data.Name = "Kirill";
 }