Exemplo n.º 1
0
    public virtual Vector2[] FaceUVs(Block.Direction direction)
    {
        Vector2[]  UVs       = new Vector2[4];
        Block.Tile tilePos   = TexturePosition(direction);
        float      precision = 0.001f;

        //ONLY WORKS FOR THIS WEIRD TEXTURE PACK BY KENNEY
        if (!upsideDown)
        {
            //bottom right
            UVs[0] = new Vector2(tileXSize * tilePos.x + tileXSize - 2.0f / width - precision, tileYSize * tilePos.y + 2.0f / width + precision);
            //top right
            UVs[1] = new Vector2(tileXSize * tilePos.x + tileXSize - 2.0f / width - precision, tileYSize * tilePos.y + tileYSize - precision);
            //top left
            UVs[2] = new Vector2(tileXSize * tilePos.x + 2.0f / width + precision, tileYSize * tilePos.y + tileYSize - precision);
            //bottom left
            UVs[3] = new Vector2(tileXSize * tilePos.x + 2.0f / width + precision, tileYSize * tilePos.y + 2.0f / width + precision);
        }
        else
        {
            //bottom right
            UVs[1] = new Vector2(tileXSize * tilePos.x + tileXSize - 2.0f / width - precision, tileYSize * tilePos.y + 2.0f / width + precision);
            //top right
            UVs[0] = new Vector2(tileXSize * tilePos.x + tileXSize - 2.0f / width - precision, tileYSize * tilePos.y + tileYSize - precision);
            //top left
            UVs[3] = new Vector2(tileXSize * tilePos.x + 2.0f / width + precision, tileYSize * tilePos.y + tileYSize - precision);
            //bottom left
            UVs[2] = new Vector2(tileXSize * tilePos.x + 2.0f / width + precision, tileYSize * tilePos.y + 2.0f / width + precision);
        }


        return(UVs);
    }
Exemplo n.º 2
0
    public void SpawnPane(World3 block, Block.Direction side, Color color)
    {
        template.colors.Clear();

        for (int i = 1; i < template.vertices.Count; i++)
        {
            template.colors.Add(color);
        }
    }
Exemplo n.º 3
0
    internal static void AddBlock(Vector3 roundedPosition, Block block, Block.Direction direction = Block.Direction.NORTH, bool isBreak = false, bool Adding = false)
    {
        if (block.GetType().Equals(typeof(Tools)) || block.GetType().Equals(typeof(SpecialBlocks)))
        {
            return;
        }

        if (roundedPosition.y >= Chunk.ChunkHeight * World.ChunksInYAxis)
        {
            return;
        }

        int   ChunkPosX = Mathf.FloorToInt(roundedPosition.x / Chunk.ChunkWidth);
        int   ChunkPosY = Mathf.FloorToInt(roundedPosition.y / Chunk.ChunkHeight);
        int   ChunkPosZ = Mathf.FloorToInt(roundedPosition.z / Chunk.ChunkWidth);
        Chunk currentchunk;

        try
        {
            currentchunk = World._Instance.GetChunk(ChunkPosX, ChunkPosY, ChunkPosZ);

            if (currentchunk.GetType().Equals(typeof(ErroredChunk)))
            {
                Debug.Log("Current chunk is errored " + ":" + roundedPosition.ToString());
                return;
            }

            int x = (int)(roundedPosition.x - ChunkPosX * Chunk.ChunkWidth);
            int y = (int)(roundedPosition.y - ChunkPosY * Chunk.ChunkHeight);
            int z = (int)(roundedPosition.z - ChunkPosZ * Chunk.ChunkWidth);

            if (isBreak)
            {
                //GameObject c = Transform.Instantiate(Resources.Load<GameObject>("Prefabs/Cube"), roundedPosition + new Vector3(0.5f, 0.5f, 0.5f), Quaternion.identity) as GameObject;
                //c.GetComponent<CubeHandler>().ID = currentchunk.GetBlock(x, y, z).GetID();
                //Debug.Log(roundedPosition.ToString());
                PlayerStatus.AddBlock(currentchunk.GetBlock(x, y, z).GetID());
                Player.PStatus.Points += 1;
            }

            currentchunk.SetBlock(x, y, z, block);
        }
        catch (System.Exception e)
        {
            Debug.Log(e.Message.ToString());
        }
    }
Exemplo n.º 4
0
        //Handles the collision and if no obstruction, we move the block
        //Also handles the touchdown scenario (played block is finished)
        public async void Move(Block.Direction dir)
        {
            //Creates the virtual block to check for potential collisions
            Block MovedBlock = CurrentBlock.CreateMoved(dir);

            //Checks for obstructed place
            if (MovedBlock.CheckCollision(Map))
            {
                //Down collision is a special case: touchdown
                if (dir == Block.Direction.Down)
                {
                    //Handles touchdown event
                    Touchdown();
                }
            }
            else
            {
                //No obstruction -> can move the block
                CurrentBlock.Move(dir);
            }
        }
Exemplo n.º 5
0
    public LivingPart SetChildPart(Block.Direction dir, Block blockType)
    {
        if (dir == Block.Direction.north)
        {
            norht = new LivingPart(new WorldPos(pos.x + 1, pos.y, pos.z), blockType);
            return(this.norht);
        }

        if (dir == Block.Direction.south)
        {
            south = new LivingPart(new WorldPos(pos.x - 1, pos.y, pos.z), blockType);
            return(this.south);
        }

        if (dir == Block.Direction.east)
        {
            east = new LivingPart(new WorldPos(pos.x, pos.y, pos.z + 1), blockType);
            return(this.east);
        }

        if (dir == Block.Direction.west)
        {
            west = new LivingPart(new WorldPos(pos.x, pos.y, pos.z - 1), blockType);
            return(this.west);
        }

        if (dir == Block.Direction.up)
        {
            up = new LivingPart(new WorldPos(pos.x, pos.y + 1, pos.z), blockType);
            return(this.up);
        }

        if (dir == Block.Direction.down)
        {
            down = new LivingPart(new WorldPos(pos.x, pos.y - 1, pos.z), blockType);
            return(this.down);
        }

        return(null);
    }
Exemplo n.º 6
0
    public static Vector2[] GetFaceUVs(ushort blockId, Block.Direction direction, int width, int height)
    {
        Vector2[] uvs;
        int       sector = (direction == Block.Direction.up || direction == Block.Direction.north || direction == Block.Direction.west) ? 0 : 1;
        int       hash   = GetUVHash(GetTileCode(blockId), sector, width, height);

        UVLookup.TryGetValue(hash, out uvs);
        if (uvs != null)
        {
            return(uvs);
        }

        Block block;

        BlockLookup.TryGetValue(blockId, out block);
        if (block != null)
        {
            uvs = BlockLookup[blockId].FaceUVs(direction, width, height);
            UVLookup.TryAdd(hash, uvs);
        }
        return(uvs);
    }
Exemplo n.º 7
0
    //checks if the block is solid in that direction
    public virtual bool IsSolid(Block.Direction direction)
    {
        switch (direction)
        {
        case Block.Direction.north:
            return(true);

        case Block.Direction.east:
            return(true);

        case Block.Direction.south:
            return(true);

        case Block.Direction.west:
            return(true);

        case Block.Direction.up:
            return(true);

        case Block.Direction.down:
            return(true);
        }
        return(false);
    }
Exemplo n.º 8
0
 public override bool IsSolid(Block.Direction direction, bool forCollision = false)
 {
     return(false);
 }
Exemplo n.º 9
0
 public override bool IsSolid(Block.Direction direction)
 {
     return(false);
 }
Exemplo n.º 10
0
    public virtual Block.Tile TexturePosition(Block.Direction direction)
    {
        Block.Tile tile = new Block.Tile();

        switch (blockType)
        {
        case "Stone":
            Block blockStone = new Block();
            blockStone.upsideDown = upsideDown;
            tile = blockStone.TexturePosition(direction);
            return(tile);

        case "Grass":
            BlockGrass blockGrass = new BlockGrass();
            blockGrass.upsideDown = upsideDown;
            tile = blockGrass.TexturePosition(direction);
            return(tile);

        case "BrownWood":
            BlockBrownWood blockBrownWood = new BlockBrownWood();
            blockBrownWood.upsideDown = upsideDown;
            tile = blockBrownWood.TexturePosition(direction);
            return(tile);

        case "Lava":
            BlockLava blockLava = new BlockLava();
            blockLava.upsideDown = upsideDown;
            tile = blockLava.TexturePosition(direction);
            return(tile);

        case "GreenLeaves":
            BlockGreenLeaves blockGreenLeaves = new BlockGreenLeaves();
            blockGreenLeaves.upsideDown = upsideDown;
            tile = blockGreenLeaves.TexturePosition(direction);
            return(tile);

        case "OrangeLeaves":
            BlockOrangeLeaves blockOrangeLeaves = new BlockOrangeLeaves();
            blockOrangeLeaves.upsideDown = upsideDown;
            tile = blockOrangeLeaves.TexturePosition(direction);
            return(tile);

        case "StoneSnow":
            BlockStoneSnow blockStoneSnow = new BlockStoneSnow();
            blockStoneSnow.upsideDown = upsideDown;
            tile = blockStoneSnow.TexturePosition(direction);
            return(tile);

        case "Ice":
            BlockIce blockIce = new BlockIce();
            blockIce.upsideDown = upsideDown;
            tile = blockIce.TexturePosition(direction);
            return(tile);

        case "Glass":
            BlockGlass blockGlass = new BlockGlass();
            blockGlass.upsideDown = upsideDown;
            tile = blockGlass.TexturePosition(direction);
            return(tile);

        case "WhiteWood":
            BlockWhiteWood blockWhiteWood = new BlockWhiteWood();
            blockWhiteWood.upsideDown = upsideDown;
            tile = blockWhiteWood.TexturePosition(direction);
            return(tile);

        case "Apple":
            BlockApple blockApple = new BlockApple();
            blockApple.upsideDown = upsideDown;
            tile = blockApple.TexturePosition(direction);
            return(tile);

        case "Alphabet":
            BlockAlphabet blockAlphabet = new BlockAlphabet();
            blockAlphabet.upsideDown = upsideDown;
            tile = blockAlphabet.TexturePosition(direction);
            return(tile);

        case "Amazon":
            BlockAmazon blockAmazon = new BlockAmazon();
            blockAmazon.upsideDown = upsideDown;
            tile = blockAmazon.TexturePosition(direction);
            return(tile);

        case "Facebook":
            BlockFacebook blockFacebook = new BlockFacebook();
            blockFacebook.upsideDown = upsideDown;
            tile = blockFacebook.TexturePosition(direction);
            return(tile);

        case "IBM":
            BlockIBM blockIBM = new BlockIBM();
            blockIBM.upsideDown = upsideDown;
            tile = blockIBM.TexturePosition(direction);
            return(tile);

        case "Intel":
            BlockIntel blockIntel = new BlockIntel();
            blockIntel.upsideDown = upsideDown;
            tile = blockIntel.TexturePosition(direction);
            return(tile);

        case "Microsoft":
            BlockMicrosoft blockMicrosoft = new BlockMicrosoft();
            blockMicrosoft.upsideDown = upsideDown;
            tile = blockMicrosoft.TexturePosition(direction);
            return(tile);

        case "Netflix":
            BlockNetflix blockNetflix = new BlockNetflix();
            blockNetflix.upsideDown = upsideDown;
            tile = blockNetflix.TexturePosition(direction);
            return(tile);

        case "Twitter":
            BlockTwitter blockTwitter = new BlockTwitter();
            blockTwitter.upsideDown = upsideDown;
            tile = blockTwitter.TexturePosition(direction);
            return(tile);

        case "Yahoo":
            BlockYahoo blockYahoo = new BlockYahoo();
            blockYahoo.upsideDown = upsideDown;
            tile = blockYahoo.TexturePosition(direction);
            return(tile);

        case "Leaves0":
            BlockLeaves0 blockLeaves0 = new BlockLeaves0();
            blockLeaves0.upsideDown = upsideDown;
            tile = blockLeaves0.TexturePosition(direction);
            return(tile);

        case "Leaves1":
            BlockLeaves1 blockLeaves1 = new BlockLeaves1();
            blockLeaves1.upsideDown = upsideDown;
            tile = blockLeaves1.TexturePosition(direction);
            return(tile);

        case "Leaves2":
            BlockLeaves2 blockLeaves2 = new BlockLeaves2();
            blockLeaves2.upsideDown = upsideDown;
            tile = blockLeaves2.TexturePosition(direction);
            return(tile);

        case "Leaves3":
            BlockLeaves3 blockLeaves3 = new BlockLeaves3();
            blockLeaves3.upsideDown = upsideDown;
            tile = blockLeaves3.TexturePosition(direction);
            return(tile);

        case "Leaves4":
            BlockLeaves4 blockLeaves4 = new BlockLeaves4();
            blockLeaves4.upsideDown = upsideDown;
            tile = blockLeaves4.TexturePosition(direction);
            return(tile);
        }
        //just in case it's not registered
        Block blockAir = new BlockAir();

        tile = blockAir.TexturePosition(direction);
        return(tile);
    }