예제 #1
0
        public void CreateMinimap(ADT.IADTFile file)
        {
            string fileName = "";
            if (!gMinimapDir.getMinimapEntry(file.Continent, (int)file.IndexX, (int)file.IndexY, ref fileName))
                return;

            Video.ShaderCollection.TerrainShader.SetValue("minimapMode", true);
            var oldCamera = Game.GameManager.GraphicsThread.GraphicsManager.Camera;
            var oldTarget = Game.GameManager.GraphicsThread.GraphicsManager.Device.GetRenderTarget(0);
            Game.GameManager.GraphicsThread.GraphicsManager.Device.SetRenderTarget(0, mRenderSurface);
            Game.GameManager.GraphicsThread.GraphicsManager.Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, System.Drawing.Color.CornflowerBlue, 1, 0);

            var newCamera = new Video.OrthogonalCamera(1, 1, false);
            newCamera.ViewFrustum.PassAllTests = true;
            newCamera.PreventWorldUpdate = true;
            Game.GameManager.GraphicsThread.GraphicsManager.Camera = newCamera;
            Game.GameManager.GraphicsThread.GraphicsManager.Camera.SetPosition(new Vector3(Utils.Metrics.Tilesize / 2.0f, Utils.Metrics.Tilesize / 2.0f, 1000.0f), true);

            file.RenderADT(Matrix.Translation(-file.IndexX * Utils.Metrics.Tilesize + Utils.Metrics.MidPoint, -file.IndexY * Utils.Metrics.Tilesize + Utils.Metrics.MidPoint, 0));
            Game.GameManager.GraphicsThread.GraphicsManager.Device.SetRenderTarget(0, oldTarget);

            Game.GameManager.WorldManager.FogStart = 530.0f;
            Game.GameManager.GraphicsThread.GraphicsManager.Camera = oldCamera;

            Texture saveTexture = new Texture(mRenderSurface.Device, 256, 256, 1, Usage.None, Format.X8R8G8B8, Pool.Managed);
            Surface surf = saveTexture.GetSurfaceLevel(0);
            Surface.FromSurface(surf, mRenderSurface, Filter.Box, 0);
            surf.Dispose();

            Video.TextureConverter.SaveTextureAsBlp(Video.TextureConverter.BlpCompression.Dxt3, saveTexture, fileName);
            saveTexture.Dispose();
            Video.ShaderCollection.TerrainShader.SetValue("minimapMode", false);
        }
예제 #2
0
        public void CreateMinimap(ADT.IADTFile file)
        {
            string fileName = "";

            if (!gMinimapDir.getMinimapEntry(file.Continent, (int)file.IndexX, (int)file.IndexY, ref fileName))
            {
                return;
            }

            Video.ShaderCollection.TerrainShader.SetValue("minimapMode", true);
            var oldCamera = Game.GameManager.GraphicsThread.GraphicsManager.Camera;
            var oldTarget = Game.GameManager.GraphicsThread.GraphicsManager.Device.GetRenderTarget(0);

            Game.GameManager.GraphicsThread.GraphicsManager.Device.SetRenderTarget(0, mRenderSurface);
            Game.GameManager.GraphicsThread.GraphicsManager.Device.Clear(ClearFlags.Target | ClearFlags.ZBuffer, System.Drawing.Color.CornflowerBlue, 1, 0);

            var newCamera = new Video.OrthogonalCamera(1, 1, false);

            newCamera.ViewFrustum.PassAllTests = true;
            newCamera.PreventWorldUpdate       = true;
            Game.GameManager.GraphicsThread.GraphicsManager.Camera = newCamera;
            Game.GameManager.GraphicsThread.GraphicsManager.Camera.SetPosition(new Vector3(Utils.Metrics.Tilesize / 2.0f, Utils.Metrics.Tilesize / 2.0f, 1000.0f), true);

            file.RenderADT(Matrix.Translation(-file.IndexX * Utils.Metrics.Tilesize + Utils.Metrics.MidPoint, -file.IndexY * Utils.Metrics.Tilesize + Utils.Metrics.MidPoint, 0));
            Game.GameManager.GraphicsThread.GraphicsManager.Device.SetRenderTarget(0, oldTarget);

            Game.GameManager.WorldManager.FogStart = 530.0f;
            Game.GameManager.GraphicsThread.GraphicsManager.Camera = oldCamera;

            Texture saveTexture = new Texture(mRenderSurface.Device, 256, 256, 1, Usage.None, Format.X8R8G8B8, Pool.Managed);
            Surface surf        = saveTexture.GetSurfaceLevel(0);

            Surface.FromSurface(surf, mRenderSurface, Filter.Box, 0);
            surf.Dispose();

            Video.TextureConverter.SaveTextureAsBlp(Video.TextureConverter.BlpCompression.Dxt3, saveTexture, fileName);
            saveTexture.Dispose();
            Video.ShaderCollection.TerrainShader.SetValue("minimapMode", false);
        }