diff options
Diffstat (limited to 'js/lib/geom')
-rwxr-xr-x | js/lib/geom/geom-obj.js | 65 |
1 files changed, 52 insertions, 13 deletions
diff --git a/js/lib/geom/geom-obj.js b/js/lib/geom/geom-obj.js index c5880843..726c3595 100755 --- a/js/lib/geom/geom-obj.js +++ b/js/lib/geom/geom-obj.js | |||
@@ -138,22 +138,61 @@ var GeomObj = function GLGeomObj() { | |||
138 | // Methods | 138 | // Methods |
139 | /////////////////////////////////////////////////////////////////////// | 139 | /////////////////////////////////////////////////////////////////////// |
140 | this.setMaterialColor = function(c, type) { | 140 | this.setMaterialColor = function(c, type) { |
141 | if (type == "fill") { | 141 | if(c.gradientMode) { |
142 | this._fillColor = c.slice(0); | 142 | var nMats = 0; |
143 | if (this._materialArray && this._materialTypeArray) { | ||
144 | nMats = this._materialArray.length; | ||
145 | } | ||
146 | |||
147 | var stops = [], | ||
148 | colors = c.color; | ||
149 | |||
150 | var len = colors.length; | ||
151 | // TODO - Current shaders only support 4 color stops | ||
152 | if(len > 4) { | ||
153 | len = 4; | ||
154 | } | ||
155 | |||
156 | for(var n=0; n<len; n++) { | ||
157 | var position = colors[n].position/100; | ||
158 | var cs = colors[n].value; | ||
159 | var stop = [cs.r/255, cs.g/255, cs.b/255, cs.a]; | ||
160 | stops.push(stop); | ||
161 | |||
162 | if (nMats === this._materialTypeArray.length) { | ||
163 | for (var i=0; i<nMats; i++) { | ||
164 | if (this._materialTypeArray[i] == type) { | ||
165 | this._materialArray[i].setProperty( "color"+(n+1), stop.slice(0) ); | ||
166 | this._materialArray[i].setProperty( "colorStop"+(n+1), position ); | ||
167 | } | ||
168 | } | ||
169 | } | ||
170 | } | ||
171 | // if (type == "fill") { | ||
172 | // this._fillColor = c.slice(0); | ||
173 | // } else { | ||
174 | // this._strokeColor = c.slice(0); | ||
175 | // } | ||
143 | } else { | 176 | } else { |
144 | this._strokeColor = c.slice(0); | 177 | if (type == "fill") { |
145 | } | 178 | this._fillColor = c.slice(0); |
179 | } else { | ||
180 | this._strokeColor = c.slice(0); | ||
181 | } | ||
146 | 182 | ||
147 | if (this._materialArray && this._materialTypeArray) { | 183 | if (this._materialArray && this._materialTypeArray) { |
148 | var nMats = this._materialArray.length; | 184 | var nMats = this._materialArray.length; |
149 | if (nMats === this._materialTypeArray.length) { | 185 | if (nMats === this._materialTypeArray.length) { |
150 | for (var i=0; i<nMats; i++) { | 186 | for (var i=0; i<nMats; i++) { |
151 | if (this._materialTypeArray[i] == type) { | 187 | if (this._materialTypeArray[i] == type) { |
152 | this._materialArray[i].setProperty( "color", c.slice(0) ); | 188 | this._materialArray[i].setProperty( "color", c.slice(0) ); |
189 | } | ||
153 | } | 190 | } |
154 | } | 191 | } |
155 | } | 192 | } |
156 | } | 193 | } |
194 | |||
195 | |||
157 | 196 | ||
158 | var world = this.getWorld(); | 197 | var world = this.getWorld(); |
159 | if (world) { | 198 | if (world) { |