All pastes #415159 Raw Edit

Untitled

public text v1 · immutable
#415159 ·published 2007-03-29 15:42 UTC
rendered paste body
#include "Globals.h"

void InitMouse()
{
    MouseOriginX     = WINDOW_WIDTH / 2;
    MouseOriginY     = WINDOW_WIDTH / 2;
    MouseCurrentX    = MouseOriginX;
    MouseCurrentY    = MouseOriginY;

    SetCursorPos(MouseOriginX, MouseOriginY);
}

void GetMouse(float* pXAxis, float *pYAxis, float sens)
{
    POINT pt;
    GetCursorPos(&pt);
    MouseCurrentX = pt.x;
    MouseCurrentY = pt.y;
    *pXAxis = sens * ((float)(MouseCurrentX - MouseOriginX) / ((float)WINDOW_WIDTH / 2.0f));
    *pYAxis = sens * ((float)(MouseCurrentY - MouseOriginY) / ((float)WINDOW_HEIGHT / 2.0f));
    SetCursorPos(MouseOriginX, MouseOriginY);
}

void Game_Loop()
{   
    if( NULL == d3d_Device )
        return;

	if (KEYDOWN(VK_ESCAPE))
	{	
		SendMessage(GameHandle, WM_CLOSE, 0,0);
		return;
	}

	if (KEYDOWN(VK_UP))
	{	
        g_SpeedForward = 1.0f;
    }
	if (KEYDOWN(VK_DOWN))
	{	
        g_SpeedForward = -1.0f;
    }

	if (KEYDOWN('A'))
	{	
        g_Pitch += 1.0f;
    }
	if (KEYDOWN('D'))
	{	
        g_Pitch -= 1.0f;
    }

	if (KEYDOWN('W'))
	{	
        g_Roll += 1.0f;
    }
	if (KEYDOWN('S'))
	{	
        g_Roll -= 1.0f;
    }

	if (KEYDOWN(VK_LEFT))
	{	
        g_Yaw -= 2.0f;
    }
	if (KEYDOWN(VK_RIGHT))
	{	
        g_Yaw += 2.0f;
    }

	if (KEYDOWN('C'))
	{	
        g_SpeedStrafe = -1.0f;
    }
	if (KEYDOWN('V'))
	{	
        g_SpeedStrafe = 1.0f;
    }

    float mouse_move_x, mouse_move_y;
    GetMouse(&mouse_move_x, &mouse_move_y, 50.0f);
    if (mouse_move_x)
    {
        g_Yaw += mouse_move_x;
    }
    if (mouse_move_y)
    {
        g_Pitch += mouse_move_y;
    }

	// set the perspective projection of the camera
    SetPerspectiveProjection();

    // update the current camera view matrix
    UpdateCameraViewMatrix();

	// Clear the backbuffer to a blue color
    d3d_Device->Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_XRGB(100,100,255), 1.0f, 0 );
    d3d_Device->SetFVF( D3DFVF_CUSTOMVERTEX );
	
	d3d_Device->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
	d3d_Device->SetRenderState(D3DRS_SHADEMODE, D3DSHADE_GOURAUD);
	
	d3d_Device->SetRenderState( D3DRS_LIGHTING, FALSE );
	d3d_Device->SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE);
	
	// Begin the scene
    if( SUCCEEDED( d3d_Device->BeginScene() ) )
    {
		d3d_Device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
		
		for (int loop=0; loop<NumQuads; loop++)
		{
			if (pQuad[loop].Texture >0)
			{
				d3d_Device->SetTexture(0, pTextures[pQuad[loop].Texture-1]);
				d3d_Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
				d3d_Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
			}

			if (loop==5)
			{
				RotatePlaneY(loop);
			}

		    pQuad[loop].Render();
		}
		
		
		for (int loop1=0; loop1<cubenumber; loop1++)
		{
			if (pCube[loop1].Texture >0)
			{
				d3d_Device->SetTexture(0, pTextures[pCube[loop1].Texture-1]);
				d3d_Device->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
				d3d_Device->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
			}

			if (loop1==0)
			{
				RotatePlaneY1(loop1);
			}

		  //  pQuad[loop].Render();
			pCube[loop1].Render();
		}		
		
		d3d_Device->SetTexture(0, NULL);

        // End the scene
        d3d_Device->EndScene();
    }

    // Present the backbuffer contents to the display
    d3d_Device->Present( NULL, NULL, NULL, NULL );
}

void SetPerspectiveProjection()
{
    D3DXMATRIX m;
    D3DXMatrixPerspectiveFovLH(&m, D3DXToRadian(90.0f / 4 * 3), 1.0f, 1.0f, 16000.0f);
    d3d_Device->SetTransform(D3DTS_PROJECTION, &m);
}

void UpdateCameraViewMatrix()
{
    D3DXMatrixRotationYawPitchRoll(&g_ViewMatrix, D3DXToRadian(g_Yaw), D3DXToRadian(g_Pitch), D3DXToRadian(g_Roll));
    D3DXMATRIX v;
    D3DXMatrixTranspose(&v, &g_ViewMatrix);
    d3d_Device->SetTransform(D3DTS_VIEW, &v);	

    D3DXVECTOR3 forward;
    forward.x = g_ViewMatrix._31;
    forward.y = g_ViewMatrix._32;
    forward.z = g_ViewMatrix._33;
    D3DXVec3Scale(&forward, &forward, g_SpeedForward);

    D3DXVECTOR3 right;
    right.x = g_ViewMatrix._11;
    right.y = g_ViewMatrix._12;
    right.z = g_ViewMatrix._13;
    D3DXVec3Scale(&right, &right, g_SpeedStrafe);
    
    g_SpeedForward = 0.0f;
    g_SpeedStrafe = 0.0f;
    
	D3DXVECTOR3 movement;
	D3DXVec3Add(&movement, &forward, &right);
	D3DXVec3Add(&g_Pos, &g_Pos, &movement);
	
	D3DXMATRIX t;
    D3DXMatrixTranslation(&t, -g_Pos.x, -g_Pos.y, -g_Pos.z);
    d3d_Device->SetTransform(D3DTS_WORLD, &t);

}

void RotatePlaneY(int PlaneNum)
{
    D3DXVECTOR4 coords;
    D3DXVECTOR3 temp;

	D3DXMATRIX rotY;
    D3DXMatrixRotationY(&rotY,0.15f);

	for (int loop=0; loop<4; loop++)
	{
		temp.x=pQuad[PlaneNum].m_Verts[loop].point.x;
		temp.y=pQuad[PlaneNum].m_Verts[loop].point.y;
		temp.z=pQuad[PlaneNum].m_Verts[loop].point.z-260;
		
		D3DXVec3Transform(&coords,&temp,&rotY); 

		pQuad[PlaneNum].m_Verts[loop].point.x=coords.x;
		pQuad[PlaneNum].m_Verts[loop].point.y=coords.y;
		pQuad[PlaneNum].m_Verts[loop].point.z=coords.z+260;
	}

}

void RotatePlaneY1(int PlaneNum)
{
    D3DXVECTOR4 coords;
    D3DXVECTOR3 temp;

	D3DXMATRIX rotY;
    D3DXMatrixRotationY(&rotY,0.15f);

	for (int loop=0; loop<24; loop++)
	{
		temp.x=pCube[PlaneNum].m_Verts1[loop].point.x-55;
		temp.y=pCube[PlaneNum].m_Verts1[loop].point.y-55;
		temp.z=pCube[PlaneNum].m_Verts1[loop].point.z-200;
		
		D3DXVec3Transform(&coords,&temp,&rotY); 

		pCube[PlaneNum].m_Verts1[loop].point.x=coords.x+55;
		pCube[PlaneNum].m_Verts1[loop].point.y=coords.y+55;
		pCube[PlaneNum].m_Verts1[loop].point.z=coords.z+200;
	}

}

void ReadFile()
{
    float tlx,tly,tlz,tlu,tlv;
	int tlcr,tlcg,tlcb,tlca;
	float trx,tr_y,trz,tru,trv;
	int trcr,trcg,trcb,trca;
	float brx,bry,brz,bru,brv;
	int brcr,brcg,brcb,brca;
	float blx,bly,blz,blu,blv;
	int blcr,blcg,blcb,blca;
	int text;
	//cube vars
	float cube_x, cube_y, cube_z;
	float cube_w, cube_l, cube_h;

	char instring[60];	

	ifstream data("gamedata.info");

	// Read initial 3 lines and discard
	data.getline(instring,60,'\n');
    data.getline(instring,60,'\n');
    data.getline(instring,60,'\n');
	data.getline(instring,60,'\n');
	data.getline(instring,60,'>');
	data.getline(instring,60,'<');
	NumTextures = atoi(instring);
	data.getline(instring,60,'\n');

	pTextures = new LPDIRECT3DTEXTURE9[NumTextures];

	for (int loop=0; loop<NumTextures; loop++)
	{
		data.getline(instring,60,'>');
	    data.getline(instring,60,'<');
	
	    //D3DXCreateTextureFromFile(d3d_Device, instring, &pTexture);

        D3DXCreateTextureFromFileEx(d3d_Device, instring, 0, 0, 0,  0, D3DFMT_UNKNOWN,
                                    D3DPOOL_MANAGED, D3DX_DEFAULT, D3DX_DEFAULT,
                                    0, NULL, NULL, &pTexture);

	    pTextures[loop]=pTexture;

		data.getline(instring,60,'\n');
	}

	data.getline(instring,60,'\n');
	data.getline(instring,60,'\n');

	// Read in number if Triangles to be rendered, store in NumTris
	data.getline(instring,60,'=');
	data.getline(instring,60,'\n');
	NumQuads=atoi(instring);

	// Declare array to hold tris
	pQuad = new Wall[NumQuads];	

	// Loop to read in all triangles
	for (loop=0; loop<NumQuads; loop++)
	{
        data.getline(instring,60,'\n');
	    data.getline(instring,60,'\n');
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //3 verts
	    data.getline(instring,60,',');
	    tlx = (float)atof(instring);
	    data.getline(instring,60,',');
	    tly = (float)atof(instring);
	    data.getline(instring,60,'<');
	    tlz = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //4 colours
	    data.getline(instring,60,',');
	    tlcr = atoi(instring);
	    data.getline(instring,60,',');
	    tlcg = atoi(instring);
	    data.getline(instring,60,',');
	    tlcb = atoi(instring);
	    data.getline(instring,60,'<');
	    tlca = atoi(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //2 uv values
	    data.getline(instring,60,',');
	    tlu = (float)atof(instring); 
	    data.getline(instring,60,'<');
	    tlv = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'\n');

		data.getline(instring,60,'>');  //3 verts
	    data.getline(instring,60,',');
	    trx = (float)atof(instring);
	    data.getline(instring,60,',');
	    tr_y = (float)atof(instring);
	    data.getline(instring,60,'<');
	    trz = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //4 colours
	    data.getline(instring,60,',');
	    trcr = atoi(instring);
	    data.getline(instring,60,',');
	    trcg = atoi(instring);
	    data.getline(instring,60,',');
	    trcb = atoi(instring);
	    data.getline(instring,60,'<');
	    trca = atoi(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //2 uv values
	    data.getline(instring,60,',');
	    tru = (float)atof(instring); 
	    data.getline(instring,60,'<');
	    trv = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //3 verts
	    data.getline(instring,60,',');
	    brx = (float)atof(instring);
	    data.getline(instring,60,',');
	    bry = (float)atof(instring);
	    data.getline(instring,60,'<');
	    brz = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //4 colours
	    data.getline(instring,60,',');
	    brcr = atoi(instring);
	    data.getline(instring,60,',');
	    brcg = atoi(instring);
	    data.getline(instring,60,',');
	    brcb = atoi(instring);
	    data.getline(instring,60,'<');
	    brca = atoi(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //2 uv values
	    data.getline(instring,60,',');
	    bru = (float)atof(instring); 
	    data.getline(instring,60,'<');
	    brv = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //3 verts
	    data.getline(instring,60,',');
	    blx = (float)atof(instring);
	    data.getline(instring,60,',');
	    bly = (float)atof(instring);
	    data.getline(instring,60,'<');
	    blz = (float)atof(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //4 colours
	    data.getline(instring,60,',');
	    blcr = atoi(instring);
	    data.getline(instring,60,',');
	    blcg = atoi(instring);
	    data.getline(instring,60,',');
	    blcb = atoi(instring);
	    data.getline(instring,60,'<');
	    blca = atoi(instring);
	    data.getline(instring,60,'\n');

	    data.getline(instring,60,'>');  //2 uv values
	    data.getline(instring,60,',');
	    blu = (float)atof(instring); 
	    data.getline(instring,60,'<');
	    blv = (float)atof(instring);
	    data.getline(instring,60,'\n');

		data.getline(instring,60,'\n');  //Texture
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		text = atoi(instring);
		data.getline(instring,60,'\n');

	    pQuad[loop]=Wall(tlx,tly,tlz,D3DCOLOR_RGBA(tlcr,tlcg,tlcb,tlca),tlu,tlv,
						trx,tr_y,trz,D3DCOLOR_RGBA(trcr,trcg,trcb,trca),tru,trv,
                        brx,bry,brz,D3DCOLOR_RGBA(brcr,brcg,brcb,brca),bru,brv, 
						blx,bly,blz,D3DCOLOR_RGBA(blcr,blcg,blcb,blca),blu,blv,text);		

	}

	

	// Read How many cubes to be rendered, store in cube
	data.getline(instring,60,'\n');
	
	data.getline(instring,60,'=');
	data.getline(instring,60,'\n');
	cubenumber=atoi(instring);
	data.getline(instring,60,'\n');
	// Declare array to hold tris
	pCube = new Cuboid[cubenumber];	

	for (loop=0; loop<cubenumber; loop++)
	{
		//X
		//data.getline(instring,60,'\n');
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		cube_x = atof(instring);
		data.getline(instring,60,'\n');
		//Y
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		cube_y = atof(instring);
		data.getline(instring,60,'\n');
		//Z
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		cube_z = atof(instring);
		data.getline(instring,60,'\n');
		//Width
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		cube_w = atof(instring);
		data.getline(instring,60,'\n');
		//Length
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		cube_l = atof(instring);
		data.getline(instring,60,'\n');
		//Height
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		cube_h = atof(instring);
		data.getline(instring,60,'\n');
		//Texture
		data.getline(instring,60,'\n');  
		data.getline(instring,60,'>');  
	    data.getline(instring,60,'<');
		text = atoi(instring);
		data.getline(instring,60,'\n');
		data.getline(instring,60,'\n');

		pCube[loop]=Cuboid(cube_x,cube_y,cube_z,
			   cube_l,cube_w,cube_h,
			   text);
	}

	data.close();

	/*sprintf(instring,"%d",NumTris);
	MessageBox(GameHandle,instring,"Error",MB_OK);*/

	InitMouse();

}