Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void updateRobot()
- {
- glBindBuffer(GL_ARRAY_BUFFER, vboIDs[7]);
- vec4 p1,p2,p3,p4,p5,p6,p7,p8;
- p1 = vec4(-robot.base / 2 , 0 , robot.thick , 1) + robot.position;
- p2 = vec4(robot.base / 2 , 0 , robot.thick , 1) + robot.position;
- p3 = vec4(robot.base / 2 , robot.thick , robot.thick , 1) + robot.position;
- p4 = vec4(-robot.base / 2 , robot.thick , robot.thick , 1) + robot.position;
- p5 = vec4(-robot.base / 2 , 0 , -robot.thick , 1) + robot.position;
- p6 = vec4(robot.base / 2 , 0 , -robot.thick , 1) + robot.position;
- p7 = vec4(robot.base / 2 , robot.thick , -robot.thick , 1) + robot.position;
- p8 = vec4(-robot.base / 2 , robot.thick , -robot.thick , 1) + robot.position;
- 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};
- glBufferSubData(GL_ARRAY_BUFFER, 0*36*sizeof(vec4), 36*sizeof(vec4), addPoints1);
- p1 = vec4(-robot.thick / 2 , 0 , robot.thick / 2 , 1) + robot.position; p1.w = 1;
- p2 = vec4(robot.thick / 2 , 0 , robot.thick / 2 , 1) + robot.position; p2.w = 1;
- p3 = vec4(robot.arm1 * sin(robot.theta) , robot.arm1 * cos(robot.theta) , 0 , 1) + p2; p3.w = 1;
- p4 = vec4(-robot.thick , 0, 0 , 1) + p3; p4.w = 1;
- p5 = vec4(0 , 0 , -robot.thick , 1) + p1; p5.w = 1;
- p6 = vec4(0 , 0 , -robot.thick , 1) + p2; p6.w = 1;
- p7 = vec4(0 , 0 , -robot.thick , 1) + p3; p7.w = 1;
- p8 = vec4(0 , 0 , -robot.thick , 1) + p4; p8.w = 1;
- 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};
- glBufferSubData(GL_ARRAY_BUFFER, 1*36*sizeof(vec4), 36*sizeof(vec4), addPoints2);
- p1 = p3;
- p2 = vec4(robot.arm2 * cos(robot.phi - robot.theta) , robot.arm2 * sin(robot.phi - robot.theta) , 0 , 1) + p1; p2.w = 1;
- p3 = vec4(-robot.thick * sin(robot.phi - robot.theta) , robot.thick * cos(robot.phi - robot.theta) , 0 , 1) + p2; p3.w = 1;
- p4 = vec4(-robot.thick * sin(robot.phi - robot.theta) , robot.thick * cos(robot.phi - robot.theta) , 0 , 1) + p1; p4.w = 1;
- p5 = vec4(0, 0 , -robot.thick , 1) + p1; p5.w = 1;
- p6 = vec4(0, 0 , -robot.thick , 1) + p2; p6.w = 1;
- p7 = vec4(0, 0 , -robot.thick , 1) + p3; p7.w = 1;
- p8 = vec4(0, 0 , -robot.thick , 1) + p4; p8.w = 1;
- 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};
- glBufferSubData(GL_ARRAY_BUFFER, 2*36*sizeof(vec4), 36*sizeof(vec4), addPoints3);
- int sx= (int)((p2.x + gridX * gridLength / 2) / gridLength);
- int sy= (int)(p2.y / gridLength);
- //check if there is room
- bool flag = true;
- for (int i = 0; i < 4; i ++)
- {
- int piecex = sx + allshape[tiletype][shapenum][i][0];
- int piecey = sy + allshape[tiletype][shapenum][i][1];
- if (piecex < 0 || piecex > gridX - 1 || piecey < 0 || piecey > gridY - 1 ) {
- if (piecex < 0) robot.touch = 1;
- if (piecex > gridX - 1) robot.touch = 2;
- if (piecey < 0) robot.touch = 3;
- if (piecey > gridY - 1) robot.touch = 4;
- flag = false;
- break;
- }
- }
- if ( flag ){
- robot.tipx = sx;
- robot.tipy = sy;
- robot.touch = 0;
- }
- glBindBuffer(GL_ARRAY_BUFFER, vboIDs[8]);
- for (int i = 0; i < 36; i ++) {
- glBufferSubData(GL_ARRAY_BUFFER, i*sizeof(vec4), sizeof(vec4), blue1);
- }
- for (int i = 36; i < 2 * 36; i ++) {
- glBufferSubData(GL_ARRAY_BUFFER, i*sizeof(vec4), sizeof(vec4), blue2);
- }
- for (int i = 36 * 2; i < 3 * 36; i ++) {
- glBufferSubData(GL_ARRAY_BUFFER, i*sizeof(vec4), sizeof(vec4), blue3);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement