annotate LightClone/Source/Bot.cpp @ 65:41980ff0607d

Added shader and textures for bot
author koryspansel <koryspansel@bendbroadband.com>
date Wed, 05 Oct 2011 12:55:46 -0700
parents 3507bd831c7f
children f7095bce01cf
rev   line source
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
1 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
2 * Bot
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
3 */
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
4
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
5 #include "Bot.h"
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
6 #include "Clock.h"
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
7 #include "VertexTypes.h"
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
8
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
9 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
10 * DirectionAngle
37
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
11 * Angles for the different directions the bot could be facing
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
12 */
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
13 const float DirectionAngle[] = {-1.0f * D3DX_PI / 2.0f, -4.0f * D3DX_PI / 2.0f, -3.0f * D3DX_PI / 2.0f, -2.0f * D3DX_PI / 2.0f};
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
14
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
15 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
16 * Bot
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
17 */
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
18 Bot::Bot()
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
19 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
20 pEnvironment = 0;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
21 nState = BotState_Idle;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
22 kSize = D3DXVECTOR3(0.55f, 1.00f, 0.55f);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
23
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
24 pEffect = NULL;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
25 pVertexBuffer = NULL;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
26 pTexture = NULL;
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
27 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
28
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
29 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
30 * Initialize
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
31 */
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
32 ErrorCode Bot::Initialize(ServiceProvider* pServiceProvider)
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
33 {
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
34 ResourceManager* pResourceManager = NULL;
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
35
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
36 ErrorCode eCode = pServiceProvider->GetService("ResourceManager", &pResourceManager);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
37 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
38 {
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
39 eCode = pResourceManager->CreateEffectFromFile("Data\\Shaders\\Bot.fx", &pEffect);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
40 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
41 {
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
42 eCode = pResourceManager->CreateTextureFromFile("Data\\Textures\\Bot.tga", &pTexture);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
43 if(eCode == Error_Success)
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
44 {
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
45 eCode = pResourceManager->CreateTextureFromFile("Data\\Textures\\BotMask.tga", &pMask);
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
46 if(eCode == Error_Success)
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
47 {
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
48 eCode = pResourceManager->CreateVertexBuffer(VerticesPerBlock * sizeof(Vertex::Block), D3DUSAGE_WRITEONLY, D3DPOOL_MANAGED, &pVertexBuffer);
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
49 if(eCode == Error_Success)
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
50 {
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
51 eCode = SetupVertexBuffer();
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
52 }
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
53 }
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
54 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
55 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
56 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
57
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
58 return eCode;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
59 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
60
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
61 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
62 * Terminate
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
63 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
64 void Bot::Terminate()
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
65 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
66 if(pVertexBuffer)
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
67 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
68 pVertexBuffer->Release();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
69 pVertexBuffer = NULL;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
70 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
71 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
72
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
73 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
74 * Setup
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
75 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
76 void Bot::Setup(Environment* pInstance)
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
77 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
78 pEnvironment = pInstance;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
79 nState = BotState_Idle;
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
80 nColor = D3DCOLOR_XRGB(192, 0, 0);
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
81 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
82
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
83 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
84 * Reset
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
85 */
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
86 void Bot::Reset()
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
87 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
88 nState = BotState_Idle;
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
89 nColor = D3DCOLOR_XRGB(192, 0, 0);
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
90
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
91 kMachine.Reset();
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
92 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
93
37
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
94 /*
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
95 * SetPosition
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
96 */
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
97 void Bot::SetPosition(const Position& kValue)
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
98 {
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
99 kPosition = kValue;
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
100 }
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
101
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
102 /*
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
103 * SetDirection
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
104 */
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
105 void Bot::SetDirection(uint32 nValue)
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
106 {
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
107 kDirection = nValue;
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
108 }
58a16d529d95 Refactoring code and adding events for drag and drop
koryspansel <koryspansel@bendbroadband.com>
parents: 27
diff changeset
109
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
110 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
111 * GetWorldPosition
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
112 */
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
113 const D3DXVECTOR3 Bot::GetWorldPosition() const
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
114 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
115 const D3DXVECTOR3& kScale = pEnvironment->GetScale();
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
116
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
117 D3DXVECTOR3 kWorldPosition;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
118 kWorldPosition.x = kScale.x * kPosition.X;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
119 kWorldPosition.y = kScale.y * pEnvironment->GetAltitude(kPosition.X, kPosition.Y);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
120 kWorldPosition.z = kScale.z * kPosition.Y;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
121
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
122 if(nState == BotState_Animate)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
123 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
124 if(kSequencer.nSequence == BotSequence_Forward)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
125 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
126 kWorldPosition.x = kScale.x * ((int32)kPosition.X + kSequencer.fTimer * ((int32)kSequencer.kPosition.X - (int32)kPosition.X));
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
127 kWorldPosition.z = kScale.z * ((int32)kPosition.Y + kSequencer.fTimer * ((int32)kSequencer.kPosition.Y - (int32)kPosition.Y));
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
128 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
129 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
130
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
131 if(kSequencer.nSequence == BotSequence_Jump)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
132 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
133 const uint32 nHeightA = pEnvironment->GetAltitude(kPosition.X, kPosition.Y);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
134 const uint32 nHeightB = pEnvironment->GetAltitude(kSequencer.kPosition.X, kSequencer.kPosition.Y);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
135
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
136 const float fDistanceX = kScale.x;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
137 const float fDistanceY = kScale.y * ((float)nHeightB - (float)nHeightA);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
138 const float fHeight = nHeightB > nHeightA ? 2.0f * kScale.y : kScale.y;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
139
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
140 const float fB = (fHeight - 0.25f * fDistanceY) / (-0.25f * fDistanceX + 0.5f * fDistanceX);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
141 const float fA = (fDistanceY - fB * fDistanceX) / (fDistanceX * fDistanceX);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
142 const float fX = kSequencer.fTimer * fDistanceX;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
143
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
144 kWorldPosition.x = kScale.x * ((int32)kPosition.X + kSequencer.fTimer * ((int32)kSequencer.kPosition.X - (int32)kPosition.X));
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
145 kWorldPosition.y = nHeightA * kScale.y + fX * (fA * fX + fB);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
146 kWorldPosition.z = kScale.z * ((int32)kPosition.Y + kSequencer.fTimer * ((int32)kSequencer.kPosition.Y - (int32)kPosition.Y));
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
147 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
148 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
149
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
150 return kWorldPosition;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
151 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
152
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
153 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
154 * GetWorldOrientation
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
155 */
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
156 const D3DXVECTOR3 Bot::GetWorldOrientation() const
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
157 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
158 D3DXVECTOR3 kWorldOrientation;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
159 kWorldOrientation.x = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
160 kWorldOrientation.y = DirectionAngle[kDirection];
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
161 kWorldOrientation.z = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
162
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
163 if(nState == BotState_Animate)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
164 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
165 if(kSequencer.nSequence == BotSequence_RotateCW || kSequencer.nSequence == BotSequence_RotateCCW)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
166 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
167 kWorldOrientation.y = InterpolateDirection(kDirection, kSequencer.kDirection, kSequencer.fTimer);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
168 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
169 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
170
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
171 return kWorldOrientation;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
172 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
173
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
174 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
175 * Upload
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
176 */
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents: 37
diff changeset
177 ErrorCode Bot::Upload(const Program& kProgram)
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
178 {
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents: 37
diff changeset
179 ErrorCode eCode = kProgram.Upload(kMachine);
4
d52a7042fa1a Refactor code panes & VM functions
koryspansel
parents: 3
diff changeset
180 if(eCode == Error_Success)
d52a7042fa1a Refactor code panes & VM functions
koryspansel
parents: 3
diff changeset
181 {
d52a7042fa1a Refactor code panes & VM functions
koryspansel
parents: 3
diff changeset
182 nState = BotState_Evaluate;
d52a7042fa1a Refactor code panes & VM functions
koryspansel
parents: 3
diff changeset
183 }
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
184
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
185 return eCode;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
186 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
187
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
188 /*
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
189 * Update
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
190 */
3
6f227dd9a94f Re-add code that was lost during the transfer
koryspansel
parents: 0
diff changeset
191 bool Bot::Update(float fElapsed)
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
192 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
193 if(nState == BotState_Evaluate)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
194 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
195 bool bHandled = false;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
196
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
197 kClock.Reset();
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
198
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
199 while(!bHandled && kClock.GetElapsed(false) < fElapsed)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
200 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
201 uint32 nAction = kMachine.Step();
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
202
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
203 if(Action_Forward <= nAction && nAction <= Action_Light)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
204 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
205 if(nAction == Action_Forward)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
206 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
207 if(pEnvironment->IsMovementValid(nAction, kPosition.X, kPosition.Y, kDirection))
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
208 {
60
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
209 kSequencer.kPosition.X = (int32)kPosition.X + GetOffsetFromDirectionX(kDirection);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
210 kSequencer.kPosition.Y = (int32)kPosition.Y + GetOffsetFromDirectionY(kDirection);
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
211 kSequencer.nSequence = BotSequence_Forward;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
212 kSequencer.fTimer = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
213 kSequencer.fSpeed = 1.5f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
214 nState = BotState_Animate;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
215 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
216 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
217 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
218
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
219 if(nAction == Action_RotateCW)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
220 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
221 kSequencer.kDirection = (kDirection + 1) % Direction_Count;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
222 kSequencer.nSequence = BotSequence_RotateCW;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
223 kSequencer.fTimer = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
224 kSequencer.fSpeed = 1.5f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
225 nState = BotState_Animate;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
226 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
227 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
228
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
229 if(nAction == Action_RotateCCW)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
230 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
231 nState = BotState_Animate;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
232 kSequencer.kDirection = (kDirection - 1 + Direction_Count) % Direction_Count;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
233 kSequencer.nSequence = BotSequence_RotateCCW;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
234 kSequencer.fTimer = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
235 kSequencer.fSpeed = 1.5f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
236 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
237 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
238
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
239 if(nAction == Action_Jump)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
240 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
241 if(pEnvironment->IsMovementValid(nAction, kPosition.X, kPosition.Y, kDirection))
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
242 {
60
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
243 kSequencer.kPosition.X = (int32)kPosition.X + GetOffsetFromDirectionX(kDirection);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
244 kSequencer.kPosition.Y = (int32)kPosition.Y + GetOffsetFromDirectionY(kDirection);
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
245 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
246 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
247 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
248 kSequencer.kPosition.X = kPosition.X;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
249 kSequencer.kPosition.Y = kPosition.Y;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
250 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
251
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
252 nState = BotState_Animate;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
253 kSequencer.nSequence = BotSequence_Jump;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
254 kSequencer.fTimer = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
255 kSequencer.fSpeed = 1.5f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
256 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
257 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
258
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
259 if(nAction == Action_Light)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
260 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
261 nState = BotState_Animate;
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
262 nColor = D3DCOLOR_XRGB(0, 0, 192);
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
263 kSequencer.nSequence = BotSequence_Light;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
264 kSequencer.fTimer = 0.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
265 kSequencer.fSpeed = 3.0f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
266 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
267
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
268 bHandled = true;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
269 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
270 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
271 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
272 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
273
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
274 if(nState == BotState_Animate)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
275 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
276 kSequencer.fTimer += kSequencer.fSpeed * fElapsed;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
277 if(kSequencer.fTimer >= 1.0f)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
278 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
279 if(kSequencer.nSequence == BotSequence_Forward)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
280 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
281 nState = BotState_Pause;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
282 kPosition = kSequencer.kPosition;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
283 kSequencer.fTimer = 0.4f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
284 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
285 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
286
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
287 if(kSequencer.nSequence == BotSequence_RotateCW)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
288 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
289 nState = BotState_Pause;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
290 kDirection = kSequencer.kDirection;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
291 kSequencer.fTimer = 0.4f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
292 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
293 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
294
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
295 if(kSequencer.nSequence == BotSequence_RotateCCW)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
296 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
297 nState = BotState_Pause;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
298 kDirection = kSequencer.kDirection;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
299 kSequencer.fTimer = 0.4f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
300 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
301 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
302
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
303 if(kSequencer.nSequence == BotSequence_Jump)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
304 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
305 nState = BotState_Pause;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
306 kPosition = kSequencer.kPosition;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
307 kSequencer.fTimer = 0.4f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
308 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
309 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
310
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
311 if(kSequencer.nSequence == BotSequence_Light)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
312 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
313 pEnvironment->NotifyAction(kPosition.X, kPosition.Y);
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
314
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
315 nState = BotState_Pause;
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
316 nColor = D3DCOLOR_XRGB(192, 0, 0);
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
317 kSequencer.fTimer = 0.4f;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
318 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
319 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
320 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
321 else
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
322
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
323 if(nState == BotState_Pause)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
324 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
325 kSequencer.fTimer -= fElapsed;
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
326 if(kSequencer.fTimer <= 0.0f)
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
327 {
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
328 nState = BotState_Evaluate;
3
6f227dd9a94f Re-add code that was lost during the transfer
koryspansel
parents: 0
diff changeset
329 return true;
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
330 }
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
331 }
3
6f227dd9a94f Re-add code that was lost during the transfer
koryspansel
parents: 0
diff changeset
332
6f227dd9a94f Re-add code that was lost during the transfer
koryspansel
parents: 0
diff changeset
333 return false;
0
7e3a0ae9c016 Initial commit
koryspansel <koryspansel@bendbroadband.com>
parents:
diff changeset
334 }
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
335
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
336 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
337 * Render
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
338 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
339 void Bot::Render(RenderContext& kContext, Camera& kCamera)
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
340 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
341 const D3DXVECTOR3& kPosition = GetWorldPosition();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
342 const D3DXVECTOR3& kOrientation = GetWorldOrientation();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
343
38
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents: 37
diff changeset
344 const float fOffsetX = -0.5f * (pEnvironment->GetWidth() * pEnvironment->GetScale().x) + 0.5f * pEnvironment->GetScale().x;
2caa7c7e2cb5 Refactored program; Added dialog
koryspansel
parents: 37
diff changeset
345 const float fOffsetZ = -0.5f * (pEnvironment->GetHeight() * pEnvironment->GetScale().z) + 0.5f * pEnvironment->GetScale().z;
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
346
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
347 uint32 nPasses = 0;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
348
10
292e534f00c2 Moved rendering into Bot/Environment; Started work on Gui system
koryspansel <koryspansel@bendbroadband.com>
parents: 9
diff changeset
349 kContext.ApplyCameraToEffect(kCamera, pEffect);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
350
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
351 pEffect->SetTechnique(pEffect->GetTechnique(0));
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
352 pEffect->Begin(&nPasses, 0);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
353 pEffect->BeginPass(0);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
354
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
355 D3DXMATRIX kScale;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
356 D3DXMatrixScaling(&kScale, kSize.x, kSize.y, kSize.z);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
357
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
358 D3DXMATRIX kTranslate;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
359 D3DXMatrixTranslation(&kTranslate, fOffsetX + kPosition.x, kPosition.y, fOffsetZ + kPosition.z);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
360
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
361 D3DXMATRIX kRotate;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
362 D3DXMatrixRotationY(&kRotate, kOrientation.y);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
363
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
364 D3DXMATRIX kTempMatrix;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
365 D3DXMATRIX kWorldMatrix;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
366 D3DXMatrixMultiply(&kWorldMatrix, D3DXMatrixMultiply(&kTempMatrix, &kScale, &kRotate), &kTranslate);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
367
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
368 const float fAlpha = ((nColor >> 24) & 0xFF) / 255.0f;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
369 const float fRed = ((nColor >> 16) & 0xFF) / 255.0f;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
370 const float fGreen = ((nColor >> 8 ) & 0xFF) / 255.0f;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
371 const float fBlue = ((nColor >> 0 ) & 0xFF) / 255.0f;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
372
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
373 const D3DXVECTOR4 kColorVector(fRed, fGreen, fBlue, fAlpha);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
374
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
375 pEffect->SetMatrix(pEffect->GetParameterByName(NULL, "kWorld"), &kWorldMatrix);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
376 pEffect->SetVector(pEffect->GetParameterByName(NULL, "kColor"), &kColorVector);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
377 pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTexture"), pTexture);
65
41980ff0607d Added shader and textures for bot
koryspansel <koryspansel@bendbroadband.com>
parents: 64
diff changeset
378 pEffect->SetTexture(pEffect->GetParameterByName(NULL, "kTextureMask"), pMask);
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
379 pEffect->CommitChanges();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
380
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
381 kContext.DrawTriangles(Vertex::Block::Declaration, pVertexBuffer, sizeof(Vertex::Block), FacesPerCube * TrianglesPerFace);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
382
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
383 pEffect->EndPass();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
384 pEffect->End();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
385 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
386
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
387 /*
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
388 * SetupVertexBuffer
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
389 */
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
390 ErrorCode Bot::SetupVertexBuffer()
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
391 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
392 Vertex::Block* pVertices = NULL;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
393
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
394 HRESULT hResult = pVertexBuffer->Lock(0, 0, (void**)&pVertices, D3DLOCK_DISCARD);
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
395 if(FAILED(hResult))
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
396 {
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
397 return Error_Fail;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
398 }
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
399
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
400 const float fU1 = 0.66f;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
401 const float fV1 = 0.66f;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
402
60
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
403 const float fScaleU = 64.0f / 320.0f;
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
404 const float fScaleV = 128.0f / 128.0f;
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
405
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
406 // right
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
407 pVertices[0] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 3 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
408 pVertices[1] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 3 * fScaleU + 0 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
409 pVertices[2] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 3 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
410 pVertices[3] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 3 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
411 pVertices[4] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, 0.0f, -1.0f, 3 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
412 pVertices[5] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, 0.0f, -1.0f, 3 * fScaleU + 1 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
413 // left
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
414 pVertices[6] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 2 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
415 pVertices[7] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 2 * fScaleU + 0 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
416 pVertices[8] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 2 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
417 pVertices[9] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 2 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
418 pVertices[10] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, 0.0f, +1.0f, 2 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
419 pVertices[11] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, 0.0f, +1.0f, 2 * fScaleU + 1 * fScaleU, 1 * fScaleV);
60
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
420 // back
64
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
421 pVertices[12] = Vertex::Block(-0.5f, 0.0f, +0.5f, -1.0f, 0.0f, 0.0f, 1 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
422 pVertices[13] = Vertex::Block(-0.5f, 1.0f, +0.5f, -1.0f, 0.0f, 0.0f, 1 * fScaleU + 0 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
423 pVertices[14] = Vertex::Block(-0.5f, 1.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
424 pVertices[15] = Vertex::Block(-0.5f, 0.0f, +0.5f, -1.0f, 0.0f, 0.0f, 1 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
425 pVertices[16] = Vertex::Block(-0.5f, 1.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
426 pVertices[17] = Vertex::Block(-0.5f, 0.0f, -0.5f, -1.0f, 0.0f, 0.0f, 1 * fScaleU + 1 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
427 // front
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
428 pVertices[18] = Vertex::Block(+0.5f, 0.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
429 pVertices[19] = Vertex::Block(+0.5f, 1.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0 * fScaleU + 0 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
430 pVertices[20] = Vertex::Block(+0.5f, 1.0f, +0.5f, +1.0f, 0.0f, 0.0f, 0 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
431 pVertices[21] = Vertex::Block(+0.5f, 0.0f, -0.5f, +1.0f, 0.0f, 0.0f, 0 * fScaleU + 0 * fScaleU, 1 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
432 pVertices[22] = Vertex::Block(+0.5f, 1.0f, +0.5f, +1.0f, 0.0f, 0.0f, 0 * fScaleU + 1 * fScaleU, 0 * fScaleV);
3507bd831c7f Hook up ServiceProvider
koryspansel <koryspansel@bendbroadband.com>
parents: 60
diff changeset
433 pVertices[23] = Vertex::Block(+0.5f, 0.0f, +0.5f, +1.0f, 0.0f, 0.0f, 0 * fScaleU + 1 * fScaleU, 1 * fScaleV);
60
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
434 // top
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
435 pVertices[24] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 4 * fScaleU + 0 * fScaleU, 0.0f * fScaleV + 0.5f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
436 pVertices[25] = Vertex::Block(-0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 4 * fScaleU + 0 * fScaleU, 0.0f * fScaleV + 0.0f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
437 pVertices[26] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 4 * fScaleU + 1 * fScaleU, 0.0f * fScaleV + 0.0f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
438 pVertices[27] = Vertex::Block(-0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 4 * fScaleU + 0 * fScaleU, 0.0f * fScaleV + 0.5f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
439 pVertices[28] = Vertex::Block(+0.5f, 1.0f, +0.5f, 0.0f, +1.0f, 0.0f, 4 * fScaleU + 1 * fScaleU, 0.0f * fScaleV + 0.0f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
440 pVertices[29] = Vertex::Block(+0.5f, 1.0f, -0.5f, 0.0f, +1.0f, 0.0f, 4 * fScaleU + 1 * fScaleU, 0.0f * fScaleV + 0.5f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
441 // bottom
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
442 pVertices[30] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 5 * fScaleU + 0 * fScaleU, 0.5f * fScaleV + 0.5f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
443 pVertices[31] = Vertex::Block(-0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 5 * fScaleU + 0 * fScaleU, 0.5f * fScaleV + 0.0f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
444 pVertices[32] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 5 * fScaleU + 1 * fScaleU, 0.5f * fScaleV + 0.0f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
445 pVertices[33] = Vertex::Block(-0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 5 * fScaleU + 0 * fScaleU, 0.5f * fScaleV + 0.5f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
446 pVertices[34] = Vertex::Block(+0.5f, 0.0f, -0.5f, 0.0f, -1.0f, 0.0f, 5 * fScaleU + 1 * fScaleU, 0.5f * fScaleV + 0.0f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
447 pVertices[35] = Vertex::Block(+0.5f, 0.0f, +0.5f, 0.0f, -1.0f, 0.0f, 5 * fScaleU + 1 * fScaleU, 0.5f * fScaleV + 0.5f * fScaleV);
b0f642ee22d3 Additional maps
koryspansel <koryspansel@bendbroadband.com>
parents: 54
diff changeset
448
9
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
449 pVertexBuffer->Unlock();
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
450
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
451 return Error_Success;
e494c4295dba Conversion to World architecture
koryspansel
parents: 4
diff changeset
452 }