Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

"Fade in" animation makes the element appear for a split second before actual fade kicks in #4696

Closed
2 tasks done
m0ndsoldat opened this issue Nov 8, 2023 · 5 comments
Closed
2 tasks done
Labels
⏱ Awaiting Response This ticket hasn't been triaged yet. 🐛 Bug This is a problem with WeakAuras.

Comments

@m0ndsoldat
Copy link

Is there an existing issue for this?

  • I have searched the existing open and closed issues.

Description

Whenever I try to use the "fade in" animation (doesn't matter if preset or custom w/ variable settings),
the fully opaque icon/bar/whatver appears and disappears for a split second and then, AFTER this, the proper fade in animation passes, making everything feel incredibly unsmooth and choppy.

I've attached a video with a freshly made "Schism" icon aura with a 2s fade in time on the left side that should demonstrate the issue.

fade.in.animation.bug.mp4

Things I tried to troubleshoot so far:

Did not work:

  • I logged onto a char I haven't played in a long time, disabled ALL addons except for the weakauras modules and I created a brand new icon aura for testing purposes. Issue persists.

Did seemingly work:

  • Logged in on a starter edition account to try with a complete set of fresh Weakauras savedvariables (So I didn't have to mess with those in my mainaccount folder) and voilá, issue does not occur.

I remember having this issue since at least the beginning of Shadowlands.

I'm currently sitting at around ~1600 auras with a ~14mb Weakauras.lua filesize, if this is of any matter.

Below is my zipped WeakAuras.lua
WeakAurasLUA.zip

WeakAuras Version

WeakAuras 5.8.4

World of Warcraft Flavor

Retail (Default)

World of Warcraft Region

EU

Tested with only WeakAuras

  • Yes

Lua Error

no errors

Reproduction Steps

  1. Create any Weakaura.
  2. Attach a fade-in animation to it (custom or preset).
  3. Observe behaviour.

Last Good Version

No response

Screenshots

No response

Export String

No response

@m0ndsoldat m0ndsoldat added the 🐛 Bug This is a problem with WeakAuras. label Nov 8, 2023
@github-actions github-actions bot added the ⏱ Awaiting Response This ticket hasn't been triaged yet. label Nov 8, 2023
@m0ndsoldat
Copy link
Author

Alright, so I went ahead and did some further testing on a starter edition account with ALL addons disabled except for weakauras and pristine Weakauras.lua files and recorded another video to showcase.

What I did is I created 4 auras and attached a fade-in to each;
2 conditionals (target =100% HP, target <100% HP), 1 cooldown aura, and 1 "aura" aura (target debuff)

The fade-in on the 2 conditional auras as well as on the 1 cooldown aura always behaved like you would expect it to without any choppiness, but consistently everytime, without fail, the animation on the target debuff aura showed the issue I've been having.
Appearing fully opaque and disappearing all within a split second and only after this the fade-in animation corecctly unfolds.

pristine.settings.mp4

I've tried everything I could think of: adjusting graphic settings, changing monitor refresh rate in the Nvidia Controll panel, turned VSync on and off, turned renderscale up and down etc.

I feel like a donkey getting irritated by and writing novels on github about such a miniscule issue, yet I can see myself tearing my hair out because of this.

@InfusOnWoW
Copy link
Contributor

This is actually already fixed in a branch that we'll merge in the "near" future, though it'll probably be a few weeks until it ends up in a release.

@m0ndsoldat
Copy link
Author

That's fantastic to hear. I honestly don't care too much when this is gonna end up in a release, just glad that it's not on my end somehow and that this has already been resolved.

Thanks for the reply!

@calfmu
Copy link

calfmu commented Dec 10, 2023

Hi, I recently found out about this as well. I still have this problem so I assume the update is not released yet?
For my own weakaura I added this line of code to animations.lua and it seems to work for the time being (seems to involve the initialization of an animation including the appropriate alpha value):
Screenshot 2023-12-09 224601

InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Dec 10, 2023
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Feb 10, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Feb 10, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Feb 22, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Feb 22, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Mar 17, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Mar 18, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: WeakAuras#4527
Fixes: WeakAuras#1449
Fixes: WeakAuras#4696
Fixes: WeakAuras#4719
InfusOnWoW added a commit that referenced this issue Mar 18, 2024
* Make progress data (that is expirationTime/duration/value/total/etc)
  far less special state properties
* Instead state metadata can now describe multiple properties as
  progress values and which other properties are relevant, e.g.

  charge = {
    display = "Charges",
    type = "number",
    total = "totalCharge"
  }

  will allow the user to select "charge" as progress source, which will
  automatically use state.totalCharge for the total value.

  Or

  someTime = {
    display = "X",
    type = "timer",
    total = "propertyName",
    modRate = "propertyName",
    inverse = "propertyName",
    paused = "propertyName",
    remaining = "propertyName"
  }

  All of the additional properties are optional.

  And lastly,

  someOtherTime = {
    display = "Y",
    type = "elapsedTimer"
  }

  For progress sources that are past time stamps.

* Stacks, Unit count, etc are all potential progress sources now.
* On the Display tab, the progress source can be selected from any
  trigger.
* Conditions can switch the progress source
* Ticks progress source is configurable and can be different from the
  main aura. This can be used via custom trigger to augment a main
  trigger
* state.autoHide can be a time point at which the state should
  automatically hide.
* Some behaviour changes, e.g. animations now observe the
  paused/remaining time and min/max progress settings

* Probably some regressions

Fixes: #4527
Fixes: #1449
Fixes: #4696
Fixes: #4719
@InfusOnWoW
Copy link
Contributor

This is now merged for the next release.

InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Mar 23, 2024
Before 5.12.0 aniamtions would not run immediately on start leading to
bug reports like WeakAuras#4696, where a fade in animation would briefly show at
full opacity, because it was applied one frame late.

The dynamic group's border uses the current position of auras, whenever
it is triggered via an aura's expand/collapse.

Thus for an aura with a slide in position, before 5.12.0 the normal
position was used, and with 5.12.0 the starting point of the slide
animation.

The interaction between animations and borders is messy. It probably
should have two modes:
* Taking the static position/size
* Taking the dynamic position/sizes but also update on any changes to the
  position/sizes

For now, delay the first animation running with C_Timer.After(0), which
ensures that it runs in the initial frame, but after everything else.

Fixes: WeakAuras#4933
InfusOnWoW added a commit to InfusOnWoW/WeakAuras2 that referenced this issue Mar 23, 2024
Before 5.12.0 aniamtions would not run immediately on start leading to
bug reports like WeakAuras#4696, where a fade in animation would briefly show at
full opacity, because it was applied one frame late.

The dynamic group's border uses the current position of auras, whenever
it is triggered via an aura's expand/collapse.

Thus for an aura with a slide in position, before 5.12.0 the normal
position was used, and with 5.12.0 the starting point of the slide
animation.

The interaction between animations and borders is messy. It probably
should have two modes:
* Taking the static position/size
* Taking the dynamic position/sizes but also update on any changes to the
  position/sizes

And this should actually be decided by the child regions, a child should
have a "bounding box", which is what the border, but also layout should
take into account. And a every time the bounding box changes, the
dynamic groups layout/border functions should run. It's then up to the
region whether animations/conditions etc. change the bounding box.

For now, delay the first animation running with C_Timer.After(0), which
ensures that it runs in the initial frame, but after everything else.

Fixes: WeakAuras#4933
InfusOnWoW added a commit that referenced this issue Mar 23, 2024
Before 5.12.0 aniamtions would not run immediately on start leading to
bug reports like #4696, where a fade in animation would briefly show at
full opacity, because it was applied one frame late.

The dynamic group's border uses the current position of auras, whenever
it is triggered via an aura's expand/collapse.

Thus for an aura with a slide in position, before 5.12.0 the normal
position was used, and with 5.12.0 the starting point of the slide
animation.

The interaction between animations and borders is messy. It probably
should have two modes:
* Taking the static position/size
* Taking the dynamic position/sizes but also update on any changes to the
  position/sizes

And this should actually be decided by the child regions, a child should
have a "bounding box", which is what the border, but also layout should
take into account. And a every time the bounding box changes, the
dynamic groups layout/border functions should run. It's then up to the
region whether animations/conditions etc. change the bounding box.

For now, delay the first animation running with C_Timer.After(0), which
ensures that it runs in the initial frame, but after everything else.

Fixes: #4933
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
⏱ Awaiting Response This ticket hasn't been triaged yet. 🐛 Bug This is a problem with WeakAuras.
Projects
None yet
Development

No branches or pull requests

3 participants