/bin-release/srcview/source/away3d/graphs/bsp/BSPPortal.as.html

https://github.com/davidcoleman007/AS3MazeSolver · HTML · 217 lines · 181 code · 35 blank · 1 comment · 0 complexity · 6ab46967be5e3941ef15f9a4bf9601ef MD5 · raw file

  1. <!-- saved from url=(0014)about:internet -->
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  6. <title>BSPPortal.as</title>
  7. <link rel="stylesheet" type="text/css" href="../../../../SourceStyles.css"/>
  8. </head>
  9. <body><pre><span class="ActionScriptpackage">package</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">graphs</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">bsp</span>
  10. <span class="ActionScriptBracket/Brace">{</span>
  11. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">arcane</span>;
  12. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">base</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  13. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">core</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  14. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">events</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  15. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">geom</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  16. <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">flash</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">utils</span><span class="ActionScriptOperator">.</span><span class="ActionScriptOperator">*</span>;
  17. <span class="ActionScriptReserved">use</span> <span class="ActionScriptReserved">namespace</span> <span class="ActionScriptDefault_Text">arcane</span>;
  18. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">final</span> <span class="ActionScriptclass">class</span> <span class="ActionScriptDefault_Text">BSPPortal</span> <span class="ActionScriptReserved">extends</span> <span class="ActionScriptDefault_Text">EventDispatcher</span>
  19. <span class="ActionScriptBracket/Brace">{</span>
  20. <span class="ActionScriptReserved">public</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptReserved">const</span> <span class="ActionScriptDefault_Text">RECURSED_PORTAL_COMPLETE</span> : <span class="ActionScriptDefault_Text">String</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptString">"RecursedPortalComplete"</span>;
  21. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">index</span> : <span class="ActionScriptDefault_Text">int</span>;
  22. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">nGon</span> : <span class="ActionScriptDefault_Text">NGon</span>;
  23. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">sourceNode</span> : <span class="ActionScriptDefault_Text">BSPNode</span>;
  24. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">frontNode</span> : <span class="ActionScriptDefault_Text">BSPNode</span>;
  25. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">backNode</span> : <span class="ActionScriptDefault_Text">BSPNode</span>;
  26. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">listLen</span> : <span class="ActionScriptDefault_Text">int</span>;
  27. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">frontList</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  28. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">visList</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  29. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">hasVisList</span> : <span class="ActionScriptDefault_Text">Boolean</span>;
  30. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">frontOrder</span> : <span class="ActionScriptDefault_Text">int</span>;
  31. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">maxTimeout</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
  32. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">antiPenumbrae</span> : <span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> [];
  33. <span class="ActionScriptComment">// containing all visible neighbours, through which we can see adjacent leaves
  34. </span> <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">neighbours</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">BSPPortal</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  35. <span class="ActionScriptComment">// iteration for vis testing
  36. </span> <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">TRAVERSE_PRE</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
  37. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">TRAVERSE_IN</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 1;
  38. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">TRAVERSE_POST</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 2;
  39. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_iterationIndex</span> : <span class="ActionScriptDefault_Text">int</span>;
  40. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_state</span> : <span class="ActionScriptDefault_Text">int</span>;
  41. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_currentPortal</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
  42. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_needCheck</span> : <span class="ActionScriptDefault_Text">Boolean</span>;
  43. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_numPortals</span> : <span class="ActionScriptDefault_Text">int</span>;
  44. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_backPortal</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
  45. <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_portals</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">BSPPortal</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  46. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_sizeLookUp</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  47. <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">next</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
  48. <span class="ActionScriptDefault_Text">arcane</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_currentAntiPenumbra</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">Plane3D</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  49. <span class="ActionScriptDefault_Text">arcane</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_currentParent</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
  50. <span class="ActionScriptDefault_Text">arcane</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_currentFrontList</span> : <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">&gt;</span>;
  51. <span class="ActionScriptReserved">private</span> <span class="ActionScriptReserved">static</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_planePool</span> : <span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> [];
  52. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">BSPPortal</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>
  53. <span class="ActionScriptBracket/Brace">{</span>
  54. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">_sizeLookUp</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptDefault_Text">generateSizeLookUp</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  55. <span class="ActionScriptComment">//leaves = new Vector.&lt;BSPNode&gt;();
  56. </span> <span class="ActionScriptDefault_Text">nGon</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">NGon</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  57. <span class="ActionScriptComment">// Math.round(Math.random()*0xffffff)
  58. </span> <span class="ActionScriptComment">//nGon.material = new WireColorMaterial(0xffffff, {alpha : .5});
  59. </span> <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vertices</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">Vertex</span><span class="ActionScriptBracket/Brace">&gt;</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  60. <span class="ActionScriptBracket/Brace">}</span>
  61. <span class="ActionScriptASDoc">/**
  62. * Generates a look-up table that tells how many visible portals are set in an 8-bit bit mask
  63. */</span>
  64. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">generateSizeLookUp</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  65. <span class="ActionScriptBracket/Brace">{</span>
  66. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">size</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 255;
  67. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 1;
  68. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bit</span> : <span class="ActionScriptDefault_Text">int</span>;
  69. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">count</span> : <span class="ActionScriptDefault_Text">int</span>;
  70. <span class="ActionScriptDefault_Text">_sizeLookUp</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector</span><span class="ActionScriptBracket/Brace">.&lt;</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptBracket/Brace">&gt;</span><span class="ActionScriptBracket/Brace">(</span>255<span class="ActionScriptBracket/Brace">)</span>;
  71. <span class="ActionScriptDefault_Text">_sizeLookUp</span><span class="ActionScriptBracket/Brace">[</span>0x00<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 0;
  72. <span class="ActionScriptReserved">do</span> <span class="ActionScriptBracket/Brace">{</span>
  73. <span class="ActionScriptDefault_Text">count</span> <span class="ActionScriptOperator">=</span> 0;
  74. <span class="ActionScriptDefault_Text">bit</span> <span class="ActionScriptOperator">=</span> 8;
  75. <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">--</span><span class="ActionScriptDefault_Text">bit</span> <span class="ActionScriptOperator">&gt;=</span> 0<span class="ActionScriptBracket/Brace">)</span>
  76. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">&amp;</span> <span class="ActionScriptBracket/Brace">(</span>1 <span class="ActionScriptOperator">&lt;&lt;</span> <span class="ActionScriptDefault_Text">bit</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">count</span>;
  77. <span class="ActionScriptDefault_Text">_sizeLookUp</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">i</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">count</span>;
  78. <span class="ActionScriptBracket/Brace">}</span> <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">++</span><span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">&lt;</span> <span class="ActionScriptDefault_Text">size</span><span class="ActionScriptBracket/Brace">)</span>;
  79. <span class="ActionScriptDefault_Text">_sizeLookUp</span><span class="ActionScriptBracket/Brace">[</span>0xff<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 8;
  80. <span class="ActionScriptBracket/Brace">}</span>
  81. <span class="ActionScriptComment">/*private function getPlaneFromPool() : Plane3D
  82. {
  83. return _planePool.length &gt; 0? _planePool.pop() : new Plane3D();
  84. }
  85. private function addPlaneToPool(plane : Plane3D) : void
  86. {
  87. _planePool.push(plane);
  88. }*/</span>
  89. <span class="ActionScriptASDoc">/**
  90. * Creates an initial portal from a node's partitionplane, encompassing the entire tree
  91. */</span>
  92. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">fromNode</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span> : <span class="ActionScriptDefault_Text">BSPNode</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">root</span> : <span class="ActionScriptDefault_Text">BSPNode</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">Boolean</span>
  93. <span class="ActionScriptBracket/Brace">{</span>
  94. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bounds</span> : <span class="ActionScriptDefault_Text">Array</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_bounds</span>;
  95. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">plane</span> : <span class="ActionScriptDefault_Text">Plane3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">plane</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_partitionPlane</span>;
  96. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">dist</span> : <span class="ActionScriptDefault_Text">Number</span>;
  97. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">radius</span> : <span class="ActionScriptDefault_Text">Number</span>;
  98. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">distance</span>: <span class="ActionScriptDefault_Text">Vector3D</span>;
  99. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">direction1</span> : <span class="ActionScriptDefault_Text">Vector3D</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">direction2</span> : <span class="ActionScriptDefault_Text">Vector3D</span>;
  100. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">center</span> : <span class="ActionScriptDefault_Text">Vector3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector3D</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_minX</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_maxX</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">*</span>.5<span class="ActionScriptOperator">,</span>
  101. <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_minY</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_maxY</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">*</span>.5<span class="ActionScriptOperator">,</span>
  102. <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_minZ</span><span class="ActionScriptOperator">+</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_maxZ</span><span class="ActionScriptBracket/Brace">)</span><span class="ActionScriptOperator">*</span>.5 <span class="ActionScriptBracket/Brace">)</span>;
  103. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">normal</span> : <span class="ActionScriptDefault_Text">Vector3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector3D</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">a</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">b</span><span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">c</span><span class="ActionScriptBracket/Brace">)</span>;
  104. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">vertLen</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
  105. <span class="ActionScriptDefault_Text">sourceNode</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span>;
  106. <span class="ActionScriptDefault_Text">distance</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">subtract</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">bounds</span><span class="ActionScriptBracket/Brace">[</span>0<span class="ActionScriptBracket/Brace">]</span><span class="ActionScriptBracket/Brace">)</span>;
  107. <span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">distance</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">length</span>;
  108. <span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">Math</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">sqrt</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span>;
  109. <span class="ActionScriptComment">// calculate projection of aabb's center on plane
  110. </span> <span class="ActionScriptDefault_Text">dist</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">distance</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">center</span><span class="ActionScriptBracket/Brace">)</span>;
  111. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">dist</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">a</span>;
  112. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">dist</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">b</span>;
  113. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">-=</span> <span class="ActionScriptDefault_Text">dist</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">c</span>;
  114. <span class="ActionScriptComment">// perpendicular to plane normal &amp; world axis, parallel to plane
  115. </span> <span class="ActionScriptDefault_Text">direction1</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">getPerpendicular</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">normal</span><span class="ActionScriptBracket/Brace">)</span>;
  116. <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">normalize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  117. <span class="ActionScriptComment">// perpendicular to plane normal &amp; direction1, parallel to plane
  118. </span> <span class="ActionScriptDefault_Text">direction2</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vector3D</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  119. <span class="ActionScriptDefault_Text">direction2</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">crossProduct</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">normal</span><span class="ActionScriptBracket/Brace">)</span>;
  120. <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">normalize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  121. <span class="ActionScriptComment">// form very course bounds of bound projection on plane
  122. </span> <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vertices</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">vertLen</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vertex</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  123. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  124. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span>;
  125. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vertices</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">vertLen</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vertex</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  126. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  127. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span>;
  128. <span class="ActionScriptComment">// invert direction
  129. </span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">scaleBy</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span>;
  130. <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">normalize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  131. <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">scaleBy</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">-</span>1<span class="ActionScriptBracket/Brace">)</span>;
  132. <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">normalize</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  133. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vertices</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">vertLen</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vertex</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  134. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  135. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction1</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span>;
  136. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vertices</span><span class="ActionScriptBracket/Brace">[</span><span class="ActionScriptDefault_Text">vertLen</span><span class="ActionScriptOperator">++</span><span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Vertex</span><span class="ActionScriptBracket/Brace">(</span> <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">x</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  137. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">y</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptOperator">,</span>
  138. <span class="ActionScriptDefault_Text">center</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span> <span class="ActionScriptOperator">+</span> <span class="ActionScriptDefault_Text">direction2</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">z</span><span class="ActionScriptOperator">*</span><span class="ActionScriptDefault_Text">radius</span><span class="ActionScriptBracket/Brace">)</span>;
  139. <span class="ActionScriptComment">// trim closely to world's bound planes
  140. </span> <span class="ActionScriptDefault_Text">trimToAABB</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptBracket/Brace">)</span>;
  141. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">prev</span> : <span class="ActionScriptDefault_Text">BSPNode</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span>;
  142. <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_parent</span><span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptBracket/Brace">{</span>
  143. <span class="ActionScriptComment">// portal became too small
  144. </span> <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">!</span><span class="ActionScriptDefault_Text">nGon</span> <span class="ActionScriptOperator">||</span> <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">vertices</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">length</span> <span class="ActionScriptOperator">&lt;</span> 3<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">false</span>;
  145. <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">prev</span> <span class="ActionScriptOperator">==</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_positiveNode</span><span class="ActionScriptBracket/Brace">)</span>
  146. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">trim</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_partitionPlane</span><span class="ActionScriptBracket/Brace">)</span>;
  147. <span class="ActionScriptReserved">else</span>
  148. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">trimBack</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_partitionPlane</span><span class="ActionScriptBracket/Brace">)</span>;
  149. <span class="ActionScriptDefault_Text">prev</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span>;
  150. <span class="ActionScriptBracket/Brace">}</span>
  151. <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">true</span>;
  152. <span class="ActionScriptBracket/Brace">}</span>
  153. <span class="ActionScriptASDoc">/**
  154. * Clones the portal
  155. */</span>
  156. <span class="ActionScriptReserved">public</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">clone</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>
  157. <span class="ActionScriptBracket/Brace">{</span>
  158. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">c</span> : <span class="ActionScriptDefault_Text">BSPPortal</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">BSPPortal</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  159. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">nGon</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">clone</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
  160. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">frontNode</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">frontNode</span>;
  161. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">backNode</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">backNode</span>;
  162. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">neighbours</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">neighbours</span>;
  163. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_currentParent</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">_currentParent</span>;
  164. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">frontList</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">frontList</span>;
  165. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">visList</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">visList</span>;
  166. <span class="ActionScriptDefault_Text">c</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">index</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">index</span>;
  167. <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">c</span>;
  168. <span class="ActionScriptBracket/Brace">}</span>
  169. <span class="ActionScriptASDoc">/**
  170. * Trims the portal to the tree's bounds
  171. */</span>
  172. <span class="ActionScriptReserved">private</span> <span class="ActionScriptfunction">function</span> <span class="ActionScriptDefault_Text">trimToAABB</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">node</span> : <span class="ActionScriptDefault_Text">BSPNode</span><span class="ActionScriptBracket/Brace">)</span> : <span class="ActionScriptReserved">void</span>
  173. <span class="ActionScriptBracket/Brace">{</span>
  174. <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">plane</span> : <span class="ActionScriptDefault_Text">Plane3D</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptReserved">new</span> <span class="ActionScriptDefault_Text">Plane3D</span><span class="ActionScriptBracket/Brace">(</span>0<span class="ActionScriptOperator">,</span> <span class="ActionScriptOperator">-</span>1<span class="ActionScriptOperator">,</span> 0<span class="ActionScriptOperator">,</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_maxY</span><span class="ActionScriptBracket/Brace">)</span>;
  175. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">trim</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptBracket/Brace">)</span>;
  176. <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">b</span> <span class="ActionScriptOperator">=</span> 1; <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">d</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_minY</span>;
  177. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">trim</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptBracket/Brace">)</span>;
  178. <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">a</span> <span class="ActionScriptOperator">=</span> 1; <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">b</span> <span class="ActionScriptOperator">=</span> 0; <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">d</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptOperator">-</span><span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_minX</span>;
  179. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">trim</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptBracket/Brace">)</span>;
  180. <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">a</span> <span class="ActionScriptOperator">=</span> -1; <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">d</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">_maxX</span>;
  181. <span class="ActionScriptDefault_Text">nGon</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">trim</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptBracket/Brace">)</span>;
  182. <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">a