void processUserFieldsUponKeyOrMouseReleased() {
		UserField uf = null;
		Particle p = null;
		for (int i = 0, n = getModel().getNumberOfParticles(); i < n; i++) {
			p = getModel().getParticle(i);
			uf = p.getUserField();
			if (uf != null) {
				switch (uf.getMode()) {
				case UserField.FORCE_MODE:
					uf.setIntensity(0.0);
					break;
				case UserField.IMPULSE1_MODE:
					uf.addImpulse(p);
					uf.setGear(1);
					break;
				case UserField.IMPULSE2_MODE:
					uf.addImpulse(p);
					break;
				}
			}
		}
		ObstacleCollection oc = getModel().getObstacles();
		if (oc != null && !oc.isEmpty()) {
			RectangularObstacle obs = null;
			synchronized (oc.getSynchronizationLock()) {
				for (Iterator it = oc.iterator(); it.hasNext();) {
					obs = (RectangularObstacle) it.next();
					uf = obs.getUserField();
					if (uf != null) {
						switch (uf.getMode()) {
						case UserField.FORCE_MODE:
							uf.setIntensity(0.0);
							break;
						case UserField.IMPULSE1_MODE:
							uf.addImpulse(obs);
							uf.setGear(1);
							break;
						case UserField.IMPULSE2_MODE:
							uf.addImpulse(obs);
							break;
						}
					}
				}
			}
		}
		refreshForces();
	}