void UpdateSphereProjection(int eyeIndex, Dictionary <string, object> dictionary) { var innerDictionary = PupilTools.DictionaryFromDictionary(dictionary, "projected_sphere"); if (innerDictionary != null) { foreach (var item in innerDictionary) { switch (item.Key.ToString()) { case "angle": // Currently always 90 break; case "axes": var axes = PixelPosition(item.Value); axes.x = eyeTexture[eyeIndex].width / axes.x; axes.y = eyeTexture[eyeIndex].height / axes.y; sphereProjectionMaterial [eyeIndex].mainTextureScale = axes; break; case "center": var centerPosition = PixelPosition(item.Value); centerPosition.x /= eyeTexture[eyeIndex].width; // / sphereProjectionMaterial [eyeIndex].mainTextureScale.x; centerPosition.y /= eyeTexture[eyeIndex].height; // / sphereProjectionMaterial [eyeIndex].mainTextureScale.y; sphereProjectionMaterial [eyeIndex].mainTextureOffset = centerPosition; break; default: break; } } } }
void CustomReceiveData(string topic, Dictionary <string, object> dictionary, byte[] thirdFrame = null) { if (topic.StartsWith("pupil")) { foreach (var item in dictionary) { switch (item.Key) { case "topic": case "method": case "id": var textForKey = PupilTools.StringFromDictionary(dictionary, item.Key); // Do stuff break; case "confidence": print("Conf : " + PupilTools.FloatFromDictionary(dictionary, item.Key)); // Do stuff break; case "norm_pos": print("Norm : " + PupilTools.VectorFromDictionary(dictionary, item.Key)); // Do stuff break; case "ellipse": var dictionaryForKey = PupilTools.DictionaryFromDictionary(dictionary, item.Key); foreach (var pupilEllipse in dictionaryForKey) { switch (pupilEllipse.Key.ToString()) { case "angle": var angle = (float)(double)pupilEllipse.Value; // Do stuff break; case "center": print("Center : " + PupilTools.ObjectToVector(pupilEllipse.Value)); break; case "axes": print("Axes : " + PupilTools.ObjectToVector(pupilEllipse.Value)); // Do stuff break; default: break; } } // Do stuff break; default: break; } } } }
void CustomReceiveData(string topic, Dictionary <string, object> dictionary, byte[] thirdFrame = null) { if (topic.StartsWith("pupil.1")) { foreach (var item in dictionary) { switch (item.Key) { case "confidence": countDown -= Time.deltaTime; if (countDown < 0) { confidence1 = PupilTools.FloatFromDictionary(dictionary, item.Key); lconf.text = "Left confidence\n" + (confidence1 * 100) + "%"; } break; case "norm_pos": var positionForKey = PupilTools.VectorFromDictionary(dictionary, item.Key); // print("norm_pos_x : " + positionForKey.x + " / norm_pos_y : " + positionForKey.y); if (positionForKey.x != 0 && positionForKey.y != 1 && leftPupil != null) { positionForKey.x -= 0.5f; positionForKey.y -= 0.5f; positionForKey.x *= -1; leftPupil.transform.localPosition = positionForKey; if (confidence1 > .6) { leftPupil.GetComponent <Renderer>().material.color = Color.green; } else { leftPupil.GetComponent <Renderer>().material.color = Color.red; } } break; case "ellipse": var dictionaryForKey = PupilTools.DictionaryFromDictionary(dictionary, item.Key); foreach (var pupilEllipse in dictionaryForKey) { switch (pupilEllipse.Key.ToString()) { case "center": // var center = PupilTools.ObjectToVector(pupilEllipse.Value); // // center.x -= 0.5f; // // center.y -= 0.5f; // // center.x *= -1; // GameObject.FindGameObjectWithTag("lcenter").transform.localPosition = center; break; default: break; } } // Do stuff break; default: break; } } } if (topic.StartsWith("pupil.0")) { foreach (var item in dictionary) { switch (item.Key) { case "confidence": if (countDown < 0) { confidence0 = PupilTools.FloatFromDictionary(dictionary, item.Key); rconf.text = "Right Confidence\n" + (confidence0 * 100) + "%"; countDown = refreshTime; } break; case "norm_pos": var positionForKey = PupilTools.VectorFromDictionary(dictionary, item.Key); // print("norm_pos_x : " + positionForKey.x + " / norm_pos_y : " + positionForKey.y); if (positionForKey.x != 0 && positionForKey.y != 1 && rightPupil != null) { positionForKey.x -= 0.5f; positionForKey.y -= 0.5f; positionForKey.y *= -1; rightPupil.transform.localPosition = positionForKey; if (confidence0 > .6) { rightPupil.GetComponent <Renderer>().material.color = Color.green; } else { rightPupil.GetComponent <Renderer>().material.color = Color.red; } } break; case "ellipse": var dictionaryForKey = PupilTools.DictionaryFromDictionary(dictionary, item.Key); foreach (var pupilEllipse in dictionaryForKey) { switch (pupilEllipse.Key.ToString()) { case "center": // var center = PupilTools.ObjectToVector(pupilEllipse.Value); // // center.x -= 0.5f; // // center.y -= 0.5f; // // center.x *= -1; // GameObject.FindGameObjectWithTag("rcenter").transform.localPosition = center; break; default: break; } } // Do stuff break; default: break; } } } }