// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Space)) { displacementIndex++; if (displacementIndex > maxIndex) { displacementIndex = 0; } SGT_SurfaceDisplacement surfDisp = this.gameObject.GetComponent <SGT_SurfaceDisplacement>(); surfDisp.DisplacementTexture.SetTexture((Texture2D)displacement.ToArray().GetValue(displacementIndex), CubemapFace.PositiveX); } }
void loadFromAstralInfo(Dictionary <string, object> dictPlanet) { print("dictPlanet['name']: " + dictPlanet["name"]); GameObject instance; if (dictPlanet["type"].Equals("star")) { instance = Instantiate(Resources.Load("Prefabs/Star")) as GameObject; } else if (dictPlanet["type"].Equals("gazeous")) { instance = Instantiate(Resources.Load("Prefabs/Gas Giant")) as GameObject; } else { instance = Instantiate(Resources.Load("Prefabs/PlanetSphere")) as GameObject; } string evolutionInfo = Load(rootFolder + dictPlanet["evolution"]); var dictEvolutions = Json.Deserialize(evolutionInfo) as Dictionary <string, object>; var evolutionList = dictEvolutions["evolutions"] as List <object>; var dictEvolution = evolutionList[0] as Dictionary <string, object>; print("full position: " + ((Dictionary <string, object>)dictEvolution["pos"])["x"] + ";" + ((Dictionary <string, object>)dictEvolution["pos"])["y"] + ";" + ((Dictionary <string, object>)dictEvolution["pos"])["z"]); long x = (long)((Dictionary <string, object>)dictEvolution ["pos"]) ["x"]; long y = (long)((Dictionary <string, object>)dictEvolution ["pos"]) ["y"]; long z = (long)((Dictionary <string, object>)dictEvolution ["pos"]) ["z"]; long size = (long)dictEvolution ["radius"]; instance.transform.position = new Vector3(x, y, z); instance.transform.localScale = new Vector3(size, size, size); instance.name = (string)dictPlanet["name"]; // print(dictPlanet["name"] + " : " + dictPlanet["type"] + " (dictPlanet[\"type\"].Equals(\"star\") = " + (dictPlanet["type"].Equals("star") ? "true" : "false")); PlanetUpdater updater = instance.AddComponent <PlanetUpdater>(); updater.folder = resourceFolder; updater.setEvolutions(evolutionList, time); updater.definition = dictPlanet; if (dictPlanet["type"].Equals("planet")) { //Surface Displacement SGT_SurfaceDisplacement surfDisp = instance.AddComponent <SGT_SurfaceDisplacement>(); surfDisp.SourceSurfaceMesh.GetMultiMesh(CubemapFace.PositiveX).Add((Mesh)Resources.Load("Sphere128 (Surface) (Sphere).asset")); //print ("folder:" + updater.folder); // materials evolution List <object> materialsEvolution = (dictEvolution["materials"]) as List <object>; print(dictEvolution["materials"]); for (int i = 0; i < materialsEvolution.Count; ++i) { Dictionary <string, object> materialEvolution = materialsEvolution[i] as Dictionary <string, object>; // TODO : this won't work on linux ! var path = "file://" + Application.dataPath + "/Resources/" + resourceFolder + materialEvolution["file"].ToString() + ".png"; print("path : " + path); var www = new WWW(path); while (!www.isDone) { ; } updater.materials[materialEvolution["name"].ToString()] = www.texture; //print("tried to load : " + resourceFolder + materialEvolution["file"].ToString()); //print(updater.materials[materialEvolution["name"].ToString()]); } updater.materialsDefinition = new Dictionary <string, object>(materialsDefinition); //TODO : put that in updater to update if materials evolve Texture2D t = TextureGenerator.generate(updater.materials, updater.materialsDefinition); // if (t == null) // WTF ??? instance.GetComponent <SGT_Planet>().SurfaceTextureDay.SetTexture(t, 0); Texture2D t_n = TextureGenerator.MakeNight(t); instance.GetComponent <SGT_Planet>().SurfaceTextureNight.SetTexture(t_n, 0); } planets.Add(instance); }