Example #1
0
 public void AddPossibleObject(SingleObject obj)
 {
     if (obj != null)
     {
         possibleObjects.Add(obj.GetObjectName(), obj);
     }
 }
Example #2
0
 public void RemoveSelectedObject()
 {
     if (selectedObject != null)
     {
         usedObjects.Remove(selectedObject.GetObjectName());
     }
 }
 public void AddPossibleObject(SingleObject obj)
 {
     if (obj != null) possibleObjects.Add(obj.GetObjectName(), obj);
 }
        void speechEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
        {
            const double ConfidenceThreshold = 0.3;

            if (e.Result.Confidence >= ConfidenceThreshold)
            {
                if (e.Result.Semantics.Value != null)
                {
                    string semValue = e.Result.Semantics.Value.ToString();

                    switch (semValue)
                    {
                    case "CALIB_CALIBRATE":
                        mainEngine.AddTextToLog("SpeechRec: " + semValue);
                        if (mainEngine.GetAppState() == ApplicationState.Ready)
                        {
                            mainEngine.SetAppState(ApplicationState.Calibration);
                            mainEngine.service.send(Orders.CALIBRATE);
                            // no i komunikat do klienta...
                        }
                        else
                        {
                            // jakies inne przypadki? np. ponowna kalibracja czy cos...
                        }
                        break;

                    case "CALIB_MARK":
                        mainEngine.AddTextToLog("SpeechRec: " + semValue);
                        if (mainEngine.GetAppState() == ApplicationState.Calibration)
                        {
                            mainEngine.GetCalibrator().SetNextCalibrationPoint(
                                mainEngine.GetSkeletonController().GetRightHandCoord());
                            if (mainEngine.GetAppState() == ApplicationState.Calibrated)
                            {
                                mainEngine.AddTextToLog("skalibrowane");
                                mainEngine.service.send(Orders.DONE);
                            }
                            else if (mainEngine.GetAppState() == ApplicationState.Calibration)
                            {
                                mainEngine.service.send(Orders.MARK);
                            }
                        }
                        else
                        {
                            // cos poszlo zle...
                        }
                        break;

                    case "ONN_MOVE":
                        mainEngine.AddTextToLog("SpeechRec: " + semValue);
                        break;

                    case "ONN_THERE":
                        mainEngine.AddTextToLog("SpeechRec: " + semValue);
                        if (mainEngine.GetAppState() == ApplicationState.Working)
                        {
                            mainEngine.GetObjectManager().SelectedMoveTo(mainEngine.GetSkeletonController().GetRightHandCoord());
                            // no i komunikat do klienta...
                        }
                        else
                        {
                            // ...
                        }
                        break;

                    case "ONN_REMOVE":
                        mainEngine.AddTextToLog("SpeechRec: " + semValue);

                        if (mainEngine.GetAppState() == ApplicationState.Working)
                        {
                            if (mainEngine.GetObjectManager().GetSelectedObject() != null)
                            {
                                mainEngine.service.sendRemoveObject(mainEngine.GetObjectManager().GetSelectedObject().GetObjectName());
                                mainEngine.GetObjectManager().RemoveSelectedObject();
                            }
                            // no i komunikat do klienta...
                        }
                        else
                        {
                            // ...
                        }
                        break;
                    }
                }
                else
                {
                    var semVal = e.Result.Semantics;

                    if (semVal.ContainsKey("OWN_MOVE_NAME"))
                    {
                        mainEngine.AddTextToLog("SpeechRec: move " + semVal["OWN_MOVE_NAME"].Value);

                        if (mainEngine.GetAppState() == ApplicationState.Working)
                        {
                            string name = semVal["OWN_MOVE_NAME"].Value.ToString();
                            mainEngine.GetObjectManager().MoveTo(name,
                                                                 mainEngine.GetSkeletonController().GetRightHandCoord());
                            SingleObject so = mainEngine.GetObjectManager().GetUsedObjectByName(name);
                            if (so != null)
                            {
                                mainEngine.service.sendMoveObject(so.GetObjectName(), so.GetScreenCentroidPosition().Y,
                                                                  so.GetScreenCentroidPosition().X);
                            }
                        }
                        else
                        {
                            // ...
                        }
                    }
                    else if (semVal.ContainsKey("OWN_NEW_NAME"))
                    {
                        mainEngine.AddTextToLog("SpeechRec: new " + semVal["OWN_NEW_NAME"].Value);

                        if (mainEngine.GetAppState() == ApplicationState.Working)
                        {
                            mainEngine.GetObjectManager().AddUsedObject(semVal["OWN_NEW_NAME"].Value.ToString(),
                                                                        mainEngine.GetSkeletonController().GetRightHandCoord());

                            SingleObject so = mainEngine.GetObjectManager().GetUsedObjectByName(semVal["OWN_NEW_NAME"].Value.ToString());
                            so.SetScreenPosition(mainEngine.GetCalibrator().ScaleKinectPositionToScreen(so.GetCentroidPosition()));
                            mainEngine.service.sendCreateObject(so.GetObjectName(), so.GetObjectType(), so.GetScreenCentroidPosition().Y, so.GetScreenCentroidPosition().X);
                        }
                        else
                        {
                            // ...
                        }
                    }
                    else if (semVal.ContainsKey("OWN_REMOVE_NAME"))
                    {
                        mainEngine.AddTextToLog("SpeechRec: remove " + semVal["OWN_REMOVE_NAME"].Value);

                        if (mainEngine.GetAppState() == ApplicationState.Working)
                        {
                            mainEngine.GetObjectManager().RemoveUsedObject(semVal["OWN_REMOVE_NAME"].Value.ToString());
                            mainEngine.service.sendRemoveObject(semVal["OWN_REMOVE_NAME"].Value.ToString());
                        }
                        else
                        {
                        }
                    }
                }
            }
        }