Beispiel #1
0
 public TChunk(int index_x, int index_y, Vector3 origin, Vector3 center, ref GameObject terrain_chunk, ref GameObject ws_chunk, ref GenerateTerrainChunk generator)
 {
     this.index_x       = index_x;
     this.index_y       = index_y;
     this.origin        = origin;
     this.center        = center;
     this.terrain_chunk = terrain_chunk;
     this.ws_chunk      = ws_chunk;
     this.generator     = generator;
 }
Beispiel #2
0
    public TC_HashTable(int elements, int num_entries, int world_size_x, int world_size_y)
    {
        this.elements        = elements;
        this.elems_per_entry = elements / num_entries + 1;
        this.num_entries     = num_entries;
        this.world_size_x    = world_size_x;
        this.world_size_y    = world_size_y;
        this.indexes_saved   = new List <Vector2> ();

        dummy1         = new GameObject();
        dummy2         = dummy1.AddComponent <GenerateTerrainChunk> ();
        dummy2.isValid = false;

        hash_table = new List <TChunk> [num_entries];
        for (int i = 0; i < num_entries; ++i)
        {
            hash_table[i] = new List <TChunk> ();
        }
    }
Beispiel #3
0
    // object initialization
    public void init()
    {
        TerrainGenerator  = gameObject.GetComponent <GenerateTerrain> ();
        SceneryObject_Ref = SceneryObject_Prefab;

        slope_height = tile_size * slope_factor;
        chunk_size_x = side_tile_count * tile_size;
        chunk_size_y = side_tile_count * tile_size;
        origin       = gameObject.transform.position;


        MapLoader mloader = new MapLoader();

        mloader.openFile(texture_size_x, texture_size_y, heightmap_path);
        List <int[, ]> lmaps = mloader.getLevelMapList(level_count, level_zero_grayscale, side_tile_count, out terrain_chunks_x, out terrain_chunks_y);

        mloader = new MapLoader();
        mloader.openFile(texture_size_x, texture_size_y, tileTypeMap_path);
        List <TileType[, ]> ttmaps = mloader.getTileTypeMapList(side_tile_count);

        WorldLevelMaps    = setWorldLevelMaps(ref lmaps, terrain_chunks_x, terrain_chunks_y);
        WorldTileTypeMaps = setWorldTileTypeMaps(ref ttmaps, terrain_chunks_x, terrain_chunks_y);

        initSceneryObjPool();
        initPathObjPool();
        loaded_chunks = new TC_HashTable(terrain_chunks_x * terrain_chunks_y, terrain_chunks_x, terrain_chunks_x, terrain_chunks_y);

        last_cam_position = Vector3.zero;


        TerrainChunks = new TChunk[terrain_chunks_y, terrain_chunks_x];

        for (int i = 0; i < terrain_chunks_y; ++i)
        {
            for (int j = 0; j < terrain_chunks_x; ++j)
            {
                int index_x = j;
                int index_y = i;

                List <int[]> neighbor_level_maps = getNeighborLevelMaps(index_x, index_y, ref WorldLevelMaps);

                Vector3 chunk_origin = origin;
                chunk_origin.x += chunk_size_x * index_x;
                chunk_origin.z -= chunk_size_y * index_y;
                Vector3 chunk_center = new Vector3(chunk_origin.x + chunk_size_x * 0.5f, 0, chunk_origin.z - chunk_size_y * 0.5f);

                GameObject new_terrain_chunk = (GameObject)Instantiate(TerrainChunk_Prefab);
                new_terrain_chunk.transform.parent = transform;
                GenerateTerrainChunk generator = new_terrain_chunk.GetComponent <GenerateTerrainChunk> ();
                generator.generate(index_x, index_y, tile_size, slope_height, side_tile_count, chunk_origin, chunk_center, ref WorldLevelMaps, WorldTileTypeMaps, terrain_chunks_x, terrain_chunks_y, textures_x, textures_y, ref neighbor_level_maps, new_terrain_chunk.GetComponent <MeshFilter> ());

                GameObject new_ws_chunk = (GameObject)Instantiate(WaterSurfaceChunk_Prefab);
                new_ws_chunk.transform.parent   = new_terrain_chunk.transform;
                new_ws_chunk.transform.position = new_terrain_chunk.transform.position;
                generator.generateWaterSurface(new_ws_chunk);


                TChunk terrain_chunk = new TChunk(index_x, index_y, chunk_origin, chunk_center, ref new_terrain_chunk, ref new_ws_chunk, ref generator);
                TerrainChunks[index_y, index_x] = terrain_chunk;
            }
        }
    }