// 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);
     }
 }
示例#2
0
    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);
    }