Skip to content

Commit 6679b9c

Browse files
committed
fixed RenderPixi for compound bodies
1 parent b34669e commit 6679b9c

1 file changed

Lines changed: 37 additions & 26 deletions

File tree

src/render/RenderPixi.js

Lines changed: 37 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -369,43 +369,54 @@ var RenderPixi = {};
369369
var _createBodyPrimitive = function(render, body) {
370370
var bodyRender = body.render,
371371
options = render.options,
372-
primitive = new PIXI.Graphics();
372+
primitive = new PIXI.Graphics(),
373+
fillStyle = Common.colorToNumber(bodyRender.fillStyle),
374+
strokeStyle = Common.colorToNumber(bodyRender.strokeStyle),
375+
strokeStyleIndicator = Common.colorToNumber(bodyRender.strokeStyle),
376+
strokeStyleWireframe = Common.colorToNumber('#bbb'),
377+
strokeStyleWireframeIndicator = Common.colorToNumber('#CD5C5C'),
378+
part;
373379

374380
primitive.clear();
375381

376-
if (!options.wireframes) {
377-
primitive.beginFill(Common.colorToNumber(bodyRender.fillStyle), 1);
378-
primitive.lineStyle(body.render.lineWidth, Common.colorToNumber(bodyRender.strokeStyle), 1);
379-
} else {
380-
primitive.beginFill(0, 0);
381-
primitive.lineStyle(1, Common.colorToNumber('#bbb'), 1);
382-
}
382+
// handle compound parts
383+
for (var k = body.parts.length > 1 ? 1 : 0; k < body.parts.length; k++) {
384+
part = body.parts[k];
383385

384-
primitive.moveTo(body.vertices[0].x - body.position.x, body.vertices[0].y - body.position.y);
386+
if (!options.wireframes) {
387+
primitive.beginFill(fillStyle, 1);
388+
primitive.lineStyle(bodyRender.lineWidth, strokeStyle, 1);
389+
} else {
390+
primitive.beginFill(0, 0);
391+
primitive.lineStyle(1, strokeStyleWireframe, 1);
392+
}
385393

386-
for (var j = 1; j < body.vertices.length; j++) {
387-
primitive.lineTo(body.vertices[j].x - body.position.x, body.vertices[j].y - body.position.y);
388-
}
394+
primitive.moveTo(part.vertices[0].x - body.position.x, part.vertices[0].y - body.position.y);
389395

390-
primitive.lineTo(body.vertices[0].x - body.position.x, body.vertices[0].y - body.position.y);
396+
for (var j = 1; j < part.vertices.length; j++) {
397+
primitive.lineTo(part.vertices[j].x - body.position.x, part.vertices[j].y - body.position.y);
398+
}
391399

392-
primitive.endFill();
400+
primitive.lineTo(part.vertices[0].x - body.position.x, part.vertices[0].y - body.position.y);
393401

394-
// angle indicator
395-
if (options.showAngleIndicator || options.showAxes) {
396-
primitive.beginFill(0, 0);
402+
primitive.endFill();
397403

398-
if (options.wireframes) {
399-
primitive.lineStyle(1, Common.colorToNumber('#CD5C5C'), 1);
400-
} else {
401-
primitive.lineStyle(1, Common.colorToNumber(body.render.strokeStyle));
402-
}
404+
// angle indicator
405+
if (options.showAngleIndicator || options.showAxes) {
406+
primitive.beginFill(0, 0);
403407

404-
primitive.moveTo(0, 0);
405-
primitive.lineTo(((body.vertices[0].x + body.vertices[body.vertices.length-1].x) / 2) - body.position.x,
406-
((body.vertices[0].y + body.vertices[body.vertices.length-1].y) / 2) - body.position.y);
408+
if (options.wireframes) {
409+
primitive.lineStyle(1, strokeStyleWireframeIndicator, 1);
410+
} else {
411+
primitive.lineStyle(1, strokeStyleIndicator);
412+
}
407413

408-
primitive.endFill();
414+
primitive.moveTo(part.position.x - body.position.x, part.position.y - body.position.y);
415+
primitive.lineTo(((part.vertices[0].x + part.vertices[part.vertices.length-1].x) / 2 - body.position.x),
416+
((part.vertices[0].y + part.vertices[part.vertices.length-1].y) / 2 - body.position.y));
417+
418+
primitive.endFill();
419+
}
409420
}
410421

411422
return primitive;

0 commit comments

Comments
 (0)