Last active
January 3, 2020 14:52
-
-
Save ahvonenj/78756768da0f29938f64187fa2557508 to your computer and use it in GitHub Desktop.
PixiDebugger - Graphical Debugger for Pixi.js
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var PixiDebugger = | |
{ | |
program: null, | |
debugobjects: [], | |
namedobjects: [], | |
// Program must be set for PixiDebugger before use | |
// Program is an object that contains pixi.stage and pixi.renderer | |
SetProgram: function(p) | |
{ | |
PixiDebugger.program = p; | |
}, | |
HasProgram: function() | |
{ | |
if(PixiDebugger.program !== null) | |
{ | |
return true; | |
} | |
else | |
{ | |
console.log('PixiDebugger: No program set for rendering debug graphics!'); | |
return false; | |
} | |
}, | |
UpdateDebugState: function(dt, t) | |
{ | |
for(var i = 0; i < PixiDebugger.debugobjects.length; i++) | |
{ | |
var obj = PixiDebugger.debugobjects[i]; | |
var debugdata = obj.debugdata; | |
switch(debugdata.type) | |
{ | |
case 'point': | |
case 'line': | |
debugdata.update.call(obj, dt, t); | |
break; | |
case 'vector': | |
obj.clear(); | |
obj.lineStyle(debugdata.width, debugdata.color, 1); | |
debugdata.update.call(obj, dt, t); | |
} | |
} | |
for(var key in PixiDebugger.namedobjects) | |
{ | |
if(PixiDebugger.namedobjects.hasOwnProperty(key)) | |
{ | |
var obj = PixiDebugger.namedobjects[key]; | |
var debugdata = obj.debugdata; | |
switch(debugdata.type) | |
{ | |
case 'point': | |
case 'line': | |
debugdata.update.call(obj, dt, t); | |
break; | |
case 'vector': | |
obj.clear(); | |
obj.lineStyle(debugdata.width, debugdata.color, 1); | |
debugdata.update.call(obj, dt, t); | |
} | |
} | |
} | |
}, | |
DebugPoint: function(x, y, radius, color, name, callback) | |
{ | |
if(!PixiDebugger.HasProgram) | |
return; | |
if(name && PixiDebugger.namedobjects.indexOf(name) > -1) | |
return; | |
x = x || 0; | |
y = y || 0; | |
radius = radius || 3; | |
color = color || 0xFF00FF; | |
name = name || null; | |
callback = callback || function(dt, t) { }; | |
var dbgg = new PIXI.Graphics(); | |
dbgg.clear(); | |
dbgg.beginFill(color, 1); | |
dbgg.drawCircle(x, y, radius); | |
dbgg.endFill(); | |
//var dbgsprite = new PIXI.Sprite(dbgg.generateCanvasTexture(PIXI.SCALE_MODES.LINEAR, 1)); | |
//dbgsprite.anchor = new PIXI.Point(0.5, 0.5); | |
dbgg.cacheAsBitmap = true; | |
dbgg.debugdata = | |
{ | |
update: callback, | |
type: 'point', | |
radius: radius, | |
color: color | |
} | |
PixiDebugger.program.stage.addChild(dbgg); | |
if(name) | |
{ | |
PixiDebugger.namedobjects[name] = dbgg; | |
} | |
else | |
{ | |
PixiDebugger.debugobjects.push(dbgg); | |
} | |
}, | |
DebugLine: function(x1, y1, x2, y2, width, color, name, callback) | |
{ | |
if(!PixiDebugger.HasProgram) | |
return; | |
if(name && PixiDebugger.namedobjects.indexOf(name) > -1) | |
return; | |
x1 = x1 || 0; | |
y1 = y1 || 0; | |
x2 = x2 || 0; | |
y2 = y2 || 0; | |
width = width || 3; | |
color = color || 0xFF00FF; | |
name = name || null; | |
callback = callback || function(dt, t) { }; | |
var dbgg = new PIXI.Graphics(); | |
dbgg.clear(); | |
dbgg.lineStyle(width, color, 1); | |
dbgg.moveTo(x1, y1); | |
dbgg.lineTo(x2, y2); | |
dbgg.debugdata = | |
{ | |
update: callback, | |
type: 'line', | |
width: width, | |
color: color | |
} | |
PixiDebugger.program.stage.addChild(dbgg); | |
if(name) | |
{ | |
PixiDebugger.namedobjects[name] = dbgg; | |
} | |
else | |
{ | |
PixiDebugger.debugobjects.push(dbgg); | |
} | |
}, | |
DebugVector: function(origin, vector, width, color, name, callback) | |
{ | |
if(!PixiDebugger.HasProgram) | |
return; | |
name = name || null; | |
if(PixiDebugger.namedobjects.indexOf(name) > -1) | |
return; | |
origin.x = origin.x || 0; | |
origin.y = origin.y || 0; | |
vector.x = vector.x || 0; | |
vector.y = vector.y || 0; | |
width = width || 3; | |
color = color || 0xFF00FF; | |
callback = callback || function(dt, t, origin, vector) { }; | |
var dbgg = new PIXI.Graphics(); | |
dbgg.clear(); | |
dbgg.lineStyle(width, color, 1); | |
dbgg.moveTo(origin.x, origin.y); | |
dbgg.lineTo(vector.x, vector.y); | |
dbgg.debugdata = | |
{ | |
update: callback, | |
type: 'vector', | |
width: width, | |
color: color, | |
origin: origin, | |
vector: vector | |
} | |
PixiDebugger.program.stage.addChild(dbgg); | |
if(name) | |
{ | |
PixiDebugger.namedobjects[name] = dbgg; | |
} | |
else | |
{ | |
PixiDebugger.debugobjects.push(dbgg); | |
} | |
}, | |
RemoveDebugger: function(id) | |
{ | |
if(id in PixiDebugger.namedobjects) | |
{ | |
PixiDebugger.program.stage.removeChild(PixiDebugger.namedobjects[id]); | |
delete PixiDebugger.namedobjects[id]; | |
} | |
}, | |
RemoveNamedDebuggers: function() | |
{ | |
for(var m in PixiDebugger.namedobjects) | |
{ | |
PixiDebugger.program.stage.removeChild(PixiDebugger.namedobjects[m]); | |
delete PixiDebugger.namedobjects[m]; | |
} | |
} | |
} | |
var PD = PixiDebugger; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment