public void addImageAssets(
            String baseAssetName, URL imageName, int numAssetsWide, int numAssetsHigh) {        
        BufferedImage baseImage = assetLoader.loadImage(imageName);
        double imageWidth = (double) baseImage.getWidth() / (double) numAssetsWide;
        double imageHeight = (double) baseImage.getHeight() / (double) numAssetsHigh;

        // Extract and store each image
        for (int heightIdx = 0; heightIdx < numAssetsHigh; heightIdx++) {
            for (int widthIdx = 0; widthIdx < numAssetsWide; widthIdx++) {                
                String assetName = 
                    (numAssetsWide>=10 && numAssetsHigh>=10)
                        ? baseAssetName + heightIdx + "-" + widthIdx
                        : baseAssetName + heightIdx + "" + widthIdx;
                ImageAsset imageAsset = new ImageAsset(assetName, 
                        assetLoader.extractImageSegment(baseImage, 
                        (int) (widthIdx*imageWidth), (int) (heightIdx*imageHeight), 
                        (int) imageWidth, (int) imageHeight));
                assetStore.put(assetName, imageAsset);
            }
        }
    }