| 461 | } |
| 462 | } |
| 463 | void Camera3DTestDemo::updateState(float elapsedTime) |
| 464 | { |
| 465 | if (_mesh) |
| 466 | { |
| 467 | Vec3 curPos = _mesh->getPosition3D(); |
| 468 | Vec3 curFaceDir; |
| 469 | _mesh->getNodeToWorldTransform().getForwardVector(&curFaceDir); |
| 470 | curFaceDir = -curFaceDir; |
| 471 | curFaceDir.normalize(); |
| 472 | Vec3 newFaceDir = _targetPos - curPos; |
| 473 | newFaceDir.y = 0.0f; |
| 474 | newFaceDir.normalize(); |
| 475 | float cosAngle = std::fabs(Vec3::dot(curFaceDir, newFaceDir) - 1.0f); |
| 476 | float dist = curPos.distanceSquared(_targetPos); |
| 477 | if (dist <= 4.0f) |
| 478 | { |
| 479 | if (cosAngle <= 0.01f) |
| 480 | _curState = State_Idle; |
| 481 | else |
| 482 | _curState = State_Rotate; |
| 483 | } |
| 484 | else |
| 485 | { |
| 486 | if (cosAngle > 0.01f) |
| 487 | _curState = State_Rotate | State_Move; |
| 488 | else |
| 489 | _curState = State_Move; |
| 490 | } |
| 491 | } |
| 492 | } |
| 493 | void Camera3DTestDemo::onTouchesEnded(const std::vector<Touch*>& touches, ax::Event* event) |
| 494 | { |
| 495 | for (auto& item : touches) |
nothing calls this directly
no test coverage detected