// Allows updating of multiple THREE.Color objects with the same value // Used for face.color -> face.vertexColor[] compatibility layer for non-indexed geometry THREE.MultiColor = function(links) { this.links = links; } THREE.MultiColor.prototype = Object.create( THREE.Color.prototype ); THREE.MultiColor.prototype.constructor = THREE.MultiColor; THREE.MultiColor.prototype.setAll = function(axis, value) { for (var i = 0, l = this.links.length; i < l; i ++) { this.links[i][axis] = value; } } // Getters return value from the first linked color // Setters set the same value for all linked colors Object.defineProperties( THREE.MultiColor.prototype, { 'r': { get: function () { return (this.links[0] ? this.links[0].r : 0); }, set: function ( v ) { this.setAll('r', v); } }, 'g': { get: function () { return (this.links[0] ? this.links[0].g : 0); }, set: function ( v ) { this.setAll('g', v); } }, 'b': { get: function () { return (this.links[0] ? this.links[0].b : 0); }, set: function ( v ) { this.setAll('b', v); } } } );