Exemple #1
0
        public void Draw(ITexture t, float x, float y, float rotation, float scale)
        {
            _render_surface.StartRender(false);
            Engine.Screen2DImmediate.ACTION_Begin2D();
            int white = Engine.Gl.RGBA(1, 1, 1, 1);

// T00 slow!
//			Engine.Screen2DImmediate.DRAW_TextureRotated( t.ID, x, y, t.Width*scale, t.Height*scale, rotation, 0, 0, 1, 1, white, white, white, white );
            Engine.Screen2DImmediate.DRAW_Texture(t.ID, x, y, x + Constants.terrainPieceTextureWidth, y + Constants.terrainPieceTextureWidth, white, white, white, white, 0, 0, 1, 1);
            Engine.Screen2DImmediate.ACTION_End2D();
            _render_surface.EndRender();
        }
        private void Main_Loop()
        {
            // Okay, we start the main loop here. We are going to loop over
            // and over until the user click on the "Quit" button and by this,
            // change the value of DoLoop to false.

            // We loop all of this until the DoLoop isn't True.
            while (DoLoop == true)
            {
                // Let us the capacity to use buttons of the form.
                System.Windows.Forms.Application.DoEvents();

                // New : We moved the movement code in an other sub to make
                // the code clearer.
                Check_Input();

                if (InputEngine.IsKeyPressed(CONST_TV_KEY.TV_KEY_Z))
                {
                    Scene.SetRenderMode(CONST_TV_RENDERMODE.TV_LINE);
                }
                else
                {
                    Scene.SetRenderMode(CONST_TV_RENDERMODE.TV_SOLID);
                }

                // New : We moved the checking of maximum camera "look at" and
                // also the camera movement smoothing in an other sub too.
                Check_Movement();

                //render surfaces before tv3d.clear or you get funkey results
                RenderSurf1.StartRender(false);
                Atmos.Atmosphere_Render();
                //Land.Render();
                RenderSurf1.EndRender();
                RenderSurf2.StartRender(false);
                Atmos.Atmosphere_Render();
                //Land.Render();
                RenderSurf2.EndRender();

                // Clear the the last frame.
                TV.Clear(false);

                // New : if we are below the waterheight, this means the we are
                // underwater. To give a cool underwater effect, we will add fog.
                // If we are over the ground, then don't add the fog but render
                // the lens flare.

                /*
                 * if (sngPositionY < sngWaterHeight)
                 * {
                 *  //' Render a blue fog to simulate under water.
                 *  Atmos.Fog_Enable(true);
                 *  Atmos.Fog_SetColor(0f, 0.4f, 0.5f);
                 *  Atmos.Fog_SetParameters(0f, 0f, 0.01f);
                 *  Atmos.Fog_SetType(CONST_TV_FOG.TV_FOG_EXP, CONST_TV_FOGTYPE.TV_FOGTYPE_RANGE);
                 *  Atmos.LensFlare_Enable(false);
                 * }
                 * else
                 * {*/
                // New : we have to render the lens flare.
                Atmos.LensFlare_Enable(true);
                Atmos.Fog_Enable(false);

                /*Atmos.Fog_Enable(true);
                 * Atmos.Fog_SetColor(1, 1, 1);
                 * Atmos.Fog_SetParameters(50f, 100f, 0.01f);
                 * Atmos.Fog_SetType(CONST_TV_FOG.TV_FOG_LINEAR, CONST_TV_FOGTYPE.TV_FOGTYPE_VERTEX);*/
                //}

                // New have to render the sky, the sun and lens flares
                Atmos.Atmosphere_Render();

                // New : we have to render the landscape.
                //Land.Render();
                WMap.Render();
                //Scene.RenderAll(false);

                // We render all the 3D objects contained in the scene.
                //Scene.RenderAllMeshes(true);

                // We display everything that we have rendered
                TV.RenderToScreen();

                WorldPosition PlayerPos = WMap.GetPlayerPosition();
                GlobalVars.GameForm.Text = "Pos:" + sngPositionX + " (" + PlayerPos.TileX + ");" + sngPositionY + ";" + sngPositionZ + " (" + PlayerPos.TileZ + ") + (" + PlayerPos.TilePosX + ";" + PlayerPos.TilePosY + ";" + PlayerPos.TilePosZ + ")";
                //GlobalVars.GameForm.Text = Scene.GetTriangleNumber().ToString();
            }

            // We ask to quit.
            this.Quit();
        }