diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/rpo_cpp-source.html | 660 |
1 files changed, 660 insertions, 0 deletions
diff --git a/docs/doxygen/nel/rpo_cpp-source.html b/docs/doxygen/nel/rpo_cpp-source.html new file mode 100644 index 00000000..61abb76e --- /dev/null +++ b/docs/doxygen/nel/rpo_cpp-source.html @@ -0,0 +1,660 @@ +<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> +<HTML> +<HEAD> + <TITLE>nevrax.org : docs</TITLE> + <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css"> + <link href="doxygen.css" rel="stylesheet" type="text/css"> +</HEAD> +<BODY MARGINHEIGHT="0" MARGINWIDTH="0"> + +<!-- uplinks --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0> + <TR> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A> </TD> + <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle> <A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A> </TD> + </TR> +</TABLE> + +<!-- banner Nevrax --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%> + <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR> +</TABLE> + +<!-- main table --> +<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%> + <TR> + <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD> + <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT=""> + + <!------ Begin Box ------> + <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black> + <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF> + <TABLE cellspacing=0 cellpadding=1 border=0> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr> + <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-gpl.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="License">License</a></td></tr> + </TABLE> + </TD></TR></TABLE></TD></TR></TABLE> + <!------ End Box ------> + + </TD> + <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD> + <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT=""> + +<!-- title --> +<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td> +<A HREF="http://www.nevrax.org/docs/"><img src="http://www.nevrax.org/inc/img/t_docs.gif" ALT="Docs" HEIGHT=20 BORDER=0></A> +</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT=""> +</td></tr></table> + + +<!-- block --> +<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD> + <TD><B>Documentation</B></TD> + <TD ALIGN=RIGHT> </td> +</tr></table> +<!-- Generated by Doxygen 1.2.2 on Tue May 29 22:01:19 2001 --> +<center> +<a class="qindex" href="index.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">Compound List</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">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> <a class="qindex" href="pages.html">Related Pages</a> <a class="qindexRef" doxygen="_cgi:http://www.nevrax.org/cgi-bin/nel-search.cgi" href="http://www.nevrax.org/cgi-bin/nel-search.cgi">Search</a> </center> +<hr><h1>rpo.cpp</h1><a href="rpo_cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 +00007 <font class="comment">/* Copyright, 2000 Nevrax Ltd. +</font>00008 <font class="comment"> * +</font>00009 <font class="comment"> * This file is part of NEVRAX NEL. +</font>00010 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify +</font>00011 <font class="comment"> * it under the terms of the GNU General Public License as published by +</font>00012 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option) +</font>00013 <font class="comment"> * any later version. +</font>00014 <font class="comment"> +</font>00015 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but +</font>00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of +</font>00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +</font>00018 <font class="comment"> * General Public License for more details. +</font>00019 <font class="comment"> +</font>00020 <font class="comment"> * You should have received a copy of the GNU General Public License +</font>00021 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the +</font>00022 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, +</font>00023 <font class="comment"> * MA 02111-1307, USA. +</font>00024 <font class="comment"> */</font> +00025 +00026 <font class="preprocessor">#include "<a class="code" href="tile_edit_stdafx_h.html">stdafx.h</a>"</font> +00027 <font class="preprocessor">#include "<a class="code" href="rpo_h.html">rpo.h</a>"</font> +00028 +00029 <font class="keyword">using</font> <font class="keyword">namespace</font> NL3D; +00030 +00031 <font class="preprocessor">#ifndef max +</font><a name="l00032"></a><a class="code" href="rpo_cpp.html#a0">00032</a> <font class="preprocessor"></font><font class="preprocessor">#define max(a,b) (((a) > (b)) ? (a) : (b)) +</font>00033 <font class="preprocessor"></font><font class="preprocessor">#endif max +</font>00034 <font class="preprocessor"></font> +<a name="l00035"></a><a class="code" href="rpo_cpp.html#a1">00035</a> <font class="preprocessor">#define PBLOCK_REF 0 +</font>00036 <font class="preprocessor"></font> +00037 <font class="preprocessor">#ifdef USE_CACHE +</font>00038 <font class="preprocessor"></font><font class="preprocessor">#ifndef NDEBUG +</font>00039 <font class="preprocessor"></font><font class="preprocessor">#define DEBUG_PIPELINE +</font>00040 <font class="preprocessor"></font><font class="preprocessor">#endif // NDEBUG +</font>00041 <font class="preprocessor"></font><font class="preprocessor">#endif // USE_CACHE +</font>00042 <font class="preprocessor"></font> +00043 +<a name="l00044"></a><a class="code" href="class_RPOClassDesc.html">00044</a> <font class="keyword">class </font><a class="code" href="class_RPOClassDesc.html">RPOClassDesc</a>:<font class="keyword">public</font> <a class="code" href="class_ClassDesc.html">ClassDesc</a> +00045 { +00046 <font class="keyword">public</font>: +<a name="l00047"></a><a class="code" href="class_RPOClassDesc.html#a0">00047</a> <font class="keywordtype">int</font> <a class="code" href="class_RPOClassDesc.html#a0">IsPublic</a>()<font class="keyword"> +</font>00048 <font class="keyword"> </font>{ +00049 <font class="keywordflow">return</font> 0; +00050 } +<a name="l00051"></a><a class="code" href="class_RPOClassDesc.html#a1">00051</a> <font class="keywordtype">void</font> * <a class="code" href="class_RPOClassDesc.html#a1">Create</a>(BOOL loading = FALSE)<font class="keyword"> +</font>00052 <font class="keyword"> </font>{ +00053 <font class="keywordflow">return</font> <font class="keyword">new</font> <a class="code" href="class_RPO.html">RPO</a>; +00054 } +<a name="l00055"></a><a class="code" href="class_RPOClassDesc.html#a2">00055</a> <font class="keyword">const</font> TCHAR * <a class="code" href="class_RPOClassDesc.html#a2">ClassName</a>()<font class="keyword"> +</font>00056 <font class="keyword"> </font>{ +00057 <font class="keywordflow">return</font> <font class="stringliteral">"RklPatch"</font>; +00058 } +<a name="l00059"></a><a class="code" href="class_RPOClassDesc.html#a3">00059</a> SClass_ID <a class="code" href="class_RPOClassDesc.html#a3">SuperClassID</a>()<font class="keyword"> +</font>00060 <font class="keyword"> </font>{ +00061 <font class="keywordflow">return</font> GEOMOBJECT_CLASS_ID; +00062 } +<a name="l00063"></a><a class="code" href="class_RPOClassDesc.html#a4">00063</a> Class_ID <a class="code" href="class_RPOClassDesc.html#a4">ClassID</a>()<font class="keyword"> +</font>00064 <font class="keyword"> </font>{ +00065 <font class="keywordflow">return</font> RYKOLPATCHOBJ_CLASS_ID; +00066 } +<a name="l00067"></a><a class="code" href="class_RPOClassDesc.html#a5">00067</a> <font class="keyword">const</font> TCHAR* <a class="code" href="class_RPOClassDesc.html#a5">Category</a>()<font class="keyword"> +</font>00068 <font class="keyword"> </font>{ +00069 <font class="keywordflow">return</font> <font class="stringliteral">"Rykol Tools"</font>; +00070 } +00071 }; +00072 +00073 +00074 <font class="keyword">enum</font> { RPO_params }; +00075 +00076 <font class="comment">//TODO: Add enums for various parameters</font> +00077 <font class="keyword">enum</font> { pb_spin }; +00078 +00079 IObjParam *RPO::ip = NULL; +00080 +00081 BOOL RPO::attachMat=FALSE; +00082 BOOL RPO::condenseMat=FALSE; +00083 +00084 +<a name="l00085"></a><a class="code" href="rpo_cpp.html#a4">00085</a> <font class="keyword">static</font> <a class="code" href="class_RPOClassDesc.html">RPOClassDesc</a> RPODesc; +00086 +<a name="l00087"></a><a class="code" href="rpo_cpp.html#a2">00087</a> <a class="code" href="class_ClassDesc.html">ClassDesc</a>* <a class="code" href="plugin_max_nel_patch_converter_DllEntry_cpp.html#a2">GetRPODesc</a>()<font class="keyword"> +</font>00088 <font class="keyword"></font>{ +00089 <font class="keywordflow">return</font> &RPODesc; +00090 } +00091 +00092 <font class="comment">// RPO ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00093 +<a name="l00094"></a><a class="code" href="class_RPO.html#a43">00094</a> <a class="code" href="class_RPO.html#a43">RPO::RPO</a>()<font class="keyword"> +</font>00095 <font class="keyword"></font>{ +00096 RPODesc.MakeAutoParamBlocks(<font class="keyword">this</font>); +00097 bBigHack=<font class="keyword">false</font>; +00098 +00099 rpatch = NULL; +00100 +00101 <font class="comment">// Infinite</font> +00102 topoValid.SetInfinite(); +00103 geomValid.SetInfinite(); +00104 selectValid.SetInfinite(); +00105 texmapValid.SetInfinite(); +00106 validBits = 0xffffffff; +00107 } +00108 +<a name="l00109"></a><a class="code" href="class_RPO.html#a44">00109</a> <a class="code" href="class_RPO.html#a43">RPO::RPO</a>(<a class="code" href="class_PatchObject.html">PatchObject</a>& pPO) : <a class="code" href="class_PatchObject.html">PatchObject</a>(pPO) +00110 { +00111 RPODesc.MakeAutoParamBlocks(<font class="keyword">this</font>); +00112 +00113 rpatch = <font class="keyword">new</font> RPatchMesh (&pPO.patch); +00114 +00115 <font class="comment">//Mode=ModeRykolPatchMesh;</font> +00116 bBigHack=<font class="keyword">false</font>; +00117 +00118 <font class="comment">// Infinite</font> +00119 topoValid.SetInfinite(); +00120 geomValid.SetInfinite(); +00121 selectValid.SetInfinite(); +00122 texmapValid.SetInfinite(); +00123 validBits = 0xffffffff; +00124 } +00125 +00126 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00127 +<a name="l00128"></a><a class="code" href="class_RPO.html#a45">00128</a> <a class="code" href="class_RPO.html#a45">RPO::~RPO</a>()<font class="keyword"> +</font>00129 <font class="keyword"></font>{ +00130 <font class="keywordflow">if</font> (((~GetChannelLocks()))&PART_TOPO) +00131 { +00132 <font class="keyword">delete</font> rpatch; +00133 rpatch=NULL; +00134 } +00135 } +00136 +00137 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00138 +<a name="l00139"></a><a class="code" href="class_RPO.html#a23">00139</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a23">RPO::BeginEditParams</a>(IObjParam *ip,ULONG flags,Animatable *prev)<font class="keyword"> +</font>00140 <font class="keyword"></font>{ +00141 this->ip = ip; +00142 <font class="comment">//RPODesc.BeginEditParams(ip, this, flags, prev);</font> +00143 <font class="comment">//PatchObject::BeginEditParams(ip, flags, prev);</font> +00144 } +00145 +00146 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00147 +<a name="l00148"></a><a class="code" href="class_RPO.html#a24">00148</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a24">RPO::EndEditParams</a>( IObjParam *ip, ULONG flags,Animatable *next )<font class="keyword"> +</font>00149 <font class="keyword"></font>{ +00150 <font class="comment">//TODO: Save plugin parameter values into class variables, if they are not hosted in ParamBlocks. </font> +00151 +00152 +00153 <font class="comment">//RPODesc.EndEditParams(ip, this, flags, next);</font> +00154 this->ip = NULL; +00155 <font class="comment">//PatchObject::EndEditParams(ip, flags, next);</font> +00156 } +00157 +00158 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00159 +00160 <font class="comment">//From Object</font> +<a name="l00161"></a><a class="code" href="class_RPO.html#a9">00161</a> BOOL <a class="code" href="class_RPO.html#a9">RPO::HasUVW</a>()<font class="keyword"> +</font>00162 <font class="keyword"></font>{ +00163 <font class="comment">//TODO: Return whether the object has UVW coordinates or not</font> +00164 <font class="keywordflow">return</font> TRUE; +00165 } +00166 +00167 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00168 +<a name="l00169"></a><a class="code" href="class_RPO.html#a10">00169</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a10">RPO::SetGenUVW</a>(BOOL sw)<font class="keyword"> +</font>00170 <font class="keyword"></font>{ +00171 <font class="keywordflow">if</font> (sw==<a class="code" href="class_RPO.html#a9">HasUVW</a>()) <font class="keywordflow">return</font>; +00172 <font class="comment">//TODO: Set the plugin's internal value to sw </font> +00173 } +00174 +00175 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00176 +00177 <font class="comment">//Class for interactive creation of the object using the mouse</font> +<a name="l00178"></a><a class="code" href="class_RPOCreateCallBack.html">00178</a> <font class="keyword">class </font><a class="code" href="class_RPOCreateCallBack.html">RPOCreateCallBack</a> : <font class="keyword">public</font> <a class="code" href="class_CreateMouseCallBack.html">CreateMouseCallBack</a> +00179 { +<a name="l00180"></a><a class="code" href="class_RPOCreateCallBack.html#o0">00180</a> IPoint2 sp0; <font class="comment">//First point in screen coordinates</font> +<a name="l00181"></a><a class="code" href="class_RPOCreateCallBack.html#o1">00181</a> <a class="code" href="class_RPO.html">RPO</a> *ob; <font class="comment">//Pointer to the object </font> +<a name="l00182"></a><a class="code" href="class_RPOCreateCallBack.html#o2">00182</a> Point3 p0; <font class="comment">//First point in world coordinates</font> +00183 <font class="keyword">public</font>: +00184 <font class="keywordtype">int</font> <a class="code" href="class_RPOCreateCallBack.html#a0">proc</a>( ViewExp *vpt,<font class="keywordtype">int</font> msg, <font class="keywordtype">int</font> point, <font class="keywordtype">int</font> flags, IPoint2 m, Matrix3& mat); +<a name="l00185"></a><a class="code" href="class_RPOCreateCallBack.html#a1">00185</a> <font class="keywordtype">void</font> <a class="code" href="class_RPOCreateCallBack.html#a1">SetObj</a>(<a class="code" href="class_RPO.html">RPO</a> *obj)<font class="keyword"> +</font>00186 <font class="keyword"> </font>{ +00187 ob = obj; +00188 } +00189 }; +00190 +00191 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00192 +<a name="l00193"></a><a class="code" href="class_RPOCreateCallBack.html#a0">00193</a> <font class="keywordtype">int</font> <a class="code" href="class_RPOCreateCallBack.html#a0">RPOCreateCallBack::proc</a>(ViewExp *vpt,<font class="keywordtype">int</font> msg, <font class="keywordtype">int</font> point, <font class="keywordtype">int</font> flags, IPoint2 m, Matrix3& mat )<font class="keyword"> +</font>00194 <font class="keyword"></font>{ +00195 <font class="comment">//TODO: Implement the mouse creation code here</font> +00196 <font class="keywordflow">if</font> (msg==MOUSE_POINT||msg==MOUSE_MOVE) +00197 { +00198 <font class="keywordflow">switch</font>(point) +00199 { +00200 <font class="keywordflow">case</font> 0: <font class="comment">// only happens with MOUSE_POINT msg</font> +00201 ob->suspendSnap = TRUE; +00202 sp0 = m; +00203 p0 = vpt->SnapPoint(m,m,NULL,SNAP_IN_PLANE); +00204 mat.SetTrans(p0); +00205 <font class="keywordflow">break</font>; +00206 <font class="comment">//TODO: Add for the rest of points</font> +00207 } +00208 } +00209 <font class="keywordflow">else</font> +00210 { +00211 <font class="keywordflow">if</font> (msg == MOUSE_ABORT) +00212 { +00213 <font class="keywordflow">return</font> CREATE_ABORT; +00214 } +00215 } +00216 <font class="keywordflow">return</font> TRUE; +00217 } +00218 +00219 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00220 +<a name="l00221"></a><a class="code" href="rpo_cpp.html#a5">00221</a> <font class="keyword">static</font> <a class="code" href="class_RPOCreateCallBack.html">RPOCreateCallBack</a> RPOCreateCB; +00222 +00223 <font class="comment">//From BaseObject</font> +<a name="l00224"></a><a class="code" href="class_RPO.html#a0">00224</a> <a class="code" href="class_CreateMouseCallBack.html">CreateMouseCallBack</a>* <a class="code" href="class_RPO.html#a0">RPO::GetCreateMouseCallBack</a>()<font class="keyword"> +</font>00225 <font class="keyword"></font>{ +00226 RPOCreateCB.<a class="code" href="class_RPOCreateCallBack.html#a1">SetObj</a>(<font class="keyword">this</font>); +00227 <font class="keywordflow">return</font>(&RPOCreateCB); +00228 } +00229 +00230 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00231 +<a name="l00232"></a><a class="code" href="class_RPO.html#a1">00232</a> <font class="keywordtype">int</font> <a class="code" href="class_RPO.html#a1">RPO::Display</a>(TimeValue t, INode* inode, ViewExp *vpt, <font class="keywordtype">int</font> flags)<font class="keyword"> +</font>00233 <font class="keyword"></font>{ +00234 <font class="comment">//TODO: Implement the displaying of the object here</font> +00235 <font class="keywordflow">if</font> (!rpatch->rTess.ModeTile) +00236 { +00237 <font class="keywordtype">int</font> ret= PatchObject::Display(t, inode, vpt, flags); +00238 +00239 <font class="comment">// Point binded</font> +00240 <font class="keywordflow">if</font> (inode->Selected()) +00241 { +00242 GraphicsWindow *gw = vpt->getGW(); +00243 gw->setColor(LINE_COLOR, 0, 0, 0); +00244 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i=0; i<patch.numVerts; i++) +00245 { +00246 <font class="keywordflow">if</font> (rpatch-><a class="code" href="class_RPatchMesh.html#a8">getUIVertex</a> (i).Binding.bBinded) +00247 { +00248 <font class="comment">// draw the point</font> +00249 gw->marker (&patch.verts[i].p, DOT_MRKR); +00250 } +00251 } +00252 } +00253 +00254 <font class="keywordflow">return</font> ret; +00255 +00256 } +00257 <font class="keywordflow">else</font> +00258 { +00259 <font class="keywordflow">return</font> rpatch-><a class="code" href="class_RPatchMesh.html#a40">Display</a> (t, inode, vpt, flags, patch); +00260 } +00261 } +00262 +00263 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00264 +<a name="l00265"></a><a class="code" href="class_RPO.html#a2">00265</a> <font class="keywordtype">int</font> <a class="code" href="class_RPO.html#a2">RPO::HitTest</a>(TimeValue t, INode* inode, <font class="keywordtype">int</font> type, <font class="keywordtype">int</font> crossing, +00266 <font class="keywordtype">int</font> flags, IPoint2 *p, ViewExp *vpt)<font class="keyword"> +</font>00267 <font class="keyword"></font>{ +00268 <font class="comment">//TODO: Implement the hit testing here</font> +00269 <font class="keywordflow">return</font> PatchObject::HitTest(t, inode, type, crossing, flags, p, vpt); +00270 <font class="comment">//return 0;</font> +00271 } +00272 +00273 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00274 +<a name="l00275"></a><a class="code" href="class_RPO.html#a3">00275</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a3">RPO::Snap</a>(TimeValue t, INode* inode, SnapInfo *snap, IPoint2 *p, ViewExp *vpt)<font class="keyword"> +</font>00276 <font class="keyword"></font>{ +00277 <font class="comment">//TODO: Check the point passed for a snap and update the SnapInfo structure</font> +00278 PatchObject::Snap(t, inode, snap, p, vpt); +00279 } +00280 +00281 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00282 +<a name="l00283"></a><a class="code" href="class_RPO.html#a5">00283</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a5">RPO::GetWorldBoundBox</a>(TimeValue t, INode *mat, ViewExp *vpt, Box3& box )<font class="keyword"> +</font>00284 <font class="keyword"></font>{ +00285 <font class="comment">//TODO: Return the world space bounding box of the object</font> +00286 PatchObject::GetWorldBoundBox(t, mat, vpt, box); +00287 } +00288 +00289 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00290 +<a name="l00291"></a><a class="code" href="class_RPO.html#a6">00291</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a6">RPO::GetLocalBoundBox</a>(TimeValue t, INode *mat, ViewExp *vpt, Box3& box )<font class="keyword"> +</font>00292 <font class="keyword"></font>{ +00293 <font class="comment">//TODO: Return the local space bounding box of the object</font> +00294 PatchObject::GetLocalBoundBox(t, mat, vpt, box); +00295 } +00296 +00297 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00298 +<a name="l00299"></a><a class="code" href="class_RPO.html#a7">00299</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a7">RPO::GetDeformBBox</a>(TimeValue t, Box3& box, Matrix3 *tm, BOOL useSel )<font class="keyword"> +</font>00300 <font class="keyword"></font>{ +00301 <font class="comment">//TODO: Compute the bounding box in the objects local coordinates </font> +00302 <font class="comment">// or the optional space defined by tm.</font> +00303 PatchObject::GetDeformBBox(t, box, tm, useSel); +00304 } +00305 +00306 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00307 +00308 <font class="comment">//From ReferenceMaker</font> +<a name="l00309"></a><a class="code" href="class_RPO.html#a32">00309</a> RefResult <a class="code" href="class_RPO.html#a32">RPO::NotifyRefChanged</a>( Interval changeInt, RefTargetHandle hTarget,PartID& partID, RefMessage message )<font class="keyword"> +</font>00310 <font class="keyword"></font>{ +00311 <font class="comment">//TODO: Implement, if the object makes references to other things</font> +00312 <font class="comment">//return PatchObject::NotifyRefChanged( changeInt, hTarget, partID, message);</font> +00313 <font class="keywordflow">return</font>(REF_SUCCEED); +00314 } +00315 +00316 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00317 +<a name="l00318"></a><a class="code" href="class_RPO.html#a25">00318</a> Mesh* <a class="code" href="class_RPO.html#a25">RPO::GetRenderMesh</a>(TimeValue t, INode *inode, View& view, BOOL& needDelete)<font class="keyword"> +</font>00319 <font class="keyword"></font>{ +00320 <font class="comment">//TODO: Return the mesh representation of the object used by the renderer</font> +00321 needDelete=TRUE; +00322 Mesh *pMesh=<font class="keyword">new</font> Mesh(); +00323 rpatch-><a class="code" href="class_RPatchMesh.html#a38">BuildMesh</a>(t, patch, pMesh); +00324 <font class="keywordflow">return</font> pMesh; +00325 } +00326 +00327 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00328 +00329 <font class="comment">/* +</font>00330 <font class="comment"> Lire doc intervals +</font>00331 <font class="comment"> Ici : conversion d'un RPM en n'importe kwa : triObj, PO +</font>00332 <font class="comment"> +</font>00333 <font class="comment">*/</font> +<a name="l00334"></a><a class="code" href="class_RPO.html#a12">00334</a> Object* <a class="code" href="class_RPO.html#a12">RPO::ConvertToType</a>(TimeValue t, Class_ID cid)<font class="keyword"> +</font>00335 <font class="keyword"></font>{ +00336 <font class="keywordflow">if</font> (cid==RYKOLPATCHOBJ_CLASS_ID) +00337 { +00338 <font class="keywordflow">return</font> <font class="keyword">this</font>; +00339 } +00340 <font class="keywordflow">if</font> (cid==defObjectClassID) +00341 { +00342 <font class="keywordflow">return</font> <font class="keyword">this</font>; +00343 } +00344 <font class="keywordflow">if</font> (cid==triObjectClassID) +00345 { +00346 TriObject *pTriObj=CreateNewTriObject(); +00347 rpatch-><a class="code" href="class_RPatchMesh.html#a28">InvalidateChannels</a> (PART_TOPO|PART_GEOM|PART_TEXMAP|PART_SELECT|PART_DISPLAY); +00348 rpatch-><a class="code" href="class_RPatchMesh.html#a38">BuildMesh</a>(t, patch, &pTriObj->mesh); +00349 pTriObj->SetChannelValidity(TOPO_CHAN_NUM,<a class="code" href="class_RPO.html#a20">ConvertValidity</a>(t)); +00350 pTriObj->SetChannelValidity(GEOM_CHAN_NUM,<a class="code" href="class_RPO.html#a20">ConvertValidity</a>(t)); +00351 <font class="keywordflow">return</font> pTriObj; +00352 } +00353 <font class="keywordflow">return</font> NULL; +00354 } +00355 +00356 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00357 +<a name="l00358"></a><a class="code" href="class_RPO.html#a11">00358</a> <font class="keywordtype">int</font> <a class="code" href="class_RPO.html#a11">RPO::CanConvertToType</a>(Class_ID cid)<font class="keyword"> +</font>00359 <font class="keyword"></font>{ +00360 <font class="keywordflow">if</font> (cid==RYKOLPATCHOBJ_CLASS_ID) +00361 { +00362 <font class="keywordflow">return</font> 1; +00363 } +00364 <font class="keywordflow">if</font> (cid==defObjectClassID) +00365 { +00366 <font class="keywordflow">return</font> 1; +00367 } +00368 <font class="keywordflow">if</font> (cid==triObjectClassID) +00369 { +00370 <font class="keywordflow">return</font> 1; +00371 } +00372 <font class="keywordflow">return</font>(0); +00373 } +00374 +00375 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00376 +00377 <font class="comment">// From Object</font> +<a name="l00378"></a><a class="code" href="class_RPO.html#a14">00378</a> <font class="keywordtype">int</font> <a class="code" href="class_RPO.html#a14">RPO::IntersectRay</a>(TimeValue t, Ray& ray, <font class="keywordtype">float</font>& at, Point3& norm)<font class="keyword"> +</font>00379 <font class="keyword"></font>{ +00380 <font class="comment">//TODO: Return TRUE after you implement this method</font> +00381 <font class="keywordflow">return</font> PatchObject::IntersectRay( t, ray, at, norm); +00382 } +00383 +00384 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00385 +<a name="l00386"></a><a class="code" href="class_RPO.html#a13">00386</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a13">RPO::GetCollapseTypes</a>(Tab<Class_ID> &clist,Tab<TSTR*> &nlist)<font class="keyword"> +</font>00387 <font class="keyword"></font>{ +00388 Object::GetCollapseTypes(clist, nlist); +00389 <font class="comment">//TODO: Append any any other collapse type the plugin supports</font> +00390 +00391 Class_ID id = RYKOLPATCHOBJ_CLASS_ID; +00392 TSTR *name = <font class="keyword">new</font> TSTR(<font class="stringliteral">"Rykol Patch Mesh"</font>); +00393 clist.Append(1,&id); +00394 nlist.Append(1,&name); +00395 } +00396 +00397 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00398 +00399 <font class="comment">// From ReferenceTarget</font> +<a name="l00400"></a><a class="code" href="class_RPO.html#a31">00400</a> RefTargetHandle <a class="code" href="class_RPO.html#a31">RPO::Clone</a>(RemapDir& remap)<font class="keyword"> +</font>00401 <font class="keyword"></font>{ +00402 <a class="code" href="class_RPO.html">RPO</a>* newob = <font class="keyword">new</font> <a class="code" href="class_RPO.html#a43">RPO</a>(); +00403 newob->rpatch=<font class="keyword">new</font> RPatchMesh (); +00404 *newob->rpatch=*rpatch; +00405 newob->rpatch->selLevel=EP_OBJECT; +00406 newob->rpatch-><a class="code" href="class_RPO.html#a22">InvalidateChannels</a>(ALL_CHANNELS); +00407 newob->patch.DeepCopy(&patch, ALL_CHANNELS); +00408 newob->patch.SetShowInterior(patch.GetShowInterior()); +00409 +00410 <font class="keywordflow">return</font>(newob); +00411 } +00412 +00413 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00414 +<a name="l00415"></a><a class="code" href="rpo_cpp.html#a2">00415</a> <font class="preprocessor">#define CHK_TEST 0x0001 +</font><a name="l00416"></a><a class="code" href="rpo_cpp.html#a3">00416</a> <font class="preprocessor"></font><font class="preprocessor">#define VALIDITY_CHUNK 2301 +</font><a name="l00417"></a><a class="code" href="rpo_cpp.html#a6">00417</a> <font class="preprocessor"></font><font class="keyword">static</font> <font class="keywordtype">int</font> counter; +<a name="l00418"></a><a class="code" href="class_RPO.html#a27">00418</a> IOResult <a class="code" href="class_RPO.html#a27">RPO::Save</a>(ISave *isave)<font class="keyword"> +</font>00419 <font class="keyword"></font>{ +00420 ULONG nb; +00421 +00422 <font class="comment">//PatchObject::Save(isave);</font> +00423 +00424 <font class="comment">// Version</font> +00425 isave->BeginChunk(VALIDITY_CHUNK); +00426 +00427 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> nVersion=RPO_SERIALIZE_VERSION; +00428 isave->Write(&nVersion, <font class="keyword">sizeof</font> (nVersion), &nb); +00429 +00430 <font class="comment">// RPatch</font> +00431 rpatch-><a class="code" href="class_RPatchMesh.html#a33">Save</a> (isave); +00432 +00433 isave->EndChunk(); +00434 patch.Save (isave); +00435 rpatch->mesh.<a class="code" href="class_RPO.html#a27">Save</a> (isave); +00436 +00437 <font class="keywordflow">return</font> IO_OK; +00438 } +00439 +00440 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00441 +<a name="l00442"></a><a class="code" href="class_RPO.html#a26">00442</a> IOResult <a class="code" href="class_RPO.html#a26">RPO::Load</a>(ILoad *iload)<font class="keyword"> +</font>00443 <font class="keyword"></font>{ +00444 ULONG nb; +00445 +00446 <font class="keywordflow">if</font> (rpatch==NULL) +00447 rpatch=<font class="keyword">new</font> RPatchMesh (); +00448 +00449 <font class="keywordflow">if</font> (IO_OK==(iload->OpenChunk())) +00450 { +00451 <font class="keywordflow">if</font> (iload->CurChunkID()==VALIDITY_CHUNK) +00452 { +00453 <font class="comment">// Version</font> +00454 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> nVersion; +00455 iload->Read(&nVersion, <font class="keyword">sizeof</font> (nVersion), &nb); +00456 +00457 <font class="keywordflow">switch</font> (nVersion) +00458 { +00459 <font class="keywordflow">case</font> RPO_SERIALIZE_VERSION: +00460 <font class="comment">// RPatch</font> +00461 rpatch-><a class="code" href="class_RPatchMesh.html#a32">Load</a> (iload); +00462 <font class="keywordflow">break</font>; +00463 } +00464 +00465 } +00466 iload->CloseChunk(); +00467 } +00468 patch.Load (iload); +00469 rpatch->mesh.<a class="code" href="class_RPO.html#a26">Load</a> (iload); +00470 +00471 <font class="keywordflow">return</font> IO_OK; +00472 } +00473 +00474 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00475 +<a name="l00476"></a><a class="code" href="class_RPO.html#a39">00476</a> Object *<a class="code" href="class_RPO.html#a39">RPO::MakeShallowCopy</a>(ChannelMask channels)<font class="keyword"> +</font>00477 <font class="keyword"></font>{ +00478 <a class="code" href="class_RPO.html">RPO</a>* newob=(<a class="code" href="class_RPO.html">RPO</a>*)RPODesc.Create(); +00479 +00480 <font class="keywordflow">if</font> (channels&PART_TOPO) +00481 newob->rpatch=rpatch; +00482 +00483 <font class="comment">// Copy patch mesh</font> +00484 newob->patch.<a class="code" href="class_RPO.html#a40">ShallowCopy</a>(&patch, channels); +00485 +00486 <font class="comment">// Copy validity</font> +00487 newob-><a class="code" href="class_RPO.html#a21">CopyValidity</a>(<font class="keyword">this</font>,channels); +00488 +00489 <font class="keywordflow">return</font> newob; +00490 } +00491 +00492 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00493 +<a name="l00494"></a><a class="code" href="class_RPO.html#a40">00494</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a40">RPO::ShallowCopy</a>(Object* fromOb, ChannelMask channels)<font class="keyword"> +</font>00495 <font class="keyword"></font>{ +00496 <a class="code" href="class_RPO.html">RPO</a>* fromRPO=(<a class="code" href="class_RPO.html">RPO</a>*)fromOb; +00497 +00498 <font class="comment">// Copy rpatch mesh</font> +00499 <font class="keywordflow">if</font> (channels&PART_TOPO) +00500 rpatch=fromRPO->rpatch; +00501 +00502 <font class="comment">// Copy patch mesh</font> +00503 patch.ShallowCopy(&fromRPO->patch, channels); +00504 +00505 <font class="comment">// Copy validity</font> +00506 <a class="code" href="class_RPO.html#a21">CopyValidity</a>(fromRPO, channels); +00507 } +00508 +00509 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00510 +<a name="l00511"></a><a class="code" href="class_RPO.html#a41">00511</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a41">RPO::NewAndCopyChannels</a>(ChannelMask channels)<font class="keyword"> +</font>00512 <font class="keyword"></font>{ +00513 <font class="keywordflow">if</font> (channels&PART_TOPO) +00514 { +00515 <a class="code" href="class_RPatchMesh.html">RPatchMesh</a>* old=rpatch; +00516 rpatch=<font class="keyword">new</font> RPatchMesh (); +00517 *rpatch=*old; +00518 } +00519 PatchObject::NewAndCopyChannels(channels); +00520 } +00521 +00522 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00523 +<a name="l00524"></a><a class="code" href="class_RPO.html#a42">00524</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a42">RPO::FreeChannels</a>(ChannelMask channels)<font class="keyword"> +</font>00525 <font class="keyword"></font>{ +00526 <font class="keywordflow">if</font> ((channels&(~GetChannelLocks()))&PART_TOPO) +00527 { +00528 <font class="keyword">delete</font> rpatch; +00529 rpatch=NULL; +00530 } +00531 PatchObject::FreeChannels(channels); +00532 } +00533 +00534 <font class="comment">// ------------------------------------------------------------------------------------------------------------------------------------------------</font> +00535 +<a name="l00536"></a><a class="code" href="class_RPO.html#a22">00536</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a22">RPO::InvalidateChannels</a>(ChannelMask channels)<font class="keyword"> +</font>00537 <font class="keyword"></font>{ +00538 <font class="comment">//PatchObject::InvalidateChannels(channels);</font> +00539 <font class="keywordflow">if</font> (rpatch) +00540 rpatch-><a class="code" href="class_RPatchMesh.html#a28">InvalidateChannels</a>(channels); +00541 +00542 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i=0; i<NUM_OBJ_CHANS; i++) +00543 { +00544 <font class="keywordflow">if</font> (channels&chMask[i]) +00545 { +00546 <font class="keywordflow">switch</font>(i) +00547 { +00548 <font class="keywordflow">case</font> GEOM_CHAN_NUM: geomValid.SetEmpty(); <font class="keywordflow">break</font>; +00549 <font class="comment">//case VERT_COLOR_CHAN_NUM: vcolorValid.SetEmpty(); break;</font> +00550 <font class="keywordflow">case</font> TOPO_CHAN_NUM: topoValid.SetEmpty(); <font class="keywordflow">break</font>; +00551 <font class="keywordflow">case</font> TEXMAP_CHAN_NUM: texmapValid.SetEmpty(); <font class="keywordflow">break</font>; +00552 <font class="keywordflow">case</font> SELECT_CHAN_NUM: selectValid.SetEmpty(); <font class="keywordflow">break</font>; +00553 <font class="comment">//case GFX_DATA_CHAN_NUM: gfxdataValid.SetEmpty(); break;</font> +00554 <font class="keywordflow">default</font>: validBits &= ~chMask[i]; <font class="keywordflow">break</font>; +00555 } +00556 } +00557 } +00558 } +00559 +00560 <font class="comment">// --------------------------------------------------</font> +00561 +<a name="l00562"></a><a class="code" href="class_RPO.html#a15">00562</a> <font class="keywordtype">void</font> <a class="code" href="class_RPO.html#a15">RPO::PointsWereChanged</a>()<font class="keyword"> +</font>00563 <font class="keyword"></font>{ +00564 PatchObject::PointsWereChanged(); +00565 rpatch-><a class="code" href="class_RPatchMesh.html#a11">InvalidateBindingPos</a> (); +00566 } +00567 +00568 <font class="comment">// --------------------------------------------------</font> +00569 +<a name="l00570"></a><a class="code" href="class_RPO.html#d0">00570</a> <font class="keywordtype">bool</font> <a class="code" href="class_RPO.html#d0">RPO::isZone</a> (INode& node, TimeValue time)<font class="keyword"> +</font>00571 <font class="keyword"></font>{ +00572 <font class="comment">// Result false by default</font> +00573 <font class="keywordtype">bool</font> bRet=<font class="keyword">false</font>; +00574 +00575 <font class="comment">// Eval the object a time</font> +00576 ObjectState os = node.EvalWorldState(time); +00577 +00578 <font class="comment">// Object exist ?</font> +00579 <font class="keywordflow">if</font> (os.obj) +00580 { +00581 <font class="comment">// Object can convert itself to NeL patchmesh ?</font> +00582 <font class="keywordflow">if</font> (os.obj-><a class="code" href="class_RPO.html#a11">CanConvertToType</a>(RYKOLPATCHOBJ_CLASS_ID)) +00583 bRet=<font class="keyword">true</font>; +00584 } +00585 +00586 <font class="comment">// Return result</font> +00587 <font class="keywordflow">return</font> bRet; +00588 } +00589 +00590 <font class="comment">// --------------------------------------------------</font> +00591 +</div></pre> + +<!-- footer --> +<BR><FONT Size=+5> </FONT> +</TD> +<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD> +</TR> +</TABLE> +</BODY> +</HTML> |