code: protected void getHitObjects (DirtyItemList list, int x, int y)
      {
          for (SceneObject scobj : _vizobjs) {
              Rectangle pbounds = scobj.bounds;
              if (!pbounds.contains(x, y)) {
                  continue;
              }
  
              // see if we should skip it
              if (skipHitObject(scobj)) {
                  continue;
              }
  
              // now check that the pixel in the tile image is non-transparent at that point
              if (!scobj.tile.hitTest(x - pbounds.x, y - pbounds.y)) {
                  continue;
              }
  
              // we've passed the test, add the object to the list
              list.appendDirtyObject(scobj);
          }
      }
docs: Adds to the supplied dirty item list, all of the object tiles that are hit by the specified
  point (meaning the point is contained within their bounds and intersects a non-transparent
  pixel in the actual object image.