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); }
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); } }
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()); } }
//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); } }
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); }
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); }
//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); }
public override bool IsSolid(Block.Direction direction, bool forCollision = false) { return(false); }
public override bool IsSolid(Block.Direction direction) { return(false); }
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); }