Brunnhuber begann das Eishockeyspielen im Nachwuchs des 1. EV Weiden, wo er von 2011 bis 2014 ab seinem zwölften Lebensjahr in der U16- und U18-Mannschaft des Vereins spielte. Anschließend wechselte der Center in die Jugendabteilung des EV Regensburg, wo er sowohl bei der U16-Mannschaft in der Schüler-Bundesliga, als auch beim U19-Team in der Deutschen Nachwuchsliga (DNL) zum Einsatz kam. In den beiden folgenden Spielzeiten lief Brunnhuber – neben seinen Einsätzen in der DNL – auch in der Profimannschaft Regensburgs, die in der drittklassigen Eishockey-Oberliga beheimatet war, auf.
Zur Saison 2017/18 wechselte der Stürmer zum Ligakonkurrenten EV Lindau an den Bodensee, wobei er bereits in der folgenden Saison 2018/19 von den Ravensburg Towerstars aus der DEL2 unter Vertrag genommen wurde.[1] Mit den Towerstars gewann er im Frühjahr 2019 die Meisterschaft der Liga. Im Februar 2019 gaben die Straubing Tigers aus der Deutschen Eishockey Liga (DEL) die Verpflichtung des Linksschützen bekannt.[2] Dort etablierte er sich in der Folge als Stammspieler und erhielt bereits im Dezember 2019 eine vorzeitige Vertragsverlängerung um drei Jahre bis zum Ende der Spielzeit 2022/23. Anschließend wurde sein Vertrag erneut um ein Jahr verlängert.
Sein Debüt in der A-Nationalmannschaft feierte der Stürmer im April 2019 in der Vorbereitung auf die Weltmeisterschaft 2019, an der er jedoch nicht teilnahm. Stattdessen gehörte er im selben Jahr zum deutschen Aufgebot beim Deutschland Cup 2019. Dort spielte Brunnhuber auch im Jahr Deutschland Cup 2020, allerdings als Mitglied des sogenannten Top Team Peking, dem deutschen U25-Perspektivteams für die Olympischen Winterspiele 2022. Nach einer mehrjährigen Pause im Nationaltrikot gehörte er beim Deutschland Cup 2023 erstmals seit vier Jahren wieder zum Kader.
(Legende zur Spielerstatistik: Sp oder GP = absolvierte Spiele; T oder G = erzielte Tore; V oder A = erzielte Assists; Pkt oder Pts = erzielte Scorerpunkte; SM oder PIM = erhaltene Strafminuten; +/− = Plus/Minus-Bilanz; PP = erzielte Überzahltore; SH = erzielte Unterzahltore; GW = erzielte Siegtore; 1Play-downs/Relegation; Kursiv: Statistik nicht vollständig)