public CellsDividedSceneRenderer(ContentManager contentManager, Scene scene)
            : base(contentManager)
        {
            SceneContent = scene;

             effect = Content.Load<Effect>("effect2d");
             effect.CurrentTechnique = effect.Techniques["Basic"];

             infoPanel = new TextInfoPanel(Content);
             AddSubRenderer(infoPanel);

             projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, Device.Viewport.AspectRatio,
            Config.Instance.Rendering.NearClippingDistance, Config.Instance.Rendering.FarClippingDistance);

             selectedGridCell = new Point(SceneContent.Grid.GridRows / 2, SceneContent.Grid.GridColumns / 2);

             Mouse.SetPosition(Device.Viewport.Width / 2, Device.Viewport.Height / 2);
             oldMouseState = Mouse.GetState();
        }
        public WaterRenderer(ContentManager contentManager, Scene scene, Camera camera)
            : base(contentManager)
        {
            effect = Content.Load<Effect>("water");
             bumpTexture = Content.Load<Texture2D>("water_texture");

             bumpTexture.GenerateMipMaps(TextureFilter.Anisotropic);
             this.camera = camera;

             var vertices = new VertexPositionTexture[6 * scene.Water.WaterQuads.Count];
             int idx = 0;
             foreach (var quad in scene.Water.WaterQuads)
             {
            vertices[idx++] = new VertexPositionTexture(new Vector3(quad.Xmin, quad.Level, -quad.Ymin),
               new Vector2(quad.Xmin, -quad.Ymin) / WaterTextureCoordsDivisor);
            vertices[idx++] = new VertexPositionTexture(new Vector3(quad.Xmax, quad.Level, -quad.Ymin),
               new Vector2(quad.Xmax, -quad.Ymin) / WaterTextureCoordsDivisor);
            vertices[idx++] = new VertexPositionTexture(new Vector3(quad.Xmin, quad.Level, -quad.Ymax),
               new Vector2(quad.Xmin, -quad.Ymax) / WaterTextureCoordsDivisor);

            vertices[idx++] = new VertexPositionTexture(new Vector3(quad.Xmax, quad.Level, -quad.Ymin),
               new Vector2(quad.Xmax, -quad.Ymin) / WaterTextureCoordsDivisor);
            vertices[idx++] = new VertexPositionTexture(new Vector3(quad.Xmax, quad.Level, -quad.Ymax),
               new Vector2(quad.Xmax, -quad.Ymax) / WaterTextureCoordsDivisor);
            vertices[idx++] = new VertexPositionTexture(new Vector3(quad.Xmin, quad.Level, -quad.Ymax),
               new Vector2(quad.Xmin, -quad.Ymax) / WaterTextureCoordsDivisor);
             }

             vertexBuffer = new VertexBuffer(Device, vertices.Length * VertexPositionTexture.SizeInBytes, BufferUsage.None);
             vertexBuffer.SetData(vertices);
             vertexDeclaration = new VertexDeclaration(Device, VertexPositionTexture.VertexElements);
             primitivesToDraw = scene.Water.WaterQuads.Count * 2;

             projectionMatrix = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, Device.Viewport.AspectRatio,
            Config.Instance.Rendering.NearClippingDistance, Config.Instance.Rendering.FarClippingDistance);
        }
 public SceneRenderer3D(ContentManager contentManager, Scene scene)
     : base(contentManager)
 {
     SceneContent = scene;
      Initialize();
 }