public void Draw(GraphicsDevice graphicsDevice, Effect ef) { if (vertexCollection == null) { Load(); } RasterizerState rs = new RasterizerState(); rs.CullMode = CullMode.CullClockwiseFace; rs.FillMode = FillMode.Solid; graphicsDevice.RasterizerState = rs; if (Position.X > 0 && Position.Y > 0) { Rotation += new Vector3(0, 0.025f, 0); foreach (EffectPass pass in ef.CurrentTechnique.Passes) { ef.Parameters["xTexture"].SetValue(ContentContainer.GetObjectFromContainer <Texture2D>("Spawn")); ef.Parameters["xWorld"].SetValue(Matrix.CreateScale(8) * Matrix.CreateFromYawPitchRoll(Rotation.Y, 0, 0) * Matrix.CreateTranslation(new Vector3(this.Position.X, 1f + (((float)Math.Sin(Rotation.Y)) / 5f), this.Position.Y))); pass.Apply(); graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, vertexCollection, 0, vertexCollection.Count() / 3, VertexPosTexNormal.VertexDeclaration); } } }
private void RecalculateTitlePaths() { for (int i = 0; i < TileElements.Length; i += 6) { VertexPosTexNormal[] quadElements = TileElements.Skip(i).Take(6).ToArray(); int[] pattern = { quadElements[0].Taken, (quadElements[1].Taken == 0? quadElements[4].Taken: quadElements[1].Taken), (quadElements[2].Taken == 0 ? quadElements[3].Taken : quadElements[2].Taken), quadElements[5].Taken }; TileElement stg1 = TileSheetData.TileElements.Where(x => x.Groups.Any(y => y.Pattern.SequenceEqual(pattern))).FirstOrDefault(); if (stg1 != null) { ElementsGroup texture2Put = stg1.Groups.Where(x => x.Pattern.SequenceEqual(pattern)).FirstOrDefault(); if (texture2Put != null) { int value; using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) { byte[] randomNumber = new byte[4];//4 for int32 rng.GetBytes(randomNumber); value = BitConverter.ToInt32(randomNumber, 0); } int indexRand = new Random(value).Next((texture2Put.Positions.Count <= 1 ? 1 : texture2Put.Positions.Count)); float uvX = (float)texture2Put.Positions[indexRand].X / (ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Width); float uvY = (float)texture2Put.Positions[indexRand].Y / (ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Height); float uvX2 = ((float)texture2Put.Positions[indexRand].X / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Width) + ((float)TileSheetData.TileElementWeight / ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Width); float uvY2 = ((float)texture2Put.Positions[indexRand].Y / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Height) - ((float)TileSheetData.TileElementHeight / ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Height); VertexPosTexNormal temp = TileElements[i]; temp.texCoord = new Vector2(uvX, uvY); TileElements[i] = temp; temp = TileElements[i + 1]; temp.texCoord = new Vector2(uvX, uvY2); TileElements[i + 1] = temp; temp = TileElements[i + 2]; temp.texCoord = new Vector2(uvX2, uvY); TileElements[i + 2] = temp; temp = TileElements[i + 3]; temp.texCoord = new Vector2(uvX2, uvY); TileElements[i + 3] = temp; temp = TileElements[i + 4]; temp.texCoord = new Vector2(uvX, uvY2); TileElements[i + 4] = temp; temp = TileElements[i + 5]; temp.texCoord = new Vector2(uvX2, uvY2); TileElements[i + 5] = temp; } } } }
public void Draw(GraphicsDevice graphicsDevice, Effect ef) { foreach (EffectPass pass in ef.CurrentTechnique.Passes) { ef.Parameters["xTexture"].SetValue(ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name)); ef.Parameters["xWorld"].SetValue(Matrix.Identity); pass.Apply(); graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, TileElements.ToArray(), 0, TileElements.Count() / 3, VertexPosTexNormal.VertexDeclaration); } }
public void LoadMapData(int terrainWidth, int terrainHeight, float terrainZ, int r) { ElementsGroup element = TileSheetData.TileElements.Where(x => x.Groups.Any(z => z.Name == "Default")).FirstOrDefault().Groups.Where(y => y.Name == "Default").FirstOrDefault(); int TableIterator = 0; for (int x = 0; x < terrainWidth; x += 1) { for (int y = 0; y < terrainHeight; y += 1) { int value; using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider()) { byte[] randomNumber = new byte[4];//4 for int32 rng.GetBytes(randomNumber); value = BitConverter.ToInt32(randomNumber, 0); } int indexRand = new Random(value).Next(element.Positions.Count); float uvX = (float)element.Positions[indexRand].X / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Width; float uvY = (float)element.Positions[indexRand].Y / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Height; float uvX2 = ((float)element.Positions[indexRand].X / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Width) + ((float)TileSheetData.TileElementWeight / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Width); float uvY2 = ((float)element.Positions[indexRand].Y / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Height) + ((float)TileSheetData.TileElementHeight / (float)ContentContainer.GetObjectFromContainer <Texture2D>(TileSheetData.Name).Height); VertexPosTexNormal _temp = new VertexPosTexNormal(new Vector3(x, terrainZ, y) * r, new Vector2(uvX, uvY), new Vector3(0, 1, 0)); TileElements[TableIterator] = (_temp); TableIterator++; _temp = new VertexPosTexNormal(new Vector3(x, terrainZ, y + 1) * r, new Vector2(uvX, uvY2), new Vector3(0, 1, 0)); TileElements[TableIterator] = (_temp); TableIterator++; _temp = new VertexPosTexNormal(new Vector3(x + 1, terrainZ, y) * r, new Vector2(uvX2, uvY), new Vector3(0, 1, 0)); TileElements[TableIterator] = (_temp); TableIterator++; _temp = new VertexPosTexNormal(new Vector3(x + 1, terrainZ, y) * r, new Vector2(uvX2, uvY), new Vector3(0, 1, 0)); TileElements[TableIterator] = (_temp); TableIterator++; _temp = new VertexPosTexNormal(new Vector3(x, terrainZ, y + 1) * r, new Vector2(uvX, uvY2), new Vector3(0, 1, 0)); TileElements[TableIterator] = (_temp); TableIterator++; _temp = new VertexPosTexNormal(new Vector3(x + 1, terrainZ, y + 1) * r, new Vector2(uvX2, uvY2), new Vector3(0, 1, 0)); TileElements[TableIterator] = (_temp); TableIterator++; } } }
public void Draw(GraphicsDevice graphicsDevice, Effect ef) { foreach (ModelMesh mesh in ContentContainer.GetObjectFromContainer <Model>("Bullet").Meshes) { foreach (BasicEffect effect in mesh.Effects) { effect.World = Matrix.CreateScale(0.5f) * Matrix.CreateFromYawPitchRoll(MathHelper.ToRadians(Rotation.X), MathHelper.ToRadians(Rotation.Y), MathHelper.ToRadians(Rotation.Z)) * Matrix.CreateTranslation(Position.X, 0, Position.Y); effect.View = Director.InstanceDirector.Camera.ViewMatrix; effect.Projection = Director.InstanceDirector.Camera.ProjectionMatrix; effect.LightingEnabled = true; } mesh.Draw(); } }
public void Draw(GraphicsDevice graphicsDevice, Effect ef) { if (vertexCollection == null) { Load(); } Rotation += new Vector3(0, 0.025f, 0); foreach (EffectPass pass in ef.CurrentTechnique.Passes) { ef.Parameters["xTexture"].SetValue(ContentContainer.GetObjectFromContainer <Texture2D>("Finish")); ef.Parameters["xWorld"].SetValue(Matrix.CreateScale(Scale) * Matrix.CreateFromYawPitchRoll(Rotation.Y, Rotation.X, Rotation.Z) * Matrix.CreateTranslation(new Vector3(this.Position.X, 0.5f + (((float)Math.Sin(Rotation.Y)) / 3.0f), this.Position.Y))); pass.Apply(); graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, vertexCollection, 0, vertexCollection.Count() / 3, VertexPosTexNormal.VertexDeclaration); } }