void FixedUpdate () {
		// Create particles
		if( createIt < createItMax ){
			// Create random
			for(int i=0;i<createObjects/createItMax;i++){
				GameObject g = Instantiate( PhysicsObjPrefab );
				g.transform.position = new Vector3( Random.Range( -worldDimension.x/2f, worldDimension.x/2f ), worldDimension.y/2f, 0 );
				//g.transform.position = new Vector3( 0, worldDimension.y/2f, 0 );

				PhysicsObjectGraphics obj = g.GetComponent<PhysicsObjectGraphics>();
				objects.Add( obj );
				obj.World = this;
				obj.PhysicsObj.setPosition( g.transform.position );
			}
			createIt++;
		}

		foreach( PhysicsObjectGraphics obj in objects ){
			obj.ApplyPhysics();
		}

		fillHash( hashCapacity, gridDimension );

		foreach( PhysicsObjectGraphics obj in objects ){
			List<PhysicsObjectGraphics> neighbors = neighborhood( obj, hashCapacity, gridDimension, neighborhoodRadius );
			obj.PhysicsObj.Neighbors = neighbors;

			obj.DensityFactor = obtainDensity( obj.PhysicsObj, neighbors, neighborhoodRadius, 2f );
		}
	}
    Vector3 viscosity(PhysicsObjectGraphics neighbor, float deltaSeconds, float neighborhoodRadius)
    {
        Vector3 diffSpeed    = this.getSpeed() - neighbor.PhysicsObj.getSpeed();
        Vector3 diffPosition = this.getPosition() - neighbor.PhysicsObj.getPosition();

        float q = diffPosition.magnitude / neighborhoodRadius;

        if (q < 1)
        {
            float u = Vector3.Dot(diffSpeed, diffPosition);
            if (u > 0)
            {
                return((1 - q) * (u * 0.8f + u * u * 0.8f) * diffPosition / deltaSeconds);
            }
        }
        return(new Vector3());
    }
	List<PhysicsObjectGraphics> neighborhood( PhysicsObjectGraphics objPOG, int _hashCapacity, Vector3 _gridCubeDimension, float radius ){
		Vector3 gridPosition = getParticleGridPosition( objPOG.PhysicsObj.getPosition(), _gridCubeDimension );

		List<PhysicsObjectGraphics> result = new List<PhysicsObjectGraphics>();

		// check neighbor grid cells 2D
		// TODO check if the cell is inside the radius
		for( int i = -1; i <= 1; i++ ){
			for( int j = -1; j <= 1; j++ ){
				Vector3 neighborGridPosition = new Vector3( gridPosition.x+i, gridPosition.y+j, gridPosition.z );

				int neighborHash = getParticleGridPositionHash( neighborGridPosition, _hashCapacity );
				foreach( PhysicsObjectGraphics obj in hashObjects[ neighborHash ] ){
					// in radius?
//Debug.Log( hashObjects[ neighborHash ].Count );
					if( obj != objPOG && isNeighbor( objPOG.PhysicsObj.getPosition(), obj.PhysicsObj.getPosition(), radius ) && !result.Contains(obj) ){
						result.Add( obj );
					}
				}
			}
		}

		return result;
	}