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;
                }
            }
        }
    }
예제 #2
0
    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;
                }
            }
        }
    }
예제 #3
0
    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;
                }
            }
        }
    }