Пример #1
0
    public void setEvolutions(List <object> evol, UniverseTime t)
    {
        time       = t;
        evolutions = evol;
        //print ("evol: " + evolutions);
        displacements = new Dictionary <string, Texture2D> ();
        for (int i = 0; i < evolutions.Count; ++i)
        {
            Dictionary <string, object> current = (Dictionary <string, object>)(evolutions [i]);
            if (current.ContainsKey("displacement"))
            {
                //print("cur disp: " + "System/1/" + current["displacement"]);
                //print ((Texture2D)Resources.Load ( "System/1/" +  current["displacement"]));
                GameObject   manager = GameObject.Find("Manager");
                SystemLoader sys     = manager.GetComponent <SystemLoader>();

                var path = "file://" + Application.dataPath + "/Resources/" + sys.resourceFolder + current["displacement"] + ".png";
                print("path for displacement : " + path);
                var www = new WWW(path);
                while (!www.isDone)
                {
                    ;
                }
                displacements.Add((string)current["displacement"], www.texture);
            }
        }
        //Texture2D t2 = (Texture2D)Resources.Load ("Assets/Resources/System/1/Maps/soleilDisplacement2.png");
        //displacement.Add ( t2);
    }
Пример #2
0
    public void initialize()
    {
        time = this.gameObject.AddComponent <UniverseTime>();

        string systemInfo;

        systemInfo = Load(rootFolder + "systeme.json");
        print(systemInfo);
        var dict = Json.Deserialize(systemInfo) as Dictionary <string, object>;

        time.totalTime = (long)dict["totalTime"];
        print("dict['astres'][0]: " + ((List <object>)dict["astres"])[0]);
        materialsDefinition = dict ["materials"] as Dictionary <string, object>;
        //print ("rock : " + materialsDefinition ["rock"]);

        /*Dictionary<string, object> rmat = materialsDefinition ["rock"] as Dictionary<string, object>;
         * print ("rock, each key...");
         * foreach (var v in rmat) {
         *      print(v.Key + " : " + v.Value);
         * } */
        print("materialsDefinition is null? " + (materialsDefinition == null));
        // store materials
        //materials.Add (((Dictionary<string, object>)((List<object>)dict ["materials"]) [0]));


        foreach (string obj in ((List <object>)dict["astres"]))
        {
            string astreInfo = Load(rootFolder + obj);
            print(astreInfo);
            var dictPlanet = Json.Deserialize(astreInfo) as Dictionary <string, object>;
            loadFromAstralInfo(dictPlanet);
        }
        print("System loaded");
        hasLoaded = true;
    }
Пример #3
0
 // Use this for initialization
 void Start()
 {
     w         = manager.GetComponent <UniverseTime>();
     mats      = new List <Dictionary <string, object> >();
     res       = new List <object>();
     collector = new Dictionary <string, object> ();
 }
Пример #4
0
    // Update is called once per frame
    void OnClick()
    {
        UniverseTime w = manager.GetComponent <UniverseTime>();

        w.Reset();
        w.Start();
        w.Stop();
        w.mult = 1;
    }
Пример #5
0
    public void setCamLookAt(GameObject planet)
    {
        print("setCamLookAt");
        if (planetLookedAt == planet)
        {
            return;
        }
        GameObject manager = GameObject.Find("Manager");

        if (manager && manager.GetComponent <UniverseTime>())
        {
            UniverseTime time = manager.GetComponent <UniverseTime>();
            time.Stop();
        }
        print("setCamLookAt does it");
        PlanetUpdater po  = planet.GetComponent <PlanetUpdater>();
        GameObject    cam = GameObject.Find("Main Camera");

        //if (cam.transform.parent == po.gameObject.transform)
        // return;
//        setCamFree();

        priv_indicator.SetActive(false);
        cam.GetComponent <SGT_CameraFreeLook>().enabled  = false;
        cam.GetComponent <SGT_CameraFreeOrbit>().enabled = true;
        float avgScale = (float)((planet.gameObject.transform.localScale.x + planet.gameObject.transform.localScale.y + planet.gameObject.transform.localScale.z) / 3.0);

        cam.GetComponent <SGT_CameraFreeOrbit>().Distance = (float)(avgScale + avgScale);
        print(cam.GetComponent <SGT_CameraFreeOrbit>().Distance);
        cam.GetComponent <SGT_CameraFreeOrbit>().DistanceMin = cam.GetComponent <SGT_CameraFreeOrbit>().Distance;
        cam.GetComponent <SGT_CameraFreeOrbit>().DistanceMax = cam.GetComponent <SGT_CameraFreeOrbit>().Distance;
        cam.transform.LookAt(planet.transform);
        planetLookedAt = planet;
//        cam.transform.position = cam.transform.position + (cam.transform.forward * (cam.transform.DistanceTo(planet.transform.position) - 1000));
        cam.transform.parent.transform.position = planet.transform.position;
    }
Пример #6
0
    // Update is called once per frame
    void Update()
    {
        timer();
        if (Input.GetKeyDown(KeyCode.Escape))
        {
            if (menuInGame.GetComponent <UIPanel>().alpha == 0)
            {
                menuInGame.GetComponent <UIPanel>().alpha = 1;
                menuInGame.SetActive(true);
            }
            else
            {
                menuInGame.GetComponent <UIPanel>().alpha = 0;
            }
        }
        if (Input.GetButton("Fire1"))
        {
            extractOK.SetActive(false);

            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;

            //// TODO: singletooon !
            GameObject   manager = GameObject.Find("Manager");
            SystemLoader sys     = manager.GetComponent <SystemLoader>();
            if (!sys || !sys.hasLoaded)
            {
                print("planet not leaded yet");
                return;
            }

            UniverseTime w = manager.GetComponent <UniverseTime>();

            if (controler.activeInHierarchy)
            {
                initPlanetList();
                foreach (GameObject p in sys.planets)
                {
                    Collider planetCollider = p.collider;
                    if (planetCollider != null && planetCollider.Raycast(ray, out hit, 1000.0f))
                    {
                        {
                            //Debug.DrawLine (ray.origin, hit.point);
                            //print ("hit! ");
                            Vector2 textureCoord = hit.textureCoord;
                            pu = p.GetComponent <PlanetUpdater>();
                            foreach (var t in pu.materials)
                            {
                                if (selectedMat == null || pu.materials[selectedMat] == null)
                                {
                                    selectedMat = t.Key;
                                }
                            }
                            textureCoord.x *= pu.materials[selectedMat].width;
                            textureCoord.y *= pu.materials[selectedMat].height;
                            //print(hit.textureCoord);
                            x = (int)textureCoord.x;
                            y = (int)textureCoord.y;
                            //print("pixel rock : " + pu.materials["rock"].GetPixel(x, y));
                            //print("pixel water : " + pu.materials["water"].GetPixel(x, y));
                            if (controler.activeInHierarchy)
                            {
                                ShowInformations(x, y, pu);

                                // parent the camera to the object looked at
                                //setCamFree();
                                setCamLookAt(p);

                                // update the local indicator
                                priv_indicator.SetActive(true);

                                priv_indicator.transform.parent        = pu.gameObject.transform;
                                priv_indicator.transform.localPosition = Vector3.zero;
                                priv_indicator.transform.localRotation = Quaternion.Euler(Vector3.zero);
                                priv_indicator.transform.localScale    = new Vector3(1, 1, 1);
                                // average of each scales (x and y and z)


                                priv_indicator.GetComponentInChildren <ParticleSystem>().startSpeed = initial_particle_speed * priv_indicator.transform.parent.localScale.x;
                                //print(hit.normal);
                                Quaternion quatHit = Quaternion.FromToRotation(Vector3.up, hit.point - pu.transform.position);

                                //print("quatHit: " + quatHit);

                                priv_indicator.transform.rotation = quatHit;
                                //print("rotation: " + priv_indicator.transform.rotation);

                                return;
                            }
                        }
                    }
                }
            }
        }
    }
Пример #7
0
    // Update is called once per frame
    void OnClick()
    {
        UniverseTime w = manager.GetComponent <UniverseTime>();

        w.Desc();
    }