Example #1
0
        public SkyFace(string sName, SkyBox.Face face)
        {
            m_sName = sName;

            // create the vertices for the box
            m_Corners = new CustomVertex.PositionNormalTextured[4];

            switch (face)
            {
            case SkyBox.Face.Top:
                m_Corners[0].X  = -500.0f;
                m_Corners[0].Y  = 500.0f;
                m_Corners[0].Z  = -500.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 1.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = -1.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = 500.0f;
                m_Corners[1].Y  = 500.0f;
                m_Corners[1].Z  = -500.0f;
                m_Corners[1].Tu = 0.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = -1.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = -500.0f;
                m_Corners[2].Y  = 500.0f;
                m_Corners[2].Z  = 500.0f;
                m_Corners[2].Tu = 1.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = -1.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = 500.0f;
                m_Corners[3].Y  = 500.0f;
                m_Corners[3].Z  = 500.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 0.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = -1.0f;
                m_Corners[3].Nz = 0.0f;
                break;

            case SkyBox.Face.Bottom:
                m_Corners[0].X  = -500.0f;    // nw
                m_Corners[0].Y  = -500.0f;
                m_Corners[0].Z  = 500.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = 1.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = 500.0f;    // ne
                m_Corners[1].Y  = -500.0f;
                m_Corners[1].Z  = 500.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 1.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = 1.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = -500.0f;    // sw
                m_Corners[2].Y  = -500.0f;
                m_Corners[2].Z  = -500.0f;
                m_Corners[2].Tu = 1.0f;
                m_Corners[2].Tv = 0.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = 1.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = 500.0f;    // se
                m_Corners[3].Y  = -500.0f;
                m_Corners[3].Z  = -500.0f;
                m_Corners[3].Tu = 0.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = 1.0f;
                m_Corners[3].Nz = 0.0f;
                break;

            case SkyBox.Face.Front:
                m_Corners[0].X  = -500.0f;    // upper nw
                m_Corners[0].Y  = 500.0f;
                m_Corners[0].Z  = 500.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = -1.0f;
                m_Corners[1].X  = 500.0f;    // upper ne
                m_Corners[1].Y  = 500.0f;
                m_Corners[1].Z  = 500.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = -1.0f;
                m_Corners[2].X  = -500.0f;    // lower nw
                m_Corners[2].Y  = -500.0f;
                m_Corners[2].Z  = 500.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = -1.0f;
                m_Corners[3].X  = 500.0f;    // lower ne
                m_Corners[3].Y  = -500.0f;
                m_Corners[3].Z  = 500.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = -1.0f;
                break;

            case SkyBox.Face.Right:
                m_Corners[0].X  = 500.0f;    // upper ne
                m_Corners[0].Y  = 500.0f;
                m_Corners[0].Z  = 500.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = -1.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = 500.0f;    // upper se
                m_Corners[1].Y  = 500.0f;
                m_Corners[1].Z  = -500.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = -1.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = 500.0f;    // lower ne
                m_Corners[2].Y  = -500.0f;
                m_Corners[2].Z  = 500.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = -1.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = 500.0f;    // lower se
                m_Corners[3].Y  = -500.0f;
                m_Corners[3].Z  = -500.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = -1.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = 0.0f;
                break;

            case SkyBox.Face.Back:
                m_Corners[0].X  = 500.0f;    // upper se
                m_Corners[0].Y  = 500.0f;
                m_Corners[0].Z  = -500.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = -1.0f;
                m_Corners[1].X  = -500.0f;    // upper sw
                m_Corners[1].Y  = 500.0f;
                m_Corners[1].Z  = -500.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = -1.0f;
                m_Corners[2].X  = 500.0f;    // lower se
                m_Corners[2].Y  = -500.0f;
                m_Corners[2].Z  = -500.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = -1.0f;
                m_Corners[3].X  = -500.0f;    // lower sw
                m_Corners[3].Y  = -500.0f;
                m_Corners[3].Z  = -500.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = -1.0f;
                break;

            case SkyBox.Face.Left:
                m_Corners[0].X  = -500.0f;    // upper south
                m_Corners[0].Y  = 500.0f;
                m_Corners[0].Z  = -500.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 1.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = -500.0f;    // upper north
                m_Corners[1].Y  = 500.0f;
                m_Corners[1].Z  = 500.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 1.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = -500.0f;    // lower south
                m_Corners[2].Y  = -500.0f;
                m_Corners[2].Z  = -500.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 1.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = -500.0f;    // lower north
                m_Corners[3].Y  = -500.0f;
                m_Corners[3].Z  = 500.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 1.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = 0.0f;
                break;
            }

            // load the texture for the face
            try
            {
                m_Image  = new Image(sName);
                m_bValid = true;
            }
            catch
            {
                Console.AddLine("Unable to create skybox texture for " + sName);
            }
        }
        public SkyFace(string sName, SkyBox.Face face)
        {
            m_sName = sName;

            // create the vertices for the box
            m_Corners = new CustomVertex.PositionNormalTextured[4];

            switch (face)
            {
            case SkyBox.Face.Top:
                m_Corners[0].X  = -100.0f;
                m_Corners[0].Y  = 100.0f;
                m_Corners[0].Z  = -100.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 1.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = -1.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = 100.0f;
                m_Corners[1].Y  = 100.0f;
                m_Corners[1].Z  = -100.0f;
                m_Corners[1].Tu = 0.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = -1.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = -100.0f;
                m_Corners[2].Y  = 100.0f;
                m_Corners[2].Z  = 100.0f;
                m_Corners[2].Tu = 1.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = -1.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = 100.0f;
                m_Corners[3].Y  = 100.0f;
                m_Corners[3].Z  = 100.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 0.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = -1.0f;
                m_Corners[3].Nz = 0.0f;
                break;

            case SkyBox.Face.Bottom:
                m_Corners[0].X  = -100.0f;                // nw
                m_Corners[0].Y  = -100.0f;
                m_Corners[0].Z  = 100.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = 1.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = 100.0f;                 // ne
                m_Corners[1].Y  = -100.0f;
                m_Corners[1].Z  = 100.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 1.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = 1.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = -100.0f;                // sw
                m_Corners[2].Y  = -100.0f;
                m_Corners[2].Z  = -100.0f;
                m_Corners[2].Tu = 1.0f;
                m_Corners[2].Tv = 0.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = 1.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = 100.0f;                 // se
                m_Corners[3].Y  = -100.0f;
                m_Corners[3].Z  = -100.0f;
                m_Corners[3].Tu = 0.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = 1.0f;
                m_Corners[3].Nz = 0.0f;
                break;

            case SkyBox.Face.Front:
                m_Corners[0].X  = -100.0f;                // upper nw
                m_Corners[0].Y  = 100.0f;
                m_Corners[0].Z  = 100.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = -1.0f;
                m_Corners[1].X  = 100.0f;                 // upper ne
                m_Corners[1].Y  = 100.0f;
                m_Corners[1].Z  = 100.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = -1.0f;
                m_Corners[2].X  = -100.0f;                // lower nw
                m_Corners[2].Y  = -100.0f;
                m_Corners[2].Z  = 100.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = -1.0f;
                m_Corners[3].X  = 100.0f;                 // lower ne
                m_Corners[3].Y  = -100.0f;
                m_Corners[3].Z  = 100.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = -1.0f;
                break;

            case SkyBox.Face.Right:
                m_Corners[0].X  = 100.0f;                // upper ne
                m_Corners[0].Y  = 100.0f;
                m_Corners[0].Z  = 100.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = -1.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = 100.0f;                 // upper se
                m_Corners[1].Y  = 100.0f;
                m_Corners[1].Z  = -100.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = -1.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = 100.0f;                 // lower ne
                m_Corners[2].Y  = -100.0f;
                m_Corners[2].Z  = 100.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = -1.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = 100.0f;                 // lower se
                m_Corners[3].Y  = -100.0f;
                m_Corners[3].Z  = -100.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = -1.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = 0.0f;
                break;

            case SkyBox.Face.Back:
                m_Corners[0].X  = 100.0f;                 // upper se
                m_Corners[0].Y  = 100.0f;
                m_Corners[0].Z  = -100.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 0.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = -1.0f;
                m_Corners[1].X  = -100.0f;                // upper sw
                m_Corners[1].Y  = 100.0f;
                m_Corners[1].Z  = -100.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 0.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = -1.0f;
                m_Corners[2].X  = 100.0f;                 // lower se
                m_Corners[2].Y  = -100.0f;
                m_Corners[2].Z  = -100.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 0.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = -1.0f;
                m_Corners[3].X  = -100.0f;                // lower sw
                m_Corners[3].Y  = -100.0f;
                m_Corners[3].Z  = -100.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 0.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = -1.0f;
                break;

            case SkyBox.Face.Left:
                m_Corners[0].X  = -100.0f;                // upper south
                m_Corners[0].Y  = 100.0f;
                m_Corners[0].Z  = -100.0f;
                m_Corners[0].Tu = 0.0f;
                m_Corners[0].Tv = 0.0f;
                m_Corners[0].Nx = 1.0f;
                m_Corners[0].Ny = 0.0f;
                m_Corners[0].Nz = 0.0f;
                m_Corners[1].X  = -100.0f;                // upper north
                m_Corners[1].Y  = 100.0f;
                m_Corners[1].Z  = 100.0f;
                m_Corners[1].Tu = 1.0f;
                m_Corners[1].Tv = 0.0f;
                m_Corners[1].Nx = 1.0f;
                m_Corners[1].Ny = 0.0f;
                m_Corners[1].Nz = 0.0f;
                m_Corners[2].X  = -100.0f;                // lower south
                m_Corners[2].Y  = -100.0f;
                m_Corners[2].Z  = -100.0f;
                m_Corners[2].Tu = 0.0f;
                m_Corners[2].Tv = 1.0f;
                m_Corners[2].Nx = 1.0f;
                m_Corners[2].Ny = 0.0f;
                m_Corners[2].Nz = 0.0f;
                m_Corners[3].X  = -100.0f;                // lower north
                m_Corners[3].Y  = -100.0f;
                m_Corners[3].Z  = 100.0f;
                m_Corners[3].Tu = 1.0f;
                m_Corners[3].Tv = 1.0f;
                m_Corners[3].Nx = 1.0f;
                m_Corners[3].Ny = 0.0f;
                m_Corners[3].Nz = 0.0f;
                break;
            }

            // load the texture for the face
            try
            {
                m_Texture = GraphicsUtility.CreateTexture(CGameEngine.Device3D, sName);
                m_bValid  = true;
            }
            catch
            {
                Console.AddLine("Unable to create skybox texture for " + sName);
            }

            // Create a quad for rendering the face
            m_VB = new VertexBuffer(typeof(CustomVertex.PositionNormalTextured), 4,
                                    CGameEngine.Device3D, Usage.WriteOnly, CustomVertex.PositionNormalTextured.Format,
                                    Pool.Default);

            m_VB.Created += new System.EventHandler(this.CreateQuad);
            CreateQuad(m_VB, null);
        }