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; } }
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; * } */ }
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: } }