|  | @@ -0,0 +1,155 @@
 | 
	
		
			
				|  |  | +class UIObject extends GameObject
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    constructor(name)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        super(name);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.P5Element = null;
 | 
	
		
			
				|  |  | +        this.visible = true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    connectCallbacks()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        this.P5Element.mousePressed(this._onMousePressed);
 | 
	
		
			
				|  |  | +        this.P5Element.doubleClicked(this._onDoubleClicked);
 | 
	
		
			
				|  |  | +        this.P5Element.mouseWheel(this._onMouseWheel);
 | 
	
		
			
				|  |  | +        this.P5Element.mouseReleased(this._onMouseReleased);
 | 
	
		
			
				|  |  | +        this.P5Element.mouseClicked(this._onMouseClicked);
 | 
	
		
			
				|  |  | +        this.P5Element.mouseMoved(this._onMouseMoved);
 | 
	
		
			
				|  |  | +        this.P5Element.mouseOver(this._onMouseOver);
 | 
	
		
			
				|  |  | +        this.P5Element.mouseOut(this._onMouseOut);
 | 
	
		
			
				|  |  | +        this.P5Element.touchStarted(this._onTouchStarted);
 | 
	
		
			
				|  |  | +        this.P5Element.touchMoved(this._onTouchMoved);
 | 
	
		
			
				|  |  | +        this.P5Element.touchEnded(this._onTouchEnded);
 | 
	
		
			
				|  |  | +        this.P5Element.dragOver(this._onDragOver);
 | 
	
		
			
				|  |  | +        this.P5Element.dragLeave(this._onDragLeave);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Setters
 | 
	
		
			
				|  |  | +    setPosition(x, y)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        this.P5Element.position(x, y);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    setSize(w, h)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        this.P5Element.size(w, h);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    setVisibility(vis)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        if (vis) this.P5Element.show();
 | 
	
		
			
				|  |  | +        else this.P5Element.hide();
 | 
	
		
			
				|  |  | +        this.visible = !this.visible;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    setValue(val)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        this.P5Element.value(val)
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    setStyle(style)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        for (const [key, value] of Object.entries(style))
 | 
	
		
			
				|  |  | +        {
 | 
	
		
			
				|  |  | +            this.P5Element.style(`${key}`, value);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Getters
 | 
	
		
			
				|  |  | +    getPosition()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return this.P5Element.position();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    getVisibility()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return this.visible;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    getValue()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        return this.P5Element.value();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Methods
 | 
	
		
			
				|  |  | +    toggleVisibility()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        this.setVisibility(!this.visible);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    addChild(child)
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        child.parent = this;
 | 
	
		
			
				|  |  | +        child.parented = true;
 | 
	
		
			
				|  |  | +        this.children.push(child);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        child.P5Element.parent(this.P5Element);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    // Callbacks
 | 
	
		
			
				|  |  | +    _onMousePressed()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onDoubleClicked()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onMouseWheel()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onMouseReleased()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onMouseClicked()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onMouseMoved()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onMouseOver()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onMouseOut()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onTouchStarted()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onTouchMoved()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onTouchEnded()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onDragOver()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    _onDragLeave()
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +}
 |