diff options
author | Armen Kesablyan | 2012-02-13 13:36:52 -0800 |
---|---|---|
committer | Armen Kesablyan | 2012-02-13 13:36:52 -0800 |
commit | da32190d5dd91fa2c26f8cabb746980c3d06035c (patch) | |
tree | d923299208c84b1071b58e7eb9c0515b2e1c844a /js/helper-classes/RDGE/GLCircle.js | |
parent | 36cefa3526988cb4dfea107fedaa954a2703260d (diff) | |
parent | 90d0c8c0e98d062c628c061fe5765ce991fda409 (diff) | |
download | ninja-da32190d5dd91fa2c26f8cabb746980c3d06035c.tar.gz |
Merge branch 'refs/heads/master' into text-tool
Diffstat (limited to 'js/helper-classes/RDGE/GLCircle.js')
-rw-r--r-- | js/helper-classes/RDGE/GLCircle.js | 92 |
1 files changed, 22 insertions, 70 deletions
diff --git a/js/helper-classes/RDGE/GLCircle.js b/js/helper-classes/RDGE/GLCircle.js index fc2e6460..08057778 100644 --- a/js/helper-classes/RDGE/GLCircle.js +++ b/js/helper-classes/RDGE/GLCircle.js | |||
@@ -33,14 +33,6 @@ function GLCircle() | |||
33 | 33 | ||
34 | this._ovalHeight = this._ovalHeight = 2.0*this.radius; | 34 | this._ovalHeight = this._ovalHeight = 2.0*this.radius; |
35 | 35 | ||
36 | // stroke and fill colors | ||
37 | this._strokeColor = [0.4, 0.4, 0.4, 1.0]; | ||
38 | this._fillColor = [0.0, 0.6, 0.0, 1.0]; | ||
39 | |||
40 | // stroke and fill materials | ||
41 | this._fillMaterial; | ||
42 | this._strokeMaterial; | ||
43 | |||
44 | this._strokeStyle = "Solid"; | 36 | this._strokeStyle = "Solid"; |
45 | 37 | ||
46 | this._aspectRatio = 1.0; | 38 | this._aspectRatio = 1.0; |
@@ -63,14 +55,16 @@ function GLCircle() | |||
63 | 55 | ||
64 | this.m_world = world; | 56 | this.m_world = world; |
65 | 57 | ||
58 | |||
66 | if(strokeMaterial) | 59 | if(strokeMaterial) |
67 | { | ||
68 | this._strokeMaterial = strokeMaterial; | 60 | this._strokeMaterial = strokeMaterial; |
69 | } | 61 | else |
62 | this._strokeMaterial = new FlatMaterial(); | ||
63 | |||
70 | if(fillMaterial) | 64 | if(fillMaterial) |
71 | { | ||
72 | this._fillMaterial = fillMaterial; | 65 | this._fillMaterial = fillMaterial; |
73 | } | 66 | else |
67 | this._fillMaterial = new FlatMaterial(); | ||
74 | } | 68 | } |
75 | 69 | ||
76 | /////////////////////////////////////////////////////////////////////// | 70 | /////////////////////////////////////////////////////////////////////// |
@@ -139,6 +133,9 @@ function GLCircle() | |||
139 | if (!world) throw( "null world in buildBuffers" ); | 133 | if (!world) throw( "null world in buildBuffers" ); |
140 | 134 | ||
141 | if (!world._useWebGL) return; | 135 | if (!world._useWebGL) return; |
136 | |||
137 | // make sure RDGE has the correct context | ||
138 | g_Engine.setContext( world.getCanvas().uuid ); | ||
142 | 139 | ||
143 | // create the gl buffer | 140 | // create the gl buffer |
144 | var gl = world.getGLContext(); | 141 | var gl = world.getGLContext(); |
@@ -189,19 +186,19 @@ function GLCircle() | |||
189 | var reverseRotMat = Matrix.RotationZ( -angle ); | 186 | var reverseRotMat = Matrix.RotationZ( -angle ); |
190 | 187 | ||
191 | // calculate matrices to scale the circle and stroke to fit the bounds of the ellipse | 188 | // calculate matrices to scale the circle and stroke to fit the bounds of the ellipse |
192 | strokeScaleMat = Matrix.I(4); | 189 | var strokeScaleMat = Matrix.I(4); |
193 | strokeScaleMat[0] = xRad; | 190 | strokeScaleMat[0] = xRad; |
194 | strokeScaleMat[5] = yRad; | 191 | strokeScaleMat[5] = yRad; |
195 | 192 | ||
196 | fillScaleMat = Matrix.I(4); | 193 | var fillScaleMat = Matrix.I(4); |
197 | fillScaleMat[0] = xRad - xStroke; | 194 | fillScaleMat[0] = xRad - xStroke; |
198 | fillScaleMat[5] = yRad - yStroke; | 195 | fillScaleMat[5] = yRad - yStroke; |
199 | 196 | ||
200 | innerRadiusScaleMat = Matrix.I(4); | 197 | var innerRadiusScaleMat = Matrix.I(4); |
201 | innerRadiusScaleMat[0] = xInnRad; | 198 | innerRadiusScaleMat[0] = xInnRad; |
202 | innerRadiusScaleMat[5] = yInnRad; | 199 | innerRadiusScaleMat[5] = yInnRad; |
203 | 200 | ||
204 | innerStrokeScaleMat = Matrix.I(4); | 201 | var innerStrokeScaleMat = Matrix.I(4); |
205 | innerStrokeScaleMat[0] = xInnRad - xStroke; | 202 | innerStrokeScaleMat[0] = xInnRad - xStroke; |
206 | innerStrokeScaleMat[5] = yInnRad - yStroke; | 203 | innerStrokeScaleMat[5] = yInnRad - yStroke; |
207 | 204 | ||
@@ -233,69 +230,24 @@ function GLCircle() | |||
233 | 230 | ||
234 | if (fillPrim) | 231 | if (fillPrim) |
235 | { | 232 | { |
236 | this._primArray.push( fillPrim ); | 233 | fillMaterial = this.makeFillMaterial(); |
237 | |||
238 | if (this.getFillMaterial()) | ||
239 | fillMaterial = this.getFillMaterial().dup(); | ||
240 | else | ||
241 | fillMaterial = new FlatMaterial(); | ||
242 | 234 | ||
243 | if (fillMaterial) | 235 | this._primArray.push( fillPrim ); |
244 | { | 236 | this._materialNodeArray.push( fillMaterial.getMaterialNode() ); |
245 | fillMaterial.init( this.getWorld() ); | ||
246 | if(!this.getFillMaterial() && this._fillColor) | ||
247 | { | ||
248 | fillMaterial.setProperty("color", this._fillColor); | ||
249 | } | ||
250 | this._materialArray.push( fillMaterial ); | ||
251 | this._materialTypeArray.push( "fill" ); | ||
252 | var matNode = fillMaterial.getMaterialNode(); | ||
253 | this._materialNodeArray.push( matNode ); | ||
254 | } | ||
255 | } | 237 | } |
256 | if (strokePrim0) | 238 | if (strokePrim0) |
257 | { | 239 | { |
258 | if (this.getStrokeMaterial()) | 240 | strokeMaterial0 = this.makeStrokeMaterial(); |
259 | strokeMaterial = this.getStrokeMaterial().dup(); | ||
260 | else | ||
261 | strokeMaterial = new FlatMaterial(); | ||
262 | 241 | ||
263 | if (strokeMaterial) | 242 | this._primArray.push( strokePrim0 ); |
264 | { | 243 | this._materialNodeArray.push( strokeMaterial0.getMaterialNode() ); |
265 | strokeMaterial.init( this.getWorld() ); | ||
266 | if(!this.getStrokeMaterial() && this._strokeColor) | ||
267 | { | ||
268 | strokeMaterial.setProperty("color", this._strokeColor); | ||
269 | } | ||
270 | this._primArray.push( strokePrim0 ); | ||
271 | |||
272 | var materialNode = createMaterialNode("ovalFillMaterial"); | ||
273 | this._materialArray.push( strokeMaterial ); | ||
274 | this._materialTypeArray.push( "stroke" ); | ||
275 | this._materialNodeArray.push( strokeMaterial.getMaterialNode() ); | ||
276 | } | ||
277 | } | 244 | } |
278 | if (strokePrim1) | 245 | if (strokePrim1) |
279 | { | 246 | { |
280 | if (this.getStrokeMaterial()) | 247 | strokeMaterial2 = this.makeStrokeMaterial(); |
281 | strokeMaterial = this.getStrokeMaterial().dup(); | ||
282 | else | ||
283 | strokeMaterial = new FlatMaterial(); | ||
284 | 248 | ||
285 | if (strokeMaterial) | 249 | this._primArray.push( strokePrim1 ); |
286 | { | 250 | this._materialNodeArray.push( strokeMaterial2.getMaterialNode() ); |
287 | strokeMaterial.init( this.getWorld() ); | ||
288 | if(!this.getStrokeMaterial() && this._strokeColor) | ||
289 | { | ||
290 | strokeMaterial.setProperty("color", this._strokeColor); | ||
291 | } | ||
292 | this._primArray.push( strokePrim1 ); | ||
293 | |||
294 | var materialNode = createMaterialNode("ovalFillMaterial"); | ||
295 | this._materialArray.push( strokeMaterial ); | ||
296 | this._materialTypeArray.push( "stroke" ); | ||
297 | this._materialNodeArray.push( strokeMaterial.getMaterialNode() ); | ||
298 | } | ||
299 | } | 251 | } |
300 | 252 | ||
301 | world.updateObject(this); | 253 | world.updateObject(this); |