repo: janusweb
action: commit
revision: 
path_from: 
revision_from: e8308b3ec5db089f5a3fda14a66f8314e4d8de6e:
path_to: 
revision_to: 
git.thebackupbox.net
janusweb
git clone git://git.thebackupbox.net/janusweb
commit e8308b3ec5db089f5a3fda14a66f8314e4d8de6e
Author: James Baicoianu 
Date:   Mon Apr 11 05:20:06 2016 -0700

    Clone materials to fix duplicating texture problem

diff --git a/scripts/object.js b/scripts/object.js
index 7ef589e43a1c0267970a164b249226d6a5113a02..
index ..d15a0d9b3297d7fb89fdfb2c049a8463d31b9cc8 100644
--- a/scripts/object.js
+++ b/scripts/object.js
@@ -114,20 +114,41 @@ elation.require(['engine.things.generic'], function() {
       } else if (this.properties.blend_dest == 'one_minus_constant_color') {
         blend_dest = THREE.OneMinusConstantColorFactor;
       }
-      this.objects['3d'].traverse(function(n) { 
+      this.objects['3d'].traverse(elation.bind(this, function(n) { 
         if (n.material) {
-          var materials = [n.material];
+          var materials = [];
           if (n.material instanceof THREE.MeshFaceMaterial) {
             //materials = [n.material.materials[1]];
-            materials = n.material.materials;
+            for (var i = 0; i < n.material.materials.length; i++) {
+              var oldm = n.material.materials[i];
+              var m = (this.properties.lighting != false ? new THREE.MeshPhongMaterial() : new THREE.MeshBasicMaterial());
+              m.map = oldm.map;
+              m.normalMap = oldm.normalMap;
+              m.lightMap = oldm.lightMap;
+              m.color.copy(oldm.color);
+              m.transparent = oldm.transparent;
+              materials.push(m); 
+            }
+            //materials = n.material.materials;
+            n.material.materials = materials;
+          } else {
+              var oldm = n.material;
+              var m = (this.properties.lighting != false ? new THREE.MeshPhongMaterial() : new THREE.MeshBasicMaterial());
+              m.map = oldm.map;
+              m.normalMap = oldm.normalMap;
+              m.lightMap = oldm.lightMap;
+              m.color.copy(oldm.color);
+              m.transparent = oldm.transparent;
+              materials.push(m); 
+              n.material = m;
           }
-          materials.forEach(function(m) {
+          materials.forEach(elation.bind(this, function(m) {
             if (texture) {
               m.map = texture; 
-              // FIXME - hack for transparent PNGs
-              if (m.map && m.map.sourceFile && m.map.sourceFile.match(/[^0-9]\.(png|tga)$/)) {
-                m.transparent = true;
-              }
+            }
+            // FIXME - hack for transparent PNGs
+            if (m.map && m.map.sourceFile && m.map.sourceFile.match(/[^0-9]\.(png|tga)$/)) {
+              m.transparent = true;
             }
             if (color && m.color) {
               m.color.copy(color);
@@ -137,8 +158,8 @@ elation.require(['engine.things.generic'], function() {
             }
             if (blend_src) m.blendSrc = blend_src;
             if (blend_dest) m.blendDst = blend_dest;
-            //m.needsUpdate = true;
-          });
+            m.needsUpdate = true;
+          }));
           if (n.geometry) {
 /*
             if ((n.geometry instanceof THREE.BufferGeometry && !n.geometry.attributes.normals) ||
@@ -148,8 +169,8 @@ elation.require(['engine.things.generic'], function() {
             }
 */
           }
-        }
-      });
+        };
+      }));
       this.refresh();
     }
   }, elation.engine.things.generic);

-----END OF PAGE-----