public FluidSimulation1()
        {
            graphicsDeviceManager = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";

            fpsCounter = new FpsComponent(this);

            graphicsDeviceManager.PreferredBackBufferWidth = 1280;
            graphicsDeviceManager.PreferredBackBufferHeight = 1024;
            //graphics.PreferMultiSampling = true;
            graphicsDeviceManager.ApplyChanges();

            Camera = new Camera();
            Camera.AspectRatio = graphicsDeviceManager.PreferredBackBufferWidth / (float)graphicsDeviceManager.PreferredBackBufferHeight;

            Camera.Reset();

            Components.Add(fpsCounter);

            IsMouseVisible = true;
        }
        public void Draw(Camera camera, Matrix world, BasicEffect basicEffect)
        {
            if (this.isActive)
            {
                this.CreateMesh();

                if (this.NumTriangles > 0)
                {
                    basicEffect.Alpha = 1.0f;
                    basicEffect.DiffuseColor = new Vector3(0.18f, 0.81f, 1);

                    basicEffect.World = world;
                    basicEffect.View = camera.View;
                    basicEffect.Projection = camera.Projection;

                    basicEffect.EnableDefaultLighting();

                    // reset render states
                    graphicsDevice.RasterizerState = RasterizerState.CullClockwise;

                    foreach (EffectPass pass in basicEffect.CurrentTechnique.Passes)
                    {
                        pass.Apply();
                        this.graphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, this.localVertices, 0, this.NumTriangles);
                    }
                }
            }
        }