Changeset 13

User picture

Author: machiel.sleeuwaert

(2008/12/01 11:31) Over 3 years ago


  

Affected files

Updated 3Xine/3Xine/3Xine.vcproj Download diff

1213
249
					RelativePath=".\SkyBox.h"
249
					RelativePath=".\SkyBox.h"
250
					>
250
					>
251
				</File>
251
				</File>
252
				<Filter
253
					Name="PhysX objects"
254
					>
255
					<File
256
						RelativePath=".\BasicPhysXShapes.cpp"
257
						>
258
					</File>
259
					<File
260
						RelativePath=".\BasicPhysXShapes.h"
261
						>
262
					</File>
263
				</Filter>
252
			</Filter>
264
			</Filter>
253
			<Filter
265
			<Filter
254
				Name="VMF parser"
266
				Name="VMF parser"
255
				>
267
				>
256
				<File
268
				<File
257
					RelativePath=".\OtherClasses.h"
269
					RelativePath=".\UtilClasses.cpp"
258
					>
270
					>
259
				</File>
271
				</File>
260
				<File
272
				<File
261
					RelativePath=".\UtilClasses.cpp"
273
					RelativePath=".\UtilClasses.h"
262
					>
274
					>
263
				</File>
275
				</File>
264
				<File
276
				<File
265
					RelativePath=".\vmfparser.cpp"
277
					RelativePath=".\vmfparser.cpp"
266
					>
278
					>
267
					<FileConfiguration
268
						Name="Debug|Win32"
269
						>
270
						<Tool
271
							Name="VCCLCompilerTool"
272
						/>
273
					</FileConfiguration>
274
				</File>
279
				</File>
275
				<File
280
				<File
276
					RelativePath=".\vmfparser.h"
281
					RelativePath=".\vmfparser.h"
...
...
299
				>
304
				>
300
			</File>
305
			</File>
301
			<File
306
			<File
307
				RelativePath=".\Camera2.cpp"
308
				>
309
			</File>
310
			<File
311
				RelativePath=".\Camera2.h"
312
				>
313
				<FileConfiguration
314
					Name="Debug|Win32"
315
					>
316
					<Tool
317
						Name="VCCustomBuildTool"
318
					/>
319
				</FileConfiguration>
320
			</File>
321
			<File
302
				RelativePath=".\MatrixClass.cpp"
322
				RelativePath=".\MatrixClass.cpp"
303
				>
323
				>
304
			</File>
324
			</File>
...
...
410
					>
430
					>
411
				</File>
431
				</File>
412
			</Filter>
432
			</Filter>
433
			<Filter
434
				Name="PhysX"
435
				>
436
				<File
437
					RelativePath=".\PhysX.cpp"
438
					>
439
				</File>
440
				<File
441
					RelativePath=".\PhysX.h"
442
					>
443
				</File>
444
			</Filter>
413
		</Filter>
445
		</Filter>
414
		<Filter
446
		<Filter
415
			Name="Resource Files"
447
			Name="Resource Files"

Added 3Xine/3Xine/BasicPhysXShapes.cpp

Show contents

Added 3Xine/3Xine/BasicPhysXShapes.h

Show contents

Updated 3Xine/3Xine/BasicShapes.cpp Download diff

1213
56
56
57
void BasicShape::Draw()
57
void BasicShape::Draw()
58
{
58
{
59
	m_Shader->SetMaterial(&m_Mtrl);
59
	m_Shader->SetWorld(&m_World);
60
	m_Shader->SetWorld(&m_World);
60
	m_Shader->Draw(this);
61
	m_Shader->Draw(this);
61
}
62
}

Updated 3Xine/3Xine/BasicShapes.h Download diff

1213
18
	virtual ~BasicShape();
18
	virtual ~BasicShape();
19
19
20
20
21
	void DrawScene();
21
	virtual void DrawScene();
22
	void DeviceLost();
22
	virtual void DeviceLost();
23
	void DeviceReset();
23
	virtual void DeviceReset();
24
24
25
	void Draw();
25
	virtual void Draw();
26
26
27
	
27
	
28
28
29
	static const int BOX,SPHERE,TEAPOT,CYLINDER,TORUS;
29
	static const int BOX,SPHERE,TEAPOT,CYLINDER,TORUS;
30
30
31
31
32
private:
32
protected:
33
33
34
34
35
	int m_Type;
35
	int m_Type;
36
	ID3DXMesh *m_pDXMesh;
36
	ID3DXMesh *m_pDXMesh;
37
	float m_a,m_b,m_c,m_d,m_e;
37
	float m_a,m_b,m_c,m_d,m_e;
38
	ColorShader* m_Shader;
38
	ColorShader* m_Shader;
39
	// -------------------------
40
	// Disabling default copy constructor and default assignment operator.
41
	// If you get a linker error from one of these functions, your class is internally trying to use them. This is
42
	// an error in your class, these declarations are deliberately made without implementation because they should never be used.
43
	// -------------------------
44
	BasicShape(const BasicShape& t);
45
	BasicShape& operator=(const BasicShape& t);
46
39
40
47
};
41
};

Updated 3Xine/3Xine/Camera.cpp Download diff

1213
16
CCamera::CCamera( D3DXVECTOR3 vPos ):m_vectPosition(vPos),m_fSpeed(0.01f),m_bNeedUpdated(true)
16
CCamera::CCamera( D3DXVECTOR3 vPos ):m_vectPosition(vPos),m_fSpeed(0.01f),m_bNeedUpdated(true)
17
{
17
{
18
18
19
20
	
19
	
21
	D3DXQuaternionIdentity( &m_quatOrientation );
20
	D3DXQuaternionIdentity( &m_quatOrientation );
22
	D3DXMatrixIdentity( & m_View );
21
	D3DXMatrixIdentity( & m_View );
...
...
92
	
91
	
93
	D3DXMATRIX matTemp;
92
	D3DXMATRIX matTemp;
94
	D3DXMatrixLookAtLH(&matTemp , &vFrom,&vTo, &vUp);
93
	D3DXMatrixLookAtLH(&matTemp , &vFrom,&vTo, &vUp);
95
	
96
94
97
	D3DXQuaternionRotationMatrix(&m_quatOrientation , &matTemp);
95
	D3DXQuaternionRotationMatrix(&m_quatOrientation , &matTemp);
98
96
97
99
	m_bNeedUpdated = true;
98
	m_bNeedUpdated = true;
99
100
101
102
103
104
100
}
105
}
101
106
102
107
103
108
104
109
105
110
111
112
106
void CCamera::Update()
113
void CCamera::Update()
107
{
114
{
108
115

Updated 3Xine/3Xine/Camera.h Download diff

1213
42
			ViewProj=m_View;
42
			ViewProj=m_View;
43
			ViewProj*=m_Proj;
43
			ViewProj*=m_Proj;
44
		}
44
		}
45
		void GetEye4(D3DXVECTOR4& Eye4)
46
		{
47
			if (m_bNeedUpdated)	Update();
48
			Eye4.x = m_vectPosition.x;
49
			Eye4.y = m_vectPosition.y;
50
			Eye4.z = m_vectPosition.z;
51
			
52
		}
53
45
54
		void GetInverseViewMatrix(D3DXMATRIX& ViewInverse)		
55
		{
56
			if (m_bNeedUpdated)	Update();
57
58
			D3DXMatrixInverse(&ViewInverse, 0, &m_View);
59
		}
60
61
62
63
		void SetSpeed(float fSpeed) { m_fSpeed = max(0.0f,fSpeed); }
64
		
46
		
65
		
47
		
66
	
48
	

Added 3Xine/3Xine/Camera2.cpp

Show contents

Added 3Xine/3Xine/Camera2.h

Show contents

Updated 3Xine/3Xine/DirectInput.cpp Download diff

1213
19
DirectInput::DirectInput():
19
DirectInput::DirectInput():
20
KeyboardCoopFlags(DISCL_NONEXCLUSIVE|DISCL_FOREGROUND), 
20
KeyboardCoopFlags(DISCL_NONEXCLUSIVE|DISCL_FOREGROUND), 
21
MouseCoopFlags(DISCL_NONEXCLUSIVE|DISCL_FOREGROUND),
21
MouseCoopFlags(DISCL_NONEXCLUSIVE|DISCL_FOREGROUND),
22
m_pDIinterface(0),m_pKeyboard(0),m_pMouse(0),AbsMousePos(0,0,0),RelMousePos(0,0,0),m_Sensivity(0.002f)
22
m_pDIinterface(0),m_pKeyboard(0),m_pMouse(0),AbsMousePos(0,0,0),RelMousePos(0,0,0),m_Sensivity(0.002f),m_KeyboardAquired(true),m_MouseAquired(true)
23
{
23
{
24
	InitAbsMouse();
24
	InitAbsMouse();
25
25
...
...
29
	HR(m_pDIinterface->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, 0));
29
	HR(m_pDIinterface->CreateDevice(GUID_SysKeyboard, &m_pKeyboard, 0));
30
	HR(m_pKeyboard->SetDataFormat(&c_dfDIKeyboard));
30
	HR(m_pKeyboard->SetDataFormat(&c_dfDIKeyboard));
31
	HR(m_pKeyboard->SetCooperativeLevel(XE->m_hwnd, KeyboardCoopFlags));
31
	HR(m_pKeyboard->SetCooperativeLevel(XE->m_hwnd, KeyboardCoopFlags));
32
	HR(m_pKeyboard->Acquire());
32
	if( FAILED(m_pKeyboard->Acquire()))
33
	{
34
		 m_KeyboardAquired= false;
35
	}
33
36
34
	HR(m_pDIinterface->CreateDevice(GUID_SysMouse, &m_pMouse, 0));
37
	HR(m_pDIinterface->CreateDevice(GUID_SysMouse, &m_pMouse, 0));
35
	HR(m_pMouse->SetDataFormat(&c_dfDIMouse2));
38
	HR(m_pMouse->SetDataFormat(&c_dfDIMouse2));
36
	HR(m_pMouse->SetCooperativeLevel(XE->m_hwnd, MouseCoopFlags));
39
	HR(m_pMouse->SetCooperativeLevel(XE->m_hwnd, MouseCoopFlags));
37
	HR(m_pMouse->Acquire());
40
	if( FAILED(m_pMouse->Acquire()));
41
	{
42
		//m_MouseAquired= false;
43
	}
38
}
44
}
39
45
40
void DirectInput::InitAbsMouse(){
46
void DirectInput::InitAbsMouse(){
...
...
66
	
72
	
67
	if( FAILED(m_pKeyboard->GetDeviceState(sizeof(m_KeyboardState), (void**)&m_KeyboardState)) )
73
	if( FAILED(m_pKeyboard->GetDeviceState(sizeof(m_KeyboardState), (void**)&m_KeyboardState)) )
68
	{
74
	{
69
75
		m_KeyboardAquired = true;
70
		// Try to acquire for next time we poll.
76
		// Try to acquire for next time we poll.
71
		m_pKeyboard->Acquire();
77
		if( FAILED(m_pKeyboard->Acquire()))
78
		{
79
			m_KeyboardAquired= false;
80
		}
72
		return;
81
		return;
73
	}
82
	}
74
83
...
...
76
85
77
	if( FAILED(m_pMouse->GetDeviceState(sizeof(DIMOUSESTATE2), (void**)&m_MouseState)) )
86
	if( FAILED(m_pMouse->GetDeviceState(sizeof(DIMOUSESTATE2), (void**)&m_MouseState)) )
78
	{
87
	{
79
		
88
		m_MouseAquired =true;
80
		// Try to acquire for next time we poll.
89
		// Try to acquire for next time we poll.
81
		m_pMouse->Acquire();
90
		FAILED(m_pMouse->Acquire());
91
		{
92
			//m_MouseAquired= false;
93
		}
82
		return;
94
		return;
83
		
95
		
84
	}
96
	}
...
...
116
128
117
bool DirectInput::KeyDown(unsigned char key)
129
bool DirectInput::KeyDown(unsigned char key)
118
{
130
{
119
	return (m_KeyboardState[key] & 0x80) != 0;
131
	if(m_KeyboardAquired)
132
		return (m_KeyboardState[key] & 0x80) != 0;
133
134
	return false;
120
}
135
}
121
136
122
137
123
bool DirectInput::MouseButtonDown(int button)
138
bool DirectInput::MouseButtonDown(int button)
124
{
139
{
125
	return (m_MouseState.rgbButtons[button] & 0x80) != 0;
140
	if(m_MouseAquired)
141
		return (m_MouseState.rgbButtons[button] & 0x80) != 0;
142
143
	return false;
126
}
144
}
127
145
128
146

Updated 3Xine/3Xine/DirectInput.h Download diff

1213
45
	
45
	
46
	float m_Sensivity;
46
	float m_Sensivity;
47
47
48
	bool m_KeyboardAquired;
49
	bool m_MouseAquired;
48
50
51
49
	// -------------------------
52
	// -------------------------
50
	// Disabling default copy constructor and default assignment operator.
53
	// Disabling default copy constructor and default assignment operator.
51
	// If you get a linker error from one of these functions, your class is internally trying to use them. This is
54
	// If you get a linker error from one of these functions, your class is internally trying to use them. This is

Updated 3Xine/3Xine/Game.cpp Download diff

1213
4
#include "PlaneNormal.h"
4
#include "PlaneNormal.h"
5
#include "vmfparser.h"
5
#include "vmfparser.h"
6
#include "SkyBox.h"
6
#include "SkyBox.h"
7
#include "BasicPhysXShapes.h"
7
8
8
Game::Game()
9
Game::Game()
9
{
10
{
...
...
36
	m_SkyBox = new SkyBox(300.0f,300.0f,300.0f);
37
	m_SkyBox = new SkyBox(300.0f,300.0f,300.0f);
37
	m_ObjectList.push_back(m_SkyBox);
38
	m_ObjectList.push_back(m_SkyBox);
38
39
40
	m_PhysXCube = new MeshShapePhysX(BasicShape::BOX,1.0f,1.0f,1.0f);
41
	m_PhysXCube->Translate(0,6,0);
42
	m_PhysXCube->SetPhysXBody(MeshShapePhysX::RIGID);
43
	m_PhysXCube->SetMaterialColor(1.0f,0.8f,0.3f,1);
44
	m_ObjectList.push_back(m_PhysXCube);
45
46
	
47
	
48
49
	m_MyChaseCam = new TargetCamera();
50
	XE->GetMC()->AddCamera(m_MyChaseCam);
51
52
53
54
39
	mrot = 0;
55
	mrot = 0;
40
56
41
	vmfp = new vmfparser();
57
	vmfp = new vmfparser();
...
...
76
92
77
void Game::UpdateScene(float dt)
93
void Game::UpdateScene(float dt)
78
{
94
{
79
	//mrot+=D3DX_PI/2*dt;
95
	mrot+=D3DX_PI/2*dt;
80
96
81
	m_FpsCounter->tick(dt);
97
	m_FpsCounter->tick(dt);
82
	
98
	
...
...
91
107
92
void Game::DrawScene(RECT rect)
108
void Game::DrawScene(RECT rect)
93
{
109
{
110
	D3DXMATRIX wor = *m_PhysXCube->GetWorldMatrix();
111
112
 	D3DXVECTOR3 transformed = D3DXVECTOR3(0,1.0f,0);
113
 	
114
	D3DXVec3TransformCoord(&transformed,&transformed,&wor);
115
116
	
117
118
	if(DI->KeyDown(DIK_UPARROW))
119
		m_PhysXCube->AddForce(D3DXVECTOR3(0,0,122.1f));
120
121
	if(DI->KeyDown(DIK_DOWNARROW))
122
		m_PhysXCube->AddForce(D3DXVECTOR3(0,0,-122.1f));
123
124
	if(DI->KeyDown(DIK_LEFT))
125
		m_PhysXCube->AddForce(D3DXVECTOR3(-122,0,0));
126
127
	if(DI->KeyDown(DIK_RIGHT))
128
		m_PhysXCube->AddForce(D3DXVECTOR3(122,0,0));
129
	
130
	m_MyChaseCam->LookAt(transformed+D3DXVECTOR3(0.0f,0.0f,0.0f),transformed+D3DXVECTOR3(0.0f,0.0f,1.0f),D3DXVECTOR3(0.0f,1.0f,0.0f));
131
94
	m_FpsCounter->paint();
132
	m_FpsCounter->paint();
95
133
96
	for(UINT i=0;i<m_ObjectList.size();++i)
134
	for(UINT i=0;i<m_ObjectList.size();++i)
...
...
101
	vmfp->Draw();
139
	vmfp->Draw();
102
140
103
141
104
}
142
}
143
144
145
146
147

Updated 3Xine/3Xine/Game.h Download diff

1213
6
class BasicShape;
6
class BasicShape;
7
class Abstract3Dobject;
7
class Abstract3Dobject;
8
class vmfparser;
8
class vmfparser;
9
class MeshShapePhysX;
9
10
11
class TargetCamera;
12
10
class Game:public AbstractGame
13
class Game:public AbstractGame
11
{
14
{
12
public:
15
public:
...
...
25
	Abstract3Dobject *m_Textured2;
28
	Abstract3Dobject *m_Textured2;
26
	Abstract3Dobject *m_Textured3;
29
	Abstract3Dobject *m_Textured3;
27
30
31
	MeshShapePhysX *m_PhysXCube;
32
28
	Abstract3Dobject *m_SkyBox;
33
	Abstract3Dobject *m_SkyBox;
29
34
30
	vector<Abstract3Dobject*> m_ObjectList;
35
	vector<Abstract3Dobject*> m_ObjectList;
31
36
32
	vmfparser* vmfp;
37
	vmfparser* vmfp;
38
39
	TargetCamera* m_MyChaseCam;
33
	
40
	
34
	FPScounter* m_FpsCounter;
41
	FPScounter* m_FpsCounter;
35
	float mrot;
42
	float mrot;

Updated 3Xine/3Xine/IncAndDef.h Download diff

1213
1
#pragma once
1
#pragma once
2
3
#define NOMINMAX //physX needs this
4
2
#include <windows.h>
5
#include <windows.h>
6
3
#include "util.h"
7
#include "util.h"
4
#include "Config.h"
8
#include "Config.h"
5
#include <tchar.h>
9
#include <tchar.h>
...
...
14
18
15
using namespace std;
19
using namespace std;
16
20
21
22
17
#ifdef _UNICODE	// extra unicode defines
23
#ifdef _UNICODE	// extra unicode defines
18
#define tstring wstring
24
#define tstring wstring
19
#define tcin wcin
25
#define tcin wcin
...
...
37
#define WIDTH 800
43
#define WIDTH 800
38
#define XE XineEngine::GetSingleton()
44
#define XE XineEngine::GetSingleton()
39
#define DI DirectInput::GetSingleton()
45
#define DI DirectInput::GetSingleton()
40
#define PS ProShaderClass::GetSingleton()
46
#define PX PhysX::GetSingleton()
41
47
42
struct MOUSE {
48
struct MOUSE {
43
	MOUSE( int x, int y, int z ):x(x),y(y),z(z)
49
	MOUSE( int x, int y, int z ):x(x),y(y),z(z)

Updated 3Xine/3Xine/MatrixClass.cpp Download diff

1213
2
#include "DirectInput.h"
2
#include "DirectInput.h"
3
#include "Abstract3Dobject.h"
3
#include "Abstract3Dobject.h"
4
4
5
MatrixClass::MatrixClass():m_pCamera(0),m_Eye4(0,0,0,0)
5
MatrixClass::MatrixClass():m_pCamera(0),m_Eye4(0,0,0,0),m_CurrentCamera(0),m_F4pressed(false)
6
{
6
{
7
7
8
	
8
	
9
	m_pCamera = new CCamera(D3DXVECTOR3(0, 0.0f,6.0f));
9
	TargetCamera* tempcamera;
10
	
11
	tempcamera= new TargetCamera();
12
	tempcamera->LookAt(D3DXVECTOR3(0, 5,7),D3DXVECTOR3(0, 2.0f,0.0f),D3DXVECTOR3(0,1,0));
13
	m_vCameras.push_back(tempcamera);
10
14
11
	m_pCamera->SetLookAt(D3DXVECTOR3(0, 5,7),D3DXVECTOR3(0, 2.0f,0.0f),D3DXVECTOR3(0, 1,0));
15
	tempcamera = new TargetCamera();
16
	tempcamera->LookAt(D3DXVECTOR3(10.0f, 5.0f,7.0f),D3DXVECTOR3(0.0f, 2.0f,0.0f),D3DXVECTOR3(0.0f,1.0f,0.0f));
17
	m_vCameras.push_back(tempcamera);
12
18
13
// 	D3DXMATRIX comp1;
19
14
// 	D3DXMatrixLookAtLH(&comp1 , &D3DXVECTOR3(0, 5,7),&D3DXVECTOR3(0, 2.0f,0.0f), &D3DXVECTOR3(0, 1,0));
15
	
20
	
21
	m_pCamera = m_vCameras[m_CurrentCamera];
16
	
22
	
17
	
18
	m_Light.dirW    = D3DXVECTOR3(2.0f, -1.0f, 1.0f);
23
	m_Light.dirW    = D3DXVECTOR3(2.0f, -1.0f, 1.0f);
19
	D3DXVec3Normalize(&m_Light.dirW, &m_Light.dirW);
24
	D3DXVec3Normalize(&m_Light.dirW, &m_Light.dirW);
20
	m_Light.ambient = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
25
	m_Light.ambient = D3DXCOLOR(0.5f, 0.5f, 0.5f, 1.0f);
...
...
25
30
26
MatrixClass::~MatrixClass()
31
MatrixClass::~MatrixClass()
27
{
32
{
28
	delete m_pCamera;	
33
	for(UINT i=0;i<m_vCameras.size();++i)
34
	{
35
		delete m_vCameras.at(i);
36
	}
29
}
37
}
30
38
31
void MatrixClass::CalculateAllMatrixes()
39
void MatrixClass::CalculateAllMatrixes()
32
{
40
{
33
41
34
	int modifier =1;
42
	if(DI->KeyDown(DIK_F4) && !m_F4pressed)
43
	{
44
		if((m_CurrentCamera+1)<m_vCameras.size())
45
		{
46
			++m_CurrentCamera;
47
		}else{
48
			m_CurrentCamera = 0;
49
		}
50
		m_pCamera = m_vCameras[m_CurrentCamera];
35
51
52
		m_F4pressed = true;
53
	}
36
54
55
	if(!DI->KeyDown(DIK_F4))
56
		m_F4pressed = false;
57
58
	float modifier =0.05f;
59
60
37
		if(DI->MouseButtonDown(2)){
61
		if(DI->MouseButtonDown(2)){
38
			m_pCamera->Pitch(DI->GetRelMousePos().y);
62
			m_pCamera->Pitch(DI->GetRelMousePos().y);
39
63
...
...
41
		}
65
		}
42
66
43
		if(DI->KeyDown(DIK_LSHIFT)){
67
		if(DI->KeyDown(DIK_LSHIFT)){
44
			modifier =10;	
68
			modifier =0.30f;	
45
		}
69
		}
46
70
47
71
48
		if(DI->KeyDown(DIK_S)){
72
		if(DI->KeyDown(DIK_S)){
49
			m_pCamera->Move(-1*modifier);
73
			m_pCamera->Move(-1.0f*modifier);
50
74
51
		}
75
		}
52
76
53
		if(DI->KeyDown(DIK_W)){
77
		if(DI->KeyDown(DIK_W)){
54
			m_pCamera->Move(1*modifier);		
78
			m_pCamera->Move(1.0f*modifier);		
55
		}
79
		}
56
80
57
81
58
		if(DI->KeyDown(DIK_Q)){
82
		if(DI->KeyDown(DIK_Q)){
59
			m_pCamera->Move(1*modifier);		
83
			m_pCamera->Move(1.0f*modifier);		
60
		}
84
		}
61
85
62
		if(DI->KeyDown(DIK_A)){
86
		if(DI->KeyDown(DIK_A)){
63
			m_pCamera->Strafe(-1*modifier);		
87
			m_pCamera->Strafe(-1.0f*modifier);		
64
		}
88
		}
65
89
66
		if(DI->KeyDown(DIK_D)){
90
		if(DI->KeyDown(DIK_D)){
67
			m_pCamera->Strafe(1*modifier);		
91
			m_pCamera->Strafe(1.0f*modifier);		
68
		}
92
		}
69
93
70
94
71
	
95
	
72
		m_pCamera->GetViewProjectionMatrix(m_ViewProj);
96
		m_pCamera->GetViewProjectionMatrix(m_ViewProj);
73
		m_pCamera->GetInverseViewMatrix(m_ViewInverse);
97
		//m_pCamera->GetInverseViewMatrix(m_ViewInverse);
74
		m_pCamera->GetEye4(m_Eye4);
98
		//m_pCamera->GetEye4(m_Eye4);
75
		
99
		
76
}
100
}
77
101
...
...
86
	light = m_Light;
110
	light = m_Light;
87
}
111
}
88
112
89
// void MatrixClass::DrawWithShader(Abstract3Dobject *obj)
90
// {
91
// 
92
// 	ID3DXEffect* Effect;
93
// 	char alphamode = obj->GetAlphaMode();
94
// 	Effect = obj->GetEffect();
95
// 
96
// 	//get handles to shader params
97
// 	m_hWorld			= Effect->GetParameterByName(0, "g_World");
98
// 	m_hWorldViewProj	= Effect->GetParameterByName(0, "g_WorldViewProj");
99
// 	m_hWoldInvTrans		= Effect->GetParameterByName(0, "g_WorldInvTrans");
100
// 	m_hViewInv			= Effect->GetParameterByName(0, "g_ViewInv");
101
// 	m_hMtrl				= Effect->GetParameterByName(0, "g_Mtrl");
102
// 	m_hLight			= Effect->GetParameterByName(0, "g_Light");
103
// 	m_hTex				= Effect->GetParameterByName(0, "g_Tex");//texture
104
// 	m_hVecEye			= Effect->GetParameterByName(0, "g_Eye");//texture
105
// 
106
// 	if(obj->GetTexture())
107
// 		Effect->SetTexture(m_hTex,obj->GetTexture());
108
// 
109
// 	HR(Effect->SetValue(m_hMtrl,obj->GetMtrl(),sizeof(D3DMATERIAL9)));
110
// 
111
// 
112
// 	//First calculate final world (including parent worlds transforms
113
// 	
114
// 
115
// 	D3DXMATRIX* World = obj->GetWorldMatrix();
116
// 	HR(Effect->SetMatrix(m_hWorldViewProj,&(*World*m_ViewProj)));
117
// 
118
// //	D3DXMATRIX WorldInvTrans;	
119
// // 	D3DXMatrixInverse(&WorldInvTrans, 0, World);
120
// // 	D3DXMatrixTranspose(&WorldInvTrans, &WorldInvTrans);
121
// // 	HR(Effect->SetMatrix(m_hWoldInvTrans,&WorldInvTrans));
122
// 
123
// 	
124
// 	
125
// 	HR(Effect->SetMatrix(m_hViewInv,&m_ViewInverse));
126
// 	HR(Effect->SetVector(m_hVecEye,&m_Eye4));
127
// 	HR(Effect->SetMatrix(m_hWorld,World));
128
// 	
129
// 
130
// 	HR(Effect->SetValue(m_hLight, &m_Light, sizeof(m_Light)));
131
// 
132
// 	UINT numPasses = 0;
133
// 	HR(Effect->Begin(&numPasses, 0));
134
// 	for(UINT i=0;i<numPasses;++i)
135
// 	{
136
// 		HR(Effect->BeginPass(i));
137
// 
138
// 		obj->DrawScene();
139
// 
140
// 		if(alphamode == 't'){
141
// 		HR(XE->GetDevice()->SetRenderState(D3DRS_ALPHATESTENABLE,true));
142
// 		HR(XE->GetDevice()->SetRenderState(D3DRS_ALPHAFUNC,D3DCMP_GREATEREQUAL));
143
// 		HR(XE->GetDevice()->SetRenderState(D3DRS_ALPHAREF,100));
144
// 		}
145
// 
146
// 		if(alphamode == 'b'){
147
// 			HR(XE->GetDevice()->SetRenderState(D3DRS_ALPHABLENDENABLE,true));
148
// 			HR(XE->GetDevice()->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA));
149
// 			HR(XE->GetDevice()->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA));
150
// 		}
151
// 
152
// 		HR(Effect->EndPass());
153
// 	}
154
// 	HR(Effect->End());
155
// 
156
// 	
157
// }

Updated 3Xine/3Xine/MatrixClass.h Download diff

1213
1
#pragma once
1
#pragma once
2
#include "Camera.h"
2
#include "Camera2.h"
3
#include "XineEngine.h"
3
#include "XineEngine.h"
4
4
5
5
...
...
11
	MatrixClass();
11
	MatrixClass();
12
	~MatrixClass();
12
	~MatrixClass();
13
	void CalculateAllMatrixes();
13
	void CalculateAllMatrixes();
14
	//	void DrawWithShader(Abstract3Dobject *obj);
15
14
16
	void GetViewProjectionmatrix(D3DXMATRIX& ViewProj);
15
	void GetViewProjectionmatrix(D3DXMATRIX& ViewProj);
17
	void GetLight(DirLight& light);
16
	void GetLight(DirLight& light);
18
17
18
19
	void AddCamera(TargetCamera* T)
20
	{
21
		m_vCameras.push_back(T);
22
	}
23
19
private:
24
private:
20
	CCamera *m_pCamera;
21
25
22
// 	D3DXHANDLE          m_hWorld;
26
	vector<TargetCamera*> m_vCameras;
23
// 	D3DXHANDLE          m_hWorldViewProj;
24
// 	D3DXHANDLE          m_hWoldInvTrans;
25
// 	D3DXHANDLE          m_hViewInv;
26
// 	D3DXHANDLE          m_hVecEye;
27
// 	D3DXHANDLE		    m_hLight;
28
// 	D3DXHANDLE			m_hMtrl;
29
// 	D3DXHANDLE			m_hTex;
30
27
28
	int m_CurrentCamera;
29
	TargetCamera *m_pCamera;
30
31
	bool m_F4pressed;
32
31
	DirLight m_Light;
33
	DirLight m_Light;
32
	D3DXMATRIX m_ViewProj;
34
	D3DXMATRIX m_ViewProj;
33
	D3DXMATRIX m_ViewInverse;
35
	D3DXMATRIX m_ViewInverse;

Added 3Xine/3Xine/PhysX.cpp

Show contents

Added 3Xine/3Xine/PhysX.h

Show contents

Updated 3Xine/3Xine/Shaders/PosTex.fx Download diff

1213
30
	MinFilter = LINEAR;
30
	MinFilter = LINEAR;
31
	MagFilter = LINEAR;
31
	MagFilter = LINEAR;
32
	MipFilter = LINEAR;
32
	MipFilter = LINEAR;
33
	AddressU = WRAP;
33
	AddressU = CLAMP;
34
	AddressV = WRAP;
34
	AddressV = CLAMP;
35
	//AddressU = MIRROR;
35
	//AddressU = MIRROR;
36
	//AddressV = MIRROR;
36
	//AddressV = MIRROR;
37
};
37
};
...
...
60
    
60
    
61
61
62
	output.Tex=input.Tex;//Texture coordinaten kopiëren
62
	output.Tex=input.Tex;//Texture coordinaten kopiëren
63
	output.Tex.x *= -1;
63
	//output.Tex.x *= -1;
64
    return output;
64
    return output;
65
}
65
}
66
//--------------------------------------------------------------------------------------
66
//--------------------------------------------------------------------------------------

Updated 3Xine/3Xine/SkyBox.cpp Download diff

1213
43
	m_pIndexBuffer->Release();
43
	m_pIndexBuffer->Release();
44
	m_pVertexBuffer->Release();
44
	m_pVertexBuffer->Release();
45
45
46
	for(int i=0;i<m_vSkyBoxTextures.size();++i)
46
	for(UINT i=0;i<m_vSkyBoxTextures.size();++i)
47
	{
47
	{
48
		m_vSkyBoxTextures.at(i)->Release();
48
		m_vSkyBoxTextures.at(i)->Release();
49
	}
49
	}
...
...
63
void SkyBox::DrawScene()
63
void SkyBox::DrawScene()
64
{
64
{
65
65
66
	HR(XE->GetDevice()->SetRenderState(D3DRS_CULLMODE,D3DCULL_CW));
66
	
67
67
68
	HR(XE->GetDevice()->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(Verticeformat)));
68
	HR(XE->GetDevice()->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(Verticeformat)));
69
	HR(XE->GetDevice()->SetIndices(m_pIndexBuffer));
69
	HR(XE->GetDevice()->SetIndices(m_pIndexBuffer));
...
...
78
78
79
	
79
	
80
	
80
	
81
	HR(XE->GetDevice()->SetRenderState(D3DRS_CULLMODE,D3DCULL_CCW));
81
	
82
}
82
}
83
83
84
void SkyBox::Draw()
84
void SkyBox::Draw()
...
...
106
106
107
	int i=0;
107
	int i=0;
108
	//front
108
	//front
109
	v[i++] = Verticeformat(-1.0f, -1.0f, -1.0f,0,1);
109
	v[i++] = Verticeformat(-1.0f, -1.0f, -1.0f,1,1);
110
	v[i++] = Verticeformat(-1.0f,  1.0f, -1.0f,0,0);
110
	v[i++] = Verticeformat(-1.0f,  1.0f, -1.0f,1,0);
111
	v[i++] = Verticeformat( 1.0f,  1.0f, -1.0f,1,0);
111
	v[i++] = Verticeformat( 1.0f,  1.0f, -1.0f,0,0);
112
	v[i++] = Verticeformat( 1.0f, -1.0f, -1.0f,1,1);
112
	v[i++] = Verticeformat( 1.0f, -1.0f, -1.0f,0,1);
113
	//back
113
	//back
114
	v[i++] = Verticeformat( 1.0f, -1.0f,  1.0f,0,1);
114
	v[i++] = Verticeformat( 1.0f, -1.0f,  1.0f,1,1);
115
	v[i++] = Verticeformat( 1.0f,  1.0f,  1.0f,0,0);
115
	v[i++] = Verticeformat( 1.0f,  1.0f,  1.0f,1,0);
116
	v[i++] = Verticeformat(-1.0f,  1.0f,  1.0f,1,0);
116
	v[i++] = Verticeformat(-1.0f,  1.0f,  1.0f,0,0);
117
	v[i++] = Verticeformat(-1.0f, -1.0f,  1.0f,1,1);
117
	v[i++] = Verticeformat(-1.0f, -1.0f,  1.0f,0,1);
118
	//left
118
	//left
119
	v[i++] = Verticeformat(-1.0f, -1.0f,   1.0f,0,1);
119
	v[i++] = Verticeformat(-1.0f, -1.0f,   1.0f,1,1);
120
	v[i++] = Verticeformat(-1.0f,  1.0f,   1.0f,0,0);
120
	v[i++] = Verticeformat(-1.0f,  1.0f,   1.0f,1,0);
121
	v[i++] = Verticeformat(-1.0f,  1.0f,  -1.0f,1,0);
121
	v[i++] = Verticeformat(-1.0f,  1.0f,  -1.0f,0,0);
122
	v[i++] = Verticeformat(-1.0f, -1.0f,  -1.0f,1,1);
122
	v[i++] = Verticeformat(-1.0f, -1.0f,  -1.0f,0,1);
123
	//right
123
	//right
124
	v[i++] = Verticeformat( 1.0f, -1.0f,  -1.0f,0,1);
124
	v[i++] = Verticeformat( 1.0f, -1.0f,  -1.0f,1,1);
125
	v[i++] = Verticeformat( 1.0f,  1.0f,  -1.0f,0,0);
125
	v[i++] = Verticeformat( 1.0f,  1.0f,  -1.0f,1,0);
126
	v[i++] = Verticeformat( 1.0f,  1.0f,   1.0f,1,0);
126
	v[i++] = Verticeformat( 1.0f,  1.0f,   1.0f,0,0);
127
	v[i++] = Verticeformat( 1.0f, -1.0f,   1.0f,1,1);
127
	v[i++] = Verticeformat( 1.0f, -1.0f,   1.0f,0,1);
128
	//Top
128
	//Top
129
	v[i++] = Verticeformat(-1.0f,  1.0f,  -1.0f,0,0);
129
	v[i++] = Verticeformat(-1.0f,  1.0f,  -1.0f,1,0);
130
	v[i++] = Verticeformat(-1.0f,  1.0f,   1.0f,1,0);
130
	v[i++] = Verticeformat(-1.0f,  1.0f,   1.0f,0,0);
131
	v[i++] = Verticeformat( 1.0f,  1.0f,   1.0f,1,1);
131
	v[i++] = Verticeformat( 1.0f,  1.0f,   1.0f,0,1);
132
	v[i++] = Verticeformat( 1.0f,  1.0f,  -1.0f,0,1);
132
	v[i++] = Verticeformat( 1.0f,  1.0f,  -1.0f,1,1);
133
	//Bottom
133
	//Bottom
134
	v[i++] = Verticeformat(-1.0f,  -1.0f,   1.0f,0,1);
134
	v[i++] = Verticeformat(-1.0f,  -1.0f,   1.0f,0,0);
135
	v[i++] = Verticeformat(-1.0f,  -1.0f,  -1.0f,0,0);
135
	v[i++] = Verticeformat(-1.0f,  -1.0f,  -1.0f,0,1);
136
	v[i++] = Verticeformat( 1.0f,  -1.0f,  -1.0f,1,0);
136
	v[i++] = Verticeformat( 1.0f,  -1.0f,  -1.0f,1,1);
137
	v[i++] = Verticeformat( 1.0f,  -1.0f,   1.0f,1,1);
137
	v[i++] = Verticeformat( 1.0f,  -1.0f,   1.0f,1,0);
138
138
139
	for(int teller=0;teller<m_NumVertices;teller++)
139
	for(int teller=0;teller<m_NumVertices;teller++)
140
	{
140
	{
...
...
161
	HR(m_pIndexBuffer->Lock(0, 0, (void**)&k, 0));
161
	HR(m_pIndexBuffer->Lock(0, 0, (void**)&k, 0));
162
162
163
	// Front face.
163
	// Front face.
164
	k[0] = 0; k[1] = 1; k[2] = 2;
164
	k[0] = 0; k[1] = 2; k[2] = 1;
165
	k[3] = 0; k[4] = 2; k[5] = 3;
165
	k[3] = 0; k[4] = 3; k[5] = 2;
166
166
167
	// Back face.
167
	// Back face.
168
	k[6] = 4; k[7]  = 5; k[8]  = 6;
168
	k[6] = 4; k[7]  = 6; k[8]  = 5;
169
	k[9] = 4; k[10] = 6; k[11] = 7;
169
	k[9] = 4; k[10] = 7; k[11] = 6;
170
170
171
	// Left face.
171
	// Left face.
172
	k[12] = 8; k[13] = 9; k[14] = 10;
172
	k[12] = 8; k[13] =10; k[14] = 9;
173
	k[15] = 8; k[16] = 10; k[17] = 11;
173
	k[15] = 8; k[16] = 11; k[17] = 10;
174
174
175
	// Right face.
175
	// Right face.
176
	k[18] = 12; k[19] = 13; k[20] = 14;
176
	k[18] = 12; k[19] = 14; k[20] = 13;
177
	k[21] = 12; k[22] = 14; k[23] = 15;
177
	k[21] = 12; k[22] = 15; k[23] = 14;
178
178
179
	// Top face.
179
	// Top face.
180
	k[24] = 16; k[25] = 17; k[26] = 18;
180
	k[24] = 16; k[25] = 18; k[26] = 17;
181
	k[27] = 16; k[28] = 18; k[29] = 19;
181
	k[27] = 16; k[28] = 19; k[29] = 18;
182
182
183
	// Bottom face.
183
	// Bottom face.
184
	k[30] = 20; k[31] = 21; k[32] = 22;
184
	k[30] = 20; k[31] = 22; k[32] = 21;
185
	k[33] = 20; k[34] = 22; k[35] = 23;
185
	k[33] = 20; k[34] = 23; k[35] = 22;
186
186
187
	HR(m_pIndexBuffer->Unlock());
187
	HR(m_pIndexBuffer->Unlock());
188
}
188
}

Updated 3Xine/3Xine/UtilClasses.cpp Download diff

1213
1
#include "OtherClasses.h"
1
#include "UtilClasses.h"
2
2
3
3
4
4
5
Brush::Brush():Abstract3Dobject(),m_NumVertices(0),m_NumIndices(0)
5
6
7
Brush::Brush():Abstract3Dobject(),m_NumVertices(0),m_NumIndices(0),m_Center(D3DXVECTOR3(0.0f,0.0f,0.0f)),m_Scale(0.1f)
6
{
8
{
7
	DeviceReset();
9
	DeviceReset();
8
10
9
	SetMaterialColor(1,0,0,1);
11
	SetMaterialColor(1,0,0,1);
10
	m_Shader->SetMaterial(&m_Mtrl);
12
	m_Shader->SetMaterial(&m_Mtrl);
13
11
}
14
}
12
15
13
Brush::~Brush()
16
Brush::~Brush()
...
...
18
	DeviceLost();
21
	DeviceLost();
19
}
22
}
20
23
21
void Brush::AddVerticeToPoly(int index,D3DXVECTOR3 Vertice)
22
{
23
	int numberoffobjectstoadd = (index+1) - polys.size();		//size the vector
24
24
25
	for(;numberoffobjectstoadd>0;--numberoffobjectstoadd)		//size the vector
25
void Brush::BuildBuffersAndPhysX()
26
		polys.push_back(new Poly());							//size the vector
27
28
	polys.at(index)->AddVertice(Vertice);					//add vertice
29
}
30
31
void Brush::debug()
32
{
26
{
33
	
27
	
28
34
	for(UINT i=0;i<polys.size();++i)
29
	for(UINT i=0;i<polys.size();++i)
35
	{
30
	{
36
		
31
		m_Center+=polys.at(i)->CalculateCenter();
37
32
		polys.at(i)->MakeReadyForConversion(); //sorts vertices
38
		polys.at(i)->MakeReadyForConversion();
39
		polys.at(i)->GetNumberOfVerticesAndIndices(m_NumVertices,m_NumIndices);
33
		polys.at(i)->GetNumberOfVerticesAndIndices(m_NumVertices,m_NumIndices);
40
	}
34
	}
41
	
35
36
	m_Center/=(float)polys.size();
37
38
	for(UINT i=0;i<polys.size();++i)
39
	{
40
		polys.at(i)->TranslateTo(m_Center); //puts the object at 0,0,0
41
	}
42
42
	HR(XE->GetDevice()->CreateVertexBuffer(m_NumVertices * sizeof(VERTEXSTRUCT), D3DUSAGE_WRITEONLY, 0, D3DPOOL_MANAGED , &m_pVertexBuffer, 0));
43
	HR(XE->GetDevice()->CreateVertexBuffer(m_NumVertices * sizeof(VERTEXSTRUCT), D3DUSAGE_WRITEONLY, 0, D3DPOOL_MANAGED , &m_pVertexBuffer, 0));
43
44
44
	
45
	
...
...
59
	}
60
	}
60
61
61
	if(VerticesInBuffer!=m_NumVertices)
62
	if(VerticesInBuffer!=m_NumVertices)
62
		VerticesInBuffer=VerticesInBuffer;
63
		VerticesInBuffer=VerticesInBuffer;//error!
63
64
64
	if(IndexesInBuffer!=m_NumIndices)
65
	if(IndexesInBuffer!=m_NumIndices)
65
		IndexesInBuffer=IndexesInBuffer;
66
		IndexesInBuffer=IndexesInBuffer;//error!
66
	
67
67
68
	D3DXVECTOR3 minBounds,maxBounds;
69
70
	D3DXComputeBoundingBox((D3DXVECTOR3*)v,m_NumVertices, sizeof(VERTEXSTRUCT), &minBounds, &maxBounds);
71
68
	HR(m_pVertexBuffer->Unlock());
72
	HR(m_pVertexBuffer->Unlock());
69
	HR(m_pIndexBuffer->Unlock());
73
	HR(m_pIndexBuffer->Unlock());
70
	
71
74
72
	
75
	Translate(m_Center.x,m_Center.y,m_Center.z);
76
	Scale(m_Scale,m_Scale,m_Scale);
73
77
74
}
78
	minBounds*=m_Scale;
79
	maxBounds*=m_Scale;
80
	 
81
	 NxActorDesc ActorDesc;
82
	 ActorDesc.body =0; //this thing doesnt move so no body
75
83
76
void Brush::BuildVertexBuffer()
84
	 NxBoxShapeDesc BoxShapeDesc2;
77
{
85
	 BoxShapeDesc2.dimensions=NxVec3(abs((minBounds.x-maxBounds.x))/2,abs((minBounds.y-maxBounds.y))/2,abs((minBounds.z-maxBounds.z))/2);
78
86
87
	 BoxShapeDesc2.mass = 1; //static, mass, don't know if we need this, just put it at 1 to be sure
88
	 ActorDesc.shapes.push_back(&BoxShapeDesc2);
79
89
80
	
90
	 NxMat34 mat;
91
	 mat.setColumnMajor44(m_World);
92
	 ActorDesc.globalPose = mat;
93
	 ActorDesc.density = 10.0f;
94
	 /*m_pActor = */PhysX::GetSingleton()->GetScene()->createActor(ActorDesc); //we don't need the pointer
81
95
82
}
83
96
84
void Brush::BuildIndexBuffer()
85
{
86
97
87
	
98
	
88
89
90
91
92
	
93
}
99
}
94
100
101
95
void Brush::AddPoly(Poly* p)
102
void Brush::AddPoly(Poly* p)
96
{
103
{
97
	polys.push_back(p);
104
	polys.push_back(p);
...
...
113
		}
120
		}
114
	}
121
	}
115
122
116
// 	for(int i=0;i<size;++i)
123
	BuildBuffersAndPhysX();
117
// 	{
118
// 		for(int j=(i+1);j<size;++j)
119
// 		{
120
// 			for(int k=(j+1);k<size;++k)
121
// 			{
122
// 
123
// 
124
// 				bool IsInsideMesh = false;
125
// 
126
// 				D3DXVECTOR3 temp;
127
// 				if(!GetIntersection (polys[i], polys[j], polys[k], temp ))
128
// 					continue;
129
// 
130
// 
131
// 				for(int m = 0; m<size;++m)
132
// 				{
133
// 
134
// 					// Test if the point is outside the brush
135
// 					D3DXVECTOR3 Normal = polys[m]->m_Normal;
136
// 					float d = polys[m]->m_DistanceToOrigin;
137
// 
138
// 					float testvalue = D3DXVec3Dot( &Normal, &temp ) - d;
139
// 					if ( testvalue > 0.1f )
140
// 					{
141
// 						IsInsideMesh = false; // NOT INSIDE MESH
142
// 
143
// 					}
144
// 
145
// 					if(!IsInsideMesh)
146
// 						break;
147
// 				}
148
// 
149
// 				
150
// 
151
// 				IsInsideMesh = false;
152
// 
153
// 				for(UINT i=0;i<polys.size();++i)
154
// 				{
155
// 					if(polys.at(i)->DoesPointExists(temp))
156
// 					{
157
// 						IsInsideMesh = true;
158
// 					}
159
// 					
160
// 					if(IsInsideMesh)
161
// 						break;
162
// 				}
163
// 
164
// 				if(!IsInsideMesh)
165
// 				{
166
// 					++notfoundpoints;
167
// 					continue;
168
// 				}
169
// 
170
// 				AddVerticeToPoly(i,temp);
171
// 				AddVerticeToPoly(j,temp);
172
// 				AddVerticeToPoly(k,temp);
173
// 				
174
// 
175
// 			}
176
// 		}
177
// 	}
178
124
179
180
181
//	notfoundpoints=notfoundpoints;
182
183
	debug();
184
185
}
125
}
186
126
187
127
188
bool Brush::GetIntersection ( const Poly* a, const Poly* b, const Poly* c, D3DXVECTOR3 &v )
189
{
190
128
191
129
192
	D3DXVECTOR3 cross;
193
	D3DXVec3Cross(&cross,&b->m_Normal,&c->m_Normal);
194
	float denom = D3DXVec3Dot(&a->m_Normal,&cross);
195
196
	if ( abs ( denom ) < 0.00000001f ) // chck if zero, using this for rounding errors
197
	{
198
		return false;
199
	}
200
201
202
	D3DXVec3Cross(&cross,&a->m_Normal,&b->m_Normal);
203
204
	v=(*D3DXVec3Cross(&cross,&a->m_Normal,&b->m_Normal)*c->m_DistanceToOrigin + *D3DXVec3Cross(&cross,&b->m_Normal,&c->m_Normal)*a->m_DistanceToOrigin + *D3DXVec3Cross(&cross,&c->m_Normal,&a->m_Normal)*b->m_DistanceToOrigin) / denom;
205
206
	return true;
207
}
208
209
void Brush::DeviceLost()
130
void Brush::DeviceLost()
210
{
131
{
211
 delete m_Shader;
132
 delete m_Shader;
...
...
227
}
148
}
228
void Brush::Draw()
149
void Brush::Draw()
229
{
150
{
151
 	ResetWorldMatrix();
152
	Translate(m_Center.x,m_Center.y,m_Center.z);
153
 	Scale(m_Scale,m_Scale,m_Scale);
230
154
231
	m_Shader->SetWorld(&m_World);
155
	m_Shader->SetWorld(&m_World);
232
	m_Shader->Draw(this);
156
	m_Shader->Draw(this);
233
}
157
}
234
158
159
160
161
235
//////////////////////////////////////////////////
162
//////////////////////////////////////////////////
236
//POLYCLASS
163
//POLYCLASS
237
//////////////////////////////////////////////////
164
//////////////////////////////////////////////////
238
Poly::Poly(D3DXVECTOR3 p1, D3DXVECTOR3 p2, D3DXVECTOR3 p3):m_MaxDifference(0.7f),m_DistanceToOrigin(0)
165
Poly::Poly(D3DXVECTOR3 p1, D3DXVECTOR3 p2, D3DXVECTOR3 p3):m_MaxDifference(0.00001f),m_DistanceToOrigin(0),m_Center(D3DXVECTOR3(0,0,0))
239
{
166
{
240
	m_vVertices.push_back(p1);
167
	m_vVertices.push_back(p1);
241
	m_vVertices.push_back(p2);
168
	m_vVertices.push_back(p2);
...
...
246
	D3DXVec3Normalize(&m_Normal,&-m_Normal);
173
	D3DXVec3Normalize(&m_Normal,&-m_Normal);
247
174
248
	m_DistanceToOrigin = D3DXVec3Dot(&m_Normal,&p3);
175
	m_DistanceToOrigin = D3DXVec3Dot(&m_Normal,&p3);
249
}
250
176
251
Poly::Poly():m_MaxDifference(0.7f)
177
	
252
{
253
254
}
178
}
255
179
256
Poly::~Poly()
180
Poly::~Poly()
...
...
258
182
259
}
183
}
260
184
261
void Poly::GetNumberOfVerticesAndIndices(int &n,int &k)
185
//////////////////////////////////////////////////////////////////////////
262
{
186
//index and vertice buffer code
263
	n+=m_vVertices.size();
264
	k+=(m_vVertices.size()-2)*3;
265
}
266
187
267
void Poly::PolyFix(Poly* p)
268
{
269
	for(int i=2;i<m_vVertices.size();++i)
270
	{
271
		for(int j=0;j<2;++j)
272
		{
273
			D3DXVECTOR3 minus = p->m_vVertices[j] - m_vVertices[i];
274
			if(IsKindaEqual(minus))
275
			{
276
				m_vVertices[i] = p->m_vVertices[j];
277
			}		
278
		}
279
	}
280
}
281
282
void Poly::CheckIfPointsAreOnThisPoly(Poly* P)
283
{
284
	if(IsKindaEqual(m_Normal+P->m_Normal))
285
		return;
286
	for(int j=0;j<3;++j)
287
	{
288
		D3DXVECTOR3 temp = P->m_vVertices[j];
289
290
		float testvalue = D3DXVec3Dot( &m_Normal, &temp ) - m_DistanceToOrigin;
291
		if ( testvalue ==0 /*< 0.05f && testvalue > -0.05f*/ )
292
		{
293
			AddVertice(temp);
294
295
		}
296
	}
297
298
	if(m_vVertices.size()>4)
299
		int sdfsdfsdf =1;
300
	 					
301
}
302
303
bool Poly::DoesPointExists(D3DXVECTOR3& point)
304
{
305
	//search for the point in the first 3 vertices, these are ABSOLUTELY correct(directly from the file)
306
	for(int j=0;j<3;++j)
307
	{
308
		D3DXVECTOR3 minus = m_vVertices[j] - point;
309
		if(IsKindaEqual(minus))
310
		{
311
			point = m_vVertices[j];
312
			return true;
313
		}		
314
	}
315
	return false;
316
}
317
318
void Poly::AddVertice(D3DXVECTOR3 vertice)
319
{
320
	
321
322
	if(!DoesVerticeExists(vertice))
323
		m_vVertices.push_back(vertice);
324
}
325
326
void Poly::AddVerticesToBuffer(VERTEXSTRUCT* v,WORD* k,int &VerticesInBuffer,int &IndicesInBuffer)
188
void Poly::AddVerticesToBuffer(VERTEXSTRUCT* v,WORD* k,int &VerticesInBuffer,int &IndicesInBuffer)
327
{
189
{
328
	int firstvertice = VerticesInBuffer;
190
	int firstvertice = VerticesInBuffer;
...
...
344
	
206
	
345
}
207
}
346
208
347
bool Poly::DoesVerticeExists(D3DXVECTOR3 d3dv)
209
void Poly::GetNumberOfVerticesAndIndices(int &n,int &k)
348
{
210
{
349
	if (m_vVertices.size()<1)
211
	n+=m_vVertices.size();
350
		return false;
212
	k+=(m_vVertices.size()-2)*3;
213
}
351
214
215
216
//////////////////////////////////////////////////////////////////////////
217
//make this poly ready for use code
218
219
void Poly::TranslateTo(D3DXVECTOR3& T)
220
{
352
	for(UINT i=0;i<m_vVertices.size();++i)
221
	for(UINT i=0;i<m_vVertices.size();++i)
353
	{
222
	{
354
		D3DXVECTOR3 minus = m_vVertices.at(i) -d3dv;
223
		m_vVertices.at(i)-=T;
355
		if(IsKindaEqual(minus))
356
			return true;
357
	}
224
	}
358
	return false;
359
}
225
}
360
226
361
bool Poly::IsKindaEqual(D3DXVECTOR3 minus)
227
D3DXVECTOR3& Poly::CalculateCenter()
362
{
228
{
363
	D3DXVECTOR3 upperzero = D3DXVECTOR3(m_MaxDifference,m_MaxDifference,m_MaxDifference);
229
	//must call this before calling MakeReadyForConversion
364
	D3DXVECTOR3 lowerzero = D3DXVECTOR3(-m_MaxDifference,-m_MaxDifference,-m_MaxDifference);
230
	//also returns center of this poly for calculating center of this brush
365
231
	for(int i=0;i<m_vVertices.size();++i)
366
	if(minus.x < upperzero.x && minus.y < upperzero.y && minus.z < upperzero.z && minus.x > lowerzero.x && minus.y > lowerzero.y && minus.z > lowerzero.z)
232
	{
367
		return true;
233
		m_Center+= m_vVertices.at(i);
368
234
	}
369
	return false;
235
	m_Center /= (float)m_vVertices.size();
236
	return m_Center;
370
}
237
}
371
238
372
void Poly::MakeReadyForConversion()
239
void Poly::MakeReadyForConversion()
373
{
240
{
374
	
241
	//sorts vertices
375
	m_Center = D3DXVECTOR3(0,0,0);
376
	int size = m_vVertices.size();
377
	
378
	for(int i=0;i<size;++i)
379
	{
380
		m_Center+= m_vVertices.at(i);
381
	}
382
	m_Center /= (float)size;
383
242
384
	
243
	for(int j=0;j<(m_vVertices.size()-1);++j)
385
	for(int j=0;j<(size-1);++j)
386
	{
244
	{
387
		swap(m_vVertices[j+1],m_vVertices[FindNextVertice(j)]);
245
		swap(m_vVertices[j+1],m_vVertices[FindNextVertice(j)]);
388
246
389
	}
247
	}
390
391
}
248
}
392
249
393
float Poly::GetAngleBetweenPoints(D3DXVECTOR3& p1, D3DXVECTOR3& p2)
250
float Poly::GetAngleBetweenPoints(D3DXVECTOR3& p1, D3DXVECTOR3& p2)
394
{
251
{
252
	//part of sorting
395
	D3DXVECTOR3 norm1;
253
	D3DXVECTOR3 norm1;
396
	D3DXVECTOR3 norm2;
254
	D3DXVECTOR3 norm2;
397
255
...
...
405
}
263
}
406
264
407
int Poly::FindNextVertice(int VerticeNow)
265
int Poly::FindNextVertice(int VerticeNow)
408
{
266
{	
409
267
	//part of sorting
410
411
	float previousangle = 0;
268
	float previousangle = 0;
412
269
413
	int smallest = VerticeNow;
270
	int smallest = VerticeNow;
414
271
415
	for(int i=(VerticeNow+1);i<m_vVertices.size();++i)
272
	for(UINT i=(VerticeNow+1);i<m_vVertices.size();++i)
416
	{
273
	{
417
274
418
275
...
...
431
288
432
	return smallest;
289
	return smallest;
433
}
290
}
434
//////////////////////////////////////////////////
435
///////////// end of polyclass
436
//////////////////////////////////////////////////
437
291
292
//////////////////////////////////////////////////////////////////////////
293
//add vertice code
438
294
295
void Poly::AddVertice(D3DXVECTOR3 vertice)
296
{
297
	if(!DoesVerticeExists(vertice))//could happen in some rare cases
298
		m_vVertices.push_back(vertice);
299
}
439
300
301
bool Poly::DoesVerticeExists(D3DXVECTOR3 d3dv)
302
{
303
	if (m_vVertices.size()<1)
304
		return false;
440
305
306
	for(UINT i=0;i<m_vVertices.size();++i)
307
	{
308
		D3DXVECTOR3 minus = m_vVertices.at(i) -d3dv;
309
		if(IsKindaEqual(minus))
310
			return true;
311
	}
312
	return false;
313
}
441
314
315
bool Poly::IsKindaEqual(D3DXVECTOR3 minus)
316
{
317
	D3DXVECTOR3 upperzero = D3DXVECTOR3(m_MaxDifference,m_MaxDifference,m_MaxDifference);
318
	D3DXVECTOR3 lowerzero = D3DXVECTOR3(-m_MaxDifference,-m_MaxDifference,-m_MaxDifference);
442
319
320
	if(minus.x < upperzero.x && minus.y < upperzero.y && minus.z < upperzero.z && minus.x > lowerzero.x && minus.y >
lowerzero.y && minus.z > lowerzero.z)
321
		return true;
443
322
323
	return false;
324
}
444
325
326
void Poly::CheckIfPointsAreOnThisPoly(Poly* P)
327
{
328
	//checks if points of the other poly are on this poly, and add them is they lie on this poly
329
	
330
	if(m_Normal == P->m_Normal)
331
		return;
445
332
333
	for(int i=0;i<3;++i)
334
	{
335
		D3DXVECTOR3 temp = P->m_vVertices[i];
336
337
		float testvalue = D3DXVec3Dot( &m_Normal, &temp ) - m_DistanceToOrigin;
338
339
		if ( testvalue < 1.8f && testvalue > -1.8f )
340
		{
341
			AddVertice(temp);
342
		}
343
	}					
344
}
345
346
347
348
349
350
351
352
353
354
355

Added 3Xine/3Xine/UtilClasses.h

Show contents

Added 3Xine/3Xine/vmf/blok.vmf

Show contents

Added 3Xine/3Xine/vmf/blok2.vmf

Show contents

Added 3Xine/3Xine/vmf/blok3.vmf

Show contents

Added 3Xine/3Xine/vmf/blok3.vmx

Show contents

Added 3Xine/3Xine/vmf/blok4.vmf

Show contents

Added 3Xine/3Xine/vmf/blok4.vmx

Show contents

Added 3Xine/3Xine/vmf/blok5.vmf

Show contents

Added 3Xine/3Xine/vmf/blok5.vmx

Show contents

Added 3Xine/3Xine/vmf/blok6.vmf

Show contents

Added 3Xine/3Xine/vmf/bol.vmf

Show contents

Added 3Xine/3Xine/vmf/bolsmall.vmf

Show contents

Added 3Xine/3Xine/vmf/bolsmall.vmx

Show contents

Added 3Xine/3Xine/vmf/torus.vmf

Show contents

Added 3Xine/3Xine/vmf/triblok.vmf

Show contents

Added 3Xine/3Xine/vmf/wtf.vmf

Show contents

Added 3Xine/3Xine/vmf/wtf.vmx

Show contents

Updated 3Xine/3Xine/vmfparser.cpp Download diff

1213
117
				converterstream >> tempvector.x;
117
				converterstream >> tempvector.x;
118
				break;
118
				break;
119
			case 1:
119
			case 1:
120
				converterstream >> tempvector.z;
120
				converterstream >> tempvector.z;//to r handed
121
				break;
121
				break;
122
			case 2:
122
			case 2:
123
				converterstream >> tempvector.y;
123
				converterstream >> tempvector.y;//to r handed
124
				break;
124
				break;
125
			}
125
			}
126
			++found;
126
			++found;

Updated 3Xine/3Xine/vmfparser.h Download diff

1213
1
#pragma once
1
#pragma once
2
#include "XineEngine.h"
2
#include "XineEngine.h"
3
3
4
#include "OtherClasses.h"
4
#include "UtilClasses.h"
5
5
6
6
7
7
...
...
17
	void StartParsingFile(tstring filename);
17
	void StartParsingFile(tstring filename);
18
	void ParseSolid(tifstream& myfile);
18
	void ParseSolid(tifstream& myfile);
19
	Poly* ParsePlane(tstring PlaneString);
19
	Poly* ParsePlane(tstring PlaneString);
20
21
	//bool GetIntersection ( const plane &a, const plane &b, const plane &c, D3DXVECTOR3 &v );
22
	bool find(tstring WhatTofind);
20
	bool find(tstring WhatTofind);
23
21
24
	tstring m_Line;
22
	tstring m_Line;

Updated 3Xine/3Xine/XineEngine.cpp Download diff

1213
2
#include "DirectInput.h"
2
#include "DirectInput.h"
3
#include "Game.h"
3
#include "Game.h"
4
#include "MatrixClass.h"
4
#include "MatrixClass.h"
5
#include "PhysX.h"
5
6
6
XineEngine* XineEngine::SINGLETONPOINTER = 0;
7
XineEngine* XineEngine::SINGLETONPOINTER = 0;
7
8
...
...
31
32
32
33
33
 delete DI;
34
 delete DI;
35
 delete PX;
34
}
36
}
35
int XineEngine::Run(HINSTANCE hInstance, int cmdShow)
37
int XineEngine::Run(HINSTANCE hInstance, int cmdShow)
36
{
38
{
...
...
88
90
89
	//m_3D9Device->SetCursorProperties(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN),)
91
	//m_3D9Device->SetCursorProperties(GetSystemMetrics(SM_CXSCREEN)/2,GetSystemMetrics(SM_CYSCREEN),)
90
92
93
94
	PX->Init();
95
91
	m_pGame = new Game();
96
	m_pGame = new Game();
97
98
	
92
}
99
}
93
100
94
void XineEngine::Resize(RECT R)
101
void XineEngine::Resize(RECT R)
...
...
122
129
123
130
124
131
125
	//m_pPhysX->FetchResults();
132
	PX->FetchResults();
126
	
133
	
127
	m_pGame->UpdateScene(dt);
134
	m_pGame->UpdateScene(dt);
128
	
135
	
129
	//m_pPhysX->Simulate(dt);
136
	PX->Simulate(dt);
130
	
137
	
131
	DrawScene();
138
	DrawScene();
132
139