internal void RenderPass2() { p.StartSection("pass1"); t.ResetTransformation(); foreach (ChunkRenderer pass2ChunkRenderer in pass2ChunkRenderers) { pass2ChunkRenderer.RenderPass2(); } p.EndSection(); }
private void RenderCrossHair() { t.ResetTransformation(); t.StartDrawingLines(); Vector4 c = new Vector4(1, 1, 1, 1); Vector4 center = new Vector4(TheGame.Instance.Width / 2, TheGame.Instance.Height / 2, 0, 1); float size = 15; t.AddVertexWithColor(new Vector4(center.X - size, center.Y, 0, 1), c); t.AddVertexWithColor(new Vector4(center.X + size, center.Y, 0, 1), c); t.AddVertexWithColor(new Vector4(center.X, center.Y - size, 0, 1), c); t.AddVertexWithColor(new Vector4(center.X, center.Y + size, 0, 1), c); t.Draw(); }
internal void Initialize() { t.ResetTransformation(); LoadAllTileTextures(); // define blocks DefineBlock(BlockRepository.DirtWithGrass.Id, "grass_top", "grass_side", "dirt"); DefineBlock(BlockRepository.Dirt.Id, "dirt"); DefineBlock(BlockRepository.Stone.Id, "stone"); DefineBlock(BlockRepository.Wood.Id, "log_oak_top", "log_oak", "log_oak_top"); DefineBlock(BlockRepository.Leaf.Id, "leaves_oak_opaque"); DefineBlock(BlockRepository.Brick.Id, "brick"); DefineBlock(BlockRepository.Sand.Id, "sand"); DefineBlock(BlockRepository.BedRock.Id, "bedrock"); DefineBlock(BlockRepository.Diamond.Id, "diamond_ore"); DefineBlock(BlockRepository.Plank.Id, "planks_oak"); DefineBlock(BlockRepository.CobbleStone.Id, "cobblestone"); DefineBlock(BlockRepository.TallGrass.Id, "tallgrass"); DefineBlock(BlockRepository.FarmlandDry.Id, "farmland_dry", "dirt", "dirt"); DefineBlock(BlockRepository.FarmlandWet.Id, "farmland_wet", "dirt", "dirt"); DefineBlock(BlockRepository.Wheat.Id, "wheat_stage_5"); DefineBlock(BlockRepository.CraftingTable.Id, "crafting_table_front", "crafting_table_side", "crafting_table_top", "planks_oak"); DefineBlock(BlockRepository.FurnaceOff.Id, "furnace_front_off", "furnace_side", "furnace_top", "cobblestone"); DefineBlock(BlockRepository.FurnaceOn.Id, "furnace_front_on", "furnace_side", "furnace_top", "cobblestone"); DefineBlock(BlockRepository.Glass.Id, "glass"); DefineBlock(BlockRepository.Water.Id, "water"); // stage textures DefineStage(BlockRepository.Wheat.Id, "wheat_stage_0"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_1"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_2"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_3"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_4"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_5"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_6"); DefineStage(BlockRepository.Wheat.Id, "wheat_stage_7"); MakeWave(BlockRepository.Water.Id); MakeWave(BlockRepository.TallGrass.Id); MakeWaveForStage(BlockRepository.Wheat.Id); // Define destroy blocks... DefineDestroyAndSelectionBlocks(); // define items BuildItemVertexBuffer(ItemRepository.Stick.Id, "stick"); BuildItemVertexBuffer(ItemRepository.StoneAxe.Id, "stone_axe"); BuildItemVertexBuffer(ItemRepository.StoneHoe.Id, "stone_hoe"); BuildItemVertexBuffer(ItemRepository.StonePickAxe.Id, "stone_pickaxe"); BuildItemVertexBuffer(ItemRepository.StoneShovel.Id, "stone_shovel"); BuildItemVertexBuffer(ItemRepository.StoneSword.Id, "stone_sword"); BuildItemVertexBuffer(ItemRepository.SeedsWheat.Id, "seeds_wheat"); BuildItemVertexBuffer(ItemRepository.Wheat.Id, "wheat"); BuildItemVertexBuffer(ItemRepository.Bread.Id, "bread"); BuildItemVertexBuffer(ItemRepository.Coal.Id, "coal"); }
internal virtual void Render(float partialStep) { t.ResetTransformation(); Vector3 position = Interpolate.Vector(entity.PrevPosition, entity.Position, partialStep); if (entity != World.Instance.Player) { t.StartDrawingColoredQuads(); Camera.Instance.World = Matrix.Multiply(Matrix.RotationYawPitchRoll(entity.Yaw, 0, 0), Matrix.Translation(position)); t.Draw(buffer); } if (typeof(Player) == entity.GetType()) { Player p = World.Instance.Player; Vector3 pos = p.Position + p.EyePosition; int blockId = World.Instance.GetBlock((int)pos.X, (int)pos.Y, (int)pos.Z); if (blockId == BlockRepository.Water.Id) { t.StartDrawingColoredQuads(); Camera.Instance.World = Matrix.Identity; Camera.Instance.World = Matrix.Multiply(Camera.Instance.World, Matrix.Translation(new Vector3(-0.5f, -0.5f, -1.2f))); Camera.Instance.World = Matrix.Multiply(Camera.Instance.World, Matrix.RotationYawPitchRoll(p.Yaw - (float)Math.PI, -p.Pitch, 0)); Camera.Instance.World = Matrix.Multiply(Camera.Instance.World, Matrix.Translation(pos)); Vector3 normal = new Vector3(0, 0, 1); Vector4 c1 = new Vector4(0, 0, 1, 0.5f); t.AddVertexWithColor(new Vector4(0f, 0f, 1f, 1.0f), c1, normal); t.AddVertexWithColor(new Vector4(0f, 1f, 1f, 1.0f), c1, normal); t.AddVertexWithColor(new Vector4(1f, 1f, 1f, 1.0f), c1, normal); t.AddVertexWithColor(new Vector4(1f, 0f, 1f, 1.0f), c1, normal); t.Draw(); } } if (typeof(Player) == entity.GetType() && World.Instance.Player.DestroyProgress > 0) { t.StartDrawingTiledQuads2(); t.Translate.X = World.Instance.Player.BlockAttackPosition.X + 0.5f; t.Translate.Y = World.Instance.Player.BlockAttackPosition.Y + 0.5f; t.Translate.Z = World.Instance.Player.BlockAttackPosition.Z + 0.5f; float s = 1.005f; t.Scale = new Vector3(s, s, s); t.Draw(TileTextures.Instance.GetDestroyBlockVertexBuffer(World.Instance.Player.DestroyProgress)); } }
public void Render() { GenerateHealthBuffer(); GenerateHungerBuffer(); t.ResetTransformation(); float temp = (int)(TheGame.Instance.Width / (frameSize * 13f)); t.Scale = new Vector3(1, 1, 1) * temp; t.Translate = new Vector3(1, 0, 0) * (TheGame.Instance.Width - frameSize * 9f * temp) / 2f; t.Translate.Y = 0; // Draw slot 0-8 in inventory int[] order = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; order[8] = player.SelectedSlotId; order[player.SelectedSlotId] = 8; foreach (int i in order) { if (i == player.SelectedSlotId) { continue; } DrawItem(i); } DrawItem(player.SelectedSlotId); // Draw hearts t.Scale = new Vector3(1, 1, 1) * temp; t.Translate = new Vector3( (TheGame.Instance.Width - frameSize * 9f * temp) / 2f, (frameSize + 8) * temp, 0); t.StartDrawingAlphaTexturedQuads("icons"); t.Draw(healthBuffer); t.StartDrawingAlphaTexturedQuads("icons"); t.Draw(hungerBuffer); }
internal bool Render(bool forceCachedRendering) { // check if this is inside frustum RenewLease(); bool rebuildOccured = false; if ((pass1VertexBuffer.Disposed || chunk.IsDirty) && !forceCachedRendering) { // pass1 VertexBuffer.Dispose(ref pass1VertexBuffer); VertexBuffer.Dispose(ref pass2VertexBuffer); chunk.IsDirty = true; // rebuild vertices for cunk BlockRenderer blockRenderer = new BlockRenderer(); PositionBlock startCorner; chunk.Position.GetMinCornerBlock(out startCorner); int minX = startCorner.X; int minY = startCorner.Y; int minZ = startCorner.Z; int maxX = startCorner.X + 16; int maxY = startCorner.Y + 16; int maxZ = startCorner.Z + 16; PositionBlock blockPos = new PositionBlock(0, 0, 0); List <PositionBlock> pass2Blocks = new List <PositionBlock>(); t.StartDrawingTiledQuads(); for (int x = 0; x < 16; x++) { for (int y = 0; y < 16; y++) { for (int z = 0; z < 16; z++) { blockPos.X = x; blockPos.Y = y; blockPos.Z = z; Block block = Block.FromId(chunk.SafeGetLocalBlock(x, y, z)); if (!block.IsTransparent) { blockRenderer.RenderBlock(blockPos, chunk); } else if (block.Id != BlockRepository.Air.Id) { pass2Blocks.Add(blockPos); } } } } pass1VertexBuffer = t.GetVertexBuffer(); // generate vertex buffer for pass2 t.StartDrawingTiledQuadsPass2(); foreach (PositionBlock pass2BlockPos in pass2Blocks) { blockRenderer.RenderBlock(pass2BlockPos, chunk); } pass2VertexBuffer = t.GetVertexBuffer(); chunk.IsDirty = false; rebuildOccured = true; } // draw chunk if drawbuffer has been calculated t.ResetTransformation(); if (pass1VertexBuffer.Vertices != null) { t.StartDrawingTiledQuads(); t.Draw(pass1VertexBuffer); } // draw entities in chunk foreach (EntityStack stack in chunk.StackEntities) { int entitiesToDraw = stack.Count > 2 ? 2 : stack.Count; if (stack.AsBlock != null) { t.Translate = stack.Position; t.Scale = new Vector3(0.5f, 0.5f, 0.5f); t.Rotate = new Vector3(stack.Pitch, stack.Yaw, 0); for (int i = 0; i < entitiesToDraw; i++) { t.StartDrawingTiledQuads(); t.Draw(TileTextures.Instance.GetBlockVertexBuffer(stack.Id)); t.Translate += new Vector3(0.05f, 0.05f, 0.05f); } } else if (stack.AsItem != null) { t.Translate = stack.Position; t.Scale = new Vector3(0.5f, 0.5f, 0.5f); for (int i = 0; i < entitiesToDraw; i++) { Player p = World.Instance.Player; t.Rotate = new Vector3(-p.Pitch, p.Yaw + (float)Math.PI, 0); t.StartDrawingTiledQuadsPass2(); t.Draw(TileTextures.Instance.GetItemVertexBuffer(stack.Id)); t.Translate += new Vector3(0.2f, 0.2f, 0.2f); } } } return(rebuildOccured); }