dconsole
dconsole copied to clipboard
Haxe game-like console that provides runtime acess to methods, variables and more.
DConsole
DConsole or The Console is a real-time console that allows to:
- Run scripts.
- Access and modify fields and objects.
- Call registered functions.
- Monitor fields.
- Customize appearence.
- Profile the app in realtime.
- Register new commands that respond to user input.
Latest Changes - 5.0.0
- Luxe support added
![luxe](http://i1148.photobucket.com/albums/o562/ProG4mr/dconsole_luxe_zpsba5adzfd.gif)
For more changes or other versions, see CHANGELOG.
Currently supported targets:
- Openfl - flash
- Openfl - cpp (working with -Dlegacy flag)
- Openfl - neko (working with -Dlegacy flag)
- Luxe - Web
- Luxe - Windows
####Donsole-online You can try dconsole on this repo github pages. ####Install
haxelib install dconsole
####Getting Started
Using dconsole is straightforward:
import pgr.dconsole.DC;
DC.init();
DC.log("This text will be logged.");
DC.registerFunction(this.testFunction, "myfunction");
DC.registerObject(this, "myobject");
DC.registerClass(Math, "Math");
To show the console, press TAB, then type "help" or "commands" to see what commands are available, also "objects" and "functions" are useful commands to show registered objects and functions.
![help](http://i1148.photobucket.com/albums/o562/ProG4mr/dconsole1_zps2287758b.png)
The console can be used to control your application, accessing registered objects and functions in realtime without having to re-compile. Its also possible to evaluate complex expressions and scripts using haxe sintax.
![example](http://i1148.photobucket.com/albums/o562/ProG4mr/dconsole2_zpsa362d475.png)
####Monitor
The monitor allows you to register fields and monitor their value in real time. For example, to monitor a display object x position:
DG.monitorField(player, "x", "playerX");
Pressing CTRL + TAB brings up the monitor that shows the variable updated in real time
The screenshot shows monitor being used in Adam Atomic's Mode demo.
####Profiler
The profiler is lightweight and portable tool that shows:
- What code is eating more cpu.
- How many times is some code executed inside other code block.
- How much time code takes to execute (benchmark)
- Other statistics not shown by default like absolute elapsed, min, max, totalInstances etc..
To sample a code block do:
DC.beginProfile("SampleName");
// Code goes here
DC.endProfile("SampleName");
Toggling the profiler with SHIFT + TAB shows real-time statistics that are updated according to refresh rate.
![profiler](http://i1148.photobucket.com/albums/o562/ProG4mr/profiler_zps30be5bb6.jpg)
The screenshot shows the profiler using multiple nested samples, idents are used to vizualize the samples hierarchy.
- EL elapsed milliseconds
- AVG average elapsed milliseconds
- EL(%) elapsed percentage
- AVG(%) average elapsed percentage
- # Occurrences of sample inside root sample
-
Name Sample name
###HTML5 / JS (Experimental)
DConsole can also run on html5 / javascript using jquery-terminal to process input and log console output (who needs web-kit console right?)
-
Add jquery-terminal to your html page.
-
Add the tag
<div id="console"/>
inside<body></body>
-
Add the following script
<script src="project_name.js">
):<script src="http://code.jquery.com/jquery-2.1.1.min.js" ></script> <script src="jquery.terminal-0.8.8.min.js"></script> <script> terminal = $('#console').terminal(function(command, term) { if (command !== '') { pgr.dconsole.DC.eval(command); } else { term.echo(''); } }, { greetings: false, name: 'dconsole', width: "100%", height: "200", prompt: '> ', }); document.addEventListener('console_log', function(evt) { terminal.echo(evt.detail.data, { finalize: function(div) { div.css("color", "#" + evt.detail.color); } }); }); </script>
Notes: dead code elimination must be off -dce no
, otherwise problems may occur. You can also refer to this repo github pages github pages to see how to use dconsole with html5.
####Tips and Tricks
- DC.init(100) will start the console with 100% height.
- DC.setVerboseErrors(true) prints stack information when erros occur.
- Use DC.registerCommand(...) to add custom commands.
- Use DC.registerClass(...) to enable classes to be used from the console.
####Suggestions / Comments / Bugs
Email me suggestions, comments, bug reports etc..
Or create a new issue (even better).