Beispiel #1
0
    public void StartUp(VoxelMap map, WorldScriptableObject worldObject)
    {
        voxelMesh     = FindObjectOfType <VoxelMesh>();
        terrainNoise  = FindObjectOfType <TerrainNoise>();
        terrainMap    = FindObjectOfType <TerrainMap>();
        chunkCollider = FindObjectOfType <ChunkCollider>();

        recycleableChunks     = map.recycleableChunks;
        regionResolution      = map.regionResolution;
        chunkResolution       = map.chunkResolution;
        voxelResolution       = map.voxelResolution;
        viewDistance          = map.viewDistance;
        chunks                = map.chunks;
        existingChunks        = map.existingChunks;
        useVoxelReferences    = map.useVoxelReferences;
        colliderRadius        = map.colliderRadius;
        useColliders          = map.useColliders;
        player                = map.player;
        chunkSaveLoadManager  = map.chunkSaveLoadManager;
        worldScriptableObject = worldObject;

        playerRb = player.GetComponent <Rigidbody2D>();

        terrainNoise.seed = worldScriptableObject.seed;
        terrainNoise.Startup(voxelResolution, chunkResolution);
        voxelMesh.Startup(voxelResolution, chunkResolution, viewDistance, useColliders, colliderRadius);

        InvokeRepeating(nameof(UpdateMap), 0.0f, terrainMap.updateInterval);
    }
Beispiel #2
0
    public void Startup(VoxelMap map)
    {
        var blockTypeNames = System.Enum.GetNames(typeof(BlockType));

        foreach (var blockType in blockTypeNames)
        {
            FillTypeNames.Add(blockType);
        }

        voxelResolution = map.voxelResolution;
        chunkResolution = map.chunkResolution;
        viewDistance    = map.viewDistance;
        existingChunks  = map.existingChunks;
        voxelMap        = map;
        mainCamera      = Camera.main;
        terrainMap      = FindObjectOfType <TerrainMap>();

        voxelMesh     = FindObjectOfType <VoxelMesh>();
        chunkCollider = FindObjectOfType <ChunkCollider>();

        box = gameObject.GetComponent <BoxCollider>();
        if (box != null)
        {
            DestroyImmediate(box);
        }

        box        = gameObject.AddComponent <BoxCollider>();
        box.center = Vector3.one * (voxelResolution / 2f);
        box.size   = new Vector3((chunkResolution - viewDistance) * voxelResolution,
                                 (chunkResolution - viewDistance) * voxelResolution);
    }
Beispiel #3
0
    public void StartUp(VoxelMap map)
    {
        voxelMap   = map;
        mainCamera = Camera.main;

        terrainMap    = FindObjectOfType <TerrainMap>();
        voxelMesh     = FindObjectOfType <VoxelMesh>();
        chunkCollider = FindObjectOfType <ChunkCollider>();
        worldManager  = FindObjectOfType <WorldManager>();
        uiHotBar      = FindObjectOfType <UI_HotBar>();

        var blockCollection = BlockManager.Read();

        if (worldManager.creativeMode)
        {
            foreach (var block in blockCollection.blocks)
            {
                fillTypeNames.Add(block.blockType.ToString());
            }
        }

        boxCollider = gameObject.GetComponent <BoxCollider>();
        if (boxCollider != null)
        {
            DestroyImmediate(boxCollider);
        }

        boxCollider      = gameObject.AddComponent <BoxCollider>();
        boxCollider.size = new Vector3((voxelMap.chunkResolution - voxelMap.viewDistance) * voxelMap.voxelResolution,
                                       (voxelMap.chunkResolution - voxelMap.viewDistance) * voxelMap.voxelResolution);
    }
Beispiel #4
0
    void Awake()
    {
        _renderer = GetComponent <MeshRenderer>();
        _filter   = GetComponent <MeshFilter>();
        _collider = GetComponent <ChunkCollider>();

        _collider.initialize(Chunk.tileDimension);

        _mesh = new Mesh();
        _filter.sharedMesh = _mesh;
    }
Beispiel #5
0
    public void StartUp(VoxelMap map)
    {
        voxelMesh            = FindObjectOfType <VoxelMesh>();
        terrainNoise         = FindObjectOfType <TerrainNoise>();
        terrainMap           = FindObjectOfType <TerrainMap>();
        chunkCollider        = FindObjectOfType <ChunkCollider>();
        chunkObjectSpawner   = FindObjectOfType <ChunkObjectSpawner>();
        chunkSaveLoadManager = FindObjectOfType <ChunkSaveLoadManager>();
        playerRb             = FindObjectOfType <PlayerController>().GetComponent <Rigidbody2D>();

        voxelMap = map;

        terrainNoise.seed = voxelMap.worldScriptableObject.seed;
        terrainNoise.StartUp(voxelMap.voxelResolution, voxelMap.chunkResolution);
        voxelMesh.StartUp(voxelMap.voxelResolution, voxelMap.chunkResolution, voxelMap.viewDistance, useColliders, colliderRadius);

        InvokeRepeating(nameof(UpdateMap), 0.0f, terrainMap.updateInterval);
    }
 // Player collides with a level chunk collider
 public void playerTrigger(string transitionToChunk, ChunkCollider chunkCollider)
 {
     createNextChunk();
 }
Beispiel #7
0
    private Chunk ParseLevelData(LevelObject levelObject, int xOffset, int yOffset)
    {
        // Debug.Log("started parsing level data");

        List <string> data = levelObject.Data;

        int x = xOffset;
        int y = data.Count + yOffset;

        Chunk chunk = new Chunk();

        chunk.Type = levelObject.Type;

        ChunkCollider tempChunkCollider = SpawnChunkCollider(levelObject, hubXOffset + xOffset, hubYOffset + yOffset);

        tempChunkCollider.parentChunk = chunk;
        chunk.chunkCollider           = tempChunkCollider;

        SpawnFullFloor(levelObject, hubXOffset + xOffset, hubYOffset + yOffset);


        List <List <GameObject> > chunkColumns = new List <List <GameObject> >();

        foreach (string row in data)
        {
            List <GameObject> chunkRow = new List <GameObject>();

            char[] columns = row.ToCharArray();

            x = xOffset;

            foreach (char column in columns)
            {
                GameObject permanentTile = null;

                GameObject temporaryItem = null;

                bool isObstacle = true;

                if (column == GameAssetCodes.wall)
                {
                    permanentTile = SpawnRandomWall(x, y);
                }
                else if (column == GameAssetCodes.blankRandom)
                {
                    permanentTile = SpawnWallWithProbability(x, y, 1, 4);
                }
                else if (column == GameAssetCodes.optionalPath)
                {
                    permanentTile = SpawnWallWithProbability(x, y, 1, 5);
                }
                else if (column == GameAssetCodes.optionalWall)
                {
                    permanentTile = SpawnWallWithProbability(x, y, 3, 4);
                }
                else
                {
                    //permanentTile = SpawnEmptyFloor(x, y);
                    isObstacle = false;
                }

                if (!isObstacle)
                {
                    // if space is free, spawn items

                    if (column == GameAssetCodes.centerLane)
                    {
                        temporaryItem = SpawnRandomItemWithProbability(x, y, 1, 4);
                    }
                    else if (column == GameAssetCodes.enemy)
                    {
                        temporaryItem = SpawnRandomEnemy(x, y);
                    }
                    else if (column == GameAssetCodes.spawnPoint)
                    {
                        temporaryItem = SpawnSpawnPoint(x, y);
                    }
                    else if (column == GameAssetCodes.door)
                    {
                        permanentTile = SpawnDoor(x, y);
                    }
                    else if (column == GameAssetCodes.portal)
                    {
                        //permanentTile = SpawnPortal(x, y);
                    }
                    else if (column == GameAssetCodes.coin)
                    {
                        temporaryItem = SpawnCoin(x, y);
                    }
                    else if (column == GameAssetCodes.treasure)
                    {
                        temporaryItem = SpawnTreasure(x, y);
                    }
                    else if (column == GameAssetCodes.goldBlock)
                    {
                        temporaryItem = SpawnGoldBlock(x, y);
                    }
                    else
                    {
                        temporaryItem = SpawnRandomEntityWithProbability(x, y, 1, 5);
                    }
                }

                if (permanentTile != null)
                {
                    chunkRow.Add(permanentTile);
                }

                x++;
            }

            if (chunkRow.Count > 0)
            {
                chunkColumns.Add(chunkRow);
            }

            y--;
        }

        chunk.Tiles = chunkColumns;

        return(chunk);
    }