Skip to content

Instantly share code, notes, and snippets.

@webcaetano
Created June 26, 2016 21:24
Show Gist options
  • Save webcaetano/7fede8bcfe4e47f15982cdb3df7d9546 to your computer and use it in GitHub Desktop.
Save webcaetano/7fede8bcfe4e47f15982cdb3df7d9546 to your computer and use it in GitHub Desktop.
var gui = {
indAjust:0,
indPoint:0,
dat:null,
newPoint:null,
};
gui.new = function(){
if(gui.dat) return;
gui.dat = new dat.GUI({autoPlace:false});
var div = document.createElement("div");
div.style.position = "absolute";
div.style.bottom = "20px";
div.style.left = "10px";
div.appendChild(gui.dat.domElement);
document.body.appendChild(div);
return gui.dat;
}
gui.newFolder = function(name,options){
if(name===undefined) name = 'Folder';
gui.new();
var defaults = {
open:false,
};
options = _.defaultsDeep({},options,defaults);
var folder = gui.dat.addFolder(name);
if(options.open) folder.open();
return folder;
}
gui.checkSubfolder = function(subfolder){
if(_.isString(subfolder)){
return gui.dat.addFolder(subfolder)
} else if(_.isObject(subfolder)) {
return subfolder;
} else {
return gui.dat;
}
}
gui.ajust = function(obj,options,subfolder){
gui.new();
var panel = gui.checkSubfolder(subfolder);
gui.indAjust++;
var defaults = {
x:0,
y:0,
angle:true,
listen:true,
open:true,
drag:false,
openOnDrag:false,
closeOnDrag:false,
scale:false,
hide:{
enable:false,
visible:true,
}
};
options = _.defaultsDeep({},options,defaults);
self.setBtnHold = function(obj,callback,callback2){
if(callback){
}
if(callback2){
}
return obj;
}
var folder = panel.addFolder('Ajust Object '+_.padLeft(gui.indAjust,3,'0'));
var x = folder.add(obj, 'x').step(1);
var y = folder.add(obj, 'y').step(1);
if(options.angle) {
var angle = folder.add(obj, 'angle').step(1);
}
if(options.hide.enable){
folder.add(obj, 'visible');
obj.visible = options.hide.visible;
}
if(options.scale){
var scaleFolder = folder.addFolder('scale');
var scaleX = scaleFolder.add(obj.scale, 'x').step(0.05).onChange(function(val){
obj.scale.y = val;
});
// var scaleY = scaleFolder.add(obj.scale, 'y').step(1);
}
if(options.drag){
if(!obj.inputEnabled) obj.inputEnabled = true;
if(obj.input && obj.input.enableDrag){
options.listen = true;
obj.input.enableDrag();
if(options.openOnDrag){
obj.events.onInputDown.add(function(e){
folder.open();
});
}
if(options.closeOnDrag){
obj.events.onInputUp.add(function(e){
folder.close();
});
}
}
}
if(options.listen){
x.listen();
y.listen();
if(options.angle) angle.listen();
}
if(options.open) folder.open();
return folder;
}
gui.pointCreator = function(game){
if(gui.newPoint) return;
gui.newPoint = true;
gui.dat.add({New_Point:function(){
gui.pointer(game);
}},'New_Point')
}
gui.pointer = function(game,options,subfolder){
gui.new();
var panel = gui.checkSubfolder(subfolder);
gui.pointCreator(game);
gui.indPoint++;
var defaults = {
x:0,
y:0,
size:5,
listen:true,
color:'FF0000',
helper:{
enable:true,
size:100,
alpha:0.25
},
open:true,
drag:true,
hide:{
enable:false,
visible:true,
}
};
options = _.defaultsDeep({},options,defaults);
var dotGroup = game.add.group();
if(options.helper.enable){
var helper = dotGroup.add(game.add.graphics(0,0).beginFill('0x000000').drawCircle(0,0,options.helper.size));
helper.alpha = options.helper.alpha;
}
var dot = dotGroup.add(game.add.graphics(0,0).beginFill('0x'+options.color).drawCircle(0,0,options.size));
var sprite = game.add.sprite(options.x,options.y);
sprite.addChild(dotGroup);
if(options.drag){
if(!sprite.inputEnabled) sprite.inputEnabled = true;
if(sprite.input && sprite.input.enableDrag){
options.listen = true;
sprite.input.enableDrag();
}
}
var folder = panel.addFolder('Point Finder '+_.padLeft(gui.indPoint,3,'0'));
var x = folder.add(sprite, 'x').step(1);
var y = folder.add(sprite, 'y').step(1);
if(options.listen){
x.listen();
y.listen();
}
if(options.hide.enable){
sprite.visible = options.hide.visible;
folder.add(sprite, 'visible');
}
if(options.open) folder.open();
return folder;
}
module.exports = gui;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment