Skip to content

Commit

Permalink
Fix bugs that causes highlight and selection to fail.
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-wu committed Jun 28, 2019
1 parent 25950a2 commit a88b98b
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 14 deletions.
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
"webpack": "^4.6.0",
"webpack-cli": "^2.1.2",
"webpack-jquery-ui": "^1.0.0",
"zincjs": "^0.29.11",
"zincjs": "^0.29.12",
"js-yaml": ">=3.13.1"
},
"dependencies": {}
Expand Down
10 changes: 8 additions & 2 deletions src/modules/RendererModule.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,13 @@ RendererModule.prototype.setHighlightedByObjects = function(objects, propagateCh
var eventType = require("../utilities/eventNotifier").EVENT_TYPE.HIGHLIGHTED;
var annotations = [];
for (var i = 0; i < objects.length; i++) {
annotations[i] = objects[i].userData.userData[0];
if (objects[i].userData && objects[i].userData.userData && objects[i].userData.userData[0] !== undefined)
annotations[i] = objects[i].userData.userData[0];
else if (objects[i].name !== undefined) {
var annotation = new (require('../utilities/annotation').annotation)();
annotation.data = {species:undefined, system:undefined, part:objects[i].name};
annotations[i] = annotation;
}
}
this.publishChanges(annotations, eventType);
}
Expand All @@ -56,7 +62,7 @@ RendererModule.prototype.setSelectedByObjects = function(objects, propagateChang
var eventType = require("../utilities/eventNotifier").EVENT_TYPE.SELECTED;
var annotations = [];
for (var i = 0; i < objects.length; i++) {
if (objects[i].userData.userData[0] !== undefined)
if (objects[i].userData && objects[i].userData.userData && objects[i].userData.userData[0] !== undefined)
annotations[i] = objects[i].userData.userData[0];
else if (objects[i].name !== undefined) {
var annotation = new (require('../utilities/annotation').annotation)();
Expand Down
4 changes: 2 additions & 2 deletions src/modules/organsRenderer.js
Original file line number Diff line number Diff line change
Expand Up @@ -611,11 +611,9 @@ var OrgansViewer = function(ModelsLoaderIn) {
var organDetails = getOrganDetails(sceneData.currentSpecies, systemName, partName);
if (organDetails === undefined || organDetails.view == undefined)
{
_this.scene.viewAll();
var zincCameraControl = _this.scene.getZincCameraControls();
var viewport = zincCameraControl.getCurrentViewport();
zincCameraControl.setDefaultCameraSettings(viewport);
_this.scene.resetView();
}
var annotation = new (require('../utilities/annotation').annotation)();
annotation.data = {species:sceneData.currentSpecies, system:systemName, part:partName};
Expand All @@ -640,13 +638,15 @@ var OrgansViewer = function(ModelsLoaderIn) {

var downloadCompletedCallback = function() {
return function() {
_this.scene.viewAll();
_this.settingsChanged();
}
}

var singleItemDownloadCompletedCallback = function(systemName, partName, useDefautColour) {
return function(geometry) {
addOrganPart(systemName, partName, useDefautColour, geometry);
_this.scene.viewAll();
_this.settingsChanged();
}
}
Expand Down
19 changes: 13 additions & 6 deletions src/utilities/graphicsHighlight.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ exports.GraphicsHighlight = function() {
// Selected object cannot be highlighted
var array = getUnmatchingObjects(objects, currentSelectedObjects);
for (var i = 0; i < array.length; i++) {
if (array[i] && array[i].material)
if (array[i] && array[i].material && array[i].material.emissive)
array[i].material.emissive.setHex(_this.highlightColour);
}
currentHighlightedObjects = array;
Expand All @@ -96,16 +96,22 @@ exports.GraphicsHighlight = function() {

this.resetHighlighted = function() {
for (var i = 0; i < currentHighlightedObjects.length; i++) {
currentHighlightedObjects[i].material.emissive.setHex(_this.originalColour);
currentHighlightedObjects[i].material.depthFunc = THREE.LessEqualDepth;
if (currentHighlightedObjects[i].material.emissive)
currentHighlightedObjects[i].material.emissive.setHex(_this.originalColour);
if (currentHighlightedObjects[i].material.depthFunc)
currentHighlightedObjects[i].material.depthFunc = THREE.LessEqualDepth;
}
currentHighlightedObjects = [];
}

this.resetSelected = function() {
for (var i = 0; i < currentSelectedObjects.length; i++) {
currentSelectedObjects[i].material.emissive.setHex(_this.originalColour);
currentSelectedObjects[i].material.depthFunc = THREE.LessEqualDepth;
if (currentSelectedObjects[i] && currentSelectedObjects[i].material) {
if (currentSelectedObjects[i].material.emissive)
currentSelectedObjects[i].material.emissive.setHex(_this.originalColour);
if (currentSelectedObjects[i].material.depthFunc)
currentSelectedObjects[i].material.depthFunc = THREE.LessEqualDepth;
}
}
currentSelectedObjects = [];
}
Expand All @@ -117,7 +123,8 @@ exports.GraphicsHighlight = function() {
currentHighlightedObjects = array;
_this.resetSelected();
for (var i = 0; i < objects.length; i++) {
objects[i].material.emissive.setHex(_this.selectColour);
if (objects[i] && objects[i].material && objects[i].material.emissive)
objects[i].material.emissive.setHex(_this.selectColour);
}
currentSelectedObjects = objects;
return isDifferent(currentSelectedObjects, previousHSelectedObjects);
Expand Down

0 comments on commit a88b98b

Please sign in to comment.