Ejemplo n.º 1
0
    public IEnumerator Load(World.Data world)
    {
        ActionProgressBar.UpdateProgress("Loading Map Prefabs", 0f);
        yield return(null);

        yield return(null);

        Stopwatch sw = Stopwatch.StartNew();

        for (int i = 0; i < world.prefabData.Count; i++)
        {
            if (sw.Elapsed.TotalSeconds > 1f || i == 0 || i == world.prefabData.Count - 1)
            {
                ActionProgressBar.UpdateProgress("Loading Map Prefabs", (float)world.prefabData.Count / (float)i);
                yield return(null);

                yield return(null);

                sw.Reset();
            }

            ProtoBuf.PrefabData prefabData = world.prefabData[i];

            CreatePrefab(StringPool.Get(prefabData.id), prefabData.category, prefabData.position, prefabData.rotation, prefabData.scale);
        }

        sw.Stop();
    }
Ejemplo n.º 2
0
    private IEnumerator LoadMap(World.Data world)
    {
        yield return(EditorCoroutineUtility.StartCoroutine(terrainManager.Load(world), this));

        yield return(EditorCoroutineUtility.StartCoroutine(prefabManager.Load(world), this));

        yield return(EditorCoroutineUtility.StartCoroutine(pathManager.Load(world), this));
    }
Ejemplo n.º 3
0
    public IEnumerator CreateNew(int size, int splat, int biome)
    {
        yield return(EditorCoroutineUtility.StartCoroutine(Cleanup(), this));

        ActionProgressBar.UpdateProgress("Creating New World Data...", 0f);
        yield return(null);

        yield return(null);

        world = World.NewDataFromSize(size, splat, biome);

        EditorCoroutineUtility.StartCoroutine(LoadMap(world), this);

        ActionProgressBar.Close();

        Debug.Log("World Loaded!");
    }
Ejemplo n.º 4
0
    private IEnumerator LoadMap(string filename)
    {
        yield return(EditorCoroutineUtility.StartCoroutine(Cleanup(), this));

        WorldSerialization blob = new WorldSerialization();

        ActionProgressBar.UpdateProgress("Loading Map...", 0f);
        yield return(null);

        yield return(null);

        blob.Load(filename);

        world = World.WorldToTerrain(blob);

        yield return(EditorCoroutineUtility.StartCoroutine(LoadMap(world), this));

        ActionProgressBar.Close();

        Debug.Log("World Loaded!");
    }
Ejemplo n.º 5
0
    public IEnumerator Load(World.Data world)
    {
        ActionProgressBar.UpdateProgress("Loading Map Prefabs", 0f);
        yield return(null);

        yield return(null);

        Stopwatch sw = Stopwatch.StartNew();

        if (Parent == null)
        {
            FindOrCreateParent();
        }

        for (int i = 0; i < world.pathData.Count; i++)
        {
            if (sw.Elapsed.TotalSeconds > 1f || i == 0 || i == world.pathData.Count - 1)
            {
                ActionProgressBar.UpdateProgress("Loading Map Paths", (float)world.pathData.Count / (float)i);
                yield return(null);

                yield return(null);

                sw.Reset();
            }

            ProtoBuf.PathData serializedData = world.pathData[i];

            PathData pathData = new GameObject(serializedData.name).AddComponent <PathData>();

            pathData.transform.SetParent(Parent);

            pathData.Set(serializedData);
        }

        sw.Stop();
    }
Ejemplo n.º 6
0
    public IEnumerator Load(World.Data world)
    {
        ActionProgressBar.UpdateProgress("Loading Terrain", 0f);
        yield return(null);

        yield return(null);

        Splat    = new SplatMap(world.splatMap);
        Alpha    = new AlphaMap(world.alphaMap);
        Biome    = new BiomeMap(world.biomeMap);
        Topology = new TopologyMap(world.topologyMap);
        Water    = new WaterMap(world.waterMap);

        TerrainData terrainData = new TerrainData();

        terrainData.alphamapResolution  = Mathf.Clamp(Mathf.NextPowerOfTwo((int)(world.size.x * 0.50f)), 16, 2048);
        terrainData.baseMapResolution   = Mathf.NextPowerOfTwo((int)((float)(world.size.x) * 0.01f));
        terrainData.heightmapResolution = Mathf.NextPowerOfTwo((int)((float)(world.size.x) * 0.5f)) + 1;

        terrainData.size = world.size;

        terrainData.SetHeights(0, 0, world.landHeightMap);

        Terrain = Terrain.CreateTerrainGameObject(terrainData).GetComponent <Terrain>();

        Terrain.name = Terrain.tag = "Terrain";

        Terrain.gameObject.layer = 8;

        Terrain.transform.position = -0.5f * terrainData.size;

        Terrain.gameObject.AddComponent <PositionLock>();

        SetSplatMaps(PaintType.Splat);

        CreateWaterPlane(world.size.x);
    }