bool EnemyShip::Update(const float& dt, bool& warp, ParticleSystem& Psystem, BulletSystem& Bsystem, Spaceship* target, Walls& walls) { changeTarget(target); turret.update(dt, shipPosition, Bsystem, (rand.RandomFloat() < 0.1)); outofBoundsCheck(Psystem, warp); changeVelocity(dt, Psystem); Vector2 collision = walls.getCollisionVelocity(shipPosition, velocity); if (Engine::LengthSquared(collision) != 0) { Psystem.AddParticle(new COLLISIONPARTICLE); } velocity = velocity + collision; shipPosition = shipPosition + velocity; return (life > 0); }
/* Function: HandleMouseButton Usage: HandleMouseButton(button, state, x, y); --------------------------------------------------------------------------- mouse press/release handler left button: simulating: pull at particle designing: add particle/constraint middle button: unused right button: unused (mapped to pull-down menu) */ void HandleMouseButton(int button, int state, int x, int y) { int part; // index of a particle if (mDesign) { if (button == GLUT_LEFT_BUTTON) { switch (state) { case GLUT_DOWN: switch (mMode) { case designMode_Particle: mPS.AddParticle(x,y); break; case designMode_Nail: if ((part = mPS.GetClosestParticle(x, y)) != -1) mPS.AddNailConstraint(part); break; case designMode_Spring: if ((part = mPS.GetClosestParticle(x, y)) != -1) mCurrSpringConstraint = mPS.AddSpringConstraint(part, part); break; } break; case GLUT_UP: switch (mMode) { case designMode_Spring: if (mCurrSpringConstraint != NULL) { if ((part = mPS.GetClosestParticle(x, y)) != -1) { mCurrSpringConstraint->SetParticle(part); if (mCurrSpringConstraint->ParticlesAreValid()) { // keep the constraint } else { mPS.DeleteConstraint(mCurrSpringConstraint); } } else { mPS.DeleteConstraint(mCurrSpringConstraint); } mCurrSpringConstraint = NULL; } break; } break; } } else if (button == GLUT_MIDDLE_BUTTON) { switch (state) { case GLUT_DOWN: break; case GLUT_UP: break; } } } else { if (button == GLUT_LEFT_BUTTON) { switch (state) { case GLUT_DOWN: mPS.ActivateMouseSpring(x, y); break; case GLUT_UP: mPS.DeactivateMouseSpring(); break; } } } }