diff options
Diffstat (limited to 'docs/doxygen/nel/a03103.html')
-rw-r--r-- | docs/doxygen/nel/a03103.html | 1389 |
1 files changed, 1389 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03103.html b/docs/doxygen/nel/a03103.html new file mode 100644 index 00000000..88ea4947 --- /dev/null +++ b/docs/doxygen/nel/a03103.html @@ -0,0 +1,1389 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> +<title>NeL: NL3D::CPortal class Reference</title> +<link href="doxygen.css" rel="stylesheet" type="text/css"> +</head><body> +<!-- Generated by Doxygen 1.3.6 --> +<div class="qindex"> <form class="search" action="search.php" method="get"> +<a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related Pages</a> | <span class="search"><u>S</u>earch for <input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div> +<h1>NL3D::CPortal Class Reference</h1><code>#include <<a class="el" href="a06194.html">portal.h</a>></code> +<p> +<hr><a name="_details"></a><h2>Detailed Description</h2> +<a class="el" href="a03103.html">CPortal</a><p> +<dl compact><dt><b>Author:</b></dt><dd>Matthieu Besson <p> +Nevrax France </dd></dl> +<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00055">55</a> of file <a class="el" href="a06194.html">portal.h</a>.<table border=0 cellpadding=0 cellspacing=0> +<tr><td></td></tr> +<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala0">clipPyramid</a> (<a class="el" href="a03128.html">NLMISC::CVector</a> &observer, std::vector< <a class="el" href="a03082.html">NLMISC::CPlane</a> > &pyramid)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala1">clipRay</a> (const <a class="el" href="a03128.html">NLMISC::CVector</a> &start, const <a class="el" href="a03128.html">NLMISC::CVector</a> &end)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">return true if the portal clip the segment <a href="#NL3D_1_1CPortala1"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top> </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala2">CPortal</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02362.html">CCluster</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala3">getCluster</a> (<a class="el" href="a04558.html#a15">uint</a> pos)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">return the cluster linked to the portal <a href="#NL3D_1_1CPortala3"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala4">getName</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a7">uint8</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala5">getNbCluster</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">return the number of clusters linked to the portal <a href="#NL3D_1_1CPortala5"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > & </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala6">getPoly</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala7">getPoly</a> (std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > &dest) const </td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">get this cluster poly in local coordinates <a href="#NL3D_1_1CPortala7"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala8">isInFront</a> (<a class="el" href="a03128.html">NLMISC::CVector</a> &<a class="el" href="a04223.html#a576">v</a>)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Return true if the vertex v is in front of the portal. <a href="#NL3D_1_1CPortala8"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala9">isOpened</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala10">open</a> (bool opened)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala11">resetClusterLinks</a> ()</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">set all link to clusters to NULL. <a href="#NL3D_1_1CPortala11"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala12">serial</a> (<a class="el" href="a02270.html">NLMISC::IStream</a> &f)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Serial. <a href="#NL3D_1_1CPortala12"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala13">setCluster</a> (<a class="el" href="a02362.html">CCluster</a> *cluster)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">return false if more than 2 clusters added <a href="#NL3D_1_1CPortala13"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala14">setName</a> (std::string &name)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala15">setPoly</a> (const std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > &poly)</td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">return false if the polygon is not convex <a href="#NL3D_1_1CPortala15"></a><br><br></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortala16">setWorldMatrix</a> (const <a class="el" href="a02851.html">NLMISC::CMatrix</a> &WM)</td></tr> + +<tr><td colspan="2"><div class="groupHeader"></div></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::string & </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalz698_0">getOcclusionModel</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalz698_1">getOcclusionModelId</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>const std::string & </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalz698_2">getOpenOcclusionModel</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a04558.html#a15">uint</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalz698_3">getOpenOcclusionModelId</a> ()</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalz698_4">setOcclusionModel</a> (const std::string &occlusionModel)</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>void </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalz698_5">setOpenOcclusionModel</a> (const std::string &occlusionModel)</td></tr> + +<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a02362.html">CCluster</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a> [2]</td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr1">_LocalPoly</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>std::string </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr2">_Name</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05378.html#a236">NLMISC::TStringId</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr3">_OcclusionModelId</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr4">_Opened</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a05378.html#a236">NLMISC::TStringId</a> </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr5">_OpenOcclusionModelId</a></td></tr> + +<tr><td class="memItemLeft" nowrap align=right valign=top>std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a></td></tr> + +<tr><td colspan=2><br><h2>Friends</h2></td></tr> +<tr><td class="memItemLeft" nowrap align=right valign=top>class </td><td class="memItemRight" valign=bottom><a class="el" href="a03103.html#NL3D_1_1CPortaln0">CInstanceGroup</a></td></tr> + +<tr><td class="mdescLeft"> </td><td class="mdescRight">Friend class. <a href="#NL3D_1_1CPortaln0"></a><br><br></td></tr> +</table> +<hr><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" name="NL3D_1_1CPortala2" doxytag="NL3D::CPortal::CPortal" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> NL3D::CPortal::CPortal </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00048">48</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00131">_OcclusionModelId</a>, <a class="el" href="a06194.html#l00124">_Opened</a>, and <a class="el" href="a06194.html#l00132">_OpenOcclusionModelId</a>. +<p> +<div class="fragment"><pre>00049 { +00050 <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[0] = <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[1] = NULL; +00051 <a class="code" href="a03103.html#NL3D_1_1CPortalr4">_Opened</a> = <span class="keyword">true</span>; +00052 <a class="code" href="a03103.html#NL3D_1_1CPortalr3">_OcclusionModelId</a> = CStringMapper::map(<span class="stringliteral">"no occlusion"</span>); +00053 <a class="code" href="a03103.html#NL3D_1_1CPortalr5">_OpenOcclusionModelId</a> = CStringMapper::map(<span class="stringliteral">"no occlusion"</span>); +00054 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Member Function Documentation</h2> +<a class="anchor" name="NL3D_1_1CPortala0" doxytag="NL3D::CPortal::clipPyramid" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CPortal::clipPyramid </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>observer</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>std::vector< <a class="el" href="a03082.html">NLMISC::CPlane</a> > & </td> + <td class="mdname" nowrap> <em>pyramid</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Clip the view pyramid (all planes pass through observer point) against the portal <dl compact><dt><b>Returns:</b></dt><dd>false if the pyramid is completly clipped</dd></dl> + +<p> +Definition at line <a class="el" href="a06193.html#l00083">83</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00124">_Opened</a>, <a class="el" href="a06194.html#l00127">_Poly</a>, <a class="el" href="a06190.html#l00056">NLMISC::CPolygon::clip()</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a06191.html#l00055">NLMISC::CPolygon::Vertices</a>. +<p> +Referenced by <a class="el" href="a05563.html#l00405">NL3D::CCluster::recursTraverseClip()</a>. +<p> +<div class="fragment"><pre>00084 { +00085 <span class="keywordflow">if</span> (!<a class="code" href="a03103.html#NL3D_1_1CPortalr4">_Opened</a> || <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>.size()<3) +00086 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00087 <span class="comment">// Clip portal with pyramid</span> +00088 <a class="code" href="a03100.html">CPolygon</a> p; +00089 p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a> = <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>; +00090 p.<a class="code" href="a03100.html#NLMISC_1_1CPolygona3">clip</a>( &pyramid[1], pyramid.size()-1 ); +00091 +00092 <span class="comment">// Construct pyramid with clipped portal</span> +00093 <span class="keywordflow">if</span>( p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size() > 2 ) +00094 { +00095 <a class="code" href="a04558.html#a15">uint</a> i; +00096 <span class="comment">// Found the right orientation</span> +00097 CVector n = (p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[1]-p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[0])^(p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[2]-p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[0]); +00098 <span class="keywordflow">if</span>( ((observer-p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[0])*n) < 0.0f ) +00099 { +00100 <span class="comment">// Invert vertices</span> +00101 <span class="keywordflow">for</span>( i = 0; i < (p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size()/2); ++i ) +00102 { +00103 CVector tmp = p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[i]; +00104 p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[i] = p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size()-1-i]; +00105 p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size()-1-i] = tmp; +00106 } +00107 } +00108 <span class="comment">// Make pyramid : preserve 0 and 1 plane which are near and far plane</span> +00109 pyramid.resize (p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size()+2); +00110 <span class="keywordflow">for</span>( i = 0; i < (p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size()); ++i ) +00111 { +00112 pyramid[i+2].make( observer, p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[i], p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>[(i+1)%p.<a class="code" href="a03100.html#NLMISC_1_1CPolygono0">Vertices</a>.size()] ); +00113 } +00114 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00115 } +00116 +00117 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00118 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala1" doxytag="NL3D::CPortal::clipRay" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CPortal::clipRay </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>start</em>, </td> + </tr> + <tr> + <td class="md" nowrap align="right"></td> + <td></td> + <td class="md" nowrap>const <a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname" nowrap> <em>end</em></td> + </tr> + <tr> + <td></td> + <td class="md">) </td> + <td class="md" colspan="2"></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +return true if the portal clip the segment +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00262">262</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00127">_Poly</a>, <a class="el" href="a06171.html#l00052">NLMISC::CPlane::d</a>, <a class="el" href="a06172.html#l00035">NLMISC::CPlane::getNormal()</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a05981.html#l00104">sint</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05563.html#l00498">NL3D::CCluster::cameraRayClip()</a>. +<p> +<div class="fragment"><pre>00263 { +00264 <span class="keywordflow">if</span>(<a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>.size()<3) +00265 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00266 +00267 <span class="comment">// Avoid precision problem, make local to poly</span> +00268 <span class="keyword">const</span> CVector &refVert= <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>[0]; +00269 CVector start= startWorld - refVert; +00270 CVector end= endWorld - refVert; +00271 +00272 <span class="comment">// compute the plane of this poly, local to polygon </span> +00273 <a class="code" href="a03082.html">CPlane</a> plane; +00274 plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>(CVector::Null, _Poly[1] - refVert, _Poly[2] - refVert); +00275 CVector normal = plane.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_0">getNormal</a>(); +00276 +00277 <span class="keywordtype">float</span> np1 = normal*end; +00278 <span class="keywordtype">float</span> np2 = np1-normal*start; +00279 +00280 <span class="keywordflow">if</span> (np2 == 0.0f) +00281 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00282 +00283 <span class="keywordtype">float</span> lambda = (plane.<a class="code" href="a03082.html#NLMISC_1_1CPlaneo3">d</a>+np1)/np2; +00284 +00285 <span class="comment">// Checks the intersection belongs to the segment</span> +00286 <span class="keywordflow">if</span> (lambda < 0 || lambda > 1.0f) +00287 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00288 +00289 <span class="comment">// The intersection on the plane</span> +00290 CVector hit = start*lambda+end*(1.0f-lambda); +00291 +00292 <span class="comment">// Do convex test on each border</span> +00293 <a class="code" href="a04558.html#a14">sint</a> sign= 0; +00294 <a class="code" href="a04558.html#a15">uint</a> polySize= _Poly.size(); +00295 <span class="keywordflow">for</span>(<a class="code" href="a04558.html#a15">uint</a> i=0;i<polySize;i++) +00296 { +00297 <span class="keyword">const</span> CVector v0= _Poly[i] - refVert; +00298 <span class="keyword">const</span> CVector v1= _Poly[(i+1)%polySize] - refVert; +00299 <span class="keywordtype">float</span> d = ((v1-v0)^normal)*(hit-v0); +00300 <span class="keywordflow">if</span>(d<0) +00301 { +00302 <span class="keywordflow">if</span>(sign==1) +00303 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00304 <span class="keywordflow">else</span> +00305 sign=-1; +00306 } +00307 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(d>0) +00308 { +00309 <span class="keywordflow">if</span>(sign==-1) +00310 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00311 <span class="keywordflow">else</span> +00312 sign=1; +00313 } +00314 <span class="keywordflow">else</span> +00315 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00316 } +00317 +00318 <span class="comment">// all on same side, ok!</span> +00319 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00320 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala3" doxytag="NL3D::CPortal::getCluster" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02362.html">CCluster</a>* NL3D::CPortal::getCluster </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a04558.html#a15">uint</a> </td> + <td class="mdname1" valign="top" nowrap> <em>pos</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +return the cluster linked to the portal +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00084">84</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +References <a class="el" href="a05981.html#l00105">uint</a>. +<p> +Referenced by <a class="el" href="a05563.html#l00498">NL3D::CCluster::cameraRayClip()</a>, and <a class="el" href="a05563.html#l00405">NL3D::CCluster::recursTraverseClip()</a>. +<p> +<div class="fragment"><pre>00084 { <span class="keywordflow">return</span> <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[pos]; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala4" doxytag="NL3D::CPortal::getName" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> std::string NL3D::CPortal::getName </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">void </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00101">101</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +<div class="fragment"><pre>00101 { <span class="keywordflow">return</span> <a class="code" href="a03103.html#NL3D_1_1CPortalr2">_Name</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala5" doxytag="NL3D::CPortal::getNbCluster" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a7">uint8</a> NL3D::CPortal::getNbCluster </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +return the number of clusters linked to the portal +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00156">156</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a05981.html#l00096">uint8</a>. +<p> +<div class="fragment"><pre>00157 { +00158 <a class="code" href="a04558.html#a7">uint8</a> nRet = 0; +00159 <span class="keywordflow">if</span>( <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[0] != NULL ) +00160 nRet++; +00161 <span class="keywordflow">if</span>( <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[1] != NULL ) +00162 nRet++; +00163 <span class="keywordflow">return</span> nRet; +00164 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalz698_0" doxytag="NL3D::CPortal::getOcclusionModel" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const std::string & NL3D::CPortal::getOcclusionModel </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00060">60</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00131">_OcclusionModelId</a>. +<p> +<div class="fragment"><pre>00061 { +00062 <span class="keywordflow">return</span> CStringMapper::unmap(_OcclusionModelId); +00063 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalz698_1" doxytag="NL3D::CPortal::getOcclusionModelId" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> NL3D::CPortal::getOcclusionModelId </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00064">64</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00131">_OcclusionModelId</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00065 { +00066 <span class="keywordflow">return</span> <a class="code" href="a03103.html#NL3D_1_1CPortalr3">_OcclusionModelId</a>; +00067 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalz698_2" doxytag="NL3D::CPortal::getOpenOcclusionModel" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const std::string & NL3D::CPortal::getOpenOcclusionModel </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00072">72</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00132">_OpenOcclusionModelId</a>. +<p> +<div class="fragment"><pre>00073 { +00074 <span class="keywordflow">return</span> CStringMapper::unmap(_OpenOcclusionModelId); +00075 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalz698_3" doxytag="NL3D::CPortal::getOpenOcclusionModelId" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a04558.html#a15">uint</a> NL3D::CPortal::getOpenOcclusionModelId </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00076">76</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00132">_OpenOcclusionModelId</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00077 { +00078 <span class="keywordflow">return</span> <a class="code" href="a03103.html#NL3D_1_1CPortalr5">_OpenOcclusionModelId</a>; +00079 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala6" doxytag="NL3D::CPortal::getPoly" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> const std::vector<<a class="el" href="a03128.html">NLMISC::CVector</a>>& NL3D::CPortal::getPoly </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00091">91</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +References <a class="el" href="a06194.html#l00126">_LocalPoly</a>. +<p> +<div class="fragment"><pre>00091 {<span class="keywordflow">return</span> <a class="code" href="a03103.html#NL3D_1_1CPortalr1">_LocalPoly</a>;} +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala7" doxytag="NL3D::CPortal::getPoly" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::getPoly </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > & </td> + <td class="mdname1" valign="top" nowrap> <em>dest</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap> const</td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +get this cluster poly in local coordinates +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00209">209</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00126">_LocalPoly</a>. +<p> +<div class="fragment"><pre>00210 { +00211 dest = <a class="code" href="a03103.html#NL3D_1_1CPortalr1">_LocalPoly</a>; +00212 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala8" doxytag="NL3D::CPortal::isInFront" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CPortal::isInFront </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a03128.html">NLMISC::CVector</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>v</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Return true if the vertex v is in front of the portal. +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00121">121</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00127">_Poly</a>, and <a class="el" href="a05646.html#l00237">v</a>. +<p> +Referenced by <a class="el" href="a05563.html#l00405">NL3D::CCluster::recursTraverseClip()</a>. +<p> +<div class="fragment"><pre>00122 { +00123 <span class="keywordflow">if</span>( <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>.size()<3 ) +00124 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00125 CVector v1 = <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>[1] - _Poly[0]; +00126 CVector v2 = _Poly[2] - _Poly[0]; +00127 CVector n = v1^v2; +00128 CVector pv = <a class="code" href="a04223.html#a576">v</a> - _Poly[0]; +00129 <span class="keywordflow">return</span> ((n*pv) > 0.0f); +00130 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala9" doxytag="NL3D::CPortal::isOpened" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CPortal::isOpened </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00104">104</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +References <a class="el" href="a06194.html#l00124">_Opened</a>. +<p> +<div class="fragment"><pre>00104 { <span class="keywordflow">return</span> <a class="code" href="a03103.html#NL3D_1_1CPortalr4">_Opened</a>; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala10" doxytag="NL3D::CPortal::open" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::open </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">bool </td> + <td class="mdname1" valign="top" nowrap> <em>opened</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00103">103</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +References <a class="el" href="a06194.html#l00124">_Opened</a>. +<p> +<div class="fragment"><pre>00103 { <a class="code" href="a03103.html#NL3D_1_1CPortalr4">_Opened</a> = opened; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala11" doxytag="NL3D::CPortal::resetClusterLinks" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::resetClusterLinks </td> + <td class="md" valign="top">( </td> + <td class="mdname1" valign="top" nowrap> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +set all link to clusters to NULL. +<p> +Accessors --------- +<p> +Definition at line <a class="el" href="a06193.html#l00134">134</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +<div class="fragment"><pre>00135 { +00136 <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[0] = <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[1] = NULL; +00137 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala12" doxytag="NL3D::CPortal::serial" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::serial </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02270.html">NLMISC::IStream</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>f</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Serial. +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00216">216</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00126">_LocalPoly</a>, <a class="el" href="a06194.html#l00131">_OcclusionModelId</a>, <a class="el" href="a06194.html#l00132">_OpenOcclusionModelId</a>, <a class="el" href="a06194.html#l00127">_Poly</a>, <a class="el" href="a06463.html#l00064">NLMISC::IStream::isReading()</a>, <a class="el" href="a06462.html#l00232">NLMISC::IStream::serial()</a>, <a class="el" href="a06462.html#l00324">NLMISC::IStream::serialCont()</a>, and <a class="el" href="a06461.html#l00266">NLMISC::IStream::serialVersion()</a>. +<p> +<div class="fragment"><pre>00217 { +00218 <span class="keywordtype">int</span> version = f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2035_8">serialVersion</a> (1); +00219 +00220 f.<a class="code" href="a02270.html#NLMISC_1_1IStreamz2033_9">serialCont</a> (_LocalPoly); +00221 <span class="keywordflow">if</span> (f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>()) +00222 <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a> = <a class="code" href="a03103.html#NL3D_1_1CPortalr1">_LocalPoly</a>; +00223 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a> (_Name); +00224 +00225 <span class="keywordflow">if</span> (version >= 1) +00226 { +00227 <span class="keywordflow">if</span> (f.<a class="code" href="a02270.html#NLMISC_1_1IStreama0">isReading</a>()) +00228 { +00229 std::string occName; +00230 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(occName); +00231 <span class="keywordflow">if</span> (occName.empty()) +00232 occName = <span class="stringliteral">"no occlusion"</span>; +00233 <a class="code" href="a03103.html#NL3D_1_1CPortalr3">_OcclusionModelId</a> = CStringMapper::map(occName); +00234 +00235 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(occName); +00236 <span class="keywordflow">if</span> (occName.empty()) +00237 occName = <span class="stringliteral">"no occlusion"</span>; +00238 <a class="code" href="a03103.html#NL3D_1_1CPortalr5">_OpenOcclusionModelId</a> = CStringMapper::map(occName); +00239 } +00240 <span class="keywordflow">else</span> +00241 { +00242 std::string occName = CStringMapper::unmap(_OcclusionModelId); +00243 <span class="keywordflow">if</span> (occName == <span class="stringliteral">"no occlusion"</span>) +00244 occName = <span class="stringliteral">""</span>; +00245 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(occName); +00246 occName = CStringMapper::unmap(_OpenOcclusionModelId); +00247 <span class="keywordflow">if</span> (occName == <span class="stringliteral">"no occlusion"</span>) +00248 occName = <span class="stringliteral">""</span>; +00249 f.<a class="code" href="a02270.html#NLMISC_1_1IStreama5">serial</a>(occName); +00250 } +00251 } +00252 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala13" doxytag="NL3D::CPortal::setCluster" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CPortal::setCluster </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top"><a class="el" href="a02362.html">CCluster</a> * </td> + <td class="mdname1" valign="top" nowrap> <em>cluster</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +return false if more than 2 clusters added +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00140">140</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +<div class="fragment"><pre>00141 { +00142 <span class="keywordflow">if</span>( <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[0] == NULL ) +00143 { +00144 <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[0] = cluster; +00145 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00146 } +00147 <span class="keywordflow">if</span>( <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[1] == NULL ) +00148 { +00149 <a class="code" href="a03103.html#NL3D_1_1CPortalr0">_Clusters</a>[1] = cluster; +00150 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00151 } +00152 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00153 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala14" doxytag="NL3D::CPortal::setName" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::setName </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>name</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap><code> [inline]</code></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00099">99</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +<div class="fragment"><pre>00099 { <a class="code" href="a03103.html#NL3D_1_1CPortalr2">_Name</a> = name; } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalz698_4" doxytag="NL3D::CPortal::setOcclusionModel" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::setOcclusionModel </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>occlusionModel</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00056">56</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00131">_OcclusionModelId</a>. +<p> +<div class="fragment"><pre>00057 { +00058 <a class="code" href="a03103.html#NL3D_1_1CPortalr3">_OcclusionModelId</a> = CStringMapper::map(occlusionModel); +00059 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalz698_5" doxytag="NL3D::CPortal::setOpenOcclusionModel" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::setOpenOcclusionModel </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::string & </td> + <td class="mdname1" valign="top" nowrap> <em>occlusionModel</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00068">68</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00132">_OpenOcclusionModelId</a>. +<p> +<div class="fragment"><pre>00069 { +00070 <a class="code" href="a03103.html#NL3D_1_1CPortalr5">_OpenOcclusionModelId</a> = CStringMapper::map(occlusionModel); +00071 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala15" doxytag="NL3D::CPortal::setPoly" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool NL3D::CPortal::setPoly </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const std::vector< <a class="el" href="a03128.html">NLMISC::CVector</a> > & </td> + <td class="mdname1" valign="top" nowrap> <em>poly</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +return false if the polygon is not convex +<p> + +<p> +<dl compact><dt><b><a class="el" href="todo.html#_todo000019">Todo:</a></b></dt><dd>check if the polygon has the good orientation</dd></dl> + +<p> +Definition at line <a class="el" href="a06193.html#l00167">167</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00126">_LocalPoly</a>, <a class="el" href="a06194.html#l00127">_Poly</a>, <a class="el" href="a06170.html#l00036">NLMISC::CPlane::make()</a>, <a class="el" href="a06172.html#l00068">NLMISC::CPlane::normalize()</a>, <a class="el" href="a06193.html#l00045">PORTALPRECISION</a>, and <a class="el" href="a05981.html#l00105">uint</a>. +<p> +<div class="fragment"><pre>00168 { +00169 <a class="code" href="a04558.html#a15">uint</a> i; +00170 +00171 <span class="keywordflow">if</span>( poly.size() < 3 ) +00172 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00173 +00174 <span class="comment">// Check if the polygon is a plane</span> +00175 <a class="code" href="a03082.html">CPlane</a> p; +00176 p.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_2">make</a>( poly[0], poly[1], poly[2] ); +00177 p.<a class="code" href="a03082.html#NLMISC_1_1CPlanez1990_3">normalize</a>(); +00178 <span class="keywordtype">float</span> dist; +00179 <span class="keywordflow">for</span>( i = 0; i < (poly.size()-3); ++i ) +00180 { +00181 dist = fabsf(p*poly[i+3]); +00182 <span class="keywordflow">if</span>( dist > <a class="code" href="a04770.html#a0">PORTALPRECISION</a> ) +00183 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00184 } +00185 +00186 <span class="comment">// Check if the polygon is convex</span> +00188 <span class="comment"></span> <span class="comment">/*</span> +00189 <span class="comment"> CPlane p2;</span> +00190 <span class="comment"> for( i = 0; i < (poly.size()-1); ++i )</span> +00191 <span class="comment"> {</span> +00192 <span class="comment"> p2.make( poly[i], poly[i+1], poly[i]+p.getNormal() );</span> +00193 <span class="comment"> for( j = 0; j < poly.size(); ++j )</span> +00194 <span class="comment"> if( (j != i) && (j != i+1) )</span> +00195 <span class="comment"> {</span> +00196 <span class="comment"> if( p2*poly[j] < 0.0f )</span> +00197 <span class="comment"> return false;</span> +00198 <span class="comment"> }</span> +00199 <span class="comment"> }*/</span> +00200 +00201 <span class="comment">// Set the value</span> +00202 <a class="code" href="a03103.html#NL3D_1_1CPortalr1">_LocalPoly</a> = poly; +00203 <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a> = poly; +00204 +00205 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00206 } +</pre></div> </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortala16" doxytag="NL3D::CPortal::setWorldMatrix" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> void NL3D::CPortal::setWorldMatrix </td> + <td class="md" valign="top">( </td> + <td class="md" nowrap valign="top">const <a class="el" href="a02851.html">NLMISC::CMatrix</a> & </td> + <td class="mdname1" valign="top" nowrap> <em>WM</em> </td> + <td class="md" valign="top"> ) </td> + <td class="md" nowrap></td> + </tr> + + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06193.html#l00255">255</a> of file <a class="el" href="a06193.html">portal.cpp</a>. +<p> +References <a class="el" href="a06194.html#l00126">_LocalPoly</a>, <a class="el" href="a06194.html#l00127">_Poly</a>, <a class="el" href="a05972.html#l01261">NLMISC::CMatrix::mulPoint()</a>, and <a class="el" href="a05981.html#l00100">uint32</a>. +<p> +Referenced by <a class="el" href="a06350.html#l00571">NL3D::CInstanceGroup::addToSceneWhenAllShapesLoaded()</a>, and <a class="el" href="a05563.html#l00369">NL3D::CCluster::traverseHrc()</a>. +<p> +<div class="fragment"><pre>00256 { +00257 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a11">uint32</a> i = 0; i < <a class="code" href="a03103.html#NL3D_1_1CPortalr1">_LocalPoly</a>.size(); ++i) +00258 <a class="code" href="a03103.html#NL3D_1_1CPortalr6">_Poly</a>[i] = WM.<a class="code" href="a02851.html#NLMISC_1_1CMatrixz1968_0">mulPoint</a>(_LocalPoly[i]); +00259 } +</pre></div> </td> + </tr> +</table> +<hr><h2>Friends And Related Function Documentation</h2> +<a class="anchor" name="NL3D_1_1CPortaln0" doxytag="NL3D::CPortal::CInstanceGroup" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> friend class <a class="el" href="a02671.html">CInstanceGroup</a><code> [friend]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> +Friend class. +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00136">136</a> of file <a class="el" href="a06194.html">portal.h</a>. </td> + </tr> +</table> +<hr><h2>Field Documentation</h2> +<a class="anchor" name="NL3D_1_1CPortalr0" doxytag="NL3D::CPortal::_Clusters" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a02362.html">CCluster</a>* <a class="el" href="a03103.html#NL3D_1_1CPortalr0">NL3D::CPortal::_Clusters</a>[2]<code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00121">121</a> of file <a class="el" href="a06194.html">portal.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalr1" doxytag="NL3D::CPortal::_LocalPoly" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> std::vector<<a class="el" href="a03128.html">NLMISC::CVector</a>> <a class="el" href="a03103.html#NL3D_1_1CPortalr1">NL3D::CPortal::_LocalPoly</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00126">126</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +Referenced by <a class="el" href="a06193.html#l00209">getPoly()</a>, <a class="el" href="a06193.html#l00216">serial()</a>, <a class="el" href="a06193.html#l00167">setPoly()</a>, and <a class="el" href="a06193.html#l00255">setWorldMatrix()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalr2" doxytag="NL3D::CPortal::_Name" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> std::string <a class="el" href="a03103.html#NL3D_1_1CPortalr2">NL3D::CPortal::_Name</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00123">123</a> of file <a class="el" href="a06194.html">portal.h</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalr3" doxytag="NL3D::CPortal::_OcclusionModelId" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a05378.html#a236">NLMISC::TStringId</a> <a class="el" href="a03103.html#NL3D_1_1CPortalr3">NL3D::CPortal::_OcclusionModelId</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00131">131</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +Referenced by <a class="el" href="a06193.html#l00048">CPortal()</a>, <a class="el" href="a06193.html#l00060">getOcclusionModel()</a>, <a class="el" href="a06193.html#l00064">getOcclusionModelId()</a>, <a class="el" href="a06193.html#l00216">serial()</a>, and <a class="el" href="a06193.html#l00056">setOcclusionModel()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalr4" doxytag="NL3D::CPortal::_Opened" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> bool <a class="el" href="a03103.html#NL3D_1_1CPortalr4">NL3D::CPortal::_Opened</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00124">124</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +Referenced by <a class="el" href="a06193.html#l00083">clipPyramid()</a>, <a class="el" href="a06193.html#l00048">CPortal()</a>, <a class="el" href="a06194.html#l00104">isOpened()</a>, and <a class="el" href="a06194.html#l00103">open()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalr5" doxytag="NL3D::CPortal::_OpenOcclusionModelId" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> <a class="el" href="a05378.html#a236">NLMISC::TStringId</a> <a class="el" href="a03103.html#NL3D_1_1CPortalr5">NL3D::CPortal::_OpenOcclusionModelId</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00132">132</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +Referenced by <a class="el" href="a06193.html#l00048">CPortal()</a>, <a class="el" href="a06193.html#l00072">getOpenOcclusionModel()</a>, <a class="el" href="a06193.html#l00076">getOpenOcclusionModelId()</a>, <a class="el" href="a06193.html#l00216">serial()</a>, and <a class="el" href="a06193.html#l00068">setOpenOcclusionModel()</a>. </td> + </tr> +</table> +<a class="anchor" name="NL3D_1_1CPortalr6" doxytag="NL3D::CPortal::_Poly" ></a><p> +<table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> + <tr> + <td class="mdRow"> + <table cellpadding="0" cellspacing="0" border="0"> + <tr> + <td class="md" nowrap valign="top"> std::vector<<a class="el" href="a03128.html">NLMISC::CVector</a>> <a class="el" href="a03103.html#NL3D_1_1CPortalr6">NL3D::CPortal::_Poly</a><code> [private]</code> + </table> + </td> + </tr> +</table> +<table cellspacing=5 cellpadding=0 border=0> + <tr> + <td> + + </td> + <td> + +<p> + +<p> +Definition at line <a class="el" href="a06194.html#l00127">127</a> of file <a class="el" href="a06194.html">portal.h</a>. +<p> +Referenced by <a class="el" href="a06193.html#l00083">clipPyramid()</a>, <a class="el" href="a06193.html#l00262">clipRay()</a>, <a class="el" href="a06193.html#l00121">isInFront()</a>, <a class="el" href="a06193.html#l00216">serial()</a>, <a class="el" href="a06193.html#l00167">setPoly()</a>, and <a class="el" href="a06193.html#l00255">setWorldMatrix()</a>. </td> + </tr> +</table> +<hr>The documentation for this class was generated from the following files:<ul> +<li><a class="el" href="a06194.html">portal.h</a><li><a class="el" href="a06193.html">portal.cpp</a></ul> +<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 07:03:00 2004 for NeL by +<a href="http://www.doxygen.org/index.html"> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.6 </small></address> +</body> +</html> |