local glm = honey.glm local Mat4 = require "honey.mat4" local module = {} setmetatable(module, {__index=_G}) setfenv(1, module) Quaternion = {} Quaternion.__index = Quaternion function Quaternion.new(_, tbl) local tbl = tbl or { 0, 0, 0, 0 } local self = {} self.data = glm.quat_create() glm.quat_init(self.data, unpack(tbl)) setmetatable(self, Quaternion) return self end setmetatable(Quaternion, {__call=Quaternion.new}) function Quaternion.toMat4(self) local m = Mat4() glm.quat_mat4(self.data, m.data) return m end return module.Quaternion