class Display constructor: (panel, name) -> @panel = panel row = $('').appendTo(panel.element) @keyElement = $('').text(name).appendTo(row) @valueElement = $('').appendTo(row) this.setText('') setVisible: (value) -> if value @element.show() else @element.hide() setText: (value) -> @valueElement.text(value) getText: -> @valueElement.text() class DebugPanel constructor: -> @displays = {} @element = $('
').appendTo('body') addDisplay: (name) -> @displays[name] ?= new Display this, name parameters = null getRuntimeParameter = (key, def=null) -> if !parameters? parameters = {} for item in window.location.search.substr(1).split('&') [k, v] = item.split('=', 2) parameters[k] = v parameters[key] ? def bench = (benchName, callback) -> name = "bench [#{benchName}]" display = webglmc.debugPanel.addDisplay name now = Date.now() callback() display.setText "#{(Date.now() - now) / 1000}ms" public = self.webglmc ?= {} public.DebugPanel = DebugPanel public.getRuntimeParameter = getRuntimeParameter public.bench = bench