Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.60 KB | None | 0 0
  1. function getMatrixForNode(nodeItem, frame, composition)
  2. {
  3. var c = composition.indexOf(nodeItem);
  4. if ( c < 0 )
  5. {
  6. // Shouldn't happen
  7. MessageBox.information( "Could not find bone in composition!" );
  8. return;
  9. }
  10.  
  11. var nodeName = nodeItem.nodeName;
  12. var nodeType = nodeItem.nodeType;
  13.  
  14. // Parent bone.
  15. var parent_matrix = identity_matrix();
  16. var c2 = c;
  17.  
  18. var parent = node.parentNode(nodeName);
  19.  
  20. while ( c2-- )
  21. {
  22. var prevItem = composition[c2];
  23.  
  24. if (prevItem.depth < nodeItem.depth)
  25. {
  26. parent_matrix = getMatrixForNode(prevItem, frame, composition);
  27.  
  28. break;
  29. }
  30. }
  31.  
  32. var matrix = identity_matrix();
  33.  
  34. var isPegOrElement = ( nodeType == kCompReadType ) || ( nodeType == kCompPegType );
  35. var isElement = ( nodeType == kCompReadType );
  36.  
  37. if ( isPegOrElement )
  38. {
  39. var tx;
  40. var ty;
  41.  
  42.  
  43. var positionPrefix = ( isElement ? "offset" : "position" );
  44. tx = transformX(node.getTextAttr( nodeName, frame, positionPrefix + ".x" ));
  45. ty = transformY(node.getTextAttr( nodeName, frame, positionPrefix + ".y"));
  46.  
  47. var pivot = node.getPivot( nodeName, frame);
  48. var px = transformX(pivot.x);
  49. var py = transformY(pivot.y);
  50.  
  51.  
  52. var separateScale = node.getTextAttr( nodeName, frame, "scale.separate");
  53. var sx;
  54. var sy;
  55. if ( separateScale == "On" )
  56. {
  57. sx = node.getTextAttr( nodeName, frame, "scale.x");
  58. sy = node.getTextAttr( nodeName, frame, "scale.y");
  59. }
  60. else
  61. {
  62. sx = node.getTextAttr( nodeName, frame, "scale.xy");
  63. sy = node.getTextAttr( nodeName, frame, "scale.xy");
  64. }
  65.  
  66. var theta = node.getTextAttr( nodeName, frame, "rotation.anglez");
  67. var skew = node.getTextAttr(nodeName, frame, "skew");
  68.  
  69. //this isn't correct right now
  70. var shx = 1 - Math.cos(skew * 3.14159 / 180.0);
  71. var shy = Math.sin(skew * 3.14159 / 180.0);
  72.  
  73. //go to pivot point
  74. translate_matrix(matrix, tx + px, ty + py);
  75.  
  76. //apply rotation, scale, etc.
  77. rotate_matrix(matrix, theta * 3.14159 / 180.0 );
  78. scale_matrix(matrix, sx, sy);
  79. //shear_matrix(matrix, shx, shy);
  80.  
  81. //reverse the pivot
  82. translate_matrix(matrix, -px, -py);
  83. }
  84. else if ( nodeType == kCompBoneModuleType || nodeType == kCompBendyBoneModuleType || nodeType == kCompGameBoneModuleType )
  85. {
  86. var orientation = Number(node.getTextAttr( nodeName, frame, "restOrientation" ));
  87. var tx = Number(node.getTextAttr( nodeName, frame, "restOffset.x" ));
  88. var ty = Number(node.getTextAttr( nodeName, frame, "restOffset.y" ));
  89.  
  90. translate_matrix(matrix, transformX(tx), transformY(ty));
  91. rotate_matrix(matrix, orientation * 3.14159 / 180.0 );
  92. }
  93.  
  94. return mult_matrix(parent_matrix, matrix);
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement