void assembleCursor(ArrayList<byte[]> icons, int[] rate, int[] animSeq, int jiffy, int steps, int width, int height) throws IOException {
            // Jiffy multiplier for LWJGL's delay, which is in milliseconds.
            final int MULT = 17;
            numImages = icons.size();
            int frRate = 0;
            byte[] frame = new byte[0];
            // if we have an animation sequence we use that
            // since the sequence can be larger than the number
            // of images in the ani if it reuses one or more of those
            // images.
            if (animSeq != null && animSeq.length > 0) {
                for (int i = 0; i < animSeq.length; i++) {
                    if (rate != null) {
                        frRate = rate[i] * MULT;
                    } else {
                        frRate = jiffy * MULT;
                    }
                    // the frame # is the one in the animation sequence
                    frame = icons.get(animSeq[i]);
                    addFrame(frame, frRate, jiffy, width, height, animSeq.length);
//                    System.out.println("delay of " + frRate);
                }
            } else {
                for (int i = 0; i < icons.size(); i++) {
                    frame = icons.get(i);
                    if (rate == null) {
                        frRate = jiffy * MULT;
                    } else {
                        frRate = rate[i] * MULT;
                    }
                    addFrame(frame, frRate, jiffy, width, height, 0);
//                    System.out.println("delay of " + frRate);
                }
            }
        }
Loads and return a cursor file of one of the following format: .ani, .cur and .ico.
@param info The {@link AssetInfo} describing the cursor file.
@return A JmeCursor representation of the LWJGL's Cursor.
@throws IOException if the file is not found.
jme3-desktop/src/main/java/com/jme3/cursors/plugins/CursorLoader.java