Example #1
0
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);
}
Example #2
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;
			}
		}    
	}
}