private void Update() { if (objects != null && !generate) { Debug.Log("Stream received"); GameObject parent = gameObject; foreach (Object ob in objects) { GameObject newob = ob.GameObject(); newob.transform.parent = parent.transform; gameObject.transform.position = new Vector3(ob.positionx, ob.positiony, ob.positionz); newob.GetComponent <MeshRenderer>().material = new Material(Shader.Find("Diffuse")); } generate = true; } if (nexthash != "" && !Shifted) { string hash = PlayerPrefs.GetString("StartHash"); GameObject newobject = new GameObject(); IpfsGenerated gen = newobject.AddComponent <IpfsGenerated>(); Thread readthread = new Thread(() => IpfsIO.ReadObject(nexthash, gen)); readthread.Start(); Shifted = true; } }
public static async void ReadObject(string hash, IpfsGenerated returnto) { Stream basestream = await ReturnText(hash); List <Object> reconstructed = new List <Object>(); using (StreamReader sr = new StreamReader(basestream)) { while (!sr.EndOfStream) { string objectStream = sr.ReadLine(); if (!objectStream.Contains("Hash:")) { //Convert the Base64 string into byte array byte[] memorydata = Convert.FromBase64String(objectStream); MemoryStream rs = new MemoryStream(memorydata); BinaryFormatter sf = new BinaryFormatter(); //Create object using BinaryFormatter Object objResult = (Object)sf.Deserialize(rs); reconstructed.Add(objResult); } else { objectStream = objectStream.Replace("Hash:", ""); Debug.Log("Found next hash"); returnto.nexthash = objectStream; } } } returnto.objects = reconstructed; Debug.Log("Sucess! It's not IPFS"); }
//If not write, read. // Use this for initialization void Start() { if (Write) { Task t = Extensions.Iterate(WriteInSequence()); } else { string hash = PlayerPrefs.GetString("StartHash"); GameObject newobject = new GameObject(); IpfsGenerated gen = newobject.AddComponent <IpfsGenerated>(); Thread readthread = new Thread(() => IpfsIO.ReadObject(hash, gen)); readthread.Start(); } }