Advertisement
Ascar

Untitled

Jun 18th, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. // updates an enemy with fighter type attacker
  2. void EnemyControl::updateAttacker(Enemy& e, float deltaT){
  3. float bounceY = abs(spawnControl.outerAltitude - spawnControl.innerAltitude);
  4. float vLength = sqrtf(e.vel.x*e.vel.x + e.vel.y*e.vel.y + e.vel.z*e.vel.z);
  5. float pLength = sqrtf(e.pos.x*e.pos.x + e.pos.y*e.pos.y + e.pos.z*e.pos.z);
  6. float g = 14000.0f * vLength / (pLength*pLength);
  7. // update enemy position
  8. e.pos.x += deltaT * e.vel.x;
  9. e.pos.y += deltaT * e.vel.y;
  10. e.pos.z += deltaT * e.vel.z;
  11. // update enemy velocity direction
  12. if(e.fromX){
  13. e.vel.x += g * 4.0f * deltaT;
  14. }else{
  15. e.vel.x -= g * 4.0f * deltaT;
  16. }
  17. e.vel.y += g * bounceY * deltaT;
  18. if(e.fromZ){
  19. e.vel.z += g * 4.0f * deltaT;
  20. }else{
  21. e.vel.z -= g * 4.0f * deltaT;
  22. }
  23. // don't do this every time for performance
  24. if(vLength < (e.speedLength * 0.9)){
  25. // load e.vel into vector, normalize vector, rescale to speed, then store back in e.vel
  26. XMStoreFloat3(&e.vel, XMVector3Transform(XMVector3Normalize(XMLoadFloat3(&e.vel)), XMMatrixScaling((float)e.speed, (float)e.speed, (float)e.speed)));
  27. }
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement