コード例 #1
0
    // Update is called once per frame
    void Update()
    {
        switch (flow)
        {
        /////////////////////////about file loading///////////////////////////////
        case 0:
            switch (fileFlow)
            {
            //for init sites
            case 0:
                titles        = new List <Title>();
                dicLevel_0    = new Dictionary <string, List <Title> >();
                dicLevel_1    = new Dictionary <string, List <Title> >();
                dicLevel_2    = new Dictionary <string, List <Title> >();
                mouseTest     = GameObject.Find("Main Camera").GetComponent <MouseTest>();
                planes        = new GameObject[16];
                planeTextures = new List <Texture>();
                for (int i = 0; i < 16; i++)
                {
                    planes[i] = GameObject.Find("Plane" + i);
                }
                //for create drawer
                tracks   = new List <Track>();
                map      = GameObject.Find("Directional light").GetComponent <Map>();
                fileFlow = 1;
                break;

            //create monitor
            case 1:
                monitors = map.monitorCreator(new Vector3(0, 0.05f, 0), 8, 8, 5, monitorPrefab);
                fileFlow = 2;
                break;

            //create planes
            case 2:
                map.planes = planes;
                for (int i = 0; i < map.planes.Length; i++)
                {
                    planeTextures.Add(map.planes[i].GetComponent <Renderer>().material.mainTexture);
                }
                basicZoom = map.zoom;
                fileFlow  = 0;
                flow      = 1;
                break;

            default:
                break;
            }
            break;

        ////////////////////////////////////about title///////////////////////////
        case 1:
            switch (titleFlow)
            {
            //load title file
            case 0:
                titleResult = Title.getTitle("files", "Trajectory_1", lineNumber);
                lineNumber  = (float)titleResult[1];
                if (lineNumber != -1)
                {
                    if (((Title)titleResult[0]).latitute <41.0041f && ((Title)titleResult[0]).latitute> 39.3573f && ((Title)titleResult[0]).lontitute <117.6202f && ((Title)titleResult[0]).lontitute> 115.0552f)
                    {
                        titles.Add((Title)titleResult[0]);
                    }
                }
                else
                {
                    titleFlow = 1;
                    break;
                }
                break;

            //calculate the center
            case 1:
                if (number < titles.Count)
                {
                    avgLat += titles[number].latitute;
                    avgLon += titles[number].lontitute;
                    number++;
                }
                else
                {
                    number  = 0;
                    avgLat /= titles.Count;
                    avgLon /= titles.Count;

                    titleFlow = 2;
                }
                break;

            //create center and refresh map
            case 2:
                center = new Position(avgLat, avgLon, new PTime(0));
                map.Refresh(center);
                titleFlow = 3;
                break;

            //calculate the titles area
            case 3:
                if (number < titles.Count)
                {
                    titles[number].getMonitorLevelPosition(center, map.fullLat, map.fullLon);
                    //for level_0
                    if (!dicLevel_0.ContainsKey(titles[number].level_0))
                    {
                        dicLevel_0.Add(titles[number].level_0, new List <Title>());
                        dicLevel_0[titles[number].level_0].Add(titles[number]);
                    }
                    else
                    {
                        dicLevel_0[titles[number].level_0].Add(titles[number]);
                    }
                    //for level_1
                    if (!dicLevel_1.ContainsKey(titles[number].level_1))
                    {
                        dicLevel_1.Add(titles[number].level_1, new List <Title>());
                        dicLevel_1[titles[number].level_1].Add(titles[number]);
                    }
                    else
                    {
                        dicLevel_1[titles[number].level_1].Add(titles[number]);
                    }
                    //for level_2
                    if (!dicLevel_2.ContainsKey(titles[number].level_2))
                    {
                        dicLevel_2.Add(titles[number].level_2, new List <Title>());
                        dicLevel_2[titles[number].level_2].Add(titles[number]);
                    }
                    else
                    {
                        dicLevel_2[titles[number].level_2].Add(titles[number]);
                    }
                    number++;
                }
                else
                {
                    number    = 0;
                    flow      = 2;
                    titleFlow = 0;
                }
                break;

            default:
                break;
            }
            break;

        ////////////////////////////////////about map//////////////////////////
        case 2:
            switch (mapFlow)
            {
            //refresh map
            case 0:
                map.Refresh(center);
                mapFlow = 1;
                break;

            //get planes
            case 1:
                StartCoroutine(map._Refresh(map.planes[number], map.points[number]));
                number++;
                if (number >= map.planes.Length)
                {
                    number  = 0;
                    mapFlow = 0;
                    flow    = 3;
                }
                break;

            default:
                break;
            }
            break;

        //////////////////////////////////wait and show monitor///////////////////
        case 3:
            switch (waitFlow)
            {
            //wait plane texture done
            case 0:
                planeWaitTime -= Time.deltaTime;

                if (planeWaitTime < 0)
                {
                    //to delay some time
                    planeWaitTime = 1;
                    for (int i = 0; i < map.planes.Length; i++)
                    {
                        if (map.planes[i].GetComponent <Renderer>().material.mainTexture != planeTextures[i])
                        {
                            waitFlow = 1;
                        }
                        else
                        {
                            waitFlow = 0;
                            StartCoroutine(map._Refresh(map.planes[i], map.points[i]));
                            break;
                        }
                    }
                }
                break;

            //show the monitor area numbers
            case 1:
                switch (levelNow)
                {
                case 0:
                    int temp_0 = 0;
                    for (int i = 0; i < monitors.Length; i++)
                    {
                        temp_0 = i;
                        if (dicLevel_0.ContainsKey(temp_0.ToString()))
                        {
                            monitors[i].transform.FindChild("Area").GetComponent <TextMesh>().text = dicLevel_0[temp_0.ToString()].Count.ToString();
                        }
                        else
                        {
                            monitors[i].transform.FindChild("Area").GetComponent <TextMesh>().text = "0";
                        }
                    }
                    break;

                case 1:
                    int temp_1 = 0;
                    for (int i = 0; i < monitors.Length; i++)
                    {
                        temp_1 = i;
                        if (dicLevel_1.ContainsKey(lastLevel_0 + "" + temp_1))
                        {
                            monitors[i].transform.FindChild("Area").GetComponent <TextMesh>().text = dicLevel_1[lastLevel_0 + "" + temp_1].Count.ToString();
                        }
                        else
                        {
                            monitors[i].transform.FindChild("Area").GetComponent <TextMesh>().text = "0";
                        }
                    }
                    break;

                //in levelnow = 2
                case 2:
                    break;

                default:
                    Debug.Log("map's zoom level error");
                    break;
                }
                waitFlow = 2;
                break;

            //renew the cache texture and unlock the mouselock
            case 2:
                for (int i = 0; i < map.planes.Length; i++)
                {
                    planeTextures[i] = map.planes[i].GetComponent <Renderer>().material.mainTexture;
                }
                mouseTest.mouseLock = true;
                waitFlow            = 0;
                if (levelNow != 2)
                {
                    //just wait
                    flow = 999;
                }
                else
                {
                    //show tracks
                    flow = 400;
                }
                break;

            default:
                break;
            }
            break;

        //////////////////////////show tracks//////////////////////////////////
        case 400:
            foreach (Title title in dicLevel_1[lastLevel_0 + "" + lastLevel_1])
            {
                tracks.Add(Track.LoadTargetFileLine("files", "Trajectory_1", title.lineNumber));
                Debug.Log(title.name);
            }
            flow = 999;
            break;

        ////////////////////////just wait////////////////////////////////
        case 999:
            break;

        default:
            break;
        }
    }
コード例 #2
0
    public static void main(string[] args)
    {
        MouseTest m = new MouseTest();

        m.Clicked += new MouseDevice.ButtonClickedHandler <Control, MouseEventArgs>(m_Clicked);
    }