Advertisement
Guest User

Untitled

a guest
Apr 28th, 2015
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.32 KB | None | 0 0
  1. void updateRobot()
  2. {
  3. glBindBuffer(GL_ARRAY_BUFFER, vboIDs[7]);
  4. vec4 p1,p2,p3,p4,p5,p6,p7,p8;
  5. p1 = vec4(-robot.base / 2 , 0 , robot.thick , 1) + robot.position;
  6. p2 = vec4(robot.base / 2 , 0 , robot.thick , 1) + robot.position;
  7. p3 = vec4(robot.base / 2 , robot.thick , robot.thick , 1) + robot.position;
  8. p4 = vec4(-robot.base / 2 , robot.thick , robot.thick , 1) + robot.position;
  9. p5 = vec4(-robot.base / 2 , 0 , -robot.thick , 1) + robot.position;
  10. p6 = vec4(robot.base / 2 , 0 , -robot.thick , 1) + robot.position;
  11. p7 = vec4(robot.base / 2 , robot.thick , -robot.thick , 1) + robot.position;
  12. p8 = vec4(-robot.base / 2 , robot.thick , -robot.thick , 1) + robot.position;
  13. vec4 addPoints1[36] = {p1,p2,p3,p1,p3,p4, p5,p6,p7,p5,p7,p8, p5,p1,p4,p5,p4,p8, p2,p6,p7,p2,p7,p3, p4,p3,p7,p4,p7,p8, p1,p2,p6,p1,p6,p5};
  14. glBufferSubData(GL_ARRAY_BUFFER, 0*36*sizeof(vec4), 36*sizeof(vec4), addPoints1);
  15. p1 = vec4(-robot.thick / 2 , 0 , robot.thick / 2 , 1) + robot.position; p1.w = 1;
  16. p2 = vec4(robot.thick / 2 , 0 , robot.thick / 2 , 1) + robot.position; p2.w = 1;
  17. p3 = vec4(robot.arm1 * sin(robot.theta) , robot.arm1 * cos(robot.theta) , 0 , 1) + p2; p3.w = 1;
  18. p4 = vec4(-robot.thick , 0, 0 , 1) + p3; p4.w = 1;
  19. p5 = vec4(0 , 0 , -robot.thick , 1) + p1; p5.w = 1;
  20. p6 = vec4(0 , 0 , -robot.thick , 1) + p2; p6.w = 1;
  21. p7 = vec4(0 , 0 , -robot.thick , 1) + p3; p7.w = 1;
  22. p8 = vec4(0 , 0 , -robot.thick , 1) + p4; p8.w = 1;
  23. vec4 addPoints2[36] = {p1,p2,p3,p1,p3,p4, p5,p6,p7,p5,p7,p8, p5,p1,p4,p5,p4,p8, p2,p6,p7,p2,p7,p3, p4,p3,p7,p4,p7,p8, p1,p2,p6,p1,p6,p5};
  24. glBufferSubData(GL_ARRAY_BUFFER, 1*36*sizeof(vec4), 36*sizeof(vec4), addPoints2);
  25. p1 = p3;
  26. p2 = vec4(robot.arm2 * cos(robot.phi - robot.theta) , robot.arm2 * sin(robot.phi - robot.theta) , 0 , 1) + p1; p2.w = 1;
  27. p3 = vec4(-robot.thick * sin(robot.phi - robot.theta) , robot.thick * cos(robot.phi - robot.theta) , 0 , 1) + p2; p3.w = 1;
  28. p4 = vec4(-robot.thick * sin(robot.phi - robot.theta) , robot.thick * cos(robot.phi - robot.theta) , 0 , 1) + p1; p4.w = 1;
  29. p5 = vec4(0, 0 , -robot.thick , 1) + p1; p5.w = 1;
  30. p6 = vec4(0, 0 , -robot.thick , 1) + p2; p6.w = 1;
  31. p7 = vec4(0, 0 , -robot.thick , 1) + p3; p7.w = 1;
  32. p8 = vec4(0, 0 , -robot.thick , 1) + p4; p8.w = 1;
  33. vec4 addPoints3[36] = {p1,p2,p3,p1,p3,p4, p5,p6,p7,p5,p7,p8, p5,p1,p4,p5,p4,p8, p2,p6,p7,p2,p7,p3, p4,p3,p7,p4,p7,p8, p1,p2,p6,p1,p6,p5};
  34. glBufferSubData(GL_ARRAY_BUFFER, 2*36*sizeof(vec4), 36*sizeof(vec4), addPoints3);
  35. int sx= (int)((p2.x + gridX * gridLength / 2) / gridLength);
  36. int sy= (int)(p2.y / gridLength);
  37. //check if there is room
  38. bool flag = true;
  39. for (int i = 0; i < 4; i ++)
  40. {
  41. int piecex = sx + allshape[tiletype][shapenum][i][0];
  42. int piecey = sy + allshape[tiletype][shapenum][i][1];
  43. if (piecex < 0 || piecex > gridX - 1 || piecey < 0 || piecey > gridY - 1 ) {
  44. if (piecex < 0) robot.touch = 1;
  45. if (piecex > gridX - 1) robot.touch = 2;
  46. if (piecey < 0) robot.touch = 3;
  47. if (piecey > gridY - 1) robot.touch = 4;
  48. flag = false;
  49. break;
  50. }
  51. }
  52. if ( flag ){
  53. robot.tipx = sx;
  54. robot.tipy = sy;
  55. robot.touch = 0;
  56. }
  57. glBindBuffer(GL_ARRAY_BUFFER, vboIDs[8]);
  58. for (int i = 0; i < 36; i ++) {
  59. glBufferSubData(GL_ARRAY_BUFFER, i*sizeof(vec4), sizeof(vec4), blue1);
  60. }
  61. for (int i = 36; i < 2 * 36; i ++) {
  62. glBufferSubData(GL_ARRAY_BUFFER, i*sizeof(vec4), sizeof(vec4), blue2);
  63. }
  64. for (int i = 36 * 2; i < 3 * 36; i ++) {
  65. glBufferSubData(GL_ARRAY_BUFFER, i*sizeof(vec4), sizeof(vec4), blue3);
  66. }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement