import glm
from gui.visual.modelData import ModelData
from OpenGL.GL import *

class Entity():
    def __init__(self, x: float, y: float, z: float, model: ModelData, scale: float = None, rotX: float = None, rotY: float = None, rotZ: float = None, angle: float = None, vector: glm.vec3 = None, color: glm.vec3 = None, rotMatrix: glm.mat4 = None):
        self.position = glm.vec3(x, y, z)
        self.rotX = rotX
        self.rotY = rotY
        self.rotZ = rotZ
        self.rotMatrix = rotMatrix
        self.angle = angle
        self.vector = vector
        self.scale = scale
        self.modelData = model
        self.textureIndex = 0
        self.scaleX = None
        self.scaleY = None
        self.scaleZ = None
        self.color = color

    def getTextureXOffset(self):
        column = self.textureIndex % self.modelData.texture.numberOfRows
        return column / self.modelData.texture.numberOfRows

    def getTextureYOffset(self):
        row = self.textureIndex % self.modelData.texture.numberOfRows
        return row / self.modelData.texture.numberOfRows

    def increasePosition(self, dx: float, dy: float, dz: float):
        self.position += glm.vec3(dx, dy, dz)

    def increaseRotation(self, dx: float, dy: float, dz: float):
        self.rotX += dx
        self.rotY += dy
        self.rotZ += dz