local Engine = require("./assets/scripts/engine")
local KeyCode = require("./assets/scripts/keycode")


local transform = nil

local new_rotation = 0

local new_rotationSpeed = 15
local Move_Speec = 300

function OnInit()
    local gameObject = Engine.GetGameObjectByTag("Camera")
    transform = gameObject:GetComponent("Transform")
    Engine.Log("Init Done")
end

function OnUpdate(deltaTime)
    local gameObject = Engine.GetGameObjectByTag("Camera")
    transform = gameObject:GetComponent("Transform")

    local old_rotation = transform:GetRotation()


    local Position = transform:GetPosition()

    if Engine.KeyDown(KeyCode.W) then
        Position.x = Position.x + (deltaTime * Move_Speec)
    end
    if Engine.KeyDown(KeyCode.S) then
        Position.x = Position.x - (deltaTime * Move_Speec)
    end
    if Engine.KeyDown(KeyCode.D) then
        Position.z = Position.z + (deltaTime * Move_Speec)
    end
    if Engine.KeyDown(KeyCode.A) then
        Position.z = Position.z - (deltaTime * Move_Speec)
    end

    transform:SetPosition(Position)



    local rotation = {
        x = old_rotation.x,     -- Preserving existing new_rotation on X-axis
        y = new_rotation,       -- Updated new_rotation on Y-axis for spinning
        z = old_rotation.z      -- Preserving existing new_rotation on Z-axis
    }
    -- Apply the new new_rotation to the Transform component
    transform:SetRotation(rotation)
    new_rotation = new_rotation + (deltaTime * new_rotationSpeed)
    if new_rotation >= 360 then
        new_rotation = 0
    end
end