Newer
Older
AlgebraicDataflowArchitectureModel / GameEngine / src / main / java / gameEngine / entites / gameComponents / ComponentView.java
package gameEngine.entites.gameComponents;

import gameEngine.entites.Entity;
import gameEngine.entites.GameObject;
import gameEngine.views.Sprite;
import org.joml.Vector3f;

public class ComponentView extends Draggable{
    private Sprite sprite;
    public GameObject.Connectiontype connectionType;
    private PortView portviewA;

    public ComponentView(Entity entity, GameObject.Connectiontype connectionType){
        this.parent = entity;
        this.sprite = new Sprite("GameEngine/resources/ComponentView.png");
        sprite.updateSpriteDimensions();
        portviewA = new PortView(PortView.PortType.OUT, parent);
        this.connectionType = connectionType;
    }

    @Override
    public void init(){
        sprite.update();
        sprite.updateSpriteDimensions();
    }

    @Override
    public void update() {
        sprite.setPosition(parent.transform.position);
        sprite.setRotation(parent.transform.rotation);
        sprite.setScale(parent.transform.scale);
        sprite.update();
        Vector3f pos = new Vector3f(parent.transform.position.x+82,parent.transform.position.y+4,parent.transform.position.z);
        portviewA.update(pos, parent.transform.rotation, parent.transform.scale);
        portviewA.handleDragging();
    }

    @Override
    protected boolean isMouseOver(float mouseX, float mouseY) {
        return sprite.isMouseOver(mouseX, mouseY);
    }

    @Override
    protected void draggingAction(float mouseX, float mouseY) {
        sprite.setPosition(mouseX - sprite.getDisplayedWidth() / 2,
                mouseY - sprite.getDisplayedHeight() / 2);
    }

    @Override
    public GameComponent copy() {
        return this;
    }
}