app/scripts/nexus/nexus.service.js
/**
* @namespace nexus
*/
(function() {
'use strict';
function NexusService(Presenter, SphereTrackball) {
var service = {};
service.siteShown = false;
service.setTarget = function(element) {
this.presenter = new Presenter(element);
};
service.showSite = function(site) {
this.siteShown = true;
var url = site.mesh[0].data_location;
this.presenter.setScene({
meshes: {
'site': {
// url: site.mesh[0].nexus
url: url
}
},
modelInstances: {
'site': {
mesh: 'site'
}
},
trackball: {
type: SphereTrackball
}
});
};
service.close = function() {
this.presenter.setScene({});
this.siteShown = false;
};
service.zoomIn = function() {
this.presenter.zoomIn();
};
service.zoomOut = function() {
this.presenter.zoomOut();
};
service.reset = function() {
this.presenter.resetTrackball();
};
Object.defineProperty(service, 'trackLight', {
get: function() {
return service.presenter.isLightTrackballEnabled();
},
set: function(enabled) {
service.presenter.enableLightTrackball(enabled);
},
enumerable: true,
configurable: true
});
var color = true;
Object.defineProperty(service, 'color', {
get: function() {
return color;
},
set: function(enabled) {
service.presenter.setInstanceSolidColorByName('site', !enabled, [0.7, 0.7, 0.7]);
color = enabled;
},
enumerable: true,
configurable: true
});
return service;
}
angular.module('pattyApp.nexus')
.factory('NexusService', NexusService);
})();