/* * generate json object of lab instacne */ public string GenerateJSON() { // create instances of objecct models LaserModel lm = new LaserModel(laser.transform.position, laser.transform.rotation); RefractableMaterialModel worldRM = new RefractableMaterialModel(rm.GetPresetIndex(), rm.GetN(), rm.transform.position, rm.transform.rotation); RefractableMaterials serializeRMs = new RefractableMaterials(); foreach (RefractableMaterial rm in rms) { serializeRMs.materials.Add(new RefractableMaterialModel(rm.GetPresetIndex(), rm.GetN(), rm.transform.position, rm.transform.rotation)); } LabInstance li = new LabInstance(); li.lm = lm; li.worldRM = worldRM; li.refractableMaterials = serializeRMs; // convert lab instance model object to json string return(JsonUtility.ToJson(li)); }
/* * set up world from json string */ public void SetUpWorld(string json) { // generate lab instance model object from json string LabInstance li = JsonUtility.FromJson <LabInstance>(json); // set laser object from json laser.transform.position = li.lm.pos; laser.transform.rotation = li.lm.rot; // set lab manager's refratable material componenet from json rm.SetPresetRefraction((RefractableMaterial.IndexesOfRefraction)Enum.ToObject(typeof(RefractableMaterial.IndexesOfRefraction), li.worldRM.presetRefraction)); rm.SetCustomRefraction(li.worldRM.n); int x = 0; // set available refratable materials foreach (RefractableMaterial rm in rms) { rm.transform.position = li.refractableMaterials.materials[x].pos; rm.transform.rotation = li.refractableMaterials.materials[x].rot; rm.SetPresetRefraction((RefractableMaterial.IndexesOfRefraction)Enum.ToObject(typeof(RefractableMaterial.IndexesOfRefraction), li.refractableMaterials.materials[x].presetRefraction)); rm.SetCustomRefraction(li.refractableMaterials.materials[x].n); x++; } // if there are more materials to generate, create new ones while (rms.Count < li.refractableMaterials.materials.Count) { RefractableMaterial temp = AddObject(); temp.transform.position = li.refractableMaterials.materials[x].pos; temp.transform.rotation = li.refractableMaterials.materials[x].rot; temp.SetPresetRefraction((RefractableMaterial.IndexesOfRefraction)Enum.ToObject(typeof(RefractableMaterial.IndexesOfRefraction), li.refractableMaterials.materials[x].presetRefraction)); Debug.Log(li.refractableMaterials.materials[x].presetRefraction); Debug.Log("PR: " + temp.GetPresetIndex()); temp.SetCustomRefraction(li.refractableMaterials.materials[x].n); x++; } }
/* * enable UI components for refractable material objects */ public void RunRMUIComponents() { ShowToggle(false); ShowIndexComponents(true); objText.text = "Refractable Material"; RefractableMaterial rm = lm.obj.GetComponent <RefractableMaterial>(); indexesMenu.value = rm.GetPresetIndex(); if (indexesMenu.value != (int)RefractableMaterial.IndexesOfRefraction.CUSTOM) { refractionField.text = "" + rm.GetIndexOfRefraction(); refractionField.enabled = false; } else { refractionField.enabled = true; } }