/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
- <!-- saved from url=(0014)about:internet -->
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <title>BSPPortal.as</title>
- <link rel="stylesheet" type="text/css" href="../../../../SourceStyles.css"/>
- </head>
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <span class="ActionScriptReserved">import</span> <span class="ActionScriptDefault_Text">away3d</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">arcane</span>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <span class="ActionScriptReserved">use</span> <span class="ActionScriptReserved">namespace</span> <span class="ActionScriptDefault_Text">arcane</span>;
-
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <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>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">index</span> : <span class="ActionScriptDefault_Text">int</span>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">nGon</span> : <span class="ActionScriptDefault_Text">NGon</span>;
-
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">sourceNode</span> : <span class="ActionScriptDefault_Text">BSPNode</span>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">frontNode</span> : <span class="ActionScriptDefault_Text">BSPNode</span>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">backNode</span> : <span class="ActionScriptDefault_Text">BSPNode</span>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">listLen</span> : <span class="ActionScriptDefault_Text">int</span>;
- <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">.<</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">></span>;
- <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">.<</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">></span>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">hasVisList</span> : <span class="ActionScriptDefault_Text">Boolean</span>;
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">frontOrder</span> : <span class="ActionScriptDefault_Text">int</span>;
- <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;
-
- <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> [];
-
- <span class="ActionScriptComment">// containing all visible neighbours, through which we can see adjacent leaves
- </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">.<</span><span class="ActionScriptDefault_Text">BSPPortal</span><span class="ActionScriptBracket/Brace">></span>;
-
- <span class="ActionScriptComment">// iteration for vis testing
- </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;
- <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;
- <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;
-
- <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_iterationIndex</span> : <span class="ActionScriptDefault_Text">int</span>;
- <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_state</span> : <span class="ActionScriptDefault_Text">int</span>;
- <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_currentPortal</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
- <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_needCheck</span> : <span class="ActionScriptDefault_Text">Boolean</span>;
- <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_numPortals</span> : <span class="ActionScriptDefault_Text">int</span>;
- <span class="ActionScriptReserved">private</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_backPortal</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
- <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">.<</span><span class="ActionScriptDefault_Text">BSPPortal</span><span class="ActionScriptBracket/Brace">></span>;
-
- <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">.<</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptBracket/Brace">></span>;
-
- <span class="ActionScriptReserved">public</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">next</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
-
- <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">.<</span><span class="ActionScriptDefault_Text">Plane3D</span><span class="ActionScriptBracket/Brace">></span>;
- <span class="ActionScriptDefault_Text">arcane</span> <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">_currentParent</span> : <span class="ActionScriptDefault_Text">BSPPortal</span>;
- <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">.<</span><span class="ActionScriptDefault_Text">uint</span><span class="ActionScriptBracket/Brace">></span>;
-
- <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> [];
-
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <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>;
- <span class="ActionScriptComment">//leaves = new Vector.<BSPNode>();
- </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>;
- <span class="ActionScriptComment">// Math.round(Math.random()*0xffffff)
- </span> <span class="ActionScriptComment">//nGon.material = new WireColorMaterial(0xffffff, {alpha : .5});
- </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">.<</span><span class="ActionScriptDefault_Text">Vertex</span><span class="ActionScriptBracket/Brace">></span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptBracket/Brace">)</span>;
- <span class="ActionScriptBracket/Brace">}</span>
-
- <span class="ActionScriptASDoc">/**
- * Generates a look-up table that tells how many visible portals are set in an 8-bit bit mask
- */</span>
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">size</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 255;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">i</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 1;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">bit</span> : <span class="ActionScriptDefault_Text">int</span>;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">count</span> : <span class="ActionScriptDefault_Text">int</span>;
-
- <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">.<</span><span class="ActionScriptDefault_Text">int</span><span class="ActionScriptBracket/Brace">></span><span class="ActionScriptBracket/Brace">(</span>255<span class="ActionScriptBracket/Brace">)</span>;
- <span class="ActionScriptDefault_Text">_sizeLookUp</span><span class="ActionScriptBracket/Brace">[</span>0x00<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 0;
-
- <span class="ActionScriptReserved">do</span> <span class="ActionScriptBracket/Brace">{</span>
- <span class="ActionScriptDefault_Text">count</span> <span class="ActionScriptOperator">=</span> 0;
- <span class="ActionScriptDefault_Text">bit</span> <span class="ActionScriptOperator">=</span> 8;
- <span class="ActionScriptReserved">while</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptOperator">--</span><span class="ActionScriptDefault_Text">bit</span> <span class="ActionScriptOperator">>=</span> 0<span class="ActionScriptBracket/Brace">)</span>
- <span class="ActionScriptReserved">if</span> <span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">i</span> <span class="ActionScriptOperator">&</span> <span class="ActionScriptBracket/Brace">(</span>1 <span class="ActionScriptOperator"><<</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>;
-
- <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>;
- <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"><</span> <span class="ActionScriptDefault_Text">size</span><span class="ActionScriptBracket/Brace">)</span>;
-
- <span class="ActionScriptDefault_Text">_sizeLookUp</span><span class="ActionScriptBracket/Brace">[</span>0xff<span class="ActionScriptBracket/Brace">]</span> <span class="ActionScriptOperator">=</span> 8;
- <span class="ActionScriptBracket/Brace">}</span>
-
- <span class="ActionScriptComment">/*private function getPlaneFromPool() : Plane3D
- {
- return _planePool.length > 0? _planePool.pop() : new Plane3D();
- }
-
- private function addPlaneToPool(plane : Plane3D) : void
- {
- _planePool.push(plane);
- }*/</span>
-
- <span class="ActionScriptASDoc">/**
- * Creates an initial portal from a node's partitionplane, encompassing the entire tree
- */</span>
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <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>;
- <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>;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">dist</span> : <span class="ActionScriptDefault_Text">Number</span>;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">radius</span> : <span class="ActionScriptDefault_Text">Number</span>;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">distance</span>: <span class="ActionScriptDefault_Text">Vector3D</span>;
- <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>;
- <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>
- <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>
- <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>;
- <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>;
- <span class="ActionScriptvar">var</span> <span class="ActionScriptDefault_Text">vertLen</span> : <span class="ActionScriptDefault_Text">int</span> <span class="ActionScriptOperator">=</span> 0;
-
- <span class="ActionScriptDefault_Text">sourceNode</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span>;
-
- <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>;
- <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>;
- <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>;
-
- <span class="ActionScriptComment">// calculate projection of aabb's center on plane
- </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>;
- <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>;
- <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>;
- <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>;
-
- <span class="ActionScriptComment">// perpendicular to plane normal & world axis, parallel to plane
- </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>;
- <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>;
-
- <span class="ActionScriptComment">// perpendicular to plane normal & direction1, parallel to plane
- </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>;
- <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>;
- <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>;
-
- <span class="ActionScriptComment">// form very course bounds of bound projection on plane
- </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>
- <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>
- <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>;
- <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>
- <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>
- <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>;
-
- <span class="ActionScriptComment">// invert direction
- </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>;
- <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>;
- <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>;
- <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>;
-
- <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>
- <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>
- <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>;
- <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>
- <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>
- <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>;
-
- <span class="ActionScriptComment">// trim closely to world's bound planes
- </span> <span class="ActionScriptDefault_Text">trimToAABB</span><span class="ActionScriptBracket/Brace">(</span><span class="ActionScriptDefault_Text">root</span><span class="ActionScriptBracket/Brace">)</span>;
-
- <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>;
- <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>
- <span class="ActionScriptComment">// portal became too small
- </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"><</span> 3<span class="ActionScriptBracket/Brace">)</span> <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">false</span>;
- <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>
- <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>;
- <span class="ActionScriptReserved">else</span>
- <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>;
- <span class="ActionScriptDefault_Text">prev</span> <span class="ActionScriptOperator">=</span> <span class="ActionScriptDefault_Text">node</span>;
- <span class="ActionScriptBracket/Brace">}</span>
-
- <span class="ActionScriptReserved">return</span> <span class="ActionScriptReserved">true</span>;
- <span class="ActionScriptBracket/Brace">}</span>
-
- <span class="ActionScriptASDoc">/**
- * Clones the portal
- */</span>
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <span class="ActionScriptReserved">return</span> <span class="ActionScriptDefault_Text">c</span>;
- <span class="ActionScriptBracket/Brace">}</span>
-
- <span class="ActionScriptASDoc">/**
- * Trims the portal to the tree's bounds
- */</span>
- <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>
- <span class="ActionScriptBracket/Brace">{</span>
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <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>;
- <span class="ActionScriptDefault_Text">plane</span><span class="ActionScriptOperator">.</span><span class="ActionScriptDefault_Text">a