Przeglądaj źródła

fix array recreation in setColor3Array

Hersir88 8 lat temu
rodzic
commit
0c2c4cfbdc

+ 0 - 9
src/Materials/babylon.effect.ts

@@ -878,15 +878,6 @@
             return this;
         }
 
-        public setColor3Arrays(uniformName: string, colors: Color3[]): Effect {
-            this._valueCache[uniformName] = null;
-            this._engine.setArray3(this.getUniform(uniformName), colors.reduce((arr, color) => {
-                color.toArray(arr, arr.length);
-                return arr;
-            }, []));
-            return this;
-        }
-
         public setColor4(uniformName: string, color3: Color3, alpha: number): Effect {
             if (this._cacheFloat4(uniformName, color3.r, color3.g, color3.b, alpha)) {
                 this._engine.setColor4(this.getUniform(uniformName), color3, alpha);

+ 7 - 9
src/Materials/babylon.shaderMaterial.ts

@@ -7,7 +7,7 @@
         private _floats: { [name: string]: number } = {};
         private _floatsArrays: { [name: string]: number[] } = {};
         private _colors3: { [name: string]: Color3 } = {};
-        private _colors3Arrays: { [name: string]: Color3[] } = {};
+        private _colors3Arrays: { [name: string]: number[] } = {};
         private _colors4: { [name: string]: Color4 } = {};
         private _vectors2: { [name: string]: Vector2 } = {};
         private _vectors3: { [name: string]: Vector3 } = {};
@@ -95,8 +95,10 @@
         }
         public setColor3Array(name: string, value: Color3[]): ShaderMaterial {
             this._checkUniform(name);
-            this._colors3Arrays[name] = value;
-
+            this._colors3Arrays[name] = value.reduce((arr, color) => {
+                color.toArray(arr, arr.length);
+                return arr;
+            }, [])
             return this;
         }
 
@@ -324,7 +326,7 @@
                 }
 
                 for (name in this._colors3Arrays) {
-                    this._effect.setColor3Arrays(name, this._colors3Arrays[name]);
+                    this._effect.setArray3(name, this._colors3Arrays[name]);
                 }
 
                 // Color4      
@@ -485,10 +487,7 @@
             // Color3 array
             serializationObject.colors3Arrays = {};
             for (name in this._colors3Arrays) {
-                serializationObject.colors3Arrays[name] = this._colors3Arrays[name].reduce((arr, color) => {
-                    color.toArray(arr, arr.length);
-                    return arr;
-                }, []);
+                serializationObject.colors3Arrays[name] = this._colors3Arrays[name];
             }
 
             // Color4  
@@ -580,7 +579,6 @@
 
             // Color3 arrays
             for (name in source.colors3Arrays) {
-
                 const colors: Color3[] = source.colors3Arrays[name].reduce((arr, num, i) => {
                     if (i % 3 === 0) {
                         arr.push([num]);