tiagolr / dconsole

Haxe game-like console that provides runtime acess to methods, variables and more.
MIT License
169 stars 16 forks source link

DConsole

DConsole or The Console is a real-time console that allows to:

Latest Changes - 5.0.0

luxe

For more changes or other versions, see CHANGELOG.

Currently supported targets:

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

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

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

monitor


The screenshot shows monitor being used in Adam Atomic's Mode demo.

Profiler

The profiler is lightweight and portable tool that shows:

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


The screenshot shows the profiler using multiple nested samples, idents are used to vizualize the samples hierarchy.

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?)

  1. Add jquery-terminal to your html page.
  2. Add the tag <div id="console"/> inside <body></body>
  3. Add the following script <script src="https://github.com/tiagolr/dconsole/raw/master/project_name.js">):

    <script src="http://code.jquery.com/jquery-2.1.1.min.js" ></script>
    <script src="https://github.com/tiagolr/dconsole/raw/master/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

Suggestions / Comments / Bugs

Email me suggestions, comments, bug reports etc..
Or create a new issue (even better).