This commit is contained in:
Thomas FORGIONE 2015-06-29 15:41:18 +02:00
parent d8d1c54fed
commit e5e1513221
8 changed files with 121 additions and 113 deletions

12
geo/Geo.js Normal file
View File

@ -0,0 +1,12 @@
var fs = require('fs');
/**
* @namespace
*/
var geo = {};
if (typeof module === 'object') {
module.exports = geo;
}

17
geo/Makefile Normal file
View File

@ -0,0 +1,17 @@
OPT=--compilation_level SIMPLE_OPTIMIZATIONS
ifeq ($(TYPE),RELEASE)
CLOSURE=java -jar /usr/share/java/closure-compiler/closure-compiler.jar
else
CLOSURE=../utils/compiler.sh
endif
all: Geo
Geo:
$(CLOSURE) $(OPT) \
--js Geo.js \
--js Mesh.js \
--js MeshContainer.js \
--js MeshStreamer.js \
--js_output_file ../lib/geo.min.js

View File

@ -1,14 +1,9 @@
/**
* @namespace
*/
var mesh = {};
/** /**
* Reprensents a mesh * Reprensents a mesh
* @constructor * @constructor
* @memberOf mesh * @memberOf geo
*/ */
mesh.Mesh = function() { geo.Mesh = function() {
this.vertices = []; this.vertices = [];
this.faces = []; this.faces = [];
this.texCoords = []; this.texCoords = [];
@ -23,7 +18,7 @@ mesh.Mesh = function() {
* Checks if there are normals in the mesh * Checks if there are normals in the mesh
* @returns {Boolean} true if there are normals in the mesh, false otherwise * @returns {Boolean} true if there are normals in the mesh, false otherwise
*/ */
mesh.Mesh.prototype.hasNormals = function() { geo.Mesh.prototype.hasNormals = function() {
return this.normals.length > 0; return this.normals.length > 0;
} }
@ -31,22 +26,22 @@ mesh.Mesh.prototype.hasNormals = function() {
* Checks if there are texture coordinates in the mesh * Checks if there are texture coordinates in the mesh
* @returns {Boolean} true if there are texture coordinates in the mesh, false otherwise * @returns {Boolean} true if there are texture coordinates in the mesh, false otherwise
*/ */
mesh.Mesh.prototype.hasTexCoords = function() { geo.Mesh.prototype.hasTexCoords = function() {
return this.texCoords.length > 0; return this.texCoords.length > 0;
} }
/** /**
* Adds a vertex to a mesh * Adds a vertex to a mesh
* @param {mesh.Vertex|String} A Vertex object or its string representation * @param {geo.Vertex|String} A Vertex object or its string representation
*/ */
mesh.Mesh.prototype.addVertex = function(vertex) { geo.Mesh.prototype.addVertex = function(vertex) {
if (vertex instanceof mesh.Vertex) { if (vertex instanceof geo.Vertex) {
this.vertices.push(vertex); this.vertices.push(vertex);
} else if (typeof vertex === 'string' || vertex instanceof String) { } else if (typeof vertex === 'string' || vertex instanceof String) {
this.vertices.push(new mesh.Vertex(vertex)); this.vertices.push(new geo.Vertex(vertex));
} else { } else {
console.error("Can only add vertex from mesh.Vertex or string"); console.error("Can only add vertex from geo.Vertex or string");
return; return;
} }
@ -55,18 +50,18 @@ mesh.Mesh.prototype.addVertex = function(vertex) {
/** /**
* Adds a face to a mesh * Adds a face to a mesh
* @param {mesh.Face|String} A Face object or its string representation * @param {geo.Face|String} A Face object or its string representation
*/ */
mesh.Mesh.prototype.addFaces = function(face) { geo.Mesh.prototype.addFaces = function(face) {
var faces; var faces;
if (face instanceof mesh.Face) { if (face instanceof geo.Face) {
this.faces.push(face); this.faces.push(face);
} else if (typeof face === 'string' || face instanceof String) { } else if (typeof face === 'string' || face instanceof String) {
faces = parseFace(face); faces = parseFace(face);
this.faces = this.faces.concat(faces); this.faces = this.faces.concat(faces);
} else { } else {
console.error("Can only add face from mesh.Face or string"); console.error("Can only add face from geo.Face or string");
return; return;
} }
@ -79,15 +74,15 @@ mesh.Mesh.prototype.addFaces = function(face) {
/** /**
* Adds a texture coordinate to a mesh * Adds a texture coordinate to a mesh
* @param {mesh.TexCoord|String} A TexCoord object or its string representation * @param {geo.TexCoord|String} A TexCoord object or its string representation
*/ */
mesh.Mesh.prototype.addTexCoord = function(texCoord) { geo.Mesh.prototype.addTexCoord = function(texCoord) {
if (texCoord instanceof mesh.TexCoord) { if (texCoord instanceof geo.TexCoord) {
this.texCoords.push(texCoord); this.texCoords.push(texCoord);
} else if (typeof texCoord === 'string' || texCoord instanceof String) { } else if (typeof texCoord === 'string' || texCoord instanceof String) {
this.texCoords.push(new mesh.TexCoord(texCoord)); this.texCoords.push(new geo.TexCoord(texCoord));
} else { } else {
console.error("Can only add texCoord from mesh.TexCoord or string"); console.error("Can only add texCoord from geo.TexCoord or string");
return; return;
} }
@ -96,31 +91,31 @@ mesh.Mesh.prototype.addTexCoord = function(texCoord) {
/** /**
* Adds a normal to a mesh * Adds a normal to a mesh
* @param {mesh.Normal|String} A Normal object or its string representation * @param {geo.Normal|String} A Normal object or its string representation
*/ */
mesh.Mesh.prototype.addNormal = function(normal) { geo.Mesh.prototype.addNormal = function(normal) {
if (normal instanceof mesh.Normal) { if (normal instanceof geo.Normal) {
this.normals.push(normal); this.normals.push(normal);
} else if (typeof normal === 'string' || normal instanceof String) { } else if (typeof normal === 'string' || normal instanceof String) {
this.normals.push(new mesh.Normal(normal)); this.normals.push(new geo.Normal(normal));
} else { } else {
console.error("Can only add normal from mesh.Normal of string"); console.error("Can only add normal from geo.Normal of string");
return; return;
} }
return this.normals[this.normals.length - 1]; return this.normals[this.normals.length - 1];
} }
mesh.Mesh.prototype.isFinished = function() { geo.Mesh.prototype.isFinished = function() {
return this.faceIndex === this.faces.length; return this.faceIndex === this.faces.length;
} }
/** /**
* Represent a 3D vertex * Represent a 3D vertex
* @constructor * @constructor
* @memberOf mesh * @memberOf geo
*/ */
mesh.Vertex = function() { geo.Vertex = function() {
if (typeof arguments[0] === 'string' || arguments[0] instanceof String) { if (typeof arguments[0] === 'string' || arguments[0] instanceof String) {
var split = arguments[0].replace(/\s+/g, " ").split(' '); var split = arguments[0].replace(/\s+/g, " ").split(' ');
@ -155,11 +150,11 @@ mesh.Vertex = function() {
* @returns {Array} An array representing the vertex * @returns {Array} An array representing the vertex
* *
* @example * @example
* var vertex = new mesh.Vertex('v 3.5 3.6 3.7'); * var vertex = new geo.Vertex('v 3.5 3.6 3.7');
* vertex.index = 5; * vertex.index = 5;
* console.log(vertex.toList()); // Prints ['v', 5, 3.5, 3.6, 3.7] * console.log(vertex.toList()); // Prints ['v', 5, 3.5, 3.6, 3.7]
*/ */
mesh.Vertex.prototype.toList = function() { geo.Vertex.prototype.toList = function() {
return ['v', this.index, this.x, this.y, this.z]; return ['v', this.index, this.x, this.y, this.z];
} }
@ -168,37 +163,37 @@ mesh.Vertex.prototype.toList = function() {
* @returns {string} A string representing the vertex * @returns {string} A string representing the vertex
* *
* @example * @example
* var vertex = new mesh.Vertex('v 3.5 3.6 3.7'); * var vertex = new geo.Vertex('v 3.5 3.6 3.7');
* console.log(vertex.toString()); // Prints v 3.5 3.6 3.7 * console.log(vertex.toString()); // Prints v 3.5 3.6 3.7
*/ */
mesh.Vertex.prototype.toString = function() { geo.Vertex.prototype.toString = function() {
return 'v ' + this.x + ' ' + this.y + ' ' + this.z; return 'v ' + this.x + ' ' + this.y + ' ' + this.z;
} }
/** /**
* Represent a 3D normal * Represent a 3D normal
* @constructor * @constructor
* @memberOf mesh * @memberOf geo
* @augments mesh.Vertex * @augments geo.Vertex
*/ */
mesh.Normal = function() { geo.Normal = function() {
mesh.Vertex.apply(this, arguments); geo.Vertex.apply(this, arguments);
} }
mesh.Normal.prototype = Object.create(mesh.Vertex.prototype); geo.Normal.prototype = Object.create(geo.Vertex.prototype);
mesh.Normal.prototype.constructor = mesh.Normal; geo.Normal.prototype.constructor = geo.Normal;
/** /**
* Gives a list representation of the normal * Gives a list representation of the normal
* @returns {Array} An array representing the normal * @returns {Array} An array representing the normal
* *
* @example * @example
* var normal = new mesh.Normal('vn 3.5 3.6 3.7'); * var normal = new geo.Normal('vn 3.5 3.6 3.7');
* normal.index = 5; * normal.index = 5;
* console.log(normal.toList()); // Prints ['vn', 5, 3.5, 3.6, 3.7] * console.log(normal.toList()); // Prints ['vn', 5, 3.5, 3.6, 3.7]
*/ */
mesh.Normal.prototype.toList = function() { geo.Normal.prototype.toList = function() {
var superObject = mesh.Vertex.prototype.toList.call(this); var superObject = geo.Vertex.prototype.toList.call(this);
superObject[0] = 'vn'; superObject[0] = 'vn';
return superObject; return superObject;
} }
@ -208,11 +203,11 @@ mesh.Normal.prototype.toList = function() {
* @returns {string} A string representing the normal * @returns {string} A string representing the normal
* *
* @example * @example
* var normal = new mesh.Normal('vn 3.5 3.6 3.7'); * var normal = new geo.Normal('vn 3.5 3.6 3.7');
* console.log(normal.toString()); // Prints vn 3.5 3.6 3.7 * console.log(normal.toString()); // Prints vn 3.5 3.6 3.7
*/ */
mesh.Normal.prototype.toString = function() { geo.Normal.prototype.toString = function() {
var superObject = mesh.Vertex.prototype.toString.call(this); var superObject = geo.Vertex.prototype.toString.call(this);
superObject.replace('v', 'vn'); superObject.replace('v', 'vn');
return superObject; return superObject;
} }
@ -220,9 +215,9 @@ mesh.Normal.prototype.toString = function() {
/** /**
* Represent a texture coordinate element * Represent a texture coordinate element
* @constructor * @constructor
* @memberOf mesh * @memberOf geo
*/ */
mesh.TexCoord = function() { geo.TexCoord = function() {
if (typeof arguments[0] === 'string' || arguments[0] instanceof String) { if (typeof arguments[0] === 'string' || arguments[0] instanceof String) {
var split = arguments[0].replace(/\s+/g, " ").split(' '); var split = arguments[0].replace(/\s+/g, " ").split(' ');
@ -251,11 +246,11 @@ mesh.TexCoord = function() {
* @returns {Array} An array representing the texture coordinate * @returns {Array} An array representing the texture coordinate
* *
* @example * @example
* var texCoord = new mesh.TexCoord('vt 3.5 3.6'); * var texCoord = new geo.TexCoord('vt 3.5 3.6');
* texture coordinate.index = 5; * texture coordinate.index = 5;
* console.log(texture coordinate.toList()); // Prints ['vt', 5, 3.5, 3.6] * console.log(texture coordinate.toList()); // Prints ['vt', 5, 3.5, 3.6]
*/ */
mesh.TexCoord.prototype.toList = function() { geo.TexCoord.prototype.toList = function() {
return ['vt', this.index, this.x, this.y]; return ['vt', this.index, this.x, this.y];
} }
@ -264,10 +259,10 @@ mesh.TexCoord.prototype.toList = function() {
* @returns {string} A string representing the texture coordinate * @returns {string} A string representing the texture coordinate
* *
* @example * @example
* var texCoord = new mesh.TexCoord('vt 3.5 3.6'); * var texCoord = new geo.TexCoord('vt 3.5 3.6');
* console.log(texCoord.toString()); // Prints vt 3.5 3.6 * console.log(texCoord.toString()); // Prints vt 3.5 3.6
*/ */
mesh.TexCoord.prototype.toString = function() { geo.TexCoord.prototype.toString = function() {
return 'vt ' + this.x + ' ' + this.y; return 'vt ' + this.x + ' ' + this.y;
} }
@ -275,9 +270,9 @@ mesh.TexCoord.prototype.toString = function() {
/** /**
* Represents a face * Represents a face
* @constructor * @constructor
* @memberOf mesh * @memberOf geo
*/ */
mesh.Face = function() { geo.Face = function() {
if (typeof arguments[0] === 'string' || arguments[0] instanceof String) { if (typeof arguments[0] === 'string' || arguments[0] instanceof String) {
if (arguments[0].indexOf('/') === -1) { if (arguments[0].indexOf('/') === -1) {
// No / : easy win : "f 1 2 3" or "f 1 2 3 4" // No / : easy win : "f 1 2 3" or "f 1 2 3 4"
@ -379,12 +374,12 @@ var parseFace = function(arg) {
// Face3 // Face3
if (split.length >= 4) { if (split.length >= 4) {
ret.push(new mesh.Face(arg)); ret.push(new geo.Face(arg));
} }
// Face3 == 2 * Face3 // Face3 == 2 * Face3
if (split.length >= 5) { if (split.length >= 5) {
ret.push(new mesh.Face( ret.push(new geo.Face(
[ [
split[0], split[0],
split[1], split[1],
@ -401,7 +396,7 @@ var parseFace = function(arg) {
* Returns the max index of the vertices of the face * Returns the max index of the vertices of the face
* @returns {Number} the max index of the vertices * @returns {Number} the max index of the vertices
*/ */
mesh.Face.prototype.max = function() { geo.Face.prototype.max = function() {
if (this.d !== undefined) { if (this.d !== undefined) {
return Math.max(this.a, this.b, this.c, this.d); return Math.max(this.a, this.b, this.c, this.d);
} else { } else {
@ -413,7 +408,7 @@ mesh.Face.prototype.max = function() {
* Returns the max index of the texture coordinates of the face * Returns the max index of the texture coordinates of the face
* @returns {Number} the max index of the texture coordinates * @returns {Number} the max index of the texture coordinates
*/ */
mesh.Face.prototype.maxTexture = function() { geo.Face.prototype.maxTexture = function() {
if (this.dTexture) { if (this.dTexture) {
return Math.max(this.aTexture, this.bTexture, this.cTexture, this.dTexture); return Math.max(this.aTexture, this.bTexture, this.cTexture, this.dTexture);
} else { } else {
@ -433,11 +428,11 @@ mesh.Face.prototype.maxTexture = function() {
* </ol> * </ol>
* *
* @example * @example
* var face = new mesh.Face('f 1/2/3 4/5/6 7/8/9'); * var face = new geo.Face('f 1/2/3 4/5/6 7/8/9');
* texture coordinate.index = 5; * texture coordinate.index = 5;
* console.log(texture coordinate.toList()); // Prints ['f', 5, [1,4,7], [2,5,8], [3,6,9]] * console.log(texture coordinate.toList()); // Prints ['f', 5, [1,4,7], [2,5,8], [3,6,9]]
*/ */
mesh.Face.prototype.toList = function() { geo.Face.prototype.toList = function() {
var l = ['f', this.index, this.meshIndex, var l = ['f', this.index, this.meshIndex,
[this.a, this.b, this.c ], [this.a, this.b, this.c ],
isNaN(this.aTexture) ? [] : [this.aTexture, this.bTexture, this.cTexture], isNaN(this.aTexture) ? [] : [this.aTexture, this.bTexture, this.cTexture],
@ -464,10 +459,10 @@ mesh.Face.prototype.toList = function() {
* @returns {string} A string representing the face * @returns {string} A string representing the face
* *
* @example * @example
* var face = new mesh.Face('f 3 5 6'); * var face = new geo.Face('f 3 5 6');
* console.log(face.toString()); // Prints f 3 5 6 * console.log(face.toString()); // Prints f 3 5 6
*/ */
mesh.Face.prototype.toString = function() { geo.Face.prototype.toString = function() {
return 'f ' + this.a + ' ' + this.b + ' ' + this.c + (this.d !== undefined ? ' ' + this.d : ''); return 'f ' + this.a + ' ' + this.b + ' ' + this.c + (this.d !== undefined ? ' ' + this.d : '');
} }
@ -475,9 +470,9 @@ mesh.Face.prototype.toString = function() {
* Represents a material name * Represents a material name
* @constructor * @constructor
* @param {string} line the string representing the material * @param {string} line the string representing the material
* @memberOf mesh * @memberOf geo
*/ */
mesh.Material = function() { geo.Material = function() {
var split = arguments[0].replace(/\s+/g, ' ').trim().split(' '); var split = arguments[0].replace(/\s+/g, ' ').trim().split(' ');
/** /**
@ -491,7 +486,7 @@ mesh.Material = function() {
* Gives a string representation of the material * Gives a string representation of the material
* @returns {string} obj representation of usemtl * @returns {string} obj representation of usemtl
*/ */
mesh.Material.prototype.toString = function() { geo.Material.prototype.toString = function() {
return 'usemtl ' + this.name; return 'usemtl ' + this.name;
} }
@ -499,11 +494,10 @@ mesh.Material.prototype.toString = function() {
* Gives a list representation of the material * Gives a list representation of the material
* @returns {array} an array representing the material * @returns {array} an array representing the material
* @example * @example
* var material = new mesh.Material('usemtl MyMaterial'); * var material = new geo.Material('usemtl MyMaterial');
* console.log(material.toList()); // Logs ['u', 'MyMaterial'] * console.log(material.toList()); // Logs ['u', 'MyMaterial']
*/ */
mesh.Material.prototype.toList = function() { geo.Material.prototype.toList = function() {
return ['u', this.name]; return ['u', this.name];
} }
module.exports = mesh;

View File

@ -1,46 +1,38 @@
var fs = require('fs');
var mesh = require('./Mesh.js');
/** /**
* @namespace * Represents a mesh. All meshes are loaded once in geo.availableMesh to avoid
*/
var cont = {};
/**
* Represents a mesh. All meshes are loaded once in cont.availableMesh to avoid
* loading at each mesh request * loading at each mesh request
* @constructor * @constructor
* @memberOf cont * @memberOf geo
*/ */
cont.MeshContainer = function(path) { geo.MeshContainer = function(path) {
/** /**
* array of each part of the mesh * array of each part of the mesh
* @type {mesh.Mesh[]} * @type {geo.Mesh[]}
*/ */
this.meshes = []; this.meshes = [];
/** /**
* array of the vertices of the meshes (all merged) * array of the vertices of the meshes (all merged)
* @type {mesh.Vertex[]} * @type {geo.Vertex[]}
*/ */
this.vertices = []; this.vertices = [];
/** /**
* array of the faces of the meshes (all merged) * array of the faces of the meshes (all merged)
* @type {mesh.Face[]} * @type {geo.Face[]}
*/ */
this.faces = []; this.faces = [];
/** /**
* array of the normals of the meshes (all merged) * array of the normals of the meshes (all merged)
* @type {mesh.Normal[]} * @type {geo.Normal[]}
*/ */
this.normals = []; this.normals = [];
/** /**
* array of the texture coordinates (all merged) * array of the texture coordinates (all merged)
* @type {mesh.TexCoord[]} * @type {geo.TexCoord[]}
*/ */
this.texCoords = []; this.texCoords = [];
@ -56,7 +48,7 @@ cont.MeshContainer = function(path) {
* Loads a obj file * Loads a obj file
* @param {string} path the path to the file * @param {string} path the path to the file
*/ */
cont.MeshContainer.prototype.loadFromFile = function(path) { geo.MeshContainer.prototype.loadFromFile = function(path) {
var self = this; var self = this;
var data = fs.readFileSync(path, {encoding: 'utf-8'}); var data = fs.readFileSync(path, {encoding: 'utf-8'});
@ -76,13 +68,13 @@ cont.MeshContainer.prototype.loadFromFile = function(path) {
if (line[1] === 't') { if (line[1] === 't') {
// Texture coord // Texture coord
var texCoord = new mesh.TexCoord(line); var texCoord = new geo.TexCoord(line);
texCoord.index = self.texCoords.length; texCoord.index = self.texCoords.length;
self.texCoords.push(texCoord); self.texCoords.push(texCoord);
} else if (line[1] === 'n') { } else if (line[1] === 'n') {
var normal = new mesh.Normal(line); var normal = new geo.Normal(line);
normal.index = self.normals.length; normal.index = self.normals.length;
self.normals.push(normal); self.normals.push(normal);
@ -92,12 +84,12 @@ cont.MeshContainer.prototype.loadFromFile = function(path) {
// if (currentMesh === undefined) { // if (currentMesh === undefined) {
// // Chances are that we won't use any material in this case // // Chances are that we won't use any material in this case
// currentMesh = new mesh.Mesh(); // currentMesh = new geo.Mesh();
// self.meshes.push(currentMesh); // self.meshes.push(currentMesh);
// } // }
var vertex = new mesh.Vertex(line); var vertex = new geo.Vertex(line);
vertex.index = self.vertices.length; vertex.index = self.vertices.length;
self.vertices.push(vertex); self.vertices.push(vertex);
@ -107,7 +99,7 @@ cont.MeshContainer.prototype.loadFromFile = function(path) {
// Create mesh if it doesn't exist // Create mesh if it doesn't exist
if (currentMesh === undefined) { if (currentMesh === undefined) {
currentMesh = new mesh.Mesh(); currentMesh = new geo.Mesh();
self.meshes.push(currentMesh); self.meshes.push(currentMesh);
} }
@ -132,9 +124,9 @@ cont.MeshContainer.prototype.loadFromFile = function(path) {
// If a current mesh exists, finish it // If a current mesh exists, finish it
// Create a new mesh // Create a new mesh
currentMesh = new mesh.Mesh(); currentMesh = new geo.Mesh();
self.meshes.push(currentMesh); self.meshes.push(currentMesh);
currentMesh.material = (new mesh.Material(line)).name; currentMesh.material = (new geo.Material(line)).name;
// console.log(currentMesh.material); // console.log(currentMesh.material);
} }
@ -157,13 +149,11 @@ for (var i = 1; i < 26; i++) {
} }
cont.availableMeshes = {}; geo.availableMeshes = {};
for (var i = 0; i < availableMeshNames.length; i++) { for (var i = 0; i < availableMeshNames.length; i++) {
var name = availableMeshNames[i]; var name = availableMeshNames[i];
cont.availableMeshes[name] = new cont.MeshContainer(name.substring(1, name.length)); geo.availableMeshes[name] = new geo.MeshContainer(name.substring(1, name.length));
} }
module.exports = cont;

View File

@ -1,12 +1,3 @@
var fs = require('fs');
var mesh = require('./Mesh.js');
var cont = require('./MeshContainer.js');
/**
* @namespace
*/
var geo = {};
/** /**
* @private * @private
*/ */
@ -58,7 +49,13 @@ geo.MeshStreamer = function(path) {
/** /**
* array of array telling if the jth face of the ith mesh has already been sent * array of array telling if the jth face of the ith mesh has already been sent
* @type{Boolean[][]} *
* For each mesh, there is an object containing
* <ul>
* <li>`counter` : the number of faces currently sent</li>
* <li>`array` : an array boolean telling if the ith face has already been sent</li>
* </ul>
* @type {Object[]}
*/ */
this.meshFaces = []; this.meshFaces = [];
@ -94,7 +91,7 @@ geo.MeshStreamer = function(path) {
if (path !== undefined) { if (path !== undefined) {
this.mesh = cont.availableMeshes[path]; this.mesh = geo.availableMeshes[path];
} }
@ -189,7 +186,7 @@ geo.MeshStreamer.prototype.start = function(socket) {
socket.on('request', function(path) { socket.on('request', function(path) {
self.mesh = cont.availableMeshes[path]; self.mesh = geo.availableMeshes[path];
self.meshFaces = new Array(self.mesh.meshes.length); self.meshFaces = new Array(self.mesh.meshes.length);
@ -540,5 +537,3 @@ geo.MeshStreamer.prototype.isFinished = function(i) {
return this.meshFaces[i].counter === this.meshFaces[i].array.length; return this.meshFaces[i].counter === this.meshFaces[i].array.length;
} }
module.exports = geo;

View File

@ -3,7 +3,7 @@ OPT=--compilation_level SIMPLE_OPTIMIZATIONS
ifeq ($(TYPE),RELEASE) ifeq ($(TYPE),RELEASE)
CLOSURE=java -jar /usr/share/java/closure-compiler/closure-compiler.jar CLOSURE=java -jar /usr/share/java/closure-compiler/closure-compiler.jar
else else
CLOSURE=./compiler.sh CLOSURE=../utils/compiler.sh
endif endif
all: List ListTest Socket Three Stats ThreeTools Bouncing Multisphere StreamingSimulator PrototypeTools PrototypeReplay PrototypeInteractive Tutorial all: List ListTest Socket Three Stats ThreeTools Bouncing Multisphere StreamingSimulator PrototypeTools PrototypeReplay PrototypeInteractive Tutorial

View File

@ -1,5 +1,5 @@
var fs = require('fs'); var fs = require('fs');
var geo = require('./geo/MeshStreamer.js'); var geo = require('./lib/geo.min.js');
module.exports = function(io) { module.exports = function(io) {
io.on('connection', function(socket) { io.on('connection', function(socket) {