// Path: slclient/src/org/solhost/folko/uosl/slclient/models/SLObject.java
// public abstract class SLObject implements SendableObject {
//     protected long serial;
//     protected Point3D location;
//     protected int graphic, hue;
//     protected String name;
//     protected boolean registered;
// 
//     public SLObject(long serial, int graphic) {
//         setSerial(serial);
//         setGraphic(graphic);
//         registered = false;
//     }
// 
//     public void register() {
//         registered = true;
//     }
// 
//     public void unregister() {
//         registered = false;
//     }
// 
//     public long getSerial() {
//         return serial;
//     }
// 
//     public void setSerial(long serial) {
//         this.serial = serial;
//     }
// 
//     public Point3D getLocation() {
//         return location;
//     }
// 
//     public void setLocation(Point3D location) {
//         this.location = location;
//     }
// 
//     public int getGraphic() {
//         return graphic;
//     }
// 
//     public void setGraphic(int graphic) {
//         this.graphic = graphic;
//     }
// 
//     public int getHue() {
//         return hue;
//     }
// 
//     public void setHue(int hue) {
//         this.hue = hue;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// }
// 
// Path: slclient/src/org/solhost/folko/uosl/slclient/views/util/Texture.java
// public class Texture {
//     private final int id, width, height;
//     private final boolean useMipMapping = false;
// 
//     public Texture(BufferedImage image) {
//         this.width = image.getWidth();
//         this.height = image.getHeight();
//         ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * 4);
//         if(image.getType() != BufferedImage.TYPE_INT_ARGB) {
//             throw new RuntimeException("Can only open INT_ARGB images");
//         }
// 
//         for(int y = 0; y < height; y++) {
//             for(int x = 0; x < width; x++) {
//                 int argb = image.getRGB(x, y);
//                 buffer.put((byte) ((argb >> 16) & 0xFF));
//                 buffer.put((byte) ((argb >> 8) & 0xFF));
//                 buffer.put((byte) ((argb >> 0) & 0xFF));
//                 buffer.put((byte) ((argb >> 24) & 0xFF));
//             }
//         }
//         buffer.rewind();
// 
//         id = glGenTextures();
//         glBindTexture(GL_TEXTURE_2D, id);
//         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//         if(useMipMapping) {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
//             glGenerateMipmap(GL_TEXTURE_2D);
//         } else {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_BASE_LEVEL, 0);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
//         }
//     }
// 
//     public void bind(int textureUnit) {
//         glActiveTexture(GL_TEXTURE0 + textureUnit);
//         glBindTexture(GL_TEXTURE_2D, id);
//     }
// 
//     public void dispose() {
//         glDeleteTextures(id);
//     }
// 
//     public int getWidth() {
//         return width;
//     }
// 
//     public int getHeight() {
//         return height;
//     }
// 
//     public int getTextureId() {
//         return id;
//     }
// }


import java.awt.Point;
import java.util.List;
import org.solhost.folko.uosl.slclient.models.SLObject;
import org.solhost.folko.uosl.slclient.views.util.Texture;
        this.gumpID = gumpID;
        this.position = new Point(0, 0);
    }

    public int getGumpID() {
        return gumpID;
    }

    public SLObject getObject() {
        return object;
    }

    public void setPosition(Point position) {
        this.position = position;
    }

    public Point getPosition() {
        return position;
    }

    public void close() {
        wantsClose = true;
    }

    public boolean wantsClose() {
        return wantsClose;
    }

    public abstract List<GumpPart> render();

// Path: slclient/src/org/solhost/folko/uosl/slclient/models/SLObject.java
// public abstract class SLObject implements SendableObject {
//     protected long serial;
//     protected Point3D location;
//     protected int graphic, hue;
//     protected String name;
//     protected boolean registered;
// 
//     public SLObject(long serial, int graphic) {
//         setSerial(serial);
//         setGraphic(graphic);
//         registered = false;
//     }
// 
//     public void register() {
//         registered = true;
//     }
// 
//     public void unregister() {
//         registered = false;
//     }
// 
//     public long getSerial() {
//         return serial;
//     }
// 
//     public void setSerial(long serial) {
//         this.serial = serial;
//     }
// 
//     public Point3D getLocation() {
//         return location;
//     }
// 
//     public void setLocation(Point3D location) {
//         this.location = location;
//     }
// 
//     public int getGraphic() {
//         return graphic;
//     }
// 
//     public void setGraphic(int graphic) {
//         this.graphic = graphic;
//     }
// 
//     public int getHue() {
//         return hue;
//     }
// 
//     public void setHue(int hue) {
//         this.hue = hue;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// }
// 
// Path: slclient/src/org/solhost/folko/uosl/slclient/views/util/Texture.java
// public class Texture {
//     private final int id, width, height;
//     private final boolean useMipMapping = false;
// 
//     public Texture(BufferedImage image) {
//         this.width = image.getWidth();
//         this.height = image.getHeight();
//         ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * 4);
//         if(image.getType() != BufferedImage.TYPE_INT_ARGB) {
//             throw new RuntimeException("Can only open INT_ARGB images");
//         }
// 
//         for(int y = 0; y < height; y++) {
//             for(int x = 0; x < width; x++) {
//                 int argb = image.getRGB(x, y);
//                 buffer.put((byte) ((argb >> 16) & 0xFF));
//                 buffer.put((byte) ((argb >> 8) & 0xFF));
//                 buffer.put((byte) ((argb >> 0) & 0xFF));
//                 buffer.put((byte) ((argb >> 24) & 0xFF));
//             }
//         }
//         buffer.rewind();
// 
//         id = glGenTextures();
//         glBindTexture(GL_TEXTURE_2D, id);
//         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//         if(useMipMapping) {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
//             glGenerateMipmap(GL_TEXTURE_2D);
//         } else {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_BASE_LEVEL, 0);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
//         }
//     }
// 
//     public void bind(int textureUnit) {
//         glActiveTexture(GL_TEXTURE0 + textureUnit);
//         glBindTexture(GL_TEXTURE_2D, id);
//     }
// 
//     public void dispose() {
//         glDeleteTextures(id);
//     }
// 
//     public int getWidth() {
//         return width;
//     }
// 
//     public int getHeight() {
//         return height;
//     }
// 
//     public int getTextureId() {
//         return id;
//     }
// }


// Path: slclient/src/org/solhost/folko/uosl/slclient/views/gumps/BaseGump.java
import java.awt.Point;
import java.util.List;
import org.solhost.folko.uosl.slclient.models.SLObject;
import org.solhost.folko.uosl.slclient.views.util.Texture;

        this.gumpID = gumpID;
        this.position = new Point(0, 0);
    }

    public int getGumpID() {
        return gumpID;
    }

    public SLObject getObject() {
        return object;
    }

    public void setPosition(Point position) {
        this.position = position;
    }

    public Point getPosition() {
        return position;
    }

    public void close() {
        wantsClose = true;
    }

    public boolean wantsClose() {
        return wantsClose;
    }

    public abstract List<GumpPart> render();

    public void onClick(GumpPart part) {