Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 3988

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crystal Space 1.2.1: imesh/thing.h Source File (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="classes.html"><span>Classes</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>imesh/thing.h</h1><a href="thing_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">    Copyright (C) 1998-2003 by Jorrit Tyberghein</span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">    This library is free software; you can redistribute it and/or</span>
<a name="l00005"></a>00005 <span class="comment">    modify it under the terms of the GNU Library General Public</span>
<a name="l00006"></a>00006 <span class="comment">    License as published by the Free Software Foundation; either</span>
<a name="l00007"></a>00007 <span class="comment">    version 2 of the License, or (at your option) any later version.</span>
<a name="l00008"></a>00008 <span class="comment"></span>
<a name="l00009"></a>00009 <span class="comment">    This library is distributed in the hope that it will be useful,</span>
<a name="l00010"></a>00010 <span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00011"></a>00011 <span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00012"></a>00012 <span class="comment">    Library General Public License for more details.</span>
<a name="l00013"></a>00013 <span class="comment"></span>
<a name="l00014"></a>00014 <span class="comment">    You should have received a copy of the GNU Library General Public</span>
<a name="l00015"></a>00015 <span class="comment">    License along with this library; if not, write to the Free</span>
<a name="l00016"></a>00016 <span class="comment">    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</span>
<a name="l00017"></a>00017 <span class="comment">*/</span>
<a name="l00018"></a>00018 
<a name="l00019"></a>00019 <span class="preprocessor">#ifndef __CS_IMESH_THING_H__</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define __CS_IMESH_THING_H__</span>
<a name="l00021"></a>00021 <span class="preprocessor"></span>
<a name="l00022"></a>00022 <span class="preprocessor">#include "<a class="code" href="scf_8h.html" title="Crystal Space Shared Class Facility (SCF).">csutil/scf.h</a>"</span>
<a name="l00023"></a>00023 <span class="preprocessor">#include "<a class="code" href="image_8h.html" title="Image interface.">igraphic/image.h</a>"</span>
<a name="l00024"></a>00024 
<a name="l00033"></a>00033 <span class="keyword">struct </span><a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>;
<a name="l00034"></a>00034 <span class="keyword">struct </span><a class="code" href="structiMeshObject.html" title="This is a general mesh object that the engine can interact with.">iMeshObject</a>;
<a name="l00035"></a>00035 <span class="keyword">struct </span><a class="code" href="structiMeshObjectFactory.html" title="This object is a factory which can generate mesh objects of a certain type.">iMeshObjectFactory</a>;
<a name="l00036"></a>00036 <span class="keyword">struct </span><a class="code" href="structiRenderBuffer.html" title="This is a general buffer.">iRenderBuffer</a>;
<a name="l00037"></a>00037 <span class="keyword">struct </span><a class="code" href="structiThingState.html" title="This is the state interface to access the internals of a thing mesh object.">iThingState</a>;
<a name="l00038"></a>00038 <span class="keyword">struct </span><a class="code" href="structiThingFactoryState.html" title="This is the state interface to access the internals of a thing mesh factory.">iThingFactoryState</a>;
<a name="l00039"></a>00039 
<a name="l00040"></a>00040 <span class="keyword">class </span><a class="code" href="classcsFlags.html" title="Set of flags which can be accessed through masks.">csFlags</a>;
<a name="l00041"></a>00041 <span class="keyword">class </span><a class="code" href="classcsMatrix3.html" title="A 3x3 matrix.">csMatrix3</a>;
<a name="l00042"></a>00042 <span class="keyword">class </span><a class="code" href="classcsPlane3.html" title="A plane in 3D space.">csPlane3</a>;
<a name="l00043"></a>00043 <span class="keyword">class </span><a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>;
<a name="l00044"></a>00044 <span class="keyword">class </span><a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>;
<a name="l00045"></a>00045 
<a name="l00049"></a><a class="code" href="structcsPolygonRange.html">00049</a> <span class="keyword">struct </span><a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>
<a name="l00050"></a>00050 {
<a name="l00051"></a><a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">00051</a>   <span class="keywordtype">int</span> <a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">start</a>, <a class="code" href="structcsPolygonRange.html#f7062769ecbe7d6e73b0dbc01d713212">end</a>;
<a name="l00052"></a><a class="code" href="structcsPolygonRange.html#30fccb426f581f367b9e0872ec3334ad">00052</a>   <a class="code" href="structcsPolygonRange.html#30fccb426f581f367b9e0872ec3334ad">csPolygonRange</a> (<span class="keywordtype">int</span> <a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">start</a>, <span class="keywordtype">int</span> <a class="code" href="structcsPolygonRange.html#f7062769ecbe7d6e73b0dbc01d713212">end</a>)
<a name="l00053"></a>00053   {
<a name="l00054"></a>00054     <a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">csPolygonRange::start</a> = start;
<a name="l00055"></a>00055     <a class="code" href="structcsPolygonRange.html#f7062769ecbe7d6e73b0dbc01d713212">csPolygonRange::end</a> = end;
<a name="l00056"></a>00056   }
<a name="l00057"></a><a class="code" href="structcsPolygonRange.html#651210f2296304ec811ea8176eff4004">00057</a>   <span class="keywordtype">void</span> <a class="code" href="structcsPolygonRange.html#651210f2296304ec811ea8176eff4004">Set</a> (<span class="keywordtype">int</span> <a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">start</a>, <span class="keywordtype">int</span> <a class="code" href="structcsPolygonRange.html#f7062769ecbe7d6e73b0dbc01d713212">end</a>)
<a name="l00058"></a>00058   {
<a name="l00059"></a>00059     <a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">csPolygonRange::start</a> = start;
<a name="l00060"></a>00060     <a class="code" href="structcsPolygonRange.html#f7062769ecbe7d6e73b0dbc01d713212">csPolygonRange::end</a> = end;
<a name="l00061"></a>00061   }
<a name="l00062"></a><a class="code" href="structcsPolygonRange.html#3845414905cac97575377b09fc5358c9">00062</a>   <span class="keywordtype">void</span> <a class="code" href="structcsPolygonRange.html#651210f2296304ec811ea8176eff4004">Set</a> (<span class="keywordtype">int</span> idx)
<a name="l00063"></a>00063   {
<a name="l00064"></a>00064     <a class="code" href="structcsPolygonRange.html#7269a7b86d8a5cb3317aa4199c917515">csPolygonRange::start</a> = idx;
<a name="l00065"></a>00065     <a class="code" href="structcsPolygonRange.html#f7062769ecbe7d6e73b0dbc01d713212">csPolygonRange::end</a> = idx;
<a name="l00066"></a>00066   }
<a name="l00067"></a>00067 };
<a name="l00068"></a>00068 
<a name="l00075"></a><a class="code" href="group__meshplugins.html#g785e76fb2bbd8af48c4919d315d1d936">00075</a> <span class="preprocessor">#define CS_POLY_LIGHTING 0x00000001</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span>
<a name="l00080"></a><a class="code" href="group__meshplugins.html#ga94c4f64d2258575754e840df308754c">00080</a> <span class="preprocessor">#define CS_POLY_COLLDET 0x00000002</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span>
<a name="l00085"></a><a class="code" href="group__meshplugins.html#ga443a016d9a4c6e1f6c4d2409cabf58f">00085</a> <span class="preprocessor">#define CS_POLY_VISCULL 0x00000004</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>
<a name="l00094"></a><a class="code" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304">00094</a> <span class="preprocessor">#define CS_POLYRANGE(s1,s2) csPolygonRange (s1, s2)</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span>
<a name="l00098"></a><a class="code" href="group__meshplugins.html#ga615294f72135020101807d8b8631311">00098</a> <span class="preprocessor">#define CS_POLYRANGE_SINGLE(idx) csPolygonRange (idx, idx)</span>
<a name="l00099"></a>00099 <span class="preprocessor"></span>
<a name="l00102"></a><a class="code" href="group__meshplugins.html#ge88034c04fb44285f1d003617e2580e1">00102</a> <span class="preprocessor">#define CS_POLYRANGE_LAST csPolygonRange (-1, -1)</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span>
<a name="l00106"></a><a class="code" href="group__meshplugins.html#g40261d7889d8046cd9ef1869e1a1fca3">00106</a> <span class="preprocessor">#define CS_POLYRANGE_ALL csPolygonRange (0, 2000000000)</span>
<a name="l00107"></a>00107 <span class="preprocessor"></span>
<a name="l00112"></a><a class="code" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c">00112</a> <span class="preprocessor">#define CS_POLYINDEX_LAST -1</span>
<a name="l00113"></a>00113 <span class="preprocessor"></span>
<a name="l00122"></a><a class="code" href="group__meshplugins.html#g8406796c090505e26463aed79c333aeb">00122</a> <span class="preprocessor">#define CS_THING_NOCOMPRESS 0x00010000</span>
<a name="l00123"></a>00123 <span class="preprocessor"></span>
<a name="l00131"></a><a class="code" href="group__meshplugins.html#gc5f2b661887fad9b8c86b4a11e4a451e">00131</a> <span class="preprocessor">#define CS_THING_MOVE_NEVER 0</span>
<a name="l00132"></a><a class="code" href="group__meshplugins.html#g657c1d04bda160221a9b0f06c7637757">00132</a> <span class="preprocessor"></span><span class="preprocessor">#define CS_THING_MOVE_OCCASIONAL 2</span>
<a name="l00133"></a>00133 <span class="preprocessor"></span>
<a name="l00152"></a><a class="code" href="structiPolygonHandle.html">00152</a> <span class="keyword">struct </span><a class="code" href="structiPolygonHandle.html" title="This is an interface that can be used to represent a polygon in situations where...">iPolygonHandle</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>
<a name="l00153"></a>00153 {
<a name="l00154"></a>00154   SCF_INTERFACE (<a class="code" href="structiPolygonHandle.html" title="This is an interface that can be used to represent a polygon in situations where...">iPolygonHandle</a>, 1, 0, 0);
<a name="l00155"></a>00155 
<a name="l00160"></a>00160   <span class="keyword">virtual</span> <a class="code" href="structiThingFactoryState.html" title="This is the state interface to access the internals of a thing mesh factory.">iThingFactoryState</a>* <a class="code" href="structiPolygonHandle.html#7ff071c0ee24633fc8b1e9789581fb8b" title="Get the factory state for this polygon.">GetThingFactoryState</a> () <span class="keyword">const</span> = 0;
<a name="l00161"></a>00161 
<a name="l00166"></a>00166   <span class="keyword">virtual</span> <a class="code" href="structiMeshObjectFactory.html" title="This object is a factory which can generate mesh objects of a certain type.">iMeshObjectFactory</a>* <a class="code" href="structiPolygonHandle.html#b24c27b9390b466b0e4f42d2ad82ad1d" title="Get the mesh object factory for this polygon.">GetMeshObjectFactory</a> () <span class="keyword">const</span> = 0;
<a name="l00167"></a>00167 
<a name="l00172"></a>00172   <span class="keyword">virtual</span> <a class="code" href="structiThingState.html" title="This is the state interface to access the internals of a thing mesh object.">iThingState</a>* <a class="code" href="structiPolygonHandle.html#1449bea0c51b37261b11bb670cca80d6" title="Get the instance of this polygon.">GetThingState</a> () <span class="keyword">const</span> = 0;
<a name="l00173"></a>00173 
<a name="l00178"></a>00178   <span class="keyword">virtual</span> <a class="code" href="structiMeshObject.html" title="This is a general mesh object that the engine can interact with.">iMeshObject</a>* <a class="code" href="structiPolygonHandle.html#4c030e3fec7efe91423cee5852c28575" title="Get the mesh object of this polygon.">GetMeshObject</a> () <span class="keyword">const</span> = 0;
<a name="l00179"></a>00179 
<a name="l00183"></a>00183   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiPolygonHandle.html#60585ad3aa1f0c852d144b9dc0110c8e" title="Get the polygon index which this polygon handle represents.">GetIndex</a> () <span class="keyword">const</span> = 0;
<a name="l00184"></a>00184 };
<a name="l00185"></a>00185 
<a name="l00186"></a>00186 
<a name="l00203"></a><a class="code" href="structiThingFactoryState.html">00203</a> <span class="keyword">struct </span><a class="code" href="structiThingFactoryState.html" title="This is the state interface to access the internals of a thing mesh factory.">iThingFactoryState</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>
<a name="l00204"></a>00204 {
<a name="l00205"></a>00205   SCF_INTERFACE(<a class="code" href="structiThingFactoryState.html" title="This is the state interface to access the internals of a thing mesh factory.">iThingFactoryState</a>, 2, 0, 1);
<a name="l00206"></a>00206 
<a name="l00215"></a>00215   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#8faa18b1b64fd34115174e703adac632" title="Compress the vertex table so that all nearly identical vertices are compressed.">CompressVertices</a> () = 0;
<a name="l00216"></a>00216 
<a name="l00218"></a>00218   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#c04a24183471d684c5515c2e82ed9d7c" title="Query number of polygons in this thing.">GetPolygonCount</a> () = 0;
<a name="l00220"></a>00220   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#bfec158dc6b52a6ae3312f46610885a9" title="Delete a polygon given an index.">RemovePolygon</a> (<span class="keywordtype">int</span> idx) = 0;
<a name="l00222"></a>00222   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#f7d0c13e10cf27e1fff40fd04958a45a" title="Delete all polygons.">RemovePolygons</a> () = 0;
<a name="l00223"></a>00223 
<a name="l00225"></a>00225   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#0dcfefb5551a26a95d9c8f44ea3a95f7" title="Find a polygon index with a name.">FindPolygonByName</a> (<span class="keyword">const</span> <span class="keywordtype">char</span>* name) = 0;
<a name="l00226"></a>00226 
<a name="l00231"></a>00231   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#b690d2f74ebcb327688c2aa6c1b95414" title="Add an empty polygon.">AddEmptyPolygon</a> () = 0;
<a name="l00232"></a>00232 
<a name="l00243"></a>00243   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#ca8cdb92b550a8981c638ce4706e7927" title="Add a triangle.">AddTriangle</a> (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2,
<a name="l00244"></a>00244         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v3) = 0;
<a name="l00256"></a>00256   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#c1929d42ac17fb2526f8fa0ef158b774" title="Add a quad.">AddQuad</a> (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2,
<a name="l00257"></a>00257         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v3, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v4) = 0;
<a name="l00258"></a>00258 
<a name="l00269"></a>00269   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#7bbca8871ce7ed9a85ca0d6e9b7a895d" title="Add a general polygon.">AddPolygon</a> (<a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>* vertices, <span class="keywordtype">int</span> num) = 0;
<a name="l00270"></a>00270 
<a name="l00281"></a>00281   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#7bbca8871ce7ed9a85ca0d6e9b7a895d" title="Add a general polygon.">AddPolygon</a> (<span class="keywordtype">int</span> num, ...) = 0;
<a name="l00282"></a>00282 
<a name="l00293"></a>00293   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#2b55c3fd2e0f413bb2fbd12518cecb85" title="Add a box that can be seen from the outside.">AddOutsideBox</a> (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; bmin, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; bmax) = 0;
<a name="l00294"></a>00294 
<a name="l00305"></a>00305   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#e67a3148c38b0894d67c9ce1233d6d65" title="Add a box that can be seen from the inside.">AddInsideBox</a> (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; bmin, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; bmax) = 0;
<a name="l00306"></a>00306 
<a name="l00313"></a>00313   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#648dab4cfacc7cef54b488a9d9f6e8dc" title="Set the name of all polygons in the given range.">SetPolygonName</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00314"></a>00314         <span class="keyword">const</span> <span class="keywordtype">char</span>* name) = 0;
<a name="l00315"></a>00315 
<a name="l00321"></a>00321   <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="structiThingFactoryState.html#beca44381e78caf2a6b0332cd01ce647" title="Get the name of the specified polygon.">GetPolygonName</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00322"></a>00322 
<a name="l00333"></a>00333   <span class="keyword">virtual</span> <a class="code" href="classcsPtr.html" title="A pointer encapsulator.">csPtr&lt;iPolygonHandle&gt;</a> <a class="code" href="structiThingFactoryState.html#24b669ebb0cb6002c192362e3264ece8" title="Create a polygon handle that can be used to refer to some polygon.">CreatePolygonHandle</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00334"></a>00334 
<a name="l00341"></a>00341   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#fc4bb06a10556b414b4e2cc3aa13ce8f" title="Set the material of all polygons in the given range.">SetPolygonMaterial</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00342"></a>00342         <a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>* material) = 0;
<a name="l00343"></a>00343 
<a name="l00349"></a>00349   <span class="keyword">virtual</span> <a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>* <a class="code" href="structiThingFactoryState.html#1b9c9ba1eb73c11026f33f712416a6b4" title="Get the material for the specified polygon.">GetPolygonMaterial</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00350"></a>00350 
<a name="l00357"></a>00357   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#b1dde02003de8b3ca0d90a0ad2553c84" title="Add a vertex to all polygons in the given range.">AddPolygonVertex</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00358"></a>00358         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; vt) = 0;
<a name="l00359"></a>00359 
<a name="l00366"></a>00366   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#b1dde02003de8b3ca0d90a0ad2553c84" title="Add a vertex to all polygons in the given range.">AddPolygonVertex</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range, <span class="keywordtype">int</span> vt) = 0;
<a name="l00367"></a>00367 
<a name="l00377"></a>00377   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#2e413defc63d70df2f829ebaf325e3db" title="Set the given polygon index table for all polygons in the given range.">SetPolygonVertexIndices</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00378"></a>00378         <span class="keywordtype">int</span> num, <span class="keywordtype">int</span>* indices) = 0;
<a name="l00379"></a>00379 
<a name="l00385"></a>00385   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#845f0112dda03278a812fbf0ce5e53e0" title="Get number of vertices for polygon.">GetPolygonVertexCount</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00386"></a>00386 
<a name="l00393"></a>00393   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; <a class="code" href="structiThingFactoryState.html#98df348d1cf9cba97e3d465265b05dd3" title="Get a vertex from a polygon.">GetPolygonVertex</a> (<span class="keywordtype">int</span> polygon_idx,
<a name="l00394"></a>00394         <span class="keywordtype">int</span> vertex_idx) = 0;
<a name="l00395"></a>00395 
<a name="l00401"></a>00401   <span class="keyword">virtual</span> <span class="keywordtype">int</span>* <a class="code" href="structiThingFactoryState.html#c4d48d0780be1e112ba4aab24c473f54" title="Get table with vertex indices from polygon.">GetPolygonVertexIndices</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00402"></a>00402 
<a name="l00416"></a>00416   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2" title="Set texture mapping of all polygons in the given range to use the transform.">SetPolygonTextureMapping</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00417"></a>00417         <span class="keyword">const</span> <a class="code" href="classcsMatrix3.html" title="A 3x3 matrix.">csMatrix3</a>&amp; m, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v) = 0;
<a name="l00418"></a>00418 
<a name="l00430"></a>00430   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2" title="Set texture mapping of all polygons in the given range to use the transform.">SetPolygonTextureMapping</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00431"></a>00431         <span class="keyword">const</span> <a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>&amp; uv1, <span class="keyword">const</span> <a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>&amp; uv2, <span class="keyword">const</span> <a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>&amp; uv3) = 0;
<a name="l00432"></a>00432 
<a name="l00449"></a>00449   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2" title="Set texture mapping of all polygons in the given range to use the transform.">SetPolygonTextureMapping</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00450"></a>00450         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; p1, <span class="keyword">const</span> <a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>&amp; uv1,
<a name="l00451"></a>00451         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; p2, <span class="keyword">const</span> <a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>&amp; uv2,
<a name="l00452"></a>00452         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; p3, <span class="keyword">const</span> <a class="code" href="classcsVector2.html" title="A 2D vector.">csVector2</a>&amp; uv3) = 0;
<a name="l00453"></a>00453 
<a name="l00472"></a>00472   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2" title="Set texture mapping of all polygons in the given range to use the transform.">SetPolygonTextureMapping</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00473"></a>00473         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v_orig, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v, <span class="keywordtype">float</span> len) = 0;
<a name="l00474"></a>00474 
<a name="l00495"></a>00495   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2" title="Set texture mapping of all polygons in the given range to use the transform.">SetPolygonTextureMapping</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00496"></a>00496         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v_orig,
<a name="l00497"></a>00497         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v1, <span class="keywordtype">float</span> len1,
<a name="l00498"></a>00498         <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v2, <span class="keywordtype">float</span> len2) = 0;
<a name="l00499"></a>00499 
<a name="l00517"></a>00517   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2" title="Set texture mapping of all polygons in the given range to use the transform.">SetPolygonTextureMapping</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00518"></a>00518         <span class="keywordtype">float</span> len) = 0;
<a name="l00519"></a>00519 
<a name="l00527"></a>00527   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#12876bfa62f9642c4a22ab0c0c4a96a5" title="Get the texture space information for the specified polygon.">GetPolygonTextureMapping</a> (<span class="keywordtype">int</span> polygon_idx,
<a name="l00528"></a>00528         <a class="code" href="classcsMatrix3.html" title="A 3x3 matrix.">csMatrix3</a>&amp; m, <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v) = 0;
<a name="l00529"></a>00529 
<a name="l00537"></a>00537   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#a048fcf1e5a1b574c9212ef41bded194" title="Enable or disable texture mapping for the range of polygons.">SetPolygonTextureMappingEnabled</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00538"></a>00538         <span class="keywordtype">bool</span> enabled) = 0;
<a name="l00539"></a>00539 
<a name="l00545"></a>00545   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#1f06dd5bd26d152b7fcaf97ddedd5963" title="Check if texture mapping is enabled for the specified polygon.">IsPolygonTextureMappingEnabled</a> (<span class="keywordtype">int</span> polygon_idx) <span class="keyword">const</span> = 0;
<a name="l00546"></a>00546 
<a name="l00554"></a>00554   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#eb47d2dc6c88001b0b1ff4a47159b7c8" title="Set the given flags to all polygons in the range.">SetPolygonFlags</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range, <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> flags) = 0;
<a name="l00555"></a>00555 
<a name="l00566"></a>00566   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#eb47d2dc6c88001b0b1ff4a47159b7c8" title="Set the given flags to all polygons in the range.">SetPolygonFlags</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range, <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> mask,
<a name="l00567"></a>00567         <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> flags) = 0;
<a name="l00568"></a>00568 
<a name="l00576"></a>00576   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#61f76fe818ab455c32f2320811f610f0" title="Reset the given flags to all polygons in the range.">ResetPolygonFlags</a> (<span class="keyword">const</span> <a class="code" href="structcsPolygonRange.html" title="A range structure for specifing polygon ranges.">csPolygonRange</a>&amp; range,
<a name="l00577"></a>00577         <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> flags) = 0;
<a name="l00578"></a>00578 
<a name="l00584"></a>00584   <span class="keyword">virtual</span> <a class="code" href="classcsFlags.html" title="Set of flags which can be accessed through masks.">csFlags</a>&amp; <a class="code" href="structiThingFactoryState.html#feb7d017deb6cd6ce18ea04f87d9a622" title="Get the flags of the specified polygon.">GetPolygonFlags</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00585"></a>00585 
<a name="l00591"></a>00591   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsPlane3.html" title="A plane in 3D space.">csPlane3</a>&amp; <a class="code" href="structiThingFactoryState.html#e6d67c5dd4011d30be5151885f8283ac" title="Get object space plane of the specified polygon.">GetPolygonObjectPlane</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00592"></a>00592 
<a name="l00598"></a>00598   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#c285950cf84f32090c5547c1cc0a2b3d" title="Return true if this polygon or the texture it uses is transparent.">IsPolygonTransparent</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00599"></a>00599 
<a name="l00607"></a>00607   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#74453e1bfbfe89a83e6e1b5dc5fe833c" title="Return true if an object space point is on (or very nearly on) the given polygon...">PointOnPolygon</a> (<span class="keywordtype">int</span> polygon_idx, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; v) = 0;
<a name="l00608"></a>00608 
<a name="l00610"></a>00610   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#49070a402854cf8f48e999fc87d4a2b6" title="Query number of vertices in set.">GetVertexCount</a> () <span class="keyword">const</span> = 0;
<a name="l00612"></a>00612   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> &amp;<a class="code" href="structiThingFactoryState.html#a1873a0fd7ae88f2090873976b6303c7" title="Get the given vertex coordinates in object space.">GetVertex</a> (<span class="keywordtype">int</span> idx) <span class="keyword">const</span> = 0;
<a name="l00614"></a>00614   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>* <a class="code" href="structiThingFactoryState.html#71110e5dc3620f4f8525af770baea100" title="Get the vertex coordinates in object space.">GetVertices</a> () <span class="keyword">const</span> = 0;
<a name="l00616"></a>00616   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingFactoryState.html#ca266e218a1432ef9a5ef968a40983b5" title="Create a vertex given his object-space coords and return his index.">CreateVertex</a> (<span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; vt) = 0;
<a name="l00618"></a>00618   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#bfcf9049be84eb95b38d681dcc254173" title="Set the object space vertices for a given vertex.">SetVertex</a> (<span class="keywordtype">int</span> idx, <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>&amp; vt) = 0;
<a name="l00624"></a>00624   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#c84fad9d2502cf40da0428505b6bd82a" title="Delete a vertex.">DeleteVertex</a> (<span class="keywordtype">int</span> idx) = 0;
<a name="l00632"></a>00632   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#25c2ee0e7025d643d67e0f70f95f0685" title="Delete a range of vertices (inclusive).">DeleteVertices</a> (<span class="keywordtype">int</span> from, <span class="keywordtype">int</span> to) = 0;
<a name="l00633"></a>00633 
<a name="l00637"></a>00637   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#eec46df82c054b1026a6ef52658523dd" title="Sets the smoothing flag.">SetSmoothingFlag</a> (<span class="keywordtype">bool</span> smoothing) = 0;
<a name="l00638"></a>00638 
<a name="l00642"></a>00642   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#a2e73872af04ec5c54d3babc3a2c858d" title="Gets the smoothing flag.">GetSmoothingFlag</a> () = 0;
<a name="l00643"></a>00643   
<a name="l00647"></a>00647   <span class="keyword">virtual</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>* <a class="code" href="structiThingFactoryState.html#778d9b7839341ad53590dfbb53b10c80" title="Gets the normals.">GetNormals</a> () = 0;
<a name="l00648"></a>00648 
<a name="l00652"></a>00652   <span class="keyword">virtual</span> <span class="keywordtype">float</span> <a class="code" href="structiThingFactoryState.html#081e567b148271c7c499fac5fd3af495" title="Get cosinus factor.">GetCosinusFactor</a> () <span class="keyword">const</span> = 0;
<a name="l00658"></a>00658   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingFactoryState.html#38d032906ee6fec3f52ad19f73c35408" title="Set cosinus factor.">SetCosinusFactor</a> (<span class="keywordtype">float</span> cosfact) = 0;
<a name="l00659"></a>00659 
<a name="l00660"></a>00660   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> AddPolygonRenderBuffer (<span class="keywordtype">int</span> polygon_idx, <span class="keyword">const</span> <span class="keywordtype">char</span>* name,
<a name="l00661"></a>00661     <a class="code" href="structiRenderBuffer.html" title="This is a general buffer.">iRenderBuffer</a>* buffer) = 0;
<a name="l00662"></a>00662     
<a name="l00674"></a>00674   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingFactoryState.html#f15d59c15b7f0a6be246d7063d6f63d6" title="Query the lightmap layout of a polygon.">GetLightmapLayout</a> (<span class="keywordtype">int</span> polygon_idx, <span class="keywordtype">size_t</span>&amp; slm, 
<a name="l00675"></a>00675     <a class="code" href="classcsRect.html" title="Rectangle class: simple class for manipulating 2D rectangles.">csRect</a>&amp; slmSubRect, <span class="keywordtype">float</span>* slmCoord) = 0;
<a name="l00677"></a>00677 };
<a name="l00678"></a>00678 
<a name="l00694"></a><a class="code" href="structiThingState.html">00694</a> <span class="keyword">struct </span><a class="code" href="structiThingState.html" title="This is the state interface to access the internals of a thing mesh object.">iThingState</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>
<a name="l00695"></a>00695 {
<a name="l00696"></a>00696   SCF_INTERFACE (<a class="code" href="structiThingState.html" title="This is the state interface to access the internals of a thing mesh object.">iThingState</a>, 1, 0, 2);
<a name="l00697"></a>00697 
<a name="l00699"></a>00699   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a> &amp;<a class="code" href="structiThingState.html#1f6f5796cc92ef11335bbf8506f7f1c0" title="Get the given vertex coordinates in world space.">GetVertexW</a> (<span class="keywordtype">int</span> idx) <span class="keyword">const</span> = 0;
<a name="l00701"></a>00701   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsVector3.html" title="A 3D vector.">csVector3</a>* <a class="code" href="structiThingState.html#8a0ecd537444489e57d416fba0e75c31" title="Get the vertex coordinates in world space.">GetVerticesW</a> () <span class="keyword">const</span> = 0;
<a name="l00702"></a>00702 
<a name="l00706"></a>00706   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingState.html#d496f45889815176c74fb47a2873a903" title="Get the moving option.">GetMovingOption</a> () <span class="keyword">const</span> = 0;
<a name="l00707"></a>00707 
<a name="l00733"></a>00733   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingState.html#d870063248501edee17e9052b70ca42c" title="Control how this thing will be moved.">SetMovingOption</a> (<span class="keywordtype">int</span> opt) = 0;
<a name="l00734"></a>00734 
<a name="l00743"></a>00743   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingState.html#763857816204a22efdee7b9b4c69ad03" title="Prepare the thing to be ready for use.">Prepare</a> () = 0;
<a name="l00744"></a>00744 
<a name="l00749"></a>00749   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingState.html#4df18bd24a5294fd4156e255f5fd51d8" title="Reset the prepare flag so that this Thing can be re-prepared.">Unprepare</a> () = 0;
<a name="l00750"></a>00750 
<a name="l00758"></a>00758   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingState.html#66e43371fb866d81529590e53a570132" title="Scan all polygons and replace the given material with a new material.">ReplaceMaterial</a> (<a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>* oldmat,
<a name="l00759"></a>00759         <a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>* newmat) = 0;
<a name="l00760"></a>00760 
<a name="l00765"></a>00765   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingState.html#e6be96b517f1fcac42eb8a4b70d6b6a1" title="Clear all replaced materials (i.e.">ClearReplacedMaterials</a> () = 0;
<a name="l00766"></a>00766 
<a name="l00768"></a>00768   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingState.html#c15eb7dfa4e3df139feb089535768779" title="Set mix mode.">SetMixMode</a> (<a class="code" href="group__util.html#g91ad9478d81a7aaf2593e8d9c3d06a14" title="Shortcut for default unsigned int.">uint</a> mode) = 0;
<a name="l00770"></a>00770   <span class="keyword">virtual</span> <a class="code" href="group__util.html#g91ad9478d81a7aaf2593e8d9c3d06a14" title="Shortcut for default unsigned int.">uint</a> <a class="code" href="structiThingState.html#cec3362549cba31dc31dca81ae96c33e" title="Get mix mode.">GetMixMode</a> () <span class="keyword">const</span> = 0;
<a name="l00771"></a>00771 
<a name="l00781"></a>00781   <span class="keyword">virtual</span> <a class="code" href="classcsPtr.html" title="A pointer encapsulator.">csPtr&lt;iPolygonHandle&gt;</a> <a class="code" href="structiThingState.html#45db8c0af1a30e76ce951fd4d3835ac6" title="Create a polygon handle that can be used to refer to some polygon.">CreatePolygonHandle</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00782"></a>00782 
<a name="l00788"></a>00788   <span class="keyword">virtual</span> <span class="keyword">const</span> <a class="code" href="classcsPlane3.html" title="A plane in 3D space.">csPlane3</a>&amp; <a class="code" href="structiThingState.html#69f598e322c126c196b3537b966addb5" title="Get world space plane of the specified polygon.">GetPolygonWorldPlane</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00789"></a>00789   
<a name="l00792"></a>00792 
<a name="l00793"></a>00793   <span class="keyword">virtual</span> <a class="code" href="classcsPtr.html" title="A pointer encapsulator.">csPtr&lt;iImage&gt;</a> <a class="code" href="structiThingState.html#6797b37b30740d0dec4f2cee389720cd" title="Get the lightmap for a specific polygon.">GetPolygonLightmap</a> (<span class="keywordtype">int</span> polygon_idx) = 0;
<a name="l00795"></a>00795   <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="structiThingState.html#156927f077264e2b2f0060b998a3e2eb" title="Query for pseudo-static lightmaps.">GetPolygonPDLight</a> (<span class="keywordtype">int</span> polygon_idx, <span class="keywordtype">size_t</span> pdlight_index, 
<a name="l00796"></a>00796     <a class="code" href="classcsRef.html" title="A smart pointer.">csRef&lt;iImage&gt;</a>&amp; map, <a class="code" href="structiLight.html" title="The iLight interface is the SCF interface for the csLight class.">iLight</a>*&amp; light) = 0;
<a name="l00802"></a>00802   <span class="keyword">virtual</span> <a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>* <a class="code" href="structiThingState.html#9cc2b03bfd914f09cd0d729f2f21a9e7" title="Return the material oldMat was replaced with (or 0 if it wasn&amp;#39;t).">GetReplacedMaterial</a> (<a class="code" href="structiMaterialWrapper.html" title="A material wrapper is an engine-level object that wraps around an actual material...">iMaterialWrapper</a>* oldMat) = 0;
<a name="l00803"></a>00803 };
<a name="l00804"></a>00804 
<a name="l00816"></a><a class="code" href="structiThingEnvironment.html">00816</a> <span class="keyword">struct </span><a class="code" href="structiThingEnvironment.html" title="This interface is implemented by the iObjectType for things.">iThingEnvironment</a> : <span class="keyword">public</span> <span class="keyword">virtual</span> <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>
<a name="l00817"></a>00817 {
<a name="l00818"></a>00818   SCF_INTERFACE (<a class="code" href="structiThingEnvironment.html" title="This interface is implemented by the iObjectType for things.">iThingEnvironment</a>, 1, 0, 0);
<a name="l00819"></a>00819 
<a name="l00823"></a>00823   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingEnvironment.html#3a881e7ff1f7a6061d4b2804523b44ff" title="Reset the thing environment (clear all stuff related to things).">Clear</a> () = 0;
<a name="l00824"></a>00824 
<a name="l00826"></a>00826   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingEnvironment.html#718c9b6ac800cf94b74ba2e428a3fcc0" title="Return the current lightmap cell size.">GetLightmapCellSize</a> () <span class="keyword">const</span> = 0;
<a name="l00828"></a>00828   <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="structiThingEnvironment.html#4d9a6f2515dd9bc2106e299fbe9394ed" title="Set lightmap cell size.">SetLightmapCellSize</a> (<span class="keywordtype">int</span> Size) = 0;
<a name="l00830"></a>00830   <span class="keyword">virtual</span> <span class="keywordtype">int</span> <a class="code" href="structiThingEnvironment.html#7471de2f8dbc90ac2585fc1c212461e2" title="Return default lightmap cell size.">GetDefaultLightmapCellSize</a> () <span class="keyword">const</span> = 0;
<a name="l00831"></a>00831 };
<a name="l00832"></a>00832 
<a name="l00835"></a>00835 <span class="preprocessor">#endif // __CS_IMESH_THING_H__</span>
</pre></div><hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>