diff --git a/ElvUI/Libraries/oUF_Plugins/oUF_AuraBars.lua b/ElvUI/Libraries/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua
similarity index 100%
rename from ElvUI/Libraries/oUF_Plugins/oUF_AuraBars.lua
rename to ElvUI/Libraries/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.lua
diff --git a/ElvUI/Libraries/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.xml b/ElvUI/Libraries/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.xml
new file mode 100644
index 0000000..5793f57
--- /dev/null
+++ b/ElvUI/Libraries/oUF_Plugins/oUF_AuraBars/oUF_AuraBars.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file
diff --git a/ElvUI/Libraries/oUF_Plugins/oUF_Plugins.xml b/ElvUI/Libraries/oUF_Plugins/oUF_Plugins.xml
index 5793f57..608a1cb 100644
--- a/ElvUI/Libraries/oUF_Plugins/oUF_Plugins.xml
+++ b/ElvUI/Libraries/oUF_Plugins/oUF_Plugins.xml
@@ -1,3 +1,4 @@
-
+
+
\ No newline at end of file
diff --git a/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.lua b/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.lua
new file mode 100644
index 0000000..e1c73ba
--- /dev/null
+++ b/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.lua
@@ -0,0 +1,55 @@
+local ns = oUF
+local oUF = ns.oUF
+assert(oUF, " was unable to locate oUF install.")
+
+local smoothing = {}
+local function Smooth(self, value)
+ local _, max = self:GetMinMaxValues()
+ if value == self:GetValue() or (self._max and self._max ~= max) then
+ smoothing[self] = nil
+ self:SetValue_(value)
+ else
+ smoothing[self] = value
+ end
+ self._max = max
+end
+
+local function SmoothBar(bar)
+ if not bar.SetValue_ then
+ bar.SetValue_ = bar.SetValue;
+ bar.SetValue = Smooth;
+ end
+end
+
+local function hook(frame)
+ if frame.Health then
+ SmoothBar(frame.Health)
+ end
+ if frame.Power then
+ SmoothBar(frame.Power)
+ end
+end
+
+for i, frame in ipairs(oUF.objects) do hook(frame) end
+oUF:RegisterInitCallback(hook)
+
+local f, min, max = CreateFrame("Frame"), math.min, math.max
+f:SetScript("OnUpdate", function()
+ local limit = 30/GetFramerate()
+ for bar, value in pairs(smoothing) do
+ local cur = bar:GetValue()
+ local new = cur + min((value-cur)/(bar.SmoothSpeed or 3), max(value-cur, limit))
+ if new ~= new then
+ -- Mad hax to prevent QNAN.
+ new = value
+ end
+ bar:SetValue_(new)
+ if (cur == value or abs(new - value) < 2) and bar.Smooth then
+ bar:SetValue_(value)
+ smoothing[bar] = nil
+ elseif not bar.Smooth then
+ bar:SetValue_(value)
+ smoothing[bar] = nil
+ end
+ end
+end)
\ No newline at end of file
diff --git a/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.xml b/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.xml
new file mode 100644
index 0000000..208a79f
--- /dev/null
+++ b/ElvUI/Libraries/oUF_Plugins/oUF_Smooth/oUF_Smooth.xml
@@ -0,0 +1,3 @@
+
+
+
\ No newline at end of file