public void Initialize() { _manager = ResourceManager.Instance.GetManagerForPlanet(planet.Id); State = WorldState.Running; _chunkLoader.UpdatePosition(0, 0, 0); }
public override PhysicalProperties GetProperties(IPlanetResourceManager manager, int x, int y, int z) { return new PhysicalProperties() { Density = 0.3f, FractureToughness = 0.3f, Granularity = 0.9f, Hardness = 0.1f }; }
public override PhysicalProperties GetProperties(IPlanetResourceManager manager, int x, int y, int z) { return(new PhysicalProperties() { Density = 2.5f, FractureToughness = 0.1f, Granularity = 0.1f, Hardness = 0.9f }); }
public void SetChunk(IPlanetResourceManager manager, int x, int y, int z) { var newPosition = new Index3(x, y, z); if (_manager == manager && newPosition == ChunkPosition) { return; } _manager = manager; ChunkPosition = newPosition; chunk = null; loaded = false; }
public override int GetEastTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z); switch (orientation) { case OrientationFlags.SideWest: case OrientationFlags.SideEast: return 0; case OrientationFlags.SideSouth: case OrientationFlags.SideNorth: case OrientationFlags.SideBottom: case OrientationFlags.SideTop: default: return 1; } }
public override int GetNorthTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { OrientationFlags orientation = (OrientationFlags)manager.GetBlockMeta(x, y, z); switch (orientation) { case OrientationFlags.SideSouth: case OrientationFlags.SideNorth: return(0); case OrientationFlags.SideWest: case OrientationFlags.SideEast: case OrientationFlags.SideBottom: case OrientationFlags.SideTop: default: return(1); } }
public virtual int GetEastTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { return(0); }
public virtual BoundingBox[] GetCollisionBoxes(IPlanetResourceManager manager, int x, int y, int z) { return(new[] { new BoundingBox(new Vector3(0, 0, 0), new Vector3(1, 1, 1)) }); }
public abstract PhysicalProperties GetProperties(IPlanetResourceManager manager, int x, int y, int z);
public void SetChunk(PlanetIndex3? index) { ChunkPosition = index; chunkLoaded = false; chunk = null; if (index != null) _manager = ResourceManager.Instance.GetManagerForPlanet(index.Value.Planet); else _manager = null; }
public override int GetBottomTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { return 1; }
public SceneControl(ScreenComponent manager, string style = "") : base(manager, style) { player = manager.Player; camera = manager.Camera; Manager = manager; simpleShader = manager.Game.Content.Load<Effect>("simple"); sunTexture = manager.Game.Content.Load<Texture2D>("Textures/sun"); List<Bitmap> bitmaps = new List<Bitmap>(); var definitions = DefinitionManager.GetBlockDefinitions(); foreach (var definition in definitions) bitmaps.AddRange(definition.Textures); int size = (int)Math.Ceiling(Math.Sqrt(bitmaps.Count)); Bitmap blocks = new Bitmap(size * TEXTURESIZE, size * TEXTURESIZE); using (Graphics g = Graphics.FromImage(blocks)) { int counter = 0; foreach (var bitmap in bitmaps) { int x = counter % size; int y = (int)(counter / size); g.DrawImage(bitmap, new System.Drawing.Rectangle(TEXTURESIZE * x, TEXTURESIZE * y, TEXTURESIZE, TEXTURESIZE)); counter++; } } using (MemoryStream stream = new MemoryStream()) { blocks.Save(stream, ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); blockTextures = Texture2D.FromStream(manager.GraphicsDevice, stream); } planet = ResourceManager.Instance.GetPlanet(0); _manager = ResourceManager.Instance.GetManagerForPlanet(planet.Id); chunkRenderer = new ChunkRenderer[ (int)Math.Pow(2, VIEWRANGE) * (int)Math.Pow(2, VIEWRANGE), planet.Size.Z]; for (int i = 0; i < chunkRenderer.GetLength(0); i++) for (int j = 0; j < chunkRenderer.GetLength(1); j++) chunkRenderer[i, j] = new ChunkRenderer(simpleShader, manager.GraphicsDevice, camera.Projection, blockTextures); // Entfernungsarray erzeugen //for (int x = -VIEWRANGE; x <= VIEWRANGE; x++) // for (int y = -VIEWRANGE; y <= VIEWRANGE; y++) // for (int z = 0; z <= planet.Size.Z; z++) // distances.Add(new Index3(x, y, z)); //distances = distances.OrderBy(d => d.LengthSquared()).ToList(); backgroundThread = new Thread(BackgroundLoop); backgroundThread.Priority = ThreadPriority.Lowest; backgroundThread.IsBackground = true; backgroundThread.Start(); selectionLines = new[] { new VertexPositionColor(new Vector3(-0.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), }; billboardVertices = new[] { new VertexPositionTexture(new Vector3(-0.5f, 0.5f, 0), new Vector2(0, 0)), new VertexPositionTexture(new Vector3(0.5f, 0.5f, 0), new Vector2(1, 0)), new VertexPositionTexture(new Vector3(-0.5f, -0.5f, 0), new Vector2(0, 1)), new VertexPositionTexture(new Vector3(0.5f, 0.5f, 0), new Vector2(1, 0)), new VertexPositionTexture(new Vector3(0.5f, -0.5f, 0), new Vector2(1, 1)), new VertexPositionTexture(new Vector3(-0.5f, -0.5f, 0), new Vector2(0, 1)), }; selectionIndeces = new short[] { 0, 1, 0, 2, 1, 3, 2, 3, 4, 5, 4, 6, 5, 7, 6, 7, 0, 4, 1, 5, 2, 6, 3, 7 }; sunEffect = new BasicEffect(manager.GraphicsDevice); sunEffect.TextureEnabled = true; selectionEffect = new BasicEffect(manager.GraphicsDevice); selectionEffect.VertexColorEnabled = true; MiniMapTexture = new RenderTarget2D(manager.GraphicsDevice, 128, 128, false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8); // , false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8, 0, RenderTargetUsage.PreserveContents); miniMapProjectionMatrix = Matrix.CreateOrthographic(128, 128, 1, 10000); }
public virtual bool IsWestSolidWall(IPlanetResourceManager manager, int x, int y, int z) { return true; }
public void SetChunk(IPlanetResourceManager manager, int x, int y, int z) { var newPosition = new Index3(x, y, z); if (_manager == manager && newPosition == ChunkPosition) return; _manager = manager; ChunkPosition = newPosition; chunk = null; loaded = false; }
public override bool IsWestSolidWall(IPlanetResourceManager manager, int x, int y, int z) { return false; }
public override int GetBottomTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { return(1); }
public SceneControl(ScreenComponent manager, string style = "") : base(manager, style) { player = manager.Player; camera = manager.Camera; Manager = manager; simpleShader = manager.Game.Content.Load <Effect>("simple"); sunTexture = manager.Game.Content.Load <Texture2D>("Textures/sun"); List <Bitmap> bitmaps = new List <Bitmap>(); var definitions = DefinitionManager.GetBlockDefinitions(); foreach (var definition in definitions) { bitmaps.AddRange(definition.Textures); } int size = (int)Math.Ceiling(Math.Sqrt(bitmaps.Count)); Bitmap blocks = new Bitmap(size * TEXTURESIZE, size * TEXTURESIZE); using (Graphics g = Graphics.FromImage(blocks)) { int counter = 0; foreach (var bitmap in bitmaps) { int x = counter % size; int y = (int)(counter / size); g.DrawImage(bitmap, new System.Drawing.Rectangle(TEXTURESIZE * x, TEXTURESIZE * y, TEXTURESIZE, TEXTURESIZE)); counter++; } } using (MemoryStream stream = new MemoryStream()) { blocks.Save(stream, ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); blockTextures = Texture2D.FromStream(manager.GraphicsDevice, stream); } planet = ResourceManager.Instance.GetPlanet(0); _manager = ResourceManager.Instance.GetManagerForPlanet(planet.Id); chunkRenderer = new ChunkRenderer[ (int)Math.Pow(2, VIEWRANGE) * (int)Math.Pow(2, VIEWRANGE), planet.Size.Z]; for (int i = 0; i < chunkRenderer.GetLength(0); i++) { for (int j = 0; j < chunkRenderer.GetLength(1); j++) { chunkRenderer[i, j] = new ChunkRenderer(simpleShader, manager.GraphicsDevice, camera.Projection, blockTextures); } } // Entfernungsarray erzeugen //for (int x = -VIEWRANGE; x <= VIEWRANGE; x++) // for (int y = -VIEWRANGE; y <= VIEWRANGE; y++) // for (int z = 0; z <= planet.Size.Z; z++) // distances.Add(new Index3(x, y, z)); //distances = distances.OrderBy(d => d.LengthSquared()).ToList(); backgroundThread = new Thread(BackgroundLoop); backgroundThread.Priority = ThreadPriority.Lowest; backgroundThread.IsBackground = true; backgroundThread.Start(); selectionLines = new[] { new VertexPositionColor(new Vector3(-0.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), }; billboardVertices = new[] { new VertexPositionTexture(new Vector3(-0.5f, 0.5f, 0), new Vector2(0, 0)), new VertexPositionTexture(new Vector3(0.5f, 0.5f, 0), new Vector2(1, 0)), new VertexPositionTexture(new Vector3(-0.5f, -0.5f, 0), new Vector2(0, 1)), new VertexPositionTexture(new Vector3(0.5f, 0.5f, 0), new Vector2(1, 0)), new VertexPositionTexture(new Vector3(0.5f, -0.5f, 0), new Vector2(1, 1)), new VertexPositionTexture(new Vector3(-0.5f, -0.5f, 0), new Vector2(0, 1)), }; selectionIndeces = new short[] { 0, 1, 0, 2, 1, 3, 2, 3, 4, 5, 4, 6, 5, 7, 6, 7, 0, 4, 1, 5, 2, 6, 3, 7 }; sunEffect = new BasicEffect(manager.GraphicsDevice); sunEffect.TextureEnabled = true; selectionEffect = new BasicEffect(manager.GraphicsDevice); selectionEffect.VertexColorEnabled = true; MiniMapTexture = new RenderTarget2D(manager.GraphicsDevice, 128, 128, false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8); // , false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8, 0, RenderTargetUsage.PreserveContents); miniMapProjectionMatrix = Matrix.CreateOrthographic(128, 128, 1, 10000); }
public virtual int GetSouthTextureRotation(IPlanetResourceManager manager, int x, int y, int z) { return(0); }
public virtual bool IsTopSolidWall(IPlanetResourceManager manager, int x, int y, int z) { return(true); }
public virtual BoundingBox[] GetCollisionBoxes(IPlanetResourceManager manager, int x, int y, int z) { return new[] { new BoundingBox(new Vector3(0, 0, 0), new Vector3(1, 1, 1)) }; }
public override int GetWestTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { return 2; }
public override bool IsEastSolidWall(IPlanetResourceManager manager, int x, int y, int z) { return(false); }
public virtual int GetTopTextureRotation(IPlanetResourceManager manager, int x, int y, int z) { return 0; }
public override int GetEastTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { return(2); }
public virtual int GetWestTextureIndex(IPlanetResourceManager manager, int x, int y, int z) { return 0; }
protected override void LoadContent() { List<Bitmap> bitmaps = new List<Bitmap>(); var definitions = BlockDefinitionManager.GetBlockDefinitions(); foreach (var definition in definitions) bitmaps.AddRange(definition.Textures); int size = (int)Math.Ceiling(Math.Sqrt(bitmaps.Count)); Bitmap blocks = new Bitmap(size * TEXTURESIZE, size * TEXTURESIZE); using (Graphics g = Graphics.FromImage(blocks)) { int counter = 0; foreach (var bitmap in bitmaps) { int x = counter % size; int y = (int)(counter / size); g.DrawImage(bitmap, new System.Drawing.Rectangle(TEXTURESIZE * x, TEXTURESIZE * y, TEXTURESIZE, TEXTURESIZE)); counter++; } } using (MemoryStream stream = new MemoryStream()) { blocks.Save(stream, ImageFormat.Png); stream.Seek(0, SeekOrigin.Begin); blockTextures = Texture2D.FromStream(GraphicsDevice, stream); } planet = ResourceManager.Instance.GetPlanet(0); _manager = ResourceManager.Instance.GetManagerForPlanet(planet.Id); chunkRenderer = new ChunkRenderer[ ((VIEWRANGE * 2) + 1) * ((VIEWRANGE * 2) + 1) * ((VIEWHEIGHT * 2) + 1)]; for (int i = 0; i < chunkRenderer.Length; i++) { chunkRenderer[i] = new ChunkRenderer(GraphicsDevice, camera.Projection, blockTextures); freeChunkRenderer.Enqueue(chunkRenderer[i]); } // Entfernungsarray erzeugen for (int x = -VIEWRANGE; x <= VIEWRANGE; x++) for (int y = -VIEWRANGE; y <= VIEWRANGE; y++) for (int z = -VIEWHEIGHT; z <= VIEWHEIGHT; z++) distances.Add(new Index3(x, y, z)); distances = distances.OrderBy(d => d.LengthSquared()).ToList(); backgroundThread = new Thread(BackgroundLoop); backgroundThread.Priority = ThreadPriority.Lowest; backgroundThread.IsBackground = true; backgroundThread.Start(); selectionLines = new[] { new VertexPositionColor(new Vector3(-0.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, +1.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, +1.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(-0.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), new VertexPositionColor(new Vector3(+1.001f, -0.001f, -0.001f), Microsoft.Xna.Framework.Color.Black * 0.5f), }; selectionIndeces = new short[] { 0, 1, 0, 2, 1, 3, 2, 3, 4, 5, 4, 6, 5, 7, 6, 7, 0, 4, 1, 5, 2, 6, 3, 7 }; selectionEffect = new BasicEffect(GraphicsDevice); selectionEffect.VertexColorEnabled = true; MiniMapTexture = new RenderTarget2D(GraphicsDevice, 128, 128, false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8); // , false, SurfaceFormat.Color, DepthFormat.Depth24Stencil8, 0, RenderTargetUsage.PreserveContents); miniMapProjectionMatrix = Matrix.CreateOrthographic(128, 128, 1, 10000); base.LoadContent(); }