MCPcopy Create free account
hub / github.com/axmolengine/axmol / update

Method update

tests/cpp-tests/Source/TerrainTest/TerrainTest.cpp:211–275  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

209}
210
211void Player::update(float dt)
212{
213 auto player = (MeshRenderer*)this;
214 switch (_playerState)
215 {
216 case PLAYER_STATE_IDLE:
217 break;
218 case PLAYER_STATE_FORWARD:
219 {
220 Vec3 curPos = player->getPosition3D();
221 Vec3 newFaceDir = _targetPos - curPos;
222 newFaceDir.y = 0.0f;
223 newFaceDir.normalize();
224 Vec3 offset = newFaceDir * 25.0f * dt;
225 curPos += offset;
226 player->setPosition3D(curPos);
227 }
228 break;
229 case PLAYER_STATE_BACKWARD:
230 {
231 Vec3 forward_vec;
232 player->getNodeToWorldTransform().getForwardVector(&forward_vec);
233 forward_vec.normalize();
234 player->setPosition3D(player->getPosition3D() - forward_vec * 15 * dt);
235 }
236 break;
237 case PLAYER_STATE_LEFT:
238 {
239 player->setRotation3D(player->getRotation3D() + Vec3(0, 25 * dt, 0));
240 }
241 break;
242 case PLAYER_STATE_RIGHT:
243 {
244 player->setRotation3D(player->getRotation3D() + Vec3(0, -25 * dt, 0));
245 }
246 break;
247 default:
248 break;
249 }
250 // transform player position to world coord
251 auto playerPos = player->getPosition3D();
252 auto playerModelMat = player->getParent()->getNodeToWorldTransform();
253 playerModelMat.transformPoint(&playerPos);
254 Vec3 Normal;
255 float player_h = _terrain->getHeight(playerPos.x, playerPos.z, &Normal);
256 if (Normal.isZero()) // check the player whether is out of the terrain
257 {
258 player_h = playerPos.y;
259 }
260 else
261 {
262 player_h += PLAYER_HEIGHT;
263 }
264 player->setPositionY(player_h);
265 Quaternion q2;
266 q2.createFromAxisAngle(Vec3(0, 1, 0), (float)-M_PI, &q2);
267
268 Quaternion headingQ;

Callers

nothing calls this directly

Calls 14

getRotation3DMethod · 0.80
Vec3Function · 0.50
Vec4Function · 0.50
getPosition3DMethod · 0.45
normalizeMethod · 0.45
setPosition3DMethod · 0.45
getForwardVectorMethod · 0.45
setRotation3DMethod · 0.45
getParentMethod · 0.45
getHeightMethod · 0.45
isZeroMethod · 0.45

Tested by

no test coverage detected