PitBull Unit Frames 4.0

PitBull4 is a continuation of PitBull.

It is currently experimental.

Differences from PitBull 3:

  • It's not done
  • Documentation is written before functions
  • Much easier for third-party extensions.
  • Options will be much, much simpler. In 3.0, there's about 200 panels that you can mess with, it's overwhelming. I want to bring this down to somewhere around 10.
    • Layouts are defined deterministically and unit groups use the layout rather than ad-hoc layouts on a per-unit basis. This will make setting up your unit frames far, far easier.
    • Due to some decisions made, 4.0 is actually more configurable than 3.0. As a layout designer, you will have a lot more control over how things look. You can have different fonts on the same frame, different textures, more precise positioning, and a whole slough of other things.
  • CPU Efficiency will be taken much more seriously.
  • It uses Ace3 instead of Rock.

If you want to help localize PitBull in your language, go to http://www.wowace.com/projects/pitbul.../localization/.

Forum thread: http://forums.wowace.com/showthread.php?t=15552...

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Shefki Shefki Sat, 04 Jul 2009 07:40:38

    chocozurean, CastBar tracks the casting info for all valid units that we receive events for. It then updates the actual bars on a timer. The timer is necessary for smooth updates of the cast bar itself. Health and Power bars are updated based on events only there's no smooth movement of them so no need for a timer. Blizzard code actually handles the spinners for aura durations, the text we use timers for. The big difference here is that the CastBar isn't doing several things it should: a) The casting events should only register when a frame is shown that has a CastBar enabled on it. b) The casting data tracker should ignore events for units whose frame does not have a CastBar enabled on it. c) The timer should turn off if there is no casting data.

    I sorta have changes in progress to resolve these things but it's complicated by the design of the CastBar module as a bar module. This abstracts some things out that would make it easier to do if I had them. But I'll get it done anyway. It's just gonna take some time.

  • Avatar of chocozurean chocozurean Sat, 04 Jul 2009 04:13:50

    Hmm ok, so I take it that CastBar updates on a very frequent timer? Are other status bars (health, power, aura durations...) not as frequent? You mentioned that CastBar might be updating for all units, even those that don't have frames. Would having it be used only for frames that exist help any?

    I don't use TinyTip btw, but if interaction with other addons is a possible reason, I do run plenty of other stuff. I'll do some more testing tomorrow with only Pitbull enabled and try out modules in isolation.

  • Avatar of g1breel g1breel Fri, 03 Jul 2009 23:01:50

    Ah, ok, thanks for the tip. That means it may have nothing to do with Pitbull at all; most of my addons are Ace3 based so Pitbull is possibly getting tagged for all their usages. I can even test that out by trying to force the libraries load separately.

    Guess I'll have to find a new explanation for my my frame rate goes to crap while raiding :/

  • Avatar of Shefki Shefki Fri, 03 Jul 2009 18:18:59

    g1breel, Sounds to me like you are trying to profile addons while using embedded libraries. Embedded addons appear as just part of the addon they are loaded in to WoW. However, the library is only loaded once even if multiple addons need it. So whichever addon loads first loads the library and ends up showing as using the CPU time that the library is using. UnderHood is Ace3 as is PitBull4. I suspect that Ace3 is using most of your CPU time. Which is pretty common when using PitBull4.

    Some of that CPU is obviously coming from PitBull4's use of Ace3. I'll admit we seem to put a pretty hefty load on Ace3. I'm pretty sure most of that is coming from our extensive use of AceTimer3 in ways that it probably shouldn't be used. One of my todo list items is to go through and eliminate most of our use of AceTimer3.

    Don't get me wrong. There is nothing wrong with AceTimer3. It's just not designed for the way we're using it.

  • Avatar of g1breel g1breel Fri, 03 Jul 2009 17:27:48

    Shefki,

    Is there any instrumentation or debugging I can enable to help tell why the CPU consumption is so high when I have no frames being displayed? I'm happy to do the grunt work of figuring out why it's happening, I just need to know how I can gather the data.

    Does deleting events in the Lua Texts module configuration cause Pitbull not to register for those events at all or just not perform text updates for those events? I'm wondering if Pitbull is responding to event even though it's not going to doing anything and that's the cause of the CPU load.

    The other thing that occurs to me is that this may be related to suppressing the default Blizzard frames. When I disable Pitbull completely, UnderHood becomes the top CPU consumer while soloing, although it doesn't use anywhere near as much as Pitbull. When Pitbull is loaded, UnderHood no longer appears on the CPU consumption list at all, even though Pitbull isn't doing anything.

  • Avatar of Shefki Shefki Fri, 03 Jul 2009 08:16:01

    chocozurean, CastBar doesn't actually poll. It just has to udpate on a timer in order to get a smooth castbar. I'm still unsure why it's chewing so much CPU time for you. Incidentally you wouldn't happen to be using TinyTip. There was a recent report of some sort of issue with it that causes PB4 to chew CPU time.

    g1breel, It's hard to really say what your issue is. I know we still have some CPU sinks that we need to clean up. But there's only so much time. You can use a bug addon like BugSack or Swatter to capture errors. If you have any errors from PitBull4 please do open a ticket.

    pawn83, string.sub(Name(unit),1,15) that would truncate the Name to 15 characters for example. Should be able to just wrap Name(unit) in any tags with the string.sub to do the truncate.

    zekryn,

    local dr,dg,db = DifficultyColor(unit)
    return "|cff%02x%02x%02x%s|r",dr,dg,db,Level(unit)
    

    Kupotek, I'm not sure I understand what you're asking for. It sounds like you want vertical bars instead of horizontal but then I'm not sure what you mean by power at the bottom, space then health above it.

  • Avatar of Kupotek Kupotek Thu, 02 Jul 2009 17:08:56

    Am curious, how would I go about making a unitframe, where the power is at the bottom, space, then health above it, like a vertical column rather than a horizontal bar?

    I couldn't seem to work this out. Thanks!

  • Avatar of zekryn zekryn Thu, 02 Jul 2009 15:32:11

    Love the addon, but one thing I don't care for and I cant figure out how to fix it myself.. is there anyway you can remove the race from "Class: Short" or just make one with nothing but level?

  • Avatar of pawn83 pawn83 Thu, 02 Jul 2009 08:12:35

    Airtonix,

    Sorry for being slow, but how would I implement that into the name scheme for raid frames?

  • Avatar of airtonix airtonix Wed, 01 Jul 2009 22:46:03

    pawn83,

    local name = "reallylongword"
    print(name)
    print(name:sub(4))
    print(name:sub(1,4))
    print(name:sub(1,8))
    

    http://lua-users.org/wiki/StringLibraryTutorial

Facts

Date created
01 Aug 2008
Category
Last update
04 Jul 2009
Development stage
Beta
Language
  • enUS
License
All Rights Reserved
Curse link
PitBull Unit Frames 4.0
Recent files

Authors

© 2008-2009 Curse Inc.