aboutsummaryrefslogtreecommitdiff
path: root/js/helper-classes/RDGE/GLCircle.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/helper-classes/RDGE/GLCircle.js')
-rw-r--r--js/helper-classes/RDGE/GLCircle.js92
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);