@@ -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