示例#1
0
    public IEnumerator Deserialize(string path) //scn deserializer Created by skorakora (Daniel Skorski)
    {
        Editor_canvas_main editor_Canvas_Main = canvas.GetComponent <Editor_canvas_main>();
        long       LocalLoaderPosition        = 0;
        int        counter = 0;
        FileStream file    = new FileStream(path, FileMode.Open, FileAccess.Read);

        Globals.SCNLoaderInstanceCounter++;
        SceneryFileSize = file.Length + SceneryFileSize;
        string token;

        while (true)
        {
            counter++;
            if (counter == 100)
            {
                float progress;
                long  filePositionChange;

                counter             = 0;
                filePositionChange  = file.Position - LocalLoaderPosition;
                LoaderPosition      = filePositionChange + LoaderPosition;
                LocalLoaderPosition = filePositionChange + LocalLoaderPosition;
                progress            = Convert.ToSingle((Convert.ToSingle(LoaderPosition) / Convert.ToSingle(SceneryFileSize)) * 100);
                editor_Canvas_Main.SetProgress(progress / 100);
                Debug.Log(progress + "%");
                yield return(null);
            }
            token = parser.GetToken(file);
            if (token == "atmo")
            {
                Deserialize_Atmo(file);
            }
            else if (token == "camera")
            {
                Deserialize_Camera(file);
            }
            else if (token == "config")
            {
                Deserialize_Config(file);
            }
            else if (token == "description")
            {
                Deserialize_Description(file);
            }
            else if (token == "event")
            {
                Deserialize_Event(file);
            }
            else if (token == "FirstInit")
            {
                Deserialize_FirstInit(file);
            }
            else if (token == "include")
            {
                Deserialize_Include(file);
            }
            else if (token == "light")
            {
                Deserialize_Light(file);
            }
            else if (token == "lua")
            {
                Deserialize_Lua(file);
            }
            else if (token == "node")
            {
                Deserialize_Node(file);
            }
            else if (token == "origin")
            {
                Deserialize_Origin(file);
            }
            else if (token == "rotate")
            {
                Deserialize_Rotate(file);
            }
            else if (token == "sky")
            {
                Deserialize_Sky(file);
            }
            else if (token == "test")
            {
                Deserialize_Test(file);
            }
            else if (token == "time")
            {
                Deserialize_Time(file);
            }
            else if (token == "trainset")
            {
                Deserialize_Trainset(file);
            }
            else if (token == null)
            {
                break;
            }
            else if (token.StartsWith("//"))
            {
                //todo - wklepać to do parsera
                int _char;
                while (true)
                {
                    _char = file.ReadByte();
                    if (_char == -1)
                    {
                        break;
                    }
                    if (_char == 13)
                    {
                        _char = file.ReadByte();
                        if (_char == 10)
                        {
                            break;
                        }
                        break;
                    }
                }
            }
            else
            {
                Debug.Log("ERROR: unknown function: " + token);
            }
        }

        file.Close();
        Globals.SCNLoaderInstanceCounter--;
    }
 void Start()
 {
     editor_Canvas_Main = canvas.GetComponent <Editor_canvas_main>();
 }