diff --git a/WeakAuras/SubRegionTypes/Tick.lua b/WeakAuras/SubRegionTypes/Tick.lua index 429ffd1..dddaca3 100644 --- a/WeakAuras/SubRegionTypes/Tick.lua +++ b/WeakAuras/SubRegionTypes/Tick.lua @@ -122,6 +122,13 @@ local function onRelease(subRegion) subRegion:Hide() end +local function getRotatedPoints(degrees) + local angle = rad(135 - degrees) + local vx = math.cos(angle) + local vy = math.sin(angle) + return 0.5+vx, 0.5-vy, 0.5-vy, 0.5-vx, 0.5+vy, 0.5+vx, 0.5-vx, 0.5+vy +end + local funcs = { Update = function(self, state) self.trigger_inverse = state.inverse @@ -316,8 +323,7 @@ local funcs = { end end, UpdateTickRotation = function(self) - local rad = math.rad(self.tick_rotation) - self.texture:SetRotation(rad) + self:UpdateTexCoord() end, SetTickMirror = function(self, mirror) if self.mirror ~= mirror then @@ -326,11 +332,7 @@ local funcs = { end end, UpdateTickMirror = function(self) - if self.mirror then - self.texture:SetTexCoord(0, 1, 1, 1, 0, 0, 1, 0) - else - self.texture:SetTexCoord(0, 0, 1, 0, 0, 1, 1, 1) - end + self:UpdateTexCoord() end, SetTickBlendMode = function(self, mode) if self.tick_blend_mode ~= mode then @@ -345,6 +347,14 @@ local funcs = { self.texture:SetBlendMode("BLEND") end end, + UpdateTexCoord = function(self) + local ulx, uly, llx, lly, urx, ury, lrx, lry = getRotatedPoints(self.tick_rotation); + if self.mirror then + self.texture:SetTexCoord(urx, ury, lrx, lry, ulx, uly, llx, lly); + else + self.texture:SetTexCoord(ulx, uly, llx, lly, urx, ury, lrx, lry); + end + end, } local function modify(parent, region, parentData, data, first)