From 7518c701b6e016581bbf9c75fe43c0b055e6abf6 Mon Sep 17 00:00:00 2001
From: Matthias Konitzny <konitzny@ibr.cs.tu-bs.de>
Date: Thu, 17 Jun 2021 12:29:33 +0200
Subject: [PATCH] Added default node texture (all nodes are now clickable again
 :) ).

---
 datasets/images/default.jpg | Bin 0 -> 11191 bytes
 graph.js                    |  33 ++++++++++++++++++++++-----------
 2 files changed, 22 insertions(+), 11 deletions(-)
 create mode 100644 datasets/images/default.jpg

diff --git a/datasets/images/default.jpg b/datasets/images/default.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..d3a14f85cc94df32c70405fe38cf13626aff69f0
GIT binary patch
literal 11191
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
ST&LJa`l89h-2W^4e)fMIP+(O6

literal 0
HcmV?d00001

diff --git a/graph.js b/graph.js
index 48d21f4..cc28d29 100644
--- a/graph.js
+++ b/graph.js
@@ -80,22 +80,33 @@ function drawNode(node) {
 
     const cssobj = new THREE.CSS3DSprite(nodeDiv);
     cssobj.scale.set(0.25, 0.25, 0.25);
+    cssobj.position.set(0, -6, 0);
+    group.add(cssobj)
+
+    // Draw node circle image
+    const textureLoader = new THREE.TextureLoader();
+    const imageAlpha = textureLoader.load(plugin_path + 'datasets/images/alpha.png');
+    let imageTexture = null;
+
+    if ('image' in node) {
+        imageTexture = textureLoader.load(plugin_path + 'datasets/images/' + node.image);
+    } else {
+        imageTexture = textureLoader.load(plugin_path + 'datasets/images/default.jpg');
+    }
+
+    const material = new THREE.SpriteMaterial({map: imageTexture, alphaMap: imageAlpha, transparent: true,
+        alphaTest: 0.2, depthWrite:false, depthTest: false});
+    const sprite = new THREE.Sprite(material);
+    sprite.renderOrder = 999; // This may not be optimal. But it allows us to render the sprite on top of everything else.
 
     if ('image' in node) {
-        cssobj.position.set(0, -7, 0);
-
-        const textureLoader = new THREE.TextureLoader();
-        const imageTexture = textureLoader.load(plugin_path + 'datasets/images/' + node.image);
-        const imageAlpha = textureLoader.load(plugin_path + 'datasets/images/alpha.png');
-        const material = new THREE.SpriteMaterial({map: imageTexture, alphaMap: imageAlpha, transparent: true,
-            alphaTest: 0.2, depthWrite:false, depthTest: false});
-        const sprite = new THREE.Sprite(material);
-        sprite.renderOrder = 999; // This may not be optimal. But it allows us to render the sprite on top of everything else.
         sprite.scale.set(20, 20);
-        group.add(sprite)
+    } else {
+        sprite.scale.set(5, 5);
     }
 
-    group.add(cssobj)
+    group.add(sprite)
+
     return group;
 }
 
-- 
GitLab