// ustawianie nastepnego punktu kalibracji public void SetNextCalibrationPoint(double x, double y, double z = 0) { if (!calibrated) { // tu wypada spr sensownosc punktu calibrationPoints[nextPointIndex] = new Point3D(x, y, z); nextPointIndex++; mainEngine.AddTextToLog("Punkt kalibracji: " + x.ToString() + " " + y.ToString() + " " + z.ToString()); } if (nextPointIndex == 6) // tu jeszcze inne rzeczy trzeba sprawdzic (np. sensownosc punktow) { if (mainEngine.GetAppState() == ApplicationState.Calibration) { computeCalibrationCoeffs(); mainEngine.SetAppState(ApplicationState.Calibrated); calibrated = true; mainEngine.AddTextToLog("Kalibracja zakonczona!"); } else { // cos poszlo zle, skoro apka nie byla w stanie kalibracji a kalibracja sie odbywala... } } }
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 { } } } } }