FlightHUD
UPDATE
Since Blizzard removed GetUnitPitch() in 7.1, I no longer plan to maintain this addon. If Blizzards sees fit to put it, or some equivalent, back, then I'll revive it. Until then, this addon is dead.
FlightHUD
Displays a fully configurable fighter jet style Heads Up Display (HUD) while flying, riding, or swimming.
FAQ:
Q: Can altitude/elevation be displayed?
A: No. Blizzard doesn't provide the ability for addons to get z-axis information.
Features:
- Shows your current heading in degrees as text and as a graphic with cardinal points relative to the mimimap.
- Shows the true pitch of your character. This is no longer a hack, as patch 3.0.2 added GetPlayerPitch(), an API call that returns a character's true pitch. Before patch 3.0.2, the camera pitch was used, and the pitch display was not accurate unless you always kept your camera behind your character.
- Shows map coordinates.
- Shows your true speed, horizontal speed, or both, as a percentage, where a normally running character is 100%, or as yards per second, or both.
- Configurable transparency of the text and graphics.
- Configurable transparency of the background.
- Configurable size of the text.
- Configurable size of the pitch graphic.
- Configurable frame size.
- Congigurable colors of all HUD elements.
- Movable frame. Hold control while hovering the mouse over the frame and left click drag to move it. (First unlock the frame in the config with /fh or /flighthud or from the Interface -> Addons -> FlightHUD menu)
- Waypoints. (Configurable Alt/Shift/Ctrl/Combination)-rightclick on the map to add a waypoint. Multiple waypoints are supported. Waypoints appear in the HUD and float as you pan. Each point shows the distance and bearing to the point, plus an ETA if you're moving.
- Waypoints can now be made persistent and configured to show only in the zones they're created in or vice versa.
- Waypoints can be deleted by right clicking on them in the world map or mimi map.
QuestHelper integration: See the default QuestHelper quest as a persistent waypoint.(Seems QuestHelper is no longer a thing)- Blizzard POI (Point of Interest) integration: (modifier)-click a POI on the map to set it, and subsequently unset it, as a waypoint. The modifier can be set in the config.
- Automatic quest tracking waypoints in the HUD.
- Arrival sound: Set a sound to be played upon arrival at a waypoint.
- Keybind to toggle level flight. (Simply toggles pitchlimit from 0 to 88 and back. Still have to pitch up or down for pitch to be 0 once pitchlimit is 0)
TODO:
- Add an odometer.
- Editable, movable waypoints.
- Add an interface to manage waypoints. (Can't delete a POI waypoint when it no longer appears on the map)
- HUD frame skins to make it look like a real fighter HUD.
- Configurable locations of text and graphics within the parent frame. Perhaps at some point make them detachable.
- Fix the waypoint adding text on the map. Seems this stopped working at some point.
Known bugs:
- There's a bug in Astrolabe that causes an error when entering a garrison mine. While this bug shows as coming from FlightHUD, many other addons that use Astrolabe have open bugs showing the exact same trace.
- There's been a pervasive bug that would completely hang the client. I've known about this bug for about 2 years now, but I've never been able to consistently reproduce it, and therefore, debugging has always been non-trivial. If you experience the game client completely hanging after zoning (a portal, a zone instance, teleporting directly to a dungeon, a summon), please report a bug. To get around the bug, disable the "Quest POI Integration" in "Waypoint Options" in the FlightHUD config. This option is now disabled by default.
Reporting bugs:
- Please post bug reports here. While I monitor the comments on curse.com, it makes my life easier if bugs are reported in the wowace bug tracker.
I'm so sad Blizzard broke this addon. I've loved it for many years. RIP Flight HUD =(
Assuming this project isn't dead... Lua error with WoW 7.1:
37x FlightHUD\FlightHUD-7.0.0.001.lua:1484: attempt to call upvalue 'GetUnitPitch' (a nil value)
FlightHUD\FlightHUD-7.0.0.001.lua:1484: in function <FlightHUD\FlightHUD.lua:1451>
Locals:
frame = FlightHUDFrame {
0 = <userdata>
}
arg = 0.028000000864267
facingRadians = 5.8851194381714
facingDegrees = 22.807494262377
(*temporary) = <function> defined =[C]:-1
(*temporary) = nil
(*temporary) = "player"
(*temporary) = "attempt to call upvalue 'GetUnitPitch' (a nil value)"
OnUpdateElapsed = 0.12000000476837
math_deg = <function> defined =[C]:-1
headingOffset = 0.268
GetUnitPitch = nil
round = <function> defined @FlightHUD\FlightHUD.lua:181
HereBeDragons = <table> {
mapData = <table> {
}
GetAllMapIDs = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:602
GetWorldDistance = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:669
callbacks = <table> {
}
GetPlayerZone = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:751
UpdateCurrentPosition = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:433
transforms = <table> {
}
GetLocalizedMap = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:532
GetPlayerZonePosition = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:759
mapToID = <table> {
}
eventFrame = <unnamed> {
}
continentZoneMap = <table> {
}
GetPlayerWorldPosition = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:739
GetUnitWorldPosition = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:727
GetMapFileFromID = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:552
GetZoneDistance = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:684
GetMapIDFromFile = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:542
GetZoneSize = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:579
GetZoneCoordinatesFromWorld = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:631
RegisterCallback = <function> defined @Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:116
GetCZFromMapID = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:568
GetWorldCoordinatesFromZone = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:615
UnregisterCallback = <function> defined @Accountant_Classic\Libs\CallbackHandler-1.0\CallbackHandler-1.0.lua:179
microDungeons = <table> {
}
GetNumFloors = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:588
TranslateZoneCoordinates = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:652
GetWorldVector = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:704
GetMapIDFromCZ = <function> defined @GatherMate2\Libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:559
}
GetHorizontalSpeed = <function> defined @FlightHUD\FlightHUD.lua:201
yardsdiv = 14.285714285714
L = <table> {
Debug Types = "Debug Types"
Always = "Always"
Add Normal Waypoint = "Add Normal Waypoint"
Set FlightHUD Waypoint = "Set FlightHUD Waypoint"
Reset all settings = "Reset all settings"
Really reset all FlightHUD settings? = "Really reset all FlightHUD settings?"
Show pitch when mounted on a ground mount = "Show pitch when mounted on a ground mount"
Scale the HUD pitch graphic = "Scale the HUD pitch graphic"
Show in continent = "Show in continent"
Portal = "Portal"
Quest Available = "Quest Available"
Never = "Never"
Events which dictate when the HUD and its elements are shown. = "Events which dictate when the HUD and its elements are shown."
OK = "OK"
Speed Prefix Text = "Speed Prefix Text"
Description/Notes: = "Description/
Sorry for the buggy releases, but I just moved this project to git, as well as a new library, so there were a few issues when it came time for packaging. Anyhow, hoping 6.2.2.003 was the last update.
6.1.0.003's Astrolabe pacakge was broken, so I deleted it. Awaiting an updated Astrolabe before creating a new release.
Constantly catching error when entering mines in the garrison.
Yes, I've seen this too. I'll look into it. In the future, please submit bug reports via the bug report link. Thanks.
6.1.0.003 has a fix for this. It require a fork of Astrolabe, unfortunately. Here's the forked Astrolabe:
https://github.com/jnwhiteh/astrolabe
I have submitted a bug that I found concerning this addon using the link provided in your description. The one titled World Map "Double Click" Error. It's quite an odd one...
For some reason I seem to be unable to move the hud at all. Not sure why. I've checked to see if other addons were covering it, but nothing works.
In chat type: /fh, expand the menu by hitting the the + sign if it's not automatically expanded, select "General", untick "Lock", hit OK. Then in the UI hold control and drag the HUD with the mouse. I suppose I should document that you need to hold control down to drag it when it's not locked.
Ahh, ok. Yes it was holding ctrl I didn't figure out. :)
Yeah, I fucked up. Today's file should fix the problem.
The problem is that Astrolabe might not have been packaged properly. There were issues with the packager when I made this release. I'll take a look and cut a new release some time today.
Date: 2014-10-17 15:24:16
ID: 1
Error occured in: Global
Count: 1
Message: ..\AddOns\FlightHUD\FlightHUD.lua line 62:
attempt to call global 'DongleStub' (a nil value)
Debug:
FlightHUD\FlightHUD.lua:62: in main chunk
Locals:
DBVERSION = 1
L = <table> {
Debug Types = "Debug Types"
Always = "Always"
Add Normal Waypoint = "Add Normal Waypoint"
Set FlightHUD Waypoint = "Set FlightHUD Waypoint"
Reset all settings = "Reset all settings"
Really reset all FlightHUD settings? = "Really reset all FlightHUD settings?"
Show pitch when mounted on a ground mount = "Show pitch when mounted on a ground mount"
Scale the HUD pitch graphic = "Scale the HUD pitch graphic"
Show in continent = "Show in continent"
Portal = "Portal"
Quest Available = "Quest Available"
Never = "Never"
Events which dictate when the HUD and its elements are shown. = "Events which dictate when the HUD and its elements are shown."
OK = "OK"
Speed Prefix Text = "Speed Prefix Text"
Description/Notes: = "Description/Notes:"
Human Female Roar = "Human Female Roar"
A Heads Up Display (HUD) that shows information while flying or riding = "A Heads Up Display (HUD) that shows information while flying or riding"
Always show pitch = "Always show pitch"
ETA: = "ETA: "
When to show pitch = "When to show pitch"
Troll Female Roar = "Troll Female Roar"
Lock = "Lock"
Show the HUD when mounted on a flying mount = "Show the HUD when mounted on a flying mount"
QuestHelper Integration = "QuestHelper Integration"
FlightHUD Bug Report = "FlightHUD Bug Report"
Human Male Roar = "Human Male Roar"
Resets all FlightHUD settings back to the default = "Resets all FlightHUD settings back to the default"
The sound that will play upon arrival at a waypoint. = "The sound that will play upon arrival at a waypoint."
Swimming = "Swimming"
The color of the artificial horizon indicator = "The color of the artificial horizon indicator"
Show the player's speed text in the HUD = "Show the player's speed text in the HUD"
Orc Male Roar = "Orc Male Roar"
Zone Only = "Zone Only"
Show in zone = "Show in zone"
yards = "yards"
Really reset all colors? = "Really reset all colors?"
Alt-Ctrl-Shift = "Alt-Ctrl-Shift"
Mounted = "Mounted"
Yards per second = "Yards per second"
Yes = "Yes"
y/s = "y/s"
Lock the position of the HUD = "Lock the position of the HUD"
Compass Color = "Compass Color"
Reset the position of the HUD back to the center of the screen = "Reset the position of the HUD back to the center of the screen"
Color Options = "Color Options"
Ready Check = "Ready Check"
Flying = "Flying"
+ = "+"
Worldmap modifier = "Worldmap modifier"
Set the modifier used when right-clicking on the world map to create a waypoint = "Set the modifier used when right-clicking on the world map to create a waypoint"
Which speed = "Which speed"
When to display pitch HUD. = "When to display pitch HUD."
H: = "H: "
Waypoint Options = "Waypoint Options"
When to display compass HUD. = "When to display compass HUD."
When to show compass = "When to show compass"
When to show the HUD = "When to show the HUD"
Set the modifier used when right-clicking on World Map POI's to create a waypoint = "Set the modifier used when right-clicking on World Map POI's to create a waypoint"
Waypoint Text Drop Shadow Color = "Waypoint Text Drop Shadow Color"
Show the map coordinates text in the HUD = "Show the map coordinates text in the HUD"
Player speed text = "Player speed text"
Resets all text and image colors back to green = "Resets all text and image colors back to green"
Scaling = "Scaling"
Reset all colors = "Reset all colors"
Waypoints = "Waypoints"
Show the exact heading text in the HUD = "Show the exact heading text in the HUD"
Waypoint distance = "Waypoint distance"
Flying or Riding = "Flying or Riding"
Disable = "Disable"
Show the HUD when swimming = "Show the HUD when swimming"
Current Quest = "Current Quest"
Hit control-a to select all, then control-c to copy. = "Hit control-a to select all, then control-c to copy."
Debug Level = "Debug Level"
Please copy the following text and paste it into a new bug report: = "Please copy the following text and paste it into a new bug report:"
Waypoint Display = "Waypoint Display"
Waypoint Arrival Notification Interval = "Waypoint Arrival Notificatio
AddOns:
Given that you now know how to bind a key to "fly level", can you implement the following behavior?
When FlightHUD determines that the HUD should be on, set level for a few ticks then revert to free flying?
Regards,
Brad
Not entirely sure what you mean. The level flight support simply toggles pitchlimit between 0 and 88. If you're not already level, toggling it only sets your camera, not your actual pitch. You have to pitch up or down any amount with the mouse for it to become 0 when level flight is on. It's unfortunate that setting it doesn't actually change your pitch, but that kinda goes along with Blizzard's policy of not allowing addons to control character movement.
I was afraid you were going to say that :-(
Its a shame that Blizzard's implementation of pitch is tied into camera angle. They really should be separate.
I like and use this addon. I have three suggestions to make it even better for me.
1. Of course, altitude would be very, very nice, but I understand the data are not available to you. Perhaps there is a workaround somewhere? The information is obviously available to Blizzard.
2. Provide a snap-to-zero attitude button. Unfortunately at the alpha I like for playing it is very difficult to see the attitude marks near the bright horizon.
3. Provide separate height and width controls for the main window so I can minimize the screen real estate and keep the informationI want.
Altitude and ascent/descent are simply not available to the UI. Sure, the game has them, but they're not accessible in any way.
Thanks for the update!
Still going to wait (im)patiently for an odometer. :)