bool Physics::startup() { if (Application::startup() == false) { return false; } glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); Gizmos::create(); m_camera = FlyCamera(1280.0f / 720.0f, 10.0f); m_camera.setLookAt(vec3(30, 30, 30), vec3(0,0,0), vec3(0, 1, 0)); m_camera.sensitivity = 3; m_renderer = new Renderer(); SetUpPhysX(); SetUpVisualDebugger(); SetUpTutorial1(); muzzleSpeed = 10000.0f; shootTimer = 0.0f; shootTimeOut = 0.2f; return true; }
bool Physics::startup() { if (Application::startup() == false) { return false; } glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); Gizmos::create(); m_camera = FlyCamera(1280.0f / 720.0f, 10.0f); m_camera.setLookAt(vec3(0, 0, 40), vec3(0), vec3(0, 1, 0)); m_camera.sensitivity = 3; m_renderer = new Renderer(); m_physics = new PhysicsScene(); m_physics->gravity = glm::vec3(0, 0, 0); m_physics->timeStep = m_timeStep; timer = timerLimit; shot = false; int width = 0, height = 0; glfwGetWindowSize(m_window, &width, &height); aspectRatio = (float)width / (float)height; //projectileMotionSetup(); //rocketEngineSetup(); collisionDetectionTuteSetup(); return true; }
int AdvanceAvatar(Avatar *theAvatar, float step) { Camera *thisCamera = theAvatar->cam; BSphere *bsph = theAvatar->bsph; float newX, newY, newZ; Node *rootNode; rootNode = RootNodeScene(); if (theAvatar->walk) WalkCamera(thisCamera, step); else FlyCamera(thisCamera, step); return 1; }
bool DIYmain::startup() { if (glfwInit() == false) { return -1; } // DIYPhysicsRocketSetup(); //DIYPhysicsCollisionTutorial(); // SpringPhysicsTutorial(); window = glfwCreateWindow(1080, 720, "Physics 2D", nullptr, nullptr); if (window == nullptr) { glfwTerminate(); return -2; } glfwMakeContextCurrent(window); if (ogl_LoadFunctions() == ogl_LOAD_FAILED) { glfwDestroyWindow(window); glfwTerminate(); return -3; } glClearColor(0.3f, 0.3f, 0.3f, 1.0f); glEnable(GL_DEPTH_TEST); Gizmos::create(); prevTime = 0; m_camera = FlyCamera(1280.0f / 720.0f, 10.0f); m_camera.setLookAt(vec3(10, 10, 10), vec3(0), vec3(0, 1, 0)); m_camera.sensitivity = 3; // DIYPhysicsRocketSetup(); DIYPhysicsCollisionTutorial(); // SpringPhysicsTutorial(); return true; }
int AdvanceAvatar(Avatar *theAvatar, float step) { Camera *thisCamera = theAvatar->cam; BSphere *bsph = theAvatar->bsph; float newX, newY, newZ; Node *rootNode, *aux; rootNode = RootNodeScene(); // Put here your code /* Calcular P' */ newX = thisCamera->Ex + thisCamera->Dx * step; newY = thisCamera->Ey + thisCamera->Dy * step; newZ = thisCamera->Ez + thisCamera->Dy * step; /* Asignar la nueva posición a la esfera */ bsph->sphereX = newX; bsph->sphereY = newY; bsph->sphereZ = newZ; aux = CollisionBSphereNode(rootNode, bsph); /* Si no hay colisión entre el nodo raíz de la escena y la esfera, avanzar el avatar */ if(aux == NULL){ /* Llamar a la función correspondiente dependiendo del valor del "walk" de la cámara */ if(theAvatar->walk == 1){ WalkCamera(thisCamera, step); }else{ FlyCamera(thisCamera, step); } }else{ printf("¡Colisión!\n"); //PrintBBox(aux->container_WC); return 0; } return 1; }
/* Deal with plain key strokes */ void HandleKeyboard(unsigned char key,int x, int y) { switch (key) { case ESC: /* Quit */ case 'Q': case 'q': exit(0); break; case 'h': /* Go home */ case 'H': CameraHome(0); break; case '[': /* Roll anti clockwise */ RotateCamera(0,0,-1); break; case ']': /* Roll clockwise */ RotateCamera(0,0,1); break; case 'i': /* Translate camera up */ case 'I': TranslateCamera(0,1); break; case 'k': /* Translate camera down */ case 'K': TranslateCamera(0,-1); break; case 'j': /* Translate camera left */ case 'J': TranslateCamera(-1,0); break; case 'l': /* Translate camera right */ case 'L': TranslateCamera(1,0); break; case '=': case '+': FlyCamera(1); break; case '-': case '_': FlyCamera(-1); break; case 'w': /* Write the image to disk */ case 'W': windowdump = !windowdump; break; case 'r': case 'R': record = !record; break; case '<': case ',': iterationdepth--; if (iterationdepth < 0) iterationdepth = 0; geometrydirty = REALDIRTY; break; case '>': case '.': iterationdepth++; geometrydirty = REALDIRTY; break; } }