affected objects pt. 2
parent
def400d385
commit
f758c5087f
|
@ -54,6 +54,8 @@ GameLib.Event.COMPONENT_REGISTER = 0x26;
|
||||||
GameLib.Event.IMAGE_NOT_FOUND = 0x27;
|
GameLib.Event.IMAGE_NOT_FOUND = 0x27;
|
||||||
GameLib.Event.BLENDER_DATA_RECEIVED = 0x28;
|
GameLib.Event.BLENDER_DATA_RECEIVED = 0x28;
|
||||||
GameLib.Event.IMAGE_UPLOAD_COMPLETE = 0x29;
|
GameLib.Event.IMAGE_UPLOAD_COMPLETE = 0x29;
|
||||||
|
GameLib.Event.COMPONENT_REMOVE = 0x2a;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Subscribe to some events
|
* Subscribe to some events
|
||||||
|
|
|
@ -1,14 +1,4 @@
|
||||||
GameLib.Utils = function() {};
|
GameLib.Utils = function() {};
|
||||||
GameLib.Utils.Extend = function(
|
|
||||||
child, // child class
|
|
||||||
parent // parent class
|
|
||||||
) {
|
|
||||||
for(var prop in parent.prototype) {
|
|
||||||
if(!child.prototype[prop]) {
|
|
||||||
child.prototype[prop] = parent.prototype[prop];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Strips image extension from given path
|
* Strips image extension from given path
|
||||||
|
@ -35,7 +25,7 @@ GameLib.Utils.ObjectIdWithNameInArray = function(name, array) {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name == object.name) {
|
if (name === object.name) {
|
||||||
return object.id;
|
return object.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,12 +368,12 @@ GameLib.Utils.FixWindingOrder = function(faces, orientationEdge) {
|
||||||
|
|
||||||
for (var i = 0; i < faces.length; i++) {
|
for (var i = 0; i < faces.length; i++) {
|
||||||
if (
|
if (
|
||||||
(faces[i].v0 == edge.x && faces[i].v1 == edge.y) ||
|
(faces[i].v0 === edge.x && faces[i].v1 === edge.y) ||
|
||||||
(faces[i].v1 == edge.x && faces[i].v2 == edge.y) ||
|
(faces[i].v1 === edge.x && faces[i].v2 === edge.y) ||
|
||||||
(faces[i].v2 == edge.x && faces[i].v0 == edge.y) ||
|
(faces[i].v2 === edge.x && faces[i].v0 === edge.y) ||
|
||||||
(faces[i].v0 == edge.y && faces[i].v1 == edge.x) ||
|
(faces[i].v0 === edge.y && faces[i].v1 === edge.x) ||
|
||||||
(faces[i].v1 == edge.y && faces[i].v2 == edge.x) ||
|
(faces[i].v1 === edge.y && faces[i].v2 === edge.x) ||
|
||||||
(faces[i].v2 == edge.y && faces[i].v0 == edge.x)
|
(faces[i].v2 === edge.y && faces[i].v0 === edge.x)
|
||||||
) {
|
) {
|
||||||
|
|
||||||
var triangle = new GameLib.D3.TriangleFace(
|
var triangle = new GameLib.D3.TriangleFace(
|
||||||
|
@ -436,12 +426,12 @@ GameLib.Utils.FixWindingOrder = function(faces, orientationEdge) {
|
||||||
* to have the same winding order)
|
* to have the same winding order)
|
||||||
*/
|
*/
|
||||||
if (
|
if (
|
||||||
(triangleEdge.triangle.v0 == triangleEdge.edge.x &&
|
(triangleEdge.triangle.v0 === triangleEdge.edge.x &&
|
||||||
triangleEdge.triangle.v1 == triangleEdge.edge.y) ||
|
triangleEdge.triangle.v1 === triangleEdge.edge.y) ||
|
||||||
(triangleEdge.triangle.v1 == triangleEdge.edge.x &&
|
(triangleEdge.triangle.v1 === triangleEdge.edge.x &&
|
||||||
triangleEdge.triangle.v2 == triangleEdge.edge.y) ||
|
triangleEdge.triangle.v2 === triangleEdge.edge.y) ||
|
||||||
(triangleEdge.triangle.v2 == triangleEdge.edge.x &&
|
(triangleEdge.triangle.v2 === triangleEdge.edge.x &&
|
||||||
triangleEdge.triangle.v0 == triangleEdge.edge.y)
|
triangleEdge.triangle.v0 === triangleEdge.edge.y)
|
||||||
) {
|
) {
|
||||||
var backupV = triangleEdge.triangle.v1;
|
var backupV = triangleEdge.triangle.v1;
|
||||||
triangleEdge.triangle.v1 = triangleEdge.triangle.v2;
|
triangleEdge.triangle.v1 = triangleEdge.triangle.v2;
|
||||||
|
@ -508,7 +498,7 @@ GameLib.Utils.FixWindingOrder = function(faces, orientationEdge) {
|
||||||
*/
|
*/
|
||||||
GameLib.Utils.FixPolyZPlane = function(verticesFlat, grain) {
|
GameLib.Utils.FixPolyZPlane = function(verticesFlat, grain) {
|
||||||
|
|
||||||
if ((verticesFlat.length % 3) != 0 && !(verticesFlat.length > 9)) {
|
if ((verticesFlat.length % 3) !== 0 && !(verticesFlat.length > 9)) {
|
||||||
console.log("The vertices are not in the right length : " + verticesFlat.length);
|
console.log("The vertices are not in the right length : " + verticesFlat.length);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -637,6 +627,7 @@ GameLib.Utils.Difference = function (a, b) {
|
||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
GameLib.Utils.PushUnique = function(array, object) {
|
GameLib.Utils.PushUnique = function(array, object) {
|
||||||
|
|
||||||
if (array.indexOf(object) === -1) {
|
if (array.indexOf(object) === -1) {
|
||||||
array.push(object);
|
array.push(object);
|
||||||
}
|
}
|
||||||
|
@ -652,6 +643,37 @@ GameLib.Utils.IsEmpty = function(obj) {
|
||||||
return (Object.keys(obj).length === 0 && obj.constructor === Object);
|
return (Object.keys(obj).length === 0 && obj.constructor === Object);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isString = function(member) {
|
||||||
|
return (typeof member === 'string');
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isBoolean = function(member) {
|
||||||
|
return (member === true || member === false);
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isColor = function(member) {
|
||||||
|
return (member instanceof GameLib.Color);
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isNumber = function(member) {
|
||||||
|
return (typeof member === 'number');
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isVector2 = function(member) {
|
||||||
|
return (member instanceof GameLib.Vector2);
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isVector3 = function(member) {
|
||||||
|
return (member instanceof GameLib.Vector3);
|
||||||
|
};
|
||||||
|
|
||||||
|
GameLib.Utils.isVector4 = function(member) {
|
||||||
|
return (member instanceof GameLib.Vector4);
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return {string}
|
||||||
|
*/
|
||||||
GameLib.Utils.LowerUnderscore = function(name) {
|
GameLib.Utils.LowerUnderscore = function(name) {
|
||||||
return name.toLowerCase().replace(/\s+/, '_');
|
return name.toLowerCase().replace(/\s+/, '_');
|
||||||
};
|
};
|
||||||
|
|
|
@ -178,23 +178,14 @@ GameLib.D3.Input.Editor.prototype.onKeyDown = function(entity, entityManager) {
|
||||||
} else {
|
} else {
|
||||||
this.deSelectMesh(mesh);
|
this.deSelectMesh(mesh);
|
||||||
}
|
}
|
||||||
}.bind(this))
|
}.bind(this));
|
||||||
|
|
||||||
|
GameLib.Event.Emit(
|
||||||
|
GameLib.Event.BUILD_GUI,
|
||||||
|
null
|
||||||
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// BELOW is just a test to stop systems from keypress - it works nicely :)
|
|
||||||
// but of course, when the system is stopped it can no longer be started by keypress
|
|
||||||
// var inputSystem = entity.getComponents(GameLib.System).reduce(
|
|
||||||
// function(result, system){
|
|
||||||
// if (system.systemType === GameLib.System.SYSTEM_TYPE_INPUT) {
|
|
||||||
// result = system;
|
|
||||||
// }
|
|
||||||
// return result;
|
|
||||||
// },
|
|
||||||
// null
|
|
||||||
// );
|
|
||||||
//
|
|
||||||
// inputSystem.stop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -207,20 +198,6 @@ GameLib.D3.Input.Editor.prototype.onKeyUp = function(entity, entityManager) {
|
||||||
if (event.code === 'ControlLeft') {
|
if (event.code === 'ControlLeft') {
|
||||||
this.controlLeft = false;
|
this.controlLeft = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// BELOW is just a test to stop systems from keypress - it works nicely :)
|
|
||||||
// but of course, when the system is stopped it can no longer be started by keypress
|
|
||||||
// var inputSystem = entity.getComponents(GameLib.System).reduce(
|
|
||||||
// function(result, system){
|
|
||||||
// if (system.systemType === GameLib.System.SYSTEM_TYPE_INPUT) {
|
|
||||||
// result = system;
|
|
||||||
// }
|
|
||||||
// return result;
|
|
||||||
// },
|
|
||||||
// null
|
|
||||||
// );
|
|
||||||
//
|
|
||||||
// inputSystem.stop();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -334,23 +311,22 @@ GameLib.D3.Input.Editor.prototype.deSelectMesh = function(mesh) {
|
||||||
|
|
||||||
mesh.selected = false;
|
mesh.selected = false;
|
||||||
|
|
||||||
|
this.removeHelper(mesh);
|
||||||
|
|
||||||
GameLib.Event.Emit(
|
GameLib.Event.Emit(
|
||||||
GameLib.Event.MESH_DESELECTED,
|
GameLib.Event.MESH_DESELECTED,
|
||||||
{
|
{
|
||||||
mesh : mesh
|
mesh : mesh
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
this.removeHelper(mesh);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MouseDown events
|
* MouseDown events
|
||||||
* @param entity GameLib.Entity
|
* @param entity GameLib.Entity
|
||||||
* @param entityManager GameLib.EntityManager
|
|
||||||
* @returns {Function}
|
* @returns {Function}
|
||||||
*/
|
*/
|
||||||
GameLib.D3.Input.Editor.prototype.onMouseDown = function(entity, entityManager) {
|
GameLib.D3.Input.Editor.prototype.onMouseDown = function(entity) {
|
||||||
|
|
||||||
return function(event) {
|
return function(event) {
|
||||||
|
|
||||||
|
@ -427,6 +403,14 @@ GameLib.D3.Input.Editor.prototype.onMouseDown = function(entity, entityManager)
|
||||||
} else {
|
} else {
|
||||||
this.selectMesh(mesh);
|
this.selectMesh(mesh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify our GUI system to build a GUI
|
||||||
|
*/
|
||||||
|
GameLib.Event.Emit(
|
||||||
|
GameLib.Event.BUILD_GUI,
|
||||||
|
null
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -789,3 +789,39 @@ GameLib.D3.Mesh.prototype.applyLocalPositionRotationScale = function() {
|
||||||
|
|
||||||
this.updateInstance();
|
this.updateInstance();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GameLib.D3.Mesh.prototype.getChildrenComponents = function() {
|
||||||
|
|
||||||
|
var components = [];
|
||||||
|
|
||||||
|
this.materials.map(
|
||||||
|
function (material) {
|
||||||
|
|
||||||
|
GameLib.Utils.PushUnique(components, material);
|
||||||
|
|
||||||
|
for (var property in material.linkedObjects) {
|
||||||
|
if (
|
||||||
|
material.linkedObjects.hasOwnProperty(property) &&
|
||||||
|
material.hasOwnProperty(property) &&
|
||||||
|
material[property] &&
|
||||||
|
property !== 'parentEntity'
|
||||||
|
) {
|
||||||
|
GameLib.Utils.PushUnique(components, material[property]);
|
||||||
|
for (var tProperty in material[property].linkedObjects) {
|
||||||
|
if (
|
||||||
|
material[property].linkedObjects.hasOwnProperty(tProperty) &&
|
||||||
|
material[property].hasOwnProperty(tProperty) &&
|
||||||
|
material[property][tProperty] &&
|
||||||
|
tProperty !== 'parentEntity'
|
||||||
|
) {
|
||||||
|
GameLib.Utils.PushUnique(components, material[property][tProperty]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}.bind(this)
|
||||||
|
);
|
||||||
|
|
||||||
|
return components;
|
||||||
|
};
|
|
@ -68,15 +68,15 @@ GameLib.D3.Mesh.Plane.prototype.createInstance = function() {
|
||||||
this.updateVerticesFromGeometryInstance(geometry);
|
this.updateVerticesFromGeometryInstance(geometry);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.applyBones(geometry);
|
var materialInstances = this.materials.reduce(
|
||||||
|
function(result, material) {
|
||||||
|
result.push(material.instance);
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
var instance = null;
|
var instance = new THREE.Mesh(geometry, materialInstances);
|
||||||
|
|
||||||
if (this.skeleton) {
|
|
||||||
instance = new THREE.SkinnedMesh(geometry)
|
|
||||||
} else {
|
|
||||||
instance = new THREE.Mesh(geometry);
|
|
||||||
}
|
|
||||||
|
|
||||||
instance.userData.width = this.width;
|
instance.userData.width = this.width;
|
||||||
instance.userData.height = this.height;
|
instance.userData.height = this.height;
|
||||||
|
|
|
@ -22,6 +22,11 @@ GameLib.EntityManager = function() {
|
||||||
this.registerComponent.bind(this)
|
this.registerComponent.bind(this)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
GameLib.Event.Subscribe(
|
||||||
|
GameLib.Event.COMPONENT_REMOVE,
|
||||||
|
this.removeComponent.bind(this)
|
||||||
|
);
|
||||||
|
|
||||||
GameLib.Component.call(
|
GameLib.Component.call(
|
||||||
this,
|
this,
|
||||||
GameLib.Component.COMPONENT_ENTITY_MANAGER,
|
GameLib.Component.COMPONENT_ENTITY_MANAGER,
|
||||||
|
@ -48,6 +53,24 @@ GameLib.EntityManager.prototype.registerComponent = function(data) {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
GameLib.EntityManager.prototype.removeComponent = function(data) {
|
||||||
|
|
||||||
|
var index = this.register.indexOf(data.component);
|
||||||
|
|
||||||
|
if (index !== -1) {
|
||||||
|
|
||||||
|
this.register.splice(index, 1);
|
||||||
|
|
||||||
|
GameLib.Event.Emit(
|
||||||
|
GameLib.Event.REGISTER_UPDATE,
|
||||||
|
{
|
||||||
|
register : this.register
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an GameLib.Entity and adds it to entities array
|
* Creates an GameLib.Entity and adds it to entities array
|
||||||
* @returns {*}
|
* @returns {*}
|
||||||
|
|
|
@ -73,952 +73,25 @@ GameLib.GUI.prototype.updateInstance = function() {
|
||||||
this.instance = new dat.GUI( { autoPlace: false } );
|
this.instance = new dat.GUI( { autoPlace: false } );
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.GUI.prototype.addObject = function(object) {
|
|
||||||
this.objects.push(object);
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.removeObject = function(object) {
|
|
||||||
|
|
||||||
var index = this.objects.indexOf(object);
|
|
||||||
|
|
||||||
if (index === -1) {
|
|
||||||
console.warn('could not find object to remove');
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
this.objects.splice(index, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.isString = function(member) {
|
|
||||||
return (typeof member === 'string');
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.isBoolean = function(member) {
|
|
||||||
return (member === true || member === false);
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.isColor = function(member) {
|
|
||||||
return (member instanceof GameLib.API.Color);
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.isNumber = function(member) {
|
|
||||||
return (typeof member === 'number');
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.isVector2 = function(member) {
|
|
||||||
return (member instanceof GameLib.Vector2);
|
|
||||||
};
|
|
||||||
|
|
||||||
// GameLib.GUI.prototype.isColor = function(member) {
|
|
||||||
// return (member instanceof GameLib.API.Color);
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// Editor.prototype.isLiteral = function(object) {
|
|
||||||
// return _.isString(object) || _.isBoolean(object) || _.isNumber(object) || this.isColor(object);
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// Editor.prototype.isEqual = function(object, object2) {
|
|
||||||
// if (object instanceof GameLib.Color && object2 instanceof GameLib.Color) {
|
|
||||||
// return object.r == object2.r &&
|
|
||||||
// object.g == object2.g &&
|
|
||||||
// object.b == object2.b;
|
|
||||||
// } else {
|
|
||||||
// return _.isEqual(object, object2);
|
|
||||||
// }
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// Editor.prototype.isString = function(object) {
|
|
||||||
// return _.isString(object);
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// Editor.prototype.isBoolean = function(object) {
|
|
||||||
// return _.isBoolean(object);
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// Editor.prototype.isNumber = function(object) {
|
|
||||||
// return _.isNumber(object)
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// Editor.prototype.isArray = function(object) {
|
|
||||||
// return _.isArray(object);
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// Editor.prototype.isQuaternion = function(member) {
|
|
||||||
// return (member instanceof GameLib.Quaternion)
|
|
||||||
// };
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.buildControl = function(folder, object, property, entityManager) {
|
|
||||||
|
|
||||||
var handles = [];
|
|
||||||
|
|
||||||
if (
|
|
||||||
this.isString(object[property]) ||
|
|
||||||
this.isBoolean(object[property])
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property).name(property).listen());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isNumber(object[property])) {
|
|
||||||
|
|
||||||
var grain = 0.001;
|
|
||||||
|
|
||||||
if (object.grain) {
|
|
||||||
grain = object.grain;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if (object instanceof GameLib.Entity && property == 'componentToCreate') {
|
|
||||||
// handles.push(
|
|
||||||
// folder.add(
|
|
||||||
// object,
|
|
||||||
// property,
|
|
||||||
// {
|
|
||||||
// 'path_following' : GameLib.Component.COMPONENT_PATH_FOLLOWING,
|
|
||||||
// 'material' : GameLib.Component.COMPONENT_MATERIAL,
|
|
||||||
// 'renderer' : GameLib.Component.COMPONENT_RENDERER,
|
|
||||||
// 'look_at' : GameLib.Component.COMPONENT_LOOK_AT,
|
|
||||||
// 'camera' : GameLib.Component.COMPONENT_CAMERA,
|
|
||||||
// 'follow' : GameLib.Component.COMPONENT_FOLLOW,
|
|
||||||
// 'mesh' : GameLib.Component.COMPONENT_MESH,
|
|
||||||
// 'spline' : GameLib.Component.COMPONENT_SPLINE,
|
|
||||||
// 'light' : GameLib.Component.COMPONENT_LIGHT,
|
|
||||||
// 'input_drive' : GameLib.Component.COMPONENT_INPUT_DRIVE,
|
|
||||||
// 'composer' : GameLib.Component.COMPONENT_COMPOSER,
|
|
||||||
// 'render_target' : GameLib.Component.COMPONENT_RENDER_TARGET,
|
|
||||||
// 'pass' : GameLib.Component.COMPONENT_PASS,
|
|
||||||
// 'scene' : GameLib.Component.COMPONENT_SCENE,
|
|
||||||
// 'game' : GameLib.Component.COMPONENT_GAME,
|
|
||||||
// 'input_editor' : GameLib.Component.COMPONENT_INPUT_EDITOR,
|
|
||||||
// 'editor' : GameLib.Component.COMPONENT_EDITOR,
|
|
||||||
// 'viewport' : GameLib.Component.COMPONENT_VIEWPORT,
|
|
||||||
// 'system' : GameLib.Component.COMPONENT_SYSTEM,
|
|
||||||
// 'graphics' : GameLib.Component.COMPONENT_GRAPHICS,
|
|
||||||
// 'helper' : GameLib.Component.COMPONENT_HELPER,
|
|
||||||
// 'custom_code' : GameLib.Component.COMPONENT_CUSTOM_CODE,
|
|
||||||
// 'mouse' : GameLib.Component.COMPONENT_MOUSE,
|
|
||||||
// 'skeleton' : GameLib.Component.COMPONENT_SKELETON,
|
|
||||||
// 'texture' : GameLib.Component.COMPONENT_TEXTURE,
|
|
||||||
// 'entity_manager' : GameLib.Component.COMPONENT_ENTITY_MANAGER
|
|
||||||
// }
|
|
||||||
// ).name(property).listen()
|
|
||||||
// );
|
|
||||||
//
|
|
||||||
// } else if (object instanceof GameLib.System && property == 'systemType') {
|
|
||||||
// handles.push(
|
|
||||||
// folder.add(
|
|
||||||
// object,
|
|
||||||
// property,
|
|
||||||
// {
|
|
||||||
// 'render' : GameLib.System.SYSTEM_TYPE_RENDER,
|
|
||||||
// 'animation' : GameLib.System.SYSTEM_TYPE_ANIMATION,
|
|
||||||
// 'input' : GameLib.System.SYSTEM_TYPE_INPUT,
|
|
||||||
// 'all' : GameLib.System.SYSTEM_TYPE_ALL
|
|
||||||
// }
|
|
||||||
// ).name(property).listen()
|
|
||||||
// );
|
|
||||||
// } else
|
|
||||||
|
|
||||||
if (object instanceof GameLib.System && property === 'systemType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'animation' : GameLib.System.SYSTEM_TYPE_ANIMATION,
|
|
||||||
'gui' : GameLib.System.SYSTEM_TYPE_GUI,
|
|
||||||
'input' : GameLib.System.SYSTEM_TYPE_INPUT,
|
|
||||||
'render' : GameLib.System.SYSTEM_TYPE_RENDER,
|
|
||||||
'storage' : GameLib.System.SYSTEM_TYPE_STORAGE,
|
|
||||||
'linking' : GameLib.System.SYSTEM_TYPE_LINKING,
|
|
||||||
'physics' : GameLib.System.SYSTEM_TYPE_PHYSICS
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Broadphase && property === 'broadphaseType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'naive' : GameLib.D3.Broadphase.BROADPHASE_TYPE_NAIVE,
|
|
||||||
'grid' : GameLib.D3.Image.BROADPHASE_TYPE_GRID,
|
|
||||||
'sap' : GameLib.D3.Image.BROADPHASE_TYPE_SAP
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Image && property === 'imageType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'sphere' : GameLib.D3.Image.IMAGE_TYPE_SPHERE,
|
|
||||||
'cube' : GameLib.D3.Image.IMAGE_TYPE_CUBE,
|
|
||||||
'normal' : GameLib.D3.Image.IMAGE_TYPE_NORMAL
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Mesh && property === 'meshType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'normal' : GameLib.D3.Mesh.MESH_TYPE_NORMAL,
|
|
||||||
'curve' : GameLib.D3.Mesh.MESH_TYPE_CURVE,
|
|
||||||
'skinned' : GameLib.D3.Mesh.MESH_TYPE_SKINNED,
|
|
||||||
'plane' : GameLib.D3.Mesh.MESH_TYPE_PLANE,
|
|
||||||
'sphere' : GameLib.D3.Mesh.MESH_TYPE_SPHERE
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'materialType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'standard': GameLib.D3.Material.MATERIAL_TYPE_STANDARD,
|
|
||||||
'basic': GameLib.D3.Material.MATERIAL_TYPE_BASIC,
|
|
||||||
'phong': GameLib.D3.Material.MATERIAL_TYPE_PHONG,
|
|
||||||
'points': GameLib.D3.Material.MATERIAL_TYPE_POINTS
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'side') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'double': GameLib.D3.Material.TYPE_DOUBLE_SIDE,
|
|
||||||
'front': GameLib.D3.Material.TYPE_FRONT_SIDE,
|
|
||||||
'back': GameLib.D3.Material.TYPE_BACK_SIDE
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'combine') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'multiply': GameLib.D3.Material.TYPE_MULTIPLY_OPERATION,
|
|
||||||
'mix': GameLib.D3.Material.TYPE_MIX_OPERATION,
|
|
||||||
'add': GameLib.D3.Material.TYPE_ADD_OPERATION
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'vertexColors') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'none': GameLib.D3.Material.TYPE_NO_COLORS,
|
|
||||||
'face': GameLib.D3.Material.TYPE_FACE_COLORS,
|
|
||||||
'vertex': GameLib.D3.Material.TYPE_VERTEX_COLORS
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'blending') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'normal': GameLib.D3.Material.TYPE_NORMAL_BLENDING,
|
|
||||||
'additive': GameLib.D3.Material.TYPE_ADDITIVE_BLENDING,
|
|
||||||
'subtractive': GameLib.D3.Material.TYPE_SUBTRACTIVE_BLENDING,
|
|
||||||
'multiply': GameLib.D3.Material.TYPE_MULTIPLY_BLENDING
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'blendSrc') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,-
|
|
||||||
{
|
|
||||||
'zero': GameLib.D3.Material.TYPE_ZERO_FACTOR,
|
|
||||||
'one': GameLib.D3.Material.TYPE_ONE_FACTOR,
|
|
||||||
'source color': GameLib.D3.Material.TYPE_SRC_COLOR_FACTOR,
|
|
||||||
'one minus source color': GameLib.D3.Material.TYPE_ONE_MINUS_SRC_COLOR_FACTOR,
|
|
||||||
'source alpha': GameLib.D3.Material.TYPE_SRC_ALPHA_FACTOR,
|
|
||||||
'one minus source alpha': GameLib.D3.Material.TYPE_ONE_MINUS_SRC_ALPHA_FACTOR,
|
|
||||||
'destination alpha': GameLib.D3.Material.TYPE_DST_ALPHA_FACTOR,
|
|
||||||
'one minus destination alpha': GameLib.D3.Material.TYPE_ONE_MINUS_DST_ALPHA_FACTOR,
|
|
||||||
'destination color': GameLib.D3.Material.TYPE_DST_COLOR_FACTOR,
|
|
||||||
'one minus destination color': GameLib.D3.Material.TYPE_ONE_MINUS_DST_COLOR_FACTOR,
|
|
||||||
'source alpha saturate': GameLib.D3.Material.TYPE_SRC_ALPHA_SATURATE_FACTOR
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'blendDst') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'zero': GameLib.D3.Material.TYPE_ZERO_FACTOR,
|
|
||||||
'one': GameLib.D3.Material.TYPE_ONE_FACTOR,
|
|
||||||
'source color': GameLib.D3.Material.TYPE_SRC_COLOR_FACTOR,
|
|
||||||
'one minus source color': GameLib.D3.Material.TYPE_ONE_MINUS_SRC_COLOR_FACTOR,
|
|
||||||
'source alpha': GameLib.D3.Material.TYPE_SRC_ALPHA_FACTOR,
|
|
||||||
'one minus source alpha': GameLib.D3.Material.TYPE_ONE_MINUS_SRC_ALPHA_FACTOR,
|
|
||||||
'destination alpha': GameLib.D3.Material.TYPE_DST_ALPHA_FACTOR,
|
|
||||||
'one minus destination alpha': GameLib.D3.Material.TYPE_ONE_MINUS_DST_ALPHA_FACTOR,
|
|
||||||
'destination color': GameLib.D3.Material.TYPE_DST_COLOR_FACTOR,
|
|
||||||
'one minus destination color': GameLib.D3.Material.TYPE_ONE_MINUS_DST_COLOR_FACTOR,
|
|
||||||
'source alpha saturate': GameLib.D3.Material.TYPE_SRC_ALPHA_SATURATE_FACTOR
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'blendEquation') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'add': GameLib.D3.Material.TYPE_ADD_EQUATION,
|
|
||||||
'subtract': GameLib.D3.Material.TYPE_SUBTRACT_EQUATION,
|
|
||||||
'reverse subtract': GameLib.D3.Material.TYPE_REVERSE_SUBTRACT_EQUATION,
|
|
||||||
'min': GameLib.D3.Material.TYPE_MIN_EQUATION,
|
|
||||||
'max': GameLib.D3.Material.TYPE_MAX_EQUATION
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'depthFunc') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'never': GameLib.D3.Material.TYPE_NEVER_DEPTH,
|
|
||||||
'always': GameLib.D3.Material.TYPE_ALWAYS_DEPTH,
|
|
||||||
'less depth': GameLib.D3.Material.TYPE_LESS_DEPTH,
|
|
||||||
'less equal depth': GameLib.D3.Material.TYPE_LESS_EQUAL_DEPTH,
|
|
||||||
'equal depth': GameLib.D3.Material.TYPE_EQUAL_DEPTH,
|
|
||||||
'greated equal depth': GameLib.D3.Material.TYPE_GREATER_EQUAL_DEPTH,
|
|
||||||
'greated depth': GameLib.D3.Material.TYPE_GREATER_DEPTH,
|
|
||||||
'not equal depth': GameLib.D3.Material.TYPE_NOT_EQUAL_DEPTH
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Material && property === 'shading') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'flat': GameLib.D3.Material.TYPE_FLAT_SHADING,
|
|
||||||
'smooth': GameLib.D3.Material.TYPE_SMOOTH_SHADING
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'wrapS') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'repeat': GameLib.D3.Texture.TYPE_REPEAT_WRAPPING,
|
|
||||||
'clamp': GameLib.D3.Texture.TYPE_CLAMP_TO_EDGE_WRAPPING,
|
|
||||||
'mirrored repeat': GameLib.D3.Texture.TYPE_MIRRORED_REPEAT_WRAPPING
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'wrapT') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'repeat': GameLib.D3.Texture.TYPE_REPEAT_WRAPPING,
|
|
||||||
'clamp': GameLib.D3.Texture.TYPE_CLAMP_TO_EDGE_WRAPPING,
|
|
||||||
'mirrored repeat': GameLib.D3.Texture.TYPE_MIRRORED_REPEAT_WRAPPING
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'format') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'alpha': GameLib.D3.Texture.TYPE_ALPHA_FORMAT,
|
|
||||||
'rgb': GameLib.D3.Texture.TYPE_RGB_FORMAT,
|
|
||||||
'rgba': GameLib.D3.Texture.TYPE_RGBA_FORMAT,
|
|
||||||
'luminance': GameLib.D3.Texture.TYPE_LUMINANCE_FORMAT,
|
|
||||||
'luminance alpha': GameLib.D3.Texture.TYPE_LUMINANCE_ALPHA_FORMAT,
|
|
||||||
'depth': GameLib.D3.Texture.TYPE_DEPTH_FORMAT
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'mapping') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'uv': GameLib.D3.Texture.TYPE_UV_MAPPING,
|
|
||||||
'cube reflection': GameLib.D3.Texture.TYPE_CUBE_REFLECTION_MAPPING,
|
|
||||||
'cube refraction': GameLib.D3.Texture.TYPE_CUBE_REFRACTION_MAPPING,
|
|
||||||
'equi rectangular reflection': GameLib.D3.Texture.TYPE_EQUI_RECTANGULAR_REFLECTION_MAPPING,
|
|
||||||
'equi rectangular refraction': GameLib.D3.Texture.TYPE_EQUI_RECTANGULAR_REFRACTION_MAPPING,
|
|
||||||
'spherical reflection': GameLib.D3.Texture.TYPE_SPHERICAL_REFLECTION_MAPPING,
|
|
||||||
'cube uv reflection': GameLib.D3.Texture.TYPE_CUBE_UV_REFLECTION_MAPPING,
|
|
||||||
'cube uv refraction': GameLib.D3.Texture.TYPE_CUBE_UV_REFRACTION_MAPPING
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'magFilter') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'nearest': GameLib.D3.Texture.TYPE_NEAREST_FILTER,
|
|
||||||
'nearest mipmap nearest': GameLib.D3.Texture.TYPE_NEAREST_MIPMAP_NEAREST_FILTER,
|
|
||||||
'nearest mipmap linear': GameLib.D3.Texture.TYPE_NEAREST_MIPMAP_LINEAR_FILTER,
|
|
||||||
'linear': GameLib.D3.Texture.TYPE_LINEAR_FILTER,
|
|
||||||
'linear mipmap nearest': GameLib.D3.Texture.TYPE_LINEAR_MIPMAP_NEAREST_FILTER,
|
|
||||||
'linear mipmap linear': GameLib.D3.Texture.TYPE_LINEAR_MIPMAP_LINEAR_FILTER
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'minFilter') {
|
|
||||||
handles.push(folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'nearest': GameLib.D3.Texture.TYPE_NEAREST_FILTER,
|
|
||||||
'nearest mipmap nearest': GameLib.D3.Texture.TYPE_NEAREST_MIPMAP_NEAREST_FILTER,
|
|
||||||
'nearest mipmap linear': GameLib.D3.Texture.TYPE_NEAREST_MIPMAP_LINEAR_FILTER,
|
|
||||||
'linear': GameLib.D3.Texture.TYPE_LINEAR_FILTER,
|
|
||||||
'linear mipmap nearest': GameLib.D3.Texture.TYPE_LINEAR_MIPMAP_NEAREST_FILTER,
|
|
||||||
'linear mipmap linear': GameLib.D3.Texture.TYPE_LINEAR_MIPMAP_LINEAR_FILTER
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'typeId') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'normal': GameLib.D3.Texture.TEXTURE_TYPE_NORMAL,
|
|
||||||
'cube': GameLib.D3.Texture.TEXTURE_TYPE_CUBE
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'textureType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'unsigned byte': GameLib.D3.Texture.TYPE_UNSIGNED_BYTE,
|
|
||||||
'byte': GameLib.D3.Texture.TYPE_BYTE,
|
|
||||||
'short': GameLib.D3.Texture.TYPE_SHORT,
|
|
||||||
'unsigned short': GameLib.D3.Texture.TYPE_UNSIGNED_SHORT,
|
|
||||||
'int': GameLib.D3.Texture.TYPE_INT,
|
|
||||||
'unsigned int': GameLib.D3.Texture.TYPE_UNSIGNED_INT,
|
|
||||||
'float': GameLib.D3.Texture.TYPE_FLOAT,
|
|
||||||
'half float': GameLib.D3.Texture.TYPE_HALF_FLOAT
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Texture && property === 'encoding') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'linear': GameLib.D3.Texture.TYPE_LINEAR_ENCODING,
|
|
||||||
'srgb': GameLib.D3.Texture.TYPE_SRGB_ENCODING,
|
|
||||||
'gamma': GameLib.D3.Texture.TYPE_GAMMA_ENCODING,
|
|
||||||
'rgbe': GameLib.D3.Texture.TYPE_RGBE_ENCODING,
|
|
||||||
'log luv': GameLib.D3.Texture.TYPE_LOG_LUV_ENCODING,
|
|
||||||
'rgbm7': GameLib.D3.Texture.TYPE_RGBM7_ENCODING,
|
|
||||||
'rgbm16': GameLib.D3.Texture.TYPE_RGBM16_ENCODING,
|
|
||||||
'rgbd': GameLib.D3.Texture.TYPE_RGBD_ENCODING
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else if (object instanceof GameLib.D3.Light && property === 'lightType') {
|
|
||||||
handles.push(
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
{
|
|
||||||
'ambient': GameLib.D3.Light.LIGHT_TYPE_AMBIENT,
|
|
||||||
'directional': GameLib.D3.Light.LIGHT_TYPE_DIRECTIONAL,
|
|
||||||
'spot': GameLib.D3.Light.LIGHT_TYPE_SPOT,
|
|
||||||
'point': GameLib.D3.Light.LIGHT_TYPE_POINT
|
|
||||||
}
|
|
||||||
).name(property).listen()
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Try to guess a scale for this property
|
* Removes empty folders from instance
|
||||||
*/
|
*/
|
||||||
if (
|
|
||||||
property === 'opacity' ||
|
|
||||||
property === 'metalness' ||
|
|
||||||
property === 'roughness'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, 0, 1.0).step(0.001).name(property).listen());
|
|
||||||
} else if (
|
|
||||||
property === 'shininess' ||
|
|
||||||
property === 'fov'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, -255, 255).step(1).name(property).listen());
|
|
||||||
} else if (
|
|
||||||
property === 'aspect'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, 0, 5).step(0.001).name(property).listen());
|
|
||||||
} else if (
|
|
||||||
property === 'widthSegments' ||
|
|
||||||
property === 'heightSegments'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, 1, 1000).step(1).name(property).listen());
|
|
||||||
} else if (
|
|
||||||
property === 'angle' ||
|
|
||||||
property === 'width' ||
|
|
||||||
property === 'height' ||
|
|
||||||
property === 'depth'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, -1000, 1000).step(1).name(property).listen());
|
|
||||||
} else if (
|
|
||||||
property === 'near' ||
|
|
||||||
property === 'distanceGrain' ||
|
|
||||||
property === 'bumpScale' ||
|
|
||||||
property === 'envMapIntensity'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, -10, 100).step(0.001).name(property).listen());
|
|
||||||
} else if (
|
|
||||||
property === 'heightOffset' ||
|
|
||||||
property === 'rotationFactor'
|
|
||||||
) {
|
|
||||||
handles.push(folder.add(object, property, -100, 100).step(0.001).name(property).listen());
|
|
||||||
} else {
|
|
||||||
handles.push(folder.add(object, property, -10000, 10000).step(grain).name(property).listen());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isColor(object[property])) {
|
|
||||||
handles.push(folder.addColor({hexColor : object[property].toHex()}, 'hexColor').name(property).listen());
|
|
||||||
}
|
|
||||||
//
|
|
||||||
// if (this.isFutureObject(object, property)) {
|
|
||||||
//
|
|
||||||
// var result = this.getObjectPropertyType(object, property);
|
|
||||||
//
|
|
||||||
// var objectType = result.propertyType;
|
|
||||||
//
|
|
||||||
// var isArray = result.isArray;
|
|
||||||
//
|
|
||||||
// if (isArray) {
|
|
||||||
//
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// } else {
|
|
||||||
//
|
|
||||||
// var selection = {};
|
|
||||||
//
|
|
||||||
// selection['select...'] = null;
|
|
||||||
//
|
|
||||||
// var guiObject = {
|
|
||||||
// id : null
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// for (var o in idToObject) {
|
|
||||||
// if (idToObject.hasOwnProperty(o)) {
|
|
||||||
// if (idToObject[o] instanceof objectType) {
|
|
||||||
//
|
|
||||||
// var name = idToObject[o].name;
|
|
||||||
//
|
|
||||||
// if (name.indexOf(idToObject[o].id) == -1) {
|
|
||||||
// name += '(' + idToObject[o].id + ')';
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// selection[name] = idToObject[o].id;
|
|
||||||
//
|
|
||||||
// if (object[property] && object[property].id == idToObject[o].id) {
|
|
||||||
// guiObject.id = idToObject[o].id;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// handles.push(
|
|
||||||
// folder.add(
|
|
||||||
// guiObject,
|
|
||||||
// 'id',
|
|
||||||
// selection
|
|
||||||
// ).name(property).listen()
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// var createObjectFunction = function(constructor, __object, __property, editor) {
|
|
||||||
// return function() {
|
|
||||||
//
|
|
||||||
// if (__object[__property] instanceof Array) {
|
|
||||||
// __object[__property].push(new constructor(
|
|
||||||
// editor.graphics
|
|
||||||
// ));
|
|
||||||
// } else {
|
|
||||||
// __object[__property] = new constructor(
|
|
||||||
// editor.graphics
|
|
||||||
// );
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// editor.editor.buildIdToObject();
|
|
||||||
//
|
|
||||||
// editor.buildObjectSelection();
|
|
||||||
//
|
|
||||||
// editor.buildGUI();
|
|
||||||
// }
|
|
||||||
// }(objectType, object, property, this);
|
|
||||||
//
|
|
||||||
// var createObject = {
|
|
||||||
// 'create': createObjectFunction
|
|
||||||
// };
|
|
||||||
//
|
|
||||||
// folder.add(
|
|
||||||
// createObject,
|
|
||||||
// 'create'
|
|
||||||
// ).name('create a ' + property.replace(/s$/,''));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
|
|
||||||
// handles.map(function(handle){
|
|
||||||
//
|
|
||||||
// handle.onChange(
|
|
||||||
// this.onPropertyChange(
|
|
||||||
// this,
|
|
||||||
// affectedObjectProperties
|
|
||||||
// )
|
|
||||||
// );
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// });
|
|
||||||
|
|
||||||
handles.map(
|
|
||||||
function(gui) {
|
|
||||||
return function(handle) {
|
|
||||||
if (property === 'name') {
|
|
||||||
handle.onFinishChange(
|
|
||||||
function(){gui.build(entityManager)}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
handle.onChange(
|
|
||||||
function (value) {
|
|
||||||
if (object[property] instanceof GameLib.Color) {
|
|
||||||
object[property].fromHex(value);
|
|
||||||
object[property].updateInstance();
|
|
||||||
} else if (typeof this.initialValue === 'number') {
|
|
||||||
object[property] = Number(value);
|
|
||||||
} else {
|
|
||||||
object[property] = value;
|
|
||||||
}
|
|
||||||
object.updateInstance();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}(this)
|
|
||||||
);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.buildVectorControl = function(folder, templateObject, property, dimension) {
|
|
||||||
|
|
||||||
var step = 0.1;
|
|
||||||
|
|
||||||
var object = templateObject.template;
|
|
||||||
|
|
||||||
var affected = templateObject.affected;
|
|
||||||
|
|
||||||
if (
|
|
||||||
property === 'localRotation' ||
|
|
||||||
property === 'localPosition'
|
|
||||||
) {
|
|
||||||
step = 0.001;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (dimension === 4) {
|
|
||||||
folder.add(
|
|
||||||
object[property],
|
|
||||||
'w',
|
|
||||||
-100,
|
|
||||||
100,
|
|
||||||
step
|
|
||||||
).name(property + '.w').listen().onChange(
|
|
||||||
function(value) {
|
|
||||||
affected.map(function(component){
|
|
||||||
component[property].w = value;
|
|
||||||
component.updateInstance();
|
|
||||||
}.bind(this));
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
folder.add(
|
|
||||||
object[property],
|
|
||||||
'x',
|
|
||||||
-100,
|
|
||||||
100,
|
|
||||||
step
|
|
||||||
).name(property + '.x').listen().onChange(
|
|
||||||
function(value) {
|
|
||||||
affected.map(function(component){
|
|
||||||
component[property].x = value;
|
|
||||||
component.updateInstance();
|
|
||||||
}.bind(this));
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
folder.add(
|
|
||||||
object[property],
|
|
||||||
'y',
|
|
||||||
-100,
|
|
||||||
100,
|
|
||||||
step
|
|
||||||
).name(property + '.y').listen().onChange(
|
|
||||||
function(value) {
|
|
||||||
affected.map(function(component){
|
|
||||||
component[property].y = value;
|
|
||||||
component.updateInstance();
|
|
||||||
}.bind(this));
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
if (
|
|
||||||
dimension === 3 ||
|
|
||||||
dimension === 4
|
|
||||||
) {
|
|
||||||
folder.add(
|
|
||||||
object[property],
|
|
||||||
'z',
|
|
||||||
-100,
|
|
||||||
100,
|
|
||||||
step
|
|
||||||
).name(property + '.z').listen().onChange(
|
|
||||||
function(value) {
|
|
||||||
affected.map(function(component){
|
|
||||||
component[property].z = value;
|
|
||||||
component.updateInstance();
|
|
||||||
}.bind(this));
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.buildSelectControl = function(folder, object, property, entityManager, constructor) {
|
|
||||||
|
|
||||||
var objects = entityManager.queryComponents(constructor);
|
|
||||||
|
|
||||||
var idToObject = {};
|
|
||||||
|
|
||||||
var options = objects.reduce(
|
|
||||||
function(result, obj) {
|
|
||||||
result[obj.name] = obj;
|
|
||||||
idToObject[obj.id] = obj;
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'none' : null
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
folder.add(
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
options
|
|
||||||
).name(property).listen().onChange(
|
|
||||||
|
|
||||||
function(gui) {
|
|
||||||
|
|
||||||
return function (value) {
|
|
||||||
|
|
||||||
if (value !== 'null') {
|
|
||||||
object[property] = idToObject[value];
|
|
||||||
} else {
|
|
||||||
object[property] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (property === 'parentScene') {
|
|
||||||
/**
|
|
||||||
* New way of doing things
|
|
||||||
*/
|
|
||||||
GameLib.Event.Emit(
|
|
||||||
GameLib.Event.PARENT_SCENE_CHANGE,
|
|
||||||
{
|
|
||||||
originalScene: this.initialValue,
|
|
||||||
newScene: object[property],
|
|
||||||
object: object,
|
|
||||||
entityManager: entityManager
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
/**
|
|
||||||
* Old way of doing things
|
|
||||||
*/
|
|
||||||
object.updateInstance();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Properties changed - rebuild GUI
|
|
||||||
*/
|
|
||||||
//gui.build(entityManager);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
}(this)
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
GameLib.GUI.prototype.buildArrayManager = function(
|
|
||||||
folder,
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
constructor,
|
|
||||||
entityManager
|
|
||||||
) {
|
|
||||||
|
|
||||||
var array = object[property];
|
|
||||||
|
|
||||||
var addArrayItem = function(item, index){
|
|
||||||
|
|
||||||
var controller = folder.add(
|
|
||||||
{
|
|
||||||
'remove' : function() {
|
|
||||||
object[property].splice(object[property].indexOf(item), 1);
|
|
||||||
folder.remove(controller);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
'remove'
|
|
||||||
).name('remove ' + property + '[' + index + '] - ' + item.name);
|
|
||||||
};
|
|
||||||
|
|
||||||
array.map(addArrayItem);
|
|
||||||
|
|
||||||
var idToObject = {};
|
|
||||||
|
|
||||||
var selectionObject = entityManager.queryComponents(constructor).reduce(
|
|
||||||
function(result, component) {
|
|
||||||
result[component.name] = component;
|
|
||||||
idToObject[component.id] = component;
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'none' : null
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
var activeSelection = function(__object, __property) {
|
|
||||||
|
|
||||||
var object = __object;
|
|
||||||
var property = __property;
|
|
||||||
|
|
||||||
return {
|
|
||||||
component : null,
|
|
||||||
add : function() {
|
|
||||||
if (object[property].indexOf(activeSelection.component) === -1) {
|
|
||||||
object[property].push(activeSelection.component);
|
|
||||||
addArrayItem(activeSelection.component, object[property].length - 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
}(object, property);
|
|
||||||
|
|
||||||
folder.add(activeSelection, 'component', selectionObject).name('select ' + property).onChange(
|
|
||||||
function(value){
|
|
||||||
if (value === 'null') {
|
|
||||||
activeSelection['component'] = null;
|
|
||||||
} else {
|
|
||||||
activeSelection['component'] = idToObject[value];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
).listen();
|
|
||||||
|
|
||||||
folder.add(activeSelection, 'add').name('add to ' + property);
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.buildEntitySelectionControlFromArray = function(
|
|
||||||
folder,
|
|
||||||
object,
|
|
||||||
property,
|
|
||||||
entityManager
|
|
||||||
) {
|
|
||||||
|
|
||||||
var options = entityManager.entities.reduce(
|
|
||||||
function(result, obj){
|
|
||||||
if (obj instanceof Object) {
|
|
||||||
result[obj.name] = obj;
|
|
||||||
} else {
|
|
||||||
console.log('not an object');
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'none' : null
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
folder.add(object, property, options).name(property).listen().onChange(
|
|
||||||
function(entityManager, gui) {
|
|
||||||
return function(value) {
|
|
||||||
|
|
||||||
if (value !== 'null') {
|
|
||||||
object[property] = entityManager.findEntityById(value);
|
|
||||||
} else {
|
|
||||||
object[property] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
GameLib.Event.Emit(
|
|
||||||
GameLib.Event.PARENT_ENTITY_CHANGE,
|
|
||||||
{
|
|
||||||
originalEntity : this.initialValue,
|
|
||||||
newEntity : entityManager.findEntityById(value),
|
|
||||||
object : object
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
this.initialValue = entityManager.findEntityById(value);
|
|
||||||
};
|
|
||||||
}(entityManager, this)
|
|
||||||
).onFinishChange(function(gui, entityManager){
|
|
||||||
return function() {
|
|
||||||
gui.build(entityManager);
|
|
||||||
}
|
|
||||||
}(this, entityManager));
|
|
||||||
};
|
|
||||||
|
|
||||||
GameLib.GUI.prototype.removeEmtpyFolders = function() {
|
GameLib.GUI.prototype.removeEmtpyFolders = function() {
|
||||||
this.instance.removeEmptyFolders();
|
this.instance.removeEmptyFolders();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove all folders from instance
|
||||||
|
*/
|
||||||
GameLib.GUI.prototype.removeAllFolders = function() {
|
GameLib.GUI.prototype.removeAllFolders = function() {
|
||||||
this.instance.removeAllFolders();
|
this.instance.removeAllFolders();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Adds a folder to instance
|
||||||
|
* @param folderName
|
||||||
|
* @returns {*}
|
||||||
|
*/
|
||||||
GameLib.GUI.prototype.addFolder = function(folderName) {
|
GameLib.GUI.prototype.addFolder = function(folderName) {
|
||||||
try {
|
try {
|
||||||
return this.instance.addFolder(folderName);
|
return this.instance.addFolder(folderName);
|
||||||
|
@ -1027,12 +100,3 @@ GameLib.GUI.prototype.addFolder = function(folderName) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds the GUI
|
|
||||||
*/
|
|
||||||
GameLib.GUI.prototype.build = function(entityManager) {
|
|
||||||
|
|
||||||
console.log('hi');
|
|
||||||
|
|
||||||
};
|
|
File diff suppressed because it is too large
Load Diff
|
@ -26,7 +26,7 @@ GameLib.System.Input.prototype.start = function() {
|
||||||
|
|
||||||
var component = entity.getFirstComponent(GameLib.D3.Input.Editor);
|
var component = entity.getFirstComponent(GameLib.D3.Input.Editor);
|
||||||
|
|
||||||
component.mouseDown = component.onMouseDown(entity, GameLib.EntityManager.Instance).bind(component);
|
component.mouseDown = component.onMouseDown(entity).bind(component);
|
||||||
component.mouseMove = component.onMouseMove(entity).bind(component);
|
component.mouseMove = component.onMouseMove(entity).bind(component);
|
||||||
component.keyDown = component.onKeyDown(entity, GameLib.EntityManager.Instance).bind(component);
|
component.keyDown = component.onKeyDown(entity, GameLib.EntityManager.Instance).bind(component);
|
||||||
component.keyUp = component.onKeyUp(entity, GameLib.EntityManager.Instance).bind(component);
|
component.keyUp = component.onKeyUp(entity, GameLib.EntityManager.Instance).bind(component);
|
||||||
|
|
|
@ -34,6 +34,7 @@ GameLib.System.Linking = function(
|
||||||
this.imageInstanceCreatedSubscription = null;
|
this.imageInstanceCreatedSubscription = null;
|
||||||
this.textureInstanceCreatedSubscription = null;
|
this.textureInstanceCreatedSubscription = null;
|
||||||
this.materialInstanceCreatedSubscription = null;
|
this.materialInstanceCreatedSubscription = null;
|
||||||
|
this.meshDeletedSubscription = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.System.Linking.prototype = Object.create(GameLib.System.prototype);
|
GameLib.System.Linking.prototype = Object.create(GameLib.System.prototype);
|
||||||
|
@ -89,7 +90,12 @@ GameLib.System.Linking.prototype.start = function() {
|
||||||
this.imageNotFoundSubscription = this.subscribe(
|
this.imageNotFoundSubscription = this.subscribe(
|
||||||
GameLib.Event.IMAGE_NOT_FOUND,
|
GameLib.Event.IMAGE_NOT_FOUND,
|
||||||
this.imageNotFound
|
this.imageNotFound
|
||||||
)
|
);
|
||||||
|
|
||||||
|
this.meshDeletedSubscription = this.subscribe(
|
||||||
|
GameLib.Event.MESH_DELETED,
|
||||||
|
this.meshDeleted
|
||||||
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
GameLib.System.Linking.prototype.link = function(component, data) {
|
GameLib.System.Linking.prototype.link = function(component, data) {
|
||||||
|
@ -540,6 +546,88 @@ GameLib.System.Linking.prototype.onParentEntityChange = function(data) {
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* When a mesh is deleted - build a list of all the mesh children objects - also - find out if any of these
|
||||||
|
* children objects are in use by another object - if it is - don't delete it, otherwise, do
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
GameLib.System.Linking.prototype.meshDeleted = function(data) {
|
||||||
|
|
||||||
|
console.log('to delete');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* First we get the list of all components we would like to delete
|
||||||
|
*/
|
||||||
|
var componentsToDelete = data.meshes.reduce(
|
||||||
|
function(result, mesh) {
|
||||||
|
|
||||||
|
result.push(mesh);
|
||||||
|
|
||||||
|
var components = mesh.getChildrenComponents();
|
||||||
|
|
||||||
|
components.map(function(component){
|
||||||
|
result.push(component);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Now, we want to get a list of all the meshes which we don't want to delete, and all their children
|
||||||
|
*/
|
||||||
|
var meshes = GameLib.EntityManager.Instance.queryComponents(GameLib.D3.Mesh);
|
||||||
|
meshes = meshes.filter(function(mesh){
|
||||||
|
return data.meshes.indexOf(mesh) === -1;
|
||||||
|
});
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Now we have a list of meshes still in use in meshes, now find all their children
|
||||||
|
*/
|
||||||
|
var componentsInUse = meshes.reduce(
|
||||||
|
function(result, mesh) {
|
||||||
|
|
||||||
|
result.push(mesh);
|
||||||
|
|
||||||
|
var components = mesh.getChildrenComponents();
|
||||||
|
|
||||||
|
components.map(function(component){
|
||||||
|
result.push(component);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
},
|
||||||
|
[]
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Now we don't want to remove any children in use, so filter out the components in use
|
||||||
|
*/
|
||||||
|
componentsToDelete = componentsToDelete.filter(
|
||||||
|
function(component) {
|
||||||
|
return componentsInUse.indexOf(component) === -1;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* componentsToDelete should now be the final list of components to delete
|
||||||
|
*/
|
||||||
|
componentsToDelete.map(function(component){
|
||||||
|
GameLib.Event.Emit(
|
||||||
|
GameLib.Event.COMPONENT_REMOVE,
|
||||||
|
{
|
||||||
|
component : component
|
||||||
|
}
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
GameLib.Event.Emit(
|
||||||
|
GameLib.Event.BUILD_GUI,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
GameLib.System.Linking.prototype.stop = function() {
|
GameLib.System.Linking.prototype.stop = function() {
|
||||||
this.imageNotFoundSubscription.remove();
|
this.imageNotFoundSubscription.remove();
|
||||||
this.componentCreatedSubscription.remove();
|
this.componentCreatedSubscription.remove();
|
||||||
|
@ -551,5 +639,6 @@ GameLib.System.Linking.prototype.stop = function() {
|
||||||
this.imageInstanceCreatedSubscription.remove();
|
this.imageInstanceCreatedSubscription.remove();
|
||||||
this.textureInstanceCreatedSubscription.remove();
|
this.textureInstanceCreatedSubscription.remove();
|
||||||
this.materialInstanceCreatedSubscription.remove();
|
this.materialInstanceCreatedSubscription.remove();
|
||||||
|
this.meshDeletedSubscription.remove();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue