annotate LightClone/Source/Bot.cpp @ 42:91e927584f92

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