Exemplo n.º 1
0
    public void loadVuforiaObjectsFromFile()
    {
        string    txt = System.IO.File.ReadAllText("vuforiaSaved.txt");
        JSONArray ja  = JSON.Parse(txt).AsArray;

        realityEditorSavedObjectDict.Clear();
        for (int i = 0; i < ja.Count; i++)
        {
            JSONNode jn = ja[i];
            realityEditorObjectStruct reos = new realityEditorObjectStruct();
            reos.id = jn["id"];
            reos.ip = jn["ip"];
            reos.temporaryChecksum = jn["temporaryChecksum"];
            reos.versionNumber     = jn["versionNumber"];
            reos.zone       = jn["zone"];
            reos.xmlAddress = jn["xmlAddress"];
            reos.datAddress = jn["datAddress"];

            reos.position = new Vector3(jn["Tx"].AsFloat, jn["Ty"].AsFloat, jn["Tz"].AsFloat);
            reos.rotation = new Quaternion(jn["Qx"].AsFloat, jn["Qy"].AsFloat, jn["Qz"].AsFloat, jn["Qw"].AsFloat);

            Debug.Log("reos recovered position for: " + reos.id + " " + jn.ToString() + " " + reos.position);
            realityEditorSavedObjectDict[reos.id] = reos;
        }
    }
Exemplo n.º 2
0
    void updateStructsBasedOnGameObjects()
    {
        List <string> keys = new List <string>(realityEditorObjectDict.Keys);

        for (int i = 0; i < keys.Count; i++)
        {
            realityEditorObjectStruct reos = realityEditorObjectDict[keys[i]];

            //Debug.Log("looking for a corresponding gameobject for: " + reos.id);
            //find the gameobject with this name:
            int idx = -1;
            for (int jj = 0; jj < realityEditorObjectVisualizerList.Count; jj++)
            {
                //Debug.Log(realityEditorObjectVisualizerList[jj].name + " == " + reos.id + "?" + (realityEditorObjectVisualizerList[jj].name == reos.id));
                if (realityEditorObjectVisualizerList[jj].name == reos.id)
                {
                    idx = jj;
                }
            }

            if (idx >= 0)
            {
                //Debug.Log("updating struct for: " + realityEditorObjectVisualizerList[idx].name + " " + realityEditorObjectVisualizerList[idx].transform.position);
                reos.position = realityEditorObjectVisualizerList[idx].transform.position;
                reos.rotation = realityEditorObjectVisualizerList[idx].transform.rotation;
            }
            else
            {
                Debug.Log("*** could not update struct for: " + reos.id);
            }
            realityEditorObjectDict[keys[i]] = reos;
        }

        /*
         * foreach(KeyValuePair<string, realityEditorObjectStruct> pair in realityEditorObjectDict)
         * {
         *  realityEditorObjectStruct reos = realityEditorObjectDict[pair.Key];
         *  reos.position = realityEditorObjectVisualizerList[pair.Value.gameObjectIdx].transform.position;
         *  reos.rotation = realityEditorObjectVisualizerList[pair.Value.gameObjectIdx].transform.rotation;
         *  realityEditorObjectDict[pair.Key] = reos;
         * }
         */
    }
Exemplo n.º 3
0
    public void realityEditorObject(string jsonPacket)
    {
        JSONNode jn = JSON.Parse(jsonPacket);
        //Debug.Log("received object: " + jsonPacket);

        realityEditorObjectStruct reos = new realityEditorObjectStruct();

        reos.id = jn["id"] ?? "";
        reos.ip = jn["ip"] ?? "";
        reos.temporaryChecksum = jn["temporaryChecksum"] ?? "";
        reos.versionNumber     = jn["versionNumber"] ?? "";
        reos.zone       = jn["zone"] ?? "";
        reos.xmlAddress = jn["xmlAddress"] ?? "";
        reos.datAddress = jn["datAddress"] ?? "";


        if (realityEditorObjectDict.ContainsKey(reos.id))
        {
            if (realityEditorObjectDict[reos.id].temporaryChecksum != reos.temporaryChecksum)
            {
                //todo: redownload model files!
            }
        }
        else
        {
            GameObject go = new GameObject();
            go.name = reos.id;
            go.transform.localScale = new Vector3(1.0f, 1.0f, 1.0f);
            go.transform.position   = new Vector3(0.0f, 0.0f, 0.0f);
            go.transform.rotation   = Quaternion.identity;



            GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
            cube.transform.localScale = new Vector3(0.1f, 0.1f, 0.1f);
            cube.transform.position   = new Vector3(0.0f, 0.0f, 0.0f);
            cube.transform.rotation   = Quaternion.identity;
            cube.name             = reos.id;
            cube.transform.parent = go.transform;
            cube.GetComponent <MeshRenderer>().enabled = false;

            //todo
            //get the transform from a previously saved version if it exists:
            if (realityEditorSavedObjectDict.ContainsKey(reos.id))
            {
                reos.position         = realityEditorSavedObjectDict[reos.id].position;
                reos.rotation         = realityEditorSavedObjectDict[reos.id].rotation;
                go.transform.position = reos.position;
                go.transform.rotation = reos.rotation;
            }
            else
            {
                //keep default position saved
                reos.position = go.transform.position;
                reos.rotation = go.transform.rotation;
            }

            realityEditorObjectVisualizerList.Add(go);
            reos.gameObjectIdx = realityEditorObjectVisualizerList.Count;

            StartCoroutine(downloadAndSendModelFiles(reos.id, reos.xmlAddress, reos.datAddress));

            Debug.Log("adding new object: " + reos);
            realityEditorObjectDict.Add(reos.id, reos);



            //add it to vuforia search list as well:
        }
    }