HereBeDragons
HereBeDragons is a data API for the World of Warcraft mapping system
HereBeDragons offers a clean and modern API to retrieve the players position, calculate distances and angles between positions, both in global world coordinates and local zone coordinates. The primary goal of this library is to provide an up-to-date and low maintenance alternative to the legacy map libraries like Astrolabe and LibMapData, which both unfortunately are unmaintained and have their own issues due to changes in WoWs API.
On top of a clean API for all map math, HereBeDragons also provides a second library, HereBeDragons-Pins, which replaces the world map and minimap pin management functionality of Astrolabe. This library is roughly based on the pin management code from GatherMate2, which has been thoroughly tested in years of use.
API:
API/HereBeDragons-2.0
API/HereBeDragons-Pins-2.0
-
View User Profile
-
Send Message
Posted May 20, 2022I had to reinstall this addon again and am getting an error I haven't seen for a few years. it is trying to read here be dragon 1.0. is there something I can do to fix this at all?
-
View User Profile
-
Send Message
Posted Feb 27, 2022I find that HDB-Pins minimap pins are really wobbly and shaky when the map is moving compared to Blizzard's pins, is that just how it is or can something be done to make them more smooth?
-
View User Profile
-
Send Message
Posted Feb 28, 2022In reply to oiFrango:
Blizzards pins are actually painted ontop of the map, there is no comparison.
But you can certainly improve the behavior by setting these two things on your texture:
-
View User Profile
-
Send Message
Posted Feb 28, 2022Thanks, that's really helpful!
-
View User Profile
-
Send Message
Posted May 5, 2020Hi there, I work on the NauticusClassic (https://www.curseforge.com/wow/addons/nauticusclassic) addon and I am running into an issue with HereBeDragons that I can't seem to figure out. I only draw icons at the continent level like so:
But a strange issue happens whenever a map addon that has map fading fades the map. You can see examples of it here https://imgur.com/a/NGPBT2h
Wondering if you have ever run into this before or have any ideas why this might be happening? The map addon I am using to test this is Leatrix Maps, but it seems this issue happens with any map addon that does fading of any sort.
-
View User Profile
-
Send Message
Posted Mar 26, 2020I think there is an error with GetWorldCoordinatesFromAzerothWorldMap. When I hover my cursor over my player position when zoomed out to the "azeroth" view of the continents, it claims I'm about -52500, -4700 even though the real position is more like 525, 8170. Am I doing something wrong or is there a bug? Thanks
-
View User Profile
-
Send Message
Posted Mar 26, 2020In reply to maxlohdotcom:
The coordinates are correct in my experience, if you are not seeing what you are expecting you might be using the wrong continent as a reference.
-
View User Profile
-
Send Message
Posted Mar 26, 2020In reply to nevcairiel:
oh yeahhh the function takes current player continent as input as well and I was using the wrong number for that. But, how do I get the current continent of the player? Looks like GetCurrentMapContinent() is no longer working?
-
View User Profile
-
Send Message
Posted Feb 12, 2020Hi there! I install this explicitly in my addons because some of my addons want to use it and don't always update when this is updated. I had to reinstall my entire machine this weekend (RIP disk drive) and now I'm getting these errors. To the best of my knowledge, I wasn't getting them before. This is the order in which they showed up. I don't know if that matters.
Date: 2020-02-12 23:09:12
ID: 1
Error occured in: Global
Count: 1
Message: ...nhanced\libs\HereBeDragons-1.0\HereBeDragons-1.0.lua line 118:
attempt to call global 'GetWorldMapTransforms' (a nil value)
Debug:
[string "@FlightMapEnhanced\libs\HereBeDragons-1.0\HereBeDragons-1.0.lua"]:118:
...nhanced\libs\HereBeDragons-1.0\HereBeDragons-1.0.lua:116
[string "@FlightMapEnhanced\libs\HereBeDragons-1.0\HereBeDragons-1.0.lua"]:341: gatherMapData()
[string "@FlightMapEnhanced\libs\HereBeDragons-1.0\HereBeDragons-1.0.lua"]:370: in main chunk
Locals:
(*temporary) = <function> defined =[C]:-1
(*temporary) = nil
(*temporary) = "attempt to call global 'GetWorldMapTransforms' (a nil value)"
transforms = <table> {
}
ipairs = <function> defined =[C]:-1
AddOns:
LIST OF ADDONS REMOVED FOR LENGTH
BlizRuntimeLib_enUS v8.3.0.80300 <none>
(ck=90c)
Date: 2020-02-12 23:09:12
ID: 2
Error occured in: Global
Count: 1
Message: ...ed\libs\HereBeDragons-1.0\HereBeDragons-Pins-1.0.lua line 102:
attempt to index global 'WorldMapButton' (a nil value)
Debug:
[string "@FlightMapEnhanced\libs\HereBeDragons-1.0\HereBeDragons-Pins-1.0.lua"]:102: in main chunk
Locals:
MAJOR = "HereBeDragons-Pins-1.0"
MINOR = 13
pins = <table> {
minimapPins = <table> {
}
Minimap = Minimap {
}
worldmapPins = <table> {
}
updateFrame = <unnamed> {
}
worldmapPinRegistry = <table> {
}
minimapPinRegistry = <table> {
}
activeMinimapPins = <table> {
}
}
oldversion = nil
HBD = <table> {
mapData = <table> {
}
callbacks = <table> {
}
RegisterCallback = <function> defined @Interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:90
transforms = <table> {
}
microDungeons = <table> {
}
UnregisterCallback = <function> defined @Interface\AddOns\Ace3\CallbackHandler-1.0\CallbackHandler-1.0.lua:153
mapToID = <table> {
}
eventFrame = <unnamed> {
}
continentZoneMap = <table> {
}
}
cos = <function> defined =[C]:-1
sin = <function> defined =[C]:-1
max = <function> defined =[C]:-1
type = <function> defined =[C]:-1
pairs = <function> defined =[C]:-1
GetPlayerFacing = <function> defined =[C]:-1
minimapPins = <table> {
}
activeMinimapPins = <table> {
}
minimapPinRegistry = <table> {
}
worldmapPins = <table> {
}
worldmapPinRegistry = <table> {
}
minimap_size = <table> {
outdoor = <table> {
}
indoor = <table> {
}
}
minimap_shapes = <table> {
SQUARE = <table> {
}
SIDE-RIGHT = <table> {
}
SIDE-TOP = <table> {
}
CORNER-TOPRIGHT = <table> {
}
SIDE-BOTTOM = <table> {
}
TRICORNER-TOPRIGHT = <table> {
}
CORNER-BOTTOMRIGHT = <table> {
}
TRICORNER-BOTTOMLEFT = <table> {
}
TRICORNER-BOTTOMRIGHT = <table> {
}
TRICORNER-TOPLEFT = <table> {
}
SIDE-LEFT = <table> {
}
CORNER-BOTTOMLEFT = <table> {
}
CORNER-TOPLEFT = <table> {
}
}
tableCache = <table> {
}
newCachedTable = <function> defined @Interface\AddOns\FlightMapEnhanced\libs\HereBeDragons-1.0\HereBeDragons-Pins-1.0.lua:78
recycle = <function> defined @Interface\AddOns\FlightMapEnhanced\libs\HereBeDragons-1.0\HereBeDragons-Pins-1.0.lua:88
rotateMinimap = false
indoors = "indoor"
minimapPinCount = 0
queueFullUpdate = false
minimapScale = nil
minimapShape = nil
mapRadius = nil
minimapWidth = nil
minimapHeight = nil
mapSin = nil
mapCos = nil
lastZoom = nil
lastFacing = nil
lastXY = nil
lastYY = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = nil
(*temporary) = "attempt to index global 'WorldMapButton' (a nil value)"
AddOns:
LIST OF ADDONS REMOVED FOR LENGTH
BlizRuntimeLib_enUS v8.3.0.80300 <none>
(ck=90c)
-
View User Profile
-
Send Message
Posted Aug 21, 2019Hi
I am wondering how the library deals with frame recycling?
for example if I have a db with 2000 items, will all 2000 need frames created? seems like that will crash the game client.
-
View User Profile
-
Send Message
Posted Aug 21, 2019In reply to Forge_User_55962283:
The caller of the library is responsible for providing a frame with an icon to show. It would be up to the caller to recycle those appropriately, and perhaps only register pins currently relevant.
-
View User Profile
-
Send Message
Posted Aug 21, 2019In reply to nevcairiel:
Thanks for the swift reply, I figured that was the case but I saw the functions to remove all pins etc
-
View User Profile
-
Send Message
Posted Apr 15, 2019Great library ! I'm always amazed how people can make such compact yet very functional things.
Would it be possible to incorporate some sort of callback when adding minimap pins that would be called whenever the 'onEdge' state changes ? It feels awkward to have to make an onupdate just for this, and more so since HBD-pins already has one going to update the pins. The callback function could be an optional argument to the AddWorldMapIconMap or AddWorldMapIconWorld functions.
This would, for example, make it very easy to change textures from arrow (onEdge) to 'whatever it is you want' for not onEdge.
Cheers.
-
View User Profile
-
Send Message
Posted Apr 4, 2018This is an awesome lib, but is there any way possible to make pins appear under the minimap player arrow instead of on top? I've tried all layers and texture layer numbers I know of and can't get them under the arrow without them going under the whole minimap. I'm wondering if this is a limitation because of how the minimap arrow is not a lua frame. Do you have any suggestions?
-
View User Profile
-
Send Message
Posted Apr 4, 2018In reply to Venomisto68047:
-
View User Profile
-
Send Message
Posted Apr 4, 2018In reply to Nevcairiel:
-
View User Profile
-
Send Message
Posted Nov 20, 2016When logging into a character located in the Dreamgrove, HBD:GetZoneCoordinatesFromWorld() appears to return zone coordinates for the base zone Val'sharah.
However, it does return zone coordinates for the Dreamgrove after reloading the UI.
-
View User Profile
-
Send Message
Posted Nov 20, 2016I fixed this issue, but please use the issues section of the website in the future to report problems, much easier to track then, thanks!
-
View User Profile
-
Send Message
Posted Oct 5, 2015Not quite. What I'm missing with just UnitPosition(unit) is the handling of the coordinate transformation and the override IDs.
Basically what I'm wishing for is:
-
View User Profile
-
Send Message
Posted Oct 2, 2015@burny_dd
You can just use UnitPosition, the x/y value it returns are the same as HBD:GetPlayerWorldPosition would give you.