Sophie

Sophie

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

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: iThingFactoryState Struct Reference (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 class="current"><a href="classes.html"><span>Classes</span></a></li>
    <li><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<div class="tabs">
  <ul>
    <li><a href="classes.html"><span>Alphabetical&nbsp;List</span></a></li>
    <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
    <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
    <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
  </ul>
</div>
<h1>iThingFactoryState Struct Reference<br>
<small>
[<a class="el" href="group__meshplugins.html">Mesh plugins</a>]</small>
</h1><!-- doxytag: class="iThingFactoryState" --><!-- doxytag: inherits="iBase" -->This is the state interface to access the internals of a thing mesh factory.  
<a href="#_details">More...</a>
<p>
<code>#include &lt;<a class="el" href="thing_8h-source.html">imesh/thing.h</a>&gt;</code>
<p>
<div class="dynheader">
Inheritance diagram for iThingFactoryState:</div>
<div class="dynsection">
<p><center><img src="structiThingFactoryState__inherit__graph.png" border="0" usemap="#iThingFactoryState__inherit__map" alt="Inheritance graph"></center>
<map name="iThingFactoryState__inherit__map">
<area shape="rect" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one..." alt="" coords="48,7,104,33"></map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center></div>

<p>
<a href="structiThingFactoryState-members.html">List of all members.</a><table border="0" cellpadding="0" cellspacing="0">
<tr><td></td></tr>
<tr><td colspan="2"><br><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#b690d2f74ebcb327688c2aa6c1b95414">AddEmptyPolygon</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add an empty polygon.  <a href="#b690d2f74ebcb327688c2aa6c1b95414"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#e67a3148c38b0894d67c9ce1233d6d65">AddInsideBox</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;bmin, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;bmax)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a box that can be seen from the inside.  <a href="#e67a3148c38b0894d67c9ce1233d6d65"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#2b55c3fd2e0f413bb2fbd12518cecb85">AddOutsideBox</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;bmin, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;bmax)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a box that can be seen from the outside.  <a href="#2b55c3fd2e0f413bb2fbd12518cecb85"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#5313717282b385729b6464aafd27ad0a">AddPolygon</a> (int num,...)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a general polygon using vertex indices.  <a href="#5313717282b385729b6464aafd27ad0a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#7bbca8871ce7ed9a85ca0d6e9b7a895d">AddPolygon</a> (<a class="el" href="classcsVector3.html">csVector3</a> *vertices, int num)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a general polygon.  <a href="#7bbca8871ce7ed9a85ca0d6e9b7a895d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#688ca825213920d1909c3469dcc61f65">AddPolygonVertex</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, int vt)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a vertex index to all polygons in the given range.  <a href="#688ca825213920d1909c3469dcc61f65"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#b1dde02003de8b3ca0d90a0ad2553c84">AddPolygonVertex</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;vt)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a vertex to all polygons in the given range.  <a href="#b1dde02003de8b3ca0d90a0ad2553c84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#c1929d42ac17fb2526f8fa0ef158b774">AddQuad</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v1, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v2, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v3, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v4)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a quad.  <a href="#c1929d42ac17fb2526f8fa0ef158b774"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#ca8cdb92b550a8981c638ce4706e7927">AddTriangle</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v1, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v2, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v3)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Add a triangle.  <a href="#ca8cdb92b550a8981c638ce4706e7927"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#8faa18b1b64fd34115174e703adac632">CompressVertices</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Compress the vertex table so that all nearly identical vertices are compressed.  <a href="#8faa18b1b64fd34115174e703adac632"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsPtr.html">csPtr</a><br>
&lt; <a class="el" href="structiPolygonHandle.html">iPolygonHandle</a> &gt;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#24b669ebb0cb6002c192362e3264ece8">CreatePolygonHandle</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a polygon handle that can be used to refer to some polygon.  <a href="#24b669ebb0cb6002c192362e3264ece8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#ca266e218a1432ef9a5ef968a40983b5">CreateVertex</a> (const <a class="el" href="classcsVector3.html">csVector3</a> &amp;vt)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Create a vertex given his object-space coords and return his index.  <a href="#ca266e218a1432ef9a5ef968a40983b5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#c84fad9d2502cf40da0428505b6bd82a">DeleteVertex</a> (int idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a vertex.  <a href="#c84fad9d2502cf40da0428505b6bd82a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#25c2ee0e7025d643d67e0f70f95f0685">DeleteVertices</a> (int from, int to)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a range of vertices (inclusive).  <a href="#25c2ee0e7025d643d67e0f70f95f0685"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#0dcfefb5551a26a95d9c8f44ea3a95f7">FindPolygonByName</a> (const char *name)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Find a polygon index with a name.  <a href="#0dcfefb5551a26a95d9c8f44ea3a95f7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual float&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#081e567b148271c7c499fac5fd3af495">GetCosinusFactor</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get cosinus factor.  <a href="#081e567b148271c7c499fac5fd3af495"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsVector3.html">csVector3</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#778d9b7839341ad53590dfbb53b10c80">GetNormals</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the normals.  <a href="#778d9b7839341ad53590dfbb53b10c80"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#c04a24183471d684c5515c2e82ed9d7c">GetPolygonCount</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query number of polygons in this thing.  <a href="#c04a24183471d684c5515c2e82ed9d7c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <a class="el" href="classcsFlags.html">csFlags</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#feb7d017deb6cd6ce18ea04f87d9a622">GetPolygonFlags</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the flags of the specified polygon.  <a href="#feb7d017deb6cd6ce18ea04f87d9a622"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual <br>
<a class="el" href="structiMaterialWrapper.html">iMaterialWrapper</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#1b9c9ba1eb73c11026f33f712416a6b4">GetPolygonMaterial</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the material for the specified polygon.  <a href="#1b9c9ba1eb73c11026f33f712416a6b4"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const char *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#beca44381e78caf2a6b0332cd01ce647">GetPolygonName</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the name of the specified polygon.  <a href="#beca44381e78caf2a6b0332cd01ce647"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <a class="el" href="classcsPlane3.html">csPlane3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#e6d67c5dd4011d30be5151885f8283ac">GetPolygonObjectPlane</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get object space plane of the specified polygon.  <a href="#e6d67c5dd4011d30be5151885f8283ac"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#12876bfa62f9642c4a22ab0c0c4a96a5">GetPolygonTextureMapping</a> (int polygon_idx, <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;m, <a class="el" href="classcsVector3.html">csVector3</a> &amp;v)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the texture space information for the specified polygon.  <a href="#12876bfa62f9642c4a22ab0c0c4a96a5"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#98df348d1cf9cba97e3d465265b05dd3">GetPolygonVertex</a> (int polygon_idx, int vertex_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get a vertex from a polygon.  <a href="#98df348d1cf9cba97e3d465265b05dd3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#845f0112dda03278a812fbf0ce5e53e0">GetPolygonVertexCount</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get number of vertices for polygon.  <a href="#845f0112dda03278a812fbf0ce5e53e0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#c4d48d0780be1e112ba4aab24c473f54">GetPolygonVertexIndices</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get table with vertex indices from polygon.  <a href="#c4d48d0780be1e112ba4aab24c473f54"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#a2e73872af04ec5c54d3babc3a2c858d">GetSmoothingFlag</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Gets the smoothing flag.  <a href="#a2e73872af04ec5c54d3babc3a2c858d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#a1873a0fd7ae88f2090873976b6303c7">GetVertex</a> (int idx) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the given vertex coordinates in object space.  <a href="#a1873a0fd7ae88f2090873976b6303c7"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#49070a402854cf8f48e999fc87d4a2b6">GetVertexCount</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query number of vertices in set.  <a href="#49070a402854cf8f48e999fc87d4a2b6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual const <a class="el" href="classcsVector3.html">csVector3</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#71110e5dc3620f4f8525af770baea100">GetVertices</a> () const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Get the vertex coordinates in object space.  <a href="#71110e5dc3620f4f8525af770baea100"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#1f06dd5bd26d152b7fcaf97ddedd5963">IsPolygonTextureMappingEnabled</a> (int polygon_idx) const =0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Check if texture mapping is enabled for the specified polygon.  <a href="#1f06dd5bd26d152b7fcaf97ddedd5963"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#c285950cf84f32090c5547c1cc0a2b3d">IsPolygonTransparent</a> (int polygon_idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return true if this polygon or the texture it uses is transparent.  <a href="#c285950cf84f32090c5547c1cc0a2b3d"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#74453e1bfbfe89a83e6e1b5dc5fe833c">PointOnPolygon</a> (int polygon_idx, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Return true if an object space point is on (or very nearly on) the given polygon.  <a href="#74453e1bfbfe89a83e6e1b5dc5fe833c"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#bfec158dc6b52a6ae3312f46610885a9">RemovePolygon</a> (int idx)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete a polygon given an index.  <a href="#bfec158dc6b52a6ae3312f46610885a9"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#f7d0c13e10cf27e1fff40fd04958a45a">RemovePolygons</a> ()=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Delete all polygons.  <a href="#f7d0c13e10cf27e1fff40fd04958a45a"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#61f76fe818ab455c32f2320811f610f0">ResetPolygonFlags</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, <a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a> flags)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Reset the given flags to all polygons in the range.  <a href="#61f76fe818ab455c32f2320811f610f0"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#38d032906ee6fec3f52ad19f73c35408">SetCosinusFactor</a> (float cosfact)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set cosinus factor.  <a href="#38d032906ee6fec3f52ad19f73c35408"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#404b8b7220038e30ea28d2ed2a37d6cd">SetPolygonFlags</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, <a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a> mask, <a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a> flags)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the given flags to all polygons in the range.  <a href="#404b8b7220038e30ea28d2ed2a37d6cd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#eb47d2dc6c88001b0b1ff4a47159b7c8">SetPolygonFlags</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, <a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a> flags)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the given flags to all polygons in the range.  <a href="#eb47d2dc6c88001b0b1ff4a47159b7c8"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#fc4bb06a10556b414b4e2cc3aa13ce8f">SetPolygonMaterial</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, <a class="el" href="structiMaterialWrapper.html">iMaterialWrapper</a> *material)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the material of all polygons in the given range.  <a href="#fc4bb06a10556b414b4e2cc3aa13ce8f"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#648dab4cfacc7cef54b488a9d9f6e8dc">SetPolygonName</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const char *name)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the name of all polygons in the given range.  <a href="#648dab4cfacc7cef54b488a9d9f6e8dc"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#f9a010127ed1f40ea92a84a7aa8bebaa">SetPolygonTextureMapping</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, float len)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set texture mapping of all polygons in the given range to use the texture mapping as specified by the two first vertices on the polygon.  <a href="#f9a010127ed1f40ea92a84a7aa8bebaa"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#80a25ce718de599d049c408ccb01d176">SetPolygonTextureMapping</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v_orig, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v1, float len1, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v2, float len2)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set texture mapping of all polygons in the given range to use the texture mapping as specified by two vertices on the polygon.  <a href="#80a25ce718de599d049c408ccb01d176"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#6b32da7de12aff147e26f09e0dab11f6">SetPolygonTextureMapping</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v_orig, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v, float len)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set texture mapping of all polygons in the given range to use the texture mapping as specified by two vertices on the polygon.  <a href="#6b32da7de12aff147e26f09e0dab11f6"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#e654fcb46086d9b5890bdfaf65e9baf3">SetPolygonTextureMapping</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;p1, const <a class="el" href="classcsVector2.html">csVector2</a> &amp;uv1, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;p2, const <a class="el" href="classcsVector2.html">csVector2</a> &amp;uv2, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;p3, const <a class="el" href="classcsVector2.html">csVector2</a> &amp;uv3)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set texture mapping of all polygons in the given range to use the given uv coordinates for the specified three vertices of every polygon.  <a href="#e654fcb46086d9b5890bdfaf65e9baf3"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#1603ee6c389f5fc9ff30c53990802f84">SetPolygonTextureMapping</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const <a class="el" href="classcsVector2.html">csVector2</a> &amp;uv1, const <a class="el" href="classcsVector2.html">csVector2</a> &amp;uv2, const <a class="el" href="classcsVector2.html">csVector2</a> &amp;uv3)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set texture mapping of all polygons in the given range to use the given uv coordinates for the first three vertices of every polygon.  <a href="#1603ee6c389f5fc9ff30c53990802f84"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#21acd302a8564bb55749e9458ded7bf2">SetPolygonTextureMapping</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;m, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;v)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set texture mapping of all polygons in the given range to use the transform.  <a href="#21acd302a8564bb55749e9458ded7bf2"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#a048fcf1e5a1b574c9212ef41bded194">SetPolygonTextureMappingEnabled</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, bool enabled)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Enable or disable texture mapping for the range of polygons.  <a href="#a048fcf1e5a1b574c9212ef41bded194"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#2e413defc63d70df2f829ebaf325e3db">SetPolygonVertexIndices</a> (const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;range, int num, int *indices)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the given polygon index table for all polygons in the given range.  <a href="#2e413defc63d70df2f829ebaf325e3db"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#eec46df82c054b1026a6ef52658523dd">SetSmoothingFlag</a> (bool smoothing)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Sets the smoothing flag.  <a href="#eec46df82c054b1026a6ef52658523dd"></a><br></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#bfcf9049be84eb95b38d681dcc254173">SetVertex</a> (int idx, const <a class="el" href="classcsVector3.html">csVector3</a> &amp;vt)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Set the object space vertices for a given vertex.  <a href="#bfcf9049be84eb95b38d681dcc254173"></a><br></td></tr>
<tr><td colspan="2"><div class="groupHeader">Lightmap query</div></td></tr>
<tr><td class="memItemLeft" nowrap align="right" valign="top">virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="structiThingFactoryState.html#f15d59c15b7f0a6be246d7063d6f63d6">GetLightmapLayout</a> (int polygon_idx, size_t &amp;slm, <a class="el" href="classcsRect.html">csRect</a> &amp;slmSubRect, float *slmCoord)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Query the lightmap layout of a polygon.  <a href="#f15d59c15b7f0a6be246d7063d6f63d6"></a><br></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
This is the state interface to access the internals of a thing mesh factory. 
<p>
Main creators of instances implementing this interface:<ul>
<li>Thing mesh object plugin (crystalspace.mesh.object.thing)</li><li><a class="el" href="structiMeshObjectType.html#3d291b628b55f77343dfbc948ee757a0" title="Create an instance of iMeshObjectFactory.">iMeshObjectType::NewFactory()</a></li></ul>
<p>
Main ways to get pointers to this interface:<ul>
<li><a class="el" href="group__scf.html#g2e8cf383ca5045f2b0c05374ff0107c3" title="Helper function around iBase::QueryInterface.">scfQueryInterface()</a> on <a class="el" href="structiMeshFactoryWrapper.html#f21ca8291b566e9cf3722ea3067b5c5e" title="Get the iMeshObjectFactory.">iMeshFactoryWrapper::GetMeshObjectFactory()</a></li><li><a class="el" href="group__scf.html#g2e8cf383ca5045f2b0c05374ff0107c3" title="Helper function around iBase::QueryInterface.">scfQueryInterface()</a> on <a class="el" href="structiMeshObject.html#4c5ac09b770173c1e31ca45b5a99d10f" title="Get the reference to the factory that created this mesh object.">iMeshObject::GetFactory()</a></li></ul>
<p>
Main users of this interface:<ul>
<li>Thing Factory Loader plugin (crystalspace.mesh.loader.factory.thing) </li></ul>

<p>Definition at line <a class="el" href="thing_8h-source.html#l00203">203</a> of file <a class="el" href="thing_8h-source.html">thing.h</a>.</p>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="b690d2f74ebcb327688c2aa6c1b95414"></a><!-- doxytag: member="iThingFactoryState::AddEmptyPolygon" ref="b690d2f74ebcb327688c2aa6c1b95414" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddEmptyPolygon           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add an empty polygon. 
<p>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="e67a3148c38b0894d67c9ce1233d6d65"></a><!-- doxytag: member="iThingFactoryState::AddInsideBox" ref="e67a3148c38b0894d67c9ce1233d6d65" args="(const csVector3 &amp;bmin, const csVector3 &amp;bmax)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddInsideBox           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bmin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bmax</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a box that can be seen from the inside. 
<p>
This will add six polygons.<p>
By default the texture mapping is set so that the texture is aligned on the u-axis with the 'v1'-'v2' vector and the scale is set so that the texture tiles once for every unit (i.e. if you have the vertices v1 and v2 are 5 units separated from each other then the texture will repeat exactly five times between v1 and v2). <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the first created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="2b55c3fd2e0f413bb2fbd12518cecb85"></a><!-- doxytag: member="iThingFactoryState::AddOutsideBox" ref="2b55c3fd2e0f413bb2fbd12518cecb85" args="(const csVector3 &amp;bmin, const csVector3 &amp;bmax)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddOutsideBox           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bmin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>bmax</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a box that can be seen from the outside. 
<p>
This will add six polygons.<p>
By default the texture mapping is set so that the texture is aligned on the u-axis with the 'v1'-'v2' vector and the scale is set so that the texture tiles once for every unit (i.e. if you have the vertices v1 and v2 are 5 units separated from each other then the texture will repeat exactly five times between v1 and v2). <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the first created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="5313717282b385729b6464aafd27ad0a"></a><!-- doxytag: member="iThingFactoryState::AddPolygon" ref="5313717282b385729b6464aafd27ad0a" args="(int num,...)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddPolygon           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&nbsp;</td>
          <td class="paramname"> <em>...</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a general polygon using vertex indices. 
<p>
By default the texture mapping is set so that the texture is aligned on the u-axis with the 'v1'-'v2' vector and the scale is set so that the texture tiles once for every unit (i.e. if you have the vertices v1 and v2 are 5 units separated from each other then the texture will repeat exactly five times between v1 and v2). <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="7bbca8871ce7ed9a85ca0d6e9b7a895d"></a><!-- doxytag: member="iThingFactoryState::AddPolygon" ref="7bbca8871ce7ed9a85ca0d6e9b7a895d" args="(csVector3 *vertices, int num)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddPolygon           </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classcsVector3.html">csVector3</a> *&nbsp;</td>
          <td class="paramname"> <em>vertices</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a general polygon. 
<p>
By default the texture mapping is set so that the texture is aligned on the u-axis with the 'v1'-'v2' vector and the scale is set so that the texture tiles once for every unit (i.e. if you have the vertices v1 and v2 are 5 units separated from each other then the texture will repeat exactly five times between v1 and v2). <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="688ca825213920d1909c3469dcc61f65"></a><!-- doxytag: member="iThingFactoryState::AddPolygonVertex" ref="688ca825213920d1909c3469dcc61f65" args="(const csPolygonRange &amp;range, int vt)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::AddPolygonVertex           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>vt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a vertex index to all polygons in the given range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>vt</em>&nbsp;</td><td>the vertex index to be added to the polygons. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="b1dde02003de8b3ca0d90a0ad2553c84"></a><!-- doxytag: member="iThingFactoryState::AddPolygonVertex" ref="b1dde02003de8b3ca0d90a0ad2553c84" args="(const csPolygonRange &amp;range, const csVector3 &amp;vt)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::AddPolygonVertex           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>vt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a vertex to all polygons in the given range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>vt</em>&nbsp;</td><td>the vertex index to be added to the polygons. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="c1929d42ac17fb2526f8fa0ef158b774"></a><!-- doxytag: member="iThingFactoryState::AddQuad" ref="c1929d42ac17fb2526f8fa0ef158b774" args="(const csVector3 &amp;v1, const csVector3 &amp;v2, const csVector3 &amp;v3, const csVector3 &amp;v4)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddQuad           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v4</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a quad. 
<p>
Note that quads are the most optimal kind of polygon for a thing so you should try to use these as much as possible.<p>
By default the texture mapping is set so that the texture is aligned on the u-axis with the 'v1'-'v2' vector and the scale is set so that the texture tiles once for every unit (i.e. if you have the vertices v1 and v2 are 5 units separated from each other then the texture will repeat exactly five times between v1 and v2). <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="ca8cdb92b550a8981c638ce4706e7927"></a><!-- doxytag: member="iThingFactoryState::AddTriangle" ref="ca8cdb92b550a8981c638ce4706e7927" args="(const csVector3 &amp;v1, const csVector3 &amp;v2, const csVector3 &amp;v3)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::AddTriangle           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Add a triangle. 
<p>
By default the texture mapping is set so that the texture is aligned on the u-axis with the 'v1'-'v2' vector and the scale is set so that the texture tiles once for every unit (i.e. if you have the vertices v1 and v2 are 5 units separated from each other then the texture will repeat exactly five times between v1 and v2). <dl class="return" compact><dt><b>Returns:</b></dt><dd>the index of the created polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="8faa18b1b64fd34115174e703adac632"></a><!-- doxytag: member="iThingFactoryState::CompressVertices" ref="8faa18b1b64fd34115174e703adac632" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::CompressVertices           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Compress the vertex table so that all nearly identical vertices are compressed. 
<p>
The polygons in the set are automatically adapted. This function can be called at any time in the creation of the object and it can be called multiple time but it normally only makes sense to call this function after you have finished adding all polygons and all vertices. 
</div>
</div><p>
<a class="anchor" name="24b669ebb0cb6002c192362e3264ece8"></a><!-- doxytag: member="iThingFactoryState::CreatePolygonHandle" ref="24b669ebb0cb6002c192362e3264ece8" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsPtr.html">csPtr</a>&lt;<a class="el" href="structiPolygonHandle.html">iPolygonHandle</a>&gt; iThingFactoryState::CreatePolygonHandle           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a polygon handle that can be used to refer to some polygon. 
<p>
This can be useful in situations where an SCF handle is required to be able to reference a polygon. The thing will not keep a reference to this handle so you are fully responsible for it after calling this function. The polygon handle created here will not have a mesh object or thing state set since it is created from the factory. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="ca266e218a1432ef9a5ef968a40983b5"></a><!-- doxytag: member="iThingFactoryState::CreateVertex" ref="ca266e218a1432ef9a5ef968a40983b5" args="(const csVector3 &amp;vt)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::CreateVertex           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>vt</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Create a vertex given his object-space coords and return his index. 
<p>

</div>
</div><p>
<a class="anchor" name="c84fad9d2502cf40da0428505b6bd82a"></a><!-- doxytag: member="iThingFactoryState::DeleteVertex" ref="c84fad9d2502cf40da0428505b6bd82a" args="(int idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::DeleteVertex           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a vertex. 
<p>
Warning this will invalidate all polygons that use vertices after this vertex because their vertex indices will no longer be ok. 
</div>
</div><p>
<a class="anchor" name="25c2ee0e7025d643d67e0f70f95f0685"></a><!-- doxytag: member="iThingFactoryState::DeleteVertices" ref="25c2ee0e7025d643d67e0f70f95f0685" args="(int from, int to)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::DeleteVertices           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>from</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>to</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a range of vertices (inclusive). 
<p>
Warning this will invalidate all polygons that use vertices after these vertices because their vertex indices will no longer be ok. This function does bounds-checking so an easy way to delete all vertices is DeleteVertices(0,1000000000). 
</div>
</div><p>
<a class="anchor" name="0dcfefb5551a26a95d9c8f44ea3a95f7"></a><!-- doxytag: member="iThingFactoryState::FindPolygonByName" ref="0dcfefb5551a26a95d9c8f44ea3a95f7" args="(const char *name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::FindPolygonByName           </td>
          <td>(</td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Find a polygon index with a name. 
<p>

</div>
</div><p>
<a class="anchor" name="081e567b148271c7c499fac5fd3af495"></a><!-- doxytag: member="iThingFactoryState::GetCosinusFactor" ref="081e567b148271c7c499fac5fd3af495" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual float iThingFactoryState::GetCosinusFactor           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get cosinus factor. 
<p>

</div>
</div><p>
<a class="anchor" name="f15d59c15b7f0a6be246d7063d6f63d6"></a><!-- doxytag: member="iThingFactoryState::GetLightmapLayout" ref="f15d59c15b7f0a6be246d7063d6f63d6" args="(int polygon_idx, size_t &amp;slm, csRect &amp;slmSubRect, float *slmCoord)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::GetLightmapLayout           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t &amp;&nbsp;</td>
          <td class="paramname"> <em>slm</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcsRect.html">csRect</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>slmSubRect</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float *&nbsp;</td>
          <td class="paramname"> <em>slmCoord</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query the lightmap layout of a polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>Index of the polygon to query. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slm</em>&nbsp;</td><td>Returns on which superlightmap the lightmap is. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slmSubRect</em>&nbsp;</td><td>Returns the rectangle of the lightmap on the superlightmap. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>slmCoord</em>&nbsp;</td><td>The coordinates of the lightmap on the superlightmap. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>'True' if the polygon has a lightmap, 'false' otherwise. </dd></dl>

</div>
</div><p>
<a class="anchor" name="778d9b7839341ad53590dfbb53b10c80"></a><!-- doxytag: member="iThingFactoryState::GetNormals" ref="778d9b7839341ad53590dfbb53b10c80" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsVector3.html">csVector3</a>* iThingFactoryState::GetNormals           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Gets the normals. 
<p>

</div>
</div><p>
<a class="anchor" name="c04a24183471d684c5515c2e82ed9d7c"></a><!-- doxytag: member="iThingFactoryState::GetPolygonCount" ref="c04a24183471d684c5515c2e82ed9d7c" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::GetPolygonCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query number of polygons in this thing. 
<p>

</div>
</div><p>
<a class="anchor" name="feb7d017deb6cd6ce18ea04f87d9a622"></a><!-- doxytag: member="iThingFactoryState::GetPolygonFlags" ref="feb7d017deb6cd6ce18ea04f87d9a622" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="classcsFlags.html">csFlags</a>&amp; iThingFactoryState::GetPolygonFlags           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the flags of the specified polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="1b9c9ba1eb73c11026f33f712416a6b4"></a><!-- doxytag: member="iThingFactoryState::GetPolygonMaterial" ref="1b9c9ba1eb73c11026f33f712416a6b4" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="structiMaterialWrapper.html">iMaterialWrapper</a>* iThingFactoryState::GetPolygonMaterial           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the material for the specified polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="beca44381e78caf2a6b0332cd01ce647"></a><!-- doxytag: member="iThingFactoryState::GetPolygonName" ref="beca44381e78caf2a6b0332cd01ce647" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const char* iThingFactoryState::GetPolygonName           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the name of the specified polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="e6d67c5dd4011d30be5151885f8283ac"></a><!-- doxytag: member="iThingFactoryState::GetPolygonObjectPlane" ref="e6d67c5dd4011d30be5151885f8283ac" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classcsPlane3.html">csPlane3</a>&amp; iThingFactoryState::GetPolygonObjectPlane           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get object space plane of the specified polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="12876bfa62f9642c4a22ab0c0c4a96a5"></a><!-- doxytag: member="iThingFactoryState::GetPolygonTextureMapping" ref="12876bfa62f9642c4a22ab0c0c4a96a5" args="(int polygon_idx, csMatrix3 &amp;m, csVector3 &amp;v)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::GetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the texture space information for the specified polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>the matrix which will receive the mapping. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vector which will receive the mapping. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="98df348d1cf9cba97e3d465265b05dd3"></a><!-- doxytag: member="iThingFactoryState::GetPolygonVertex" ref="98df348d1cf9cba97e3d465265b05dd3" args="(int polygon_idx, int vertex_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classcsVector3.html">csVector3</a>&amp; iThingFactoryState::GetPolygonVertex           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>vertex_idx</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get a vertex from a polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>vertex_idx</em>&nbsp;</td><td>the desired vertex. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="845f0112dda03278a812fbf0ce5e53e0"></a><!-- doxytag: member="iThingFactoryState::GetPolygonVertexCount" ref="845f0112dda03278a812fbf0ce5e53e0" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::GetPolygonVertexCount           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get number of vertices for polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="c4d48d0780be1e112ba4aab24c473f54"></a><!-- doxytag: member="iThingFactoryState::GetPolygonVertexIndices" ref="c4d48d0780be1e112ba4aab24c473f54" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int* iThingFactoryState::GetPolygonVertexIndices           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get table with vertex indices from polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="a2e73872af04ec5c54d3babc3a2c858d"></a><!-- doxytag: member="iThingFactoryState::GetSmoothingFlag" ref="a2e73872af04ec5c54d3babc3a2c858d" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::GetSmoothingFlag           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Gets the smoothing flag. 
<p>

</div>
</div><p>
<a class="anchor" name="a1873a0fd7ae88f2090873976b6303c7"></a><!-- doxytag: member="iThingFactoryState::GetVertex" ref="a1873a0fd7ae88f2090873976b6303c7" args="(int idx) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classcsVector3.html">csVector3</a>&amp; iThingFactoryState::GetVertex           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the given vertex coordinates in object space. 
<p>

</div>
</div><p>
<a class="anchor" name="49070a402854cf8f48e999fc87d4a2b6"></a><!-- doxytag: member="iThingFactoryState::GetVertexCount" ref="49070a402854cf8f48e999fc87d4a2b6" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual int iThingFactoryState::GetVertexCount           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Query number of vertices in set. 
<p>

</div>
</div><p>
<a class="anchor" name="71110e5dc3620f4f8525af770baea100"></a><!-- doxytag: member="iThingFactoryState::GetVertices" ref="71110e5dc3620f4f8525af770baea100" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classcsVector3.html">csVector3</a>* iThingFactoryState::GetVertices           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Get the vertex coordinates in object space. 
<p>

</div>
</div><p>
<a class="anchor" name="1f06dd5bd26d152b7fcaf97ddedd5963"></a><!-- doxytag: member="iThingFactoryState::IsPolygonTextureMappingEnabled" ref="1f06dd5bd26d152b7fcaf97ddedd5963" args="(int polygon_idx) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::IsPolygonTextureMappingEnabled           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Check if texture mapping is enabled for the specified polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="c285950cf84f32090c5547c1cc0a2b3d"></a><!-- doxytag: member="iThingFactoryState::IsPolygonTransparent" ref="c285950cf84f32090c5547c1cc0a2b3d" args="(int polygon_idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::IsPolygonTransparent           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return true if this polygon or the texture it uses is transparent. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="74453e1bfbfe89a83e6e1b5dc5fe833c"></a><!-- doxytag: member="iThingFactoryState::PointOnPolygon" ref="74453e1bfbfe89a83e6e1b5dc5fe833c" args="(int polygon_idx, const csVector3 &amp;v)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::PointOnPolygon           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>polygon_idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Return true if an object space point is on (or very nearly on) the given polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>polygon_idx</em>&nbsp;</td><td>is a polygon index or <a class="el" href="group__meshplugins.html#g0b86ff5b7f9397c3a2308047822da46c" title="Last created polygon index (used where a single polygon index is required).">CS_POLYINDEX_LAST</a> for last created polygon. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the point in object space to test against the polygon. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="bfec158dc6b52a6ae3312f46610885a9"></a><!-- doxytag: member="iThingFactoryState::RemovePolygon" ref="bfec158dc6b52a6ae3312f46610885a9" args="(int idx)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::RemovePolygon           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>idx</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete a polygon given an index. 
<p>

</div>
</div><p>
<a class="anchor" name="f7d0c13e10cf27e1fff40fd04958a45a"></a><!-- doxytag: member="iThingFactoryState::RemovePolygons" ref="f7d0c13e10cf27e1fff40fd04958a45a" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::RemovePolygons           </td>
          <td>(</td>
          <td class="paramname">          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Delete all polygons. 
<p>

</div>
</div><p>
<a class="anchor" name="61f76fe818ab455c32f2320811f610f0"></a><!-- doxytag: member="iThingFactoryState::ResetPolygonFlags" ref="61f76fe818ab455c32f2320811f610f0" args="(const csPolygonRange &amp;range, uint32 flags)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::ResetPolygonFlags           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Reset the given flags to all polygons in the range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>a mask of the polygon flags, such as <a class="el" href="group__meshplugins.html#g785e76fb2bbd8af48c4919d315d1d936" title="If CS_POLY_LIGHTING is set for a polygon then the polygon will be lit.">CS_POLY_LIGHTING</a>, <a class="el" href="group__meshplugins.html#ga94c4f64d2258575754e840df308754c" title="If this flag is set then this polygon is used for collision detection.">CS_POLY_COLLDET</a>, etc. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="38d032906ee6fec3f52ad19f73c35408"></a><!-- doxytag: member="iThingFactoryState::SetCosinusFactor" ref="38d032906ee6fec3f52ad19f73c35408" args="(float cosfact)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetCosinusFactor           </td>
          <td>(</td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>cosfact</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set cosinus factor. 
<p>
This cosinus factor controls how lighting affects the polygons relative to the angle. If no value is set here then the default is used. 
</div>
</div><p>
<a class="anchor" name="404b8b7220038e30ea28d2ed2a37d6cd"></a><!-- doxytag: member="iThingFactoryState::SetPolygonFlags" ref="404b8b7220038e30ea28d2ed2a37d6cd" args="(const csPolygonRange &amp;range, uint32 mask, uint32 flags)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetPolygonFlags           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a>&nbsp;</td>
          <td class="paramname"> <em>mask</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the given flags to all polygons in the range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>mask</em>&nbsp;</td><td>a mask of the polygon flags, such as <a class="el" href="group__meshplugins.html#g785e76fb2bbd8af48c4919d315d1d936" title="If CS_POLY_LIGHTING is set for a polygon then the polygon will be lit.">CS_POLY_LIGHTING</a>, <a class="el" href="group__meshplugins.html#ga94c4f64d2258575754e840df308754c" title="If this flag is set then this polygon is used for collision detection.">CS_POLY_COLLDET</a>, etc. Only the indicated bits from `flags' will be assigned. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>The set of bits to assign to the corresponding flags indicated by `mask'. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="eb47d2dc6c88001b0b1ff4a47159b7c8"></a><!-- doxytag: member="iThingFactoryState::SetPolygonFlags" ref="eb47d2dc6c88001b0b1ff4a47159b7c8" args="(const csPolygonRange &amp;range, uint32 flags)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetPolygonFlags           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e">uint32</a>&nbsp;</td>
          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the given flags to all polygons in the range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>flags</em>&nbsp;</td><td>a mask of the polygon flags, such as <a class="el" href="group__meshplugins.html#g785e76fb2bbd8af48c4919d315d1d936" title="If CS_POLY_LIGHTING is set for a polygon then the polygon will be lit.">CS_POLY_LIGHTING</a>, <a class="el" href="group__meshplugins.html#ga94c4f64d2258575754e840df308754c" title="If this flag is set then this polygon is used for collision detection.">CS_POLY_COLLDET</a>, etc. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="fc4bb06a10556b414b4e2cc3aa13ce8f"></a><!-- doxytag: member="iThingFactoryState::SetPolygonMaterial" ref="fc4bb06a10556b414b4e2cc3aa13ce8f" args="(const csPolygonRange &amp;range, iMaterialWrapper *material)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetPolygonMaterial           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="structiMaterialWrapper.html">iMaterialWrapper</a> *&nbsp;</td>
          <td class="paramname"> <em>material</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the material of all polygons in the given range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>material</em>&nbsp;</td><td>the material to be assigned to the indicated polygons. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="648dab4cfacc7cef54b488a9d9f6e8dc"></a><!-- doxytag: member="iThingFactoryState::SetPolygonName" ref="648dab4cfacc7cef54b488a9d9f6e8dc" args="(const csPolygonRange &amp;range, const char *name)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetPolygonName           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const char *&nbsp;</td>
          <td class="paramname"> <em>name</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the name of all polygons in the given range. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>name</em>&nbsp;</td><td>the name to be assigned to the indicated polygons. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="f9a010127ed1f40ea92a84a7aa8bebaa"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMapping" ref="f9a010127ed1f40ea92a84a7aa8bebaa" args="(const csPolygonRange &amp;range, float len)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::SetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set texture mapping of all polygons in the given range to use the texture mapping as specified by the two first vertices on the polygon. 
<p>
The first vertex is seen as the origin and the second as the u-axis of the texture space coordinate system. The v-axis is calculated on the plane of the polygons and orthogonal to the given u-axis. The length of the u-axis and the v-axis is given as the 'len' parameter.<p>
For example, if 'len1' is equal to 2 this means that texture will be tiled exactly two times between the two first vertices. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of the u-axis and the v-axis is given as the 'len1' parameter. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false in case the texture mapping was invalid. In that case a default texture mapping will be set on the polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="80a25ce718de599d049c408ccb01d176"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMapping" ref="80a25ce718de599d049c408ccb01d176" args="(const csPolygonRange &amp;range, const csVector3 &amp;v_orig, const csVector3 &amp;v1, float len1, const csVector3 &amp;v2, float len2)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::SetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v_orig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>len1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>len2</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set texture mapping of all polygons in the given range to use the texture mapping as specified by two vertices on the polygon. 
<p>
The first vertex is seen as the origin, the second as the u-axis of the texture space coordinate system, and the third as the v-axis. The length of the u-axis and the v-axis is given with the 'len1' and 'len2' parameters.<p>
For example, if 'len1' is equal to 2 this means that texture will be tiled exactly two times between vertex 'v_orig' and 'v1'. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v_orig</em>&nbsp;</td><td>origin. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v1</em>&nbsp;</td><td>u-axis in texture space coordinate system. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len1</em>&nbsp;</td><td>length of u-axis. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v2</em>&nbsp;</td><td>v-axis in texture space coordinate system. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len2</em>&nbsp;</td><td>length of v-axis. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false in case the texture mapping was invalid. In that case a default texture mapping will be set on the polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="6b32da7de12aff147e26f09e0dab11f6"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMapping" ref="6b32da7de12aff147e26f09e0dab11f6" args="(const csPolygonRange &amp;range, const csVector3 &amp;v_orig, const csVector3 &amp;v, float len)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::SetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v_orig</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float&nbsp;</td>
          <td class="paramname"> <em>len</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set texture mapping of all polygons in the given range to use the texture mapping as specified by two vertices on the polygon. 
<p>
The first vertex is seen as the origin and the second as the u-axis of the texture space coordinate system. The v-axis is calculated on the plane of the polygons and orthogonal to the given u-axis. The length of the u-axis and the v-axis is given as the 'len' parameter.<p>
For example, if 'len' is equal to 2 this means that texture will be tiled exactly two times between vertex 'v_orig' and 'v'. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v_orig</em>&nbsp;</td><td>origin. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>u-axis in texture space coordinate system. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>len</em>&nbsp;</td><td>length of u-axis. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false in case the texture mapping was invalid. In that case a default texture mapping will be set on the polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="e654fcb46086d9b5890bdfaf65e9baf3"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMapping" ref="e654fcb46086d9b5890bdfaf65e9baf3" args="(const csPolygonRange &amp;range, const csVector3 &amp;p1, const csVector2 &amp;uv1, const csVector3 &amp;p2, const csVector2 &amp;uv2, const csVector3 &amp;p3, const csVector2 &amp;uv3)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::SetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector2.html">csVector2</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>uv1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector2.html">csVector2</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>uv2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>p3</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector2.html">csVector2</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>uv3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set texture mapping of all polygons in the given range to use the given uv coordinates for the specified three vertices of every polygon. 
<p>
Note that this function is only useful for polygon ranges that are on the same plane. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p1</em>&nbsp;</td><td>vertex 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>uv1</em>&nbsp;</td><td>uv coordinates for vertex 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p2</em>&nbsp;</td><td>vertex 2. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>uv2</em>&nbsp;</td><td>uv coordinates for vertex 2. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>p3</em>&nbsp;</td><td>vertex 3. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>uv3</em>&nbsp;</td><td>uv coordinates for vertex 3. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false in case the texture mapping was invalid. In that case a default texture mapping will be set on the polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="1603ee6c389f5fc9ff30c53990802f84"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMapping" ref="1603ee6c389f5fc9ff30c53990802f84" args="(const csPolygonRange &amp;range, const csVector2 &amp;uv1, const csVector2 &amp;uv2, const csVector2 &amp;uv3)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::SetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector2.html">csVector2</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>uv1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector2.html">csVector2</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>uv2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector2.html">csVector2</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>uv3</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set texture mapping of all polygons in the given range to use the given uv coordinates for the first three vertices of every polygon. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>uv1</em>&nbsp;</td><td>uv coordinates for vertex 1. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>uv2</em>&nbsp;</td><td>uv coordinates for vertex 2. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>uv3</em>&nbsp;</td><td>uv coordinates for vertex 3. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false in case the texture mapping was invalid. In that case a default texture mapping will be set on the polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="21acd302a8564bb55749e9458ded7bf2"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMapping" ref="21acd302a8564bb55749e9458ded7bf2" args="(const csPolygonRange &amp;range, const csMatrix3 &amp;m, const csVector3 &amp;v)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool iThingFactoryState::SetPolygonTextureMapping           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsMatrix3.html">csMatrix3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>m</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>v</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set texture mapping of all polygons in the given range to use the transform. 
<p>
This function is usually not used by application code as it is complicated to specify texture mapping like this. It is recommended to use one of the other texture mapping routines. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>m</em>&nbsp;</td><td>the matrix which defines the mapping. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>v</em>&nbsp;</td><td>the vector which defines the mapping. range. </td></tr>
  </table>
</dl>
<dl class="return" compact><dt><b>Returns:</b></dt><dd>false in case the texture mapping was invalid. In that case a default texture mapping will be set on the polygon. </dd></dl>

</div>
</div><p>
<a class="anchor" name="a048fcf1e5a1b574c9212ef41bded194"></a><!-- doxytag: member="iThingFactoryState::SetPolygonTextureMappingEnabled" ref="a048fcf1e5a1b574c9212ef41bded194" args="(const csPolygonRange &amp;range, bool enabled)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetPolygonTextureMappingEnabled           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>enabled</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Enable or disable texture mapping for the range of polygons. 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon range. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>enabled</em>&nbsp;</td><td>boolean flag indicating if mapping should be enabled or disabled. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="2e413defc63d70df2f829ebaf325e3db"></a><!-- doxytag: member="iThingFactoryState::SetPolygonVertexIndices" ref="2e413defc63d70df2f829ebaf325e3db" args="(const csPolygonRange &amp;range, int num, int *indices)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetPolygonVertexIndices           </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="structcsPolygonRange.html">csPolygonRange</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>range</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>num</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&nbsp;</td>
          <td class="paramname"> <em>indices</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the given polygon index table for all polygons in the given range. 
<p>
It is more optimal to call this routine as opposed to calling <a class="el" href="structiThingFactoryState.html#b1dde02003de8b3ca0d90a0ad2553c84" title="Add a vertex to all polygons in the given range.">AddPolygonVertex()</a> all the time. <dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td valign="top"></td><td valign="top"><em>range</em>&nbsp;</td><td>is one of the <a class="el" href="group__meshplugins.html#g4fa7d91777e87a686154a08faba7d304" title="A general range of polygons (inclusive).">CS_POLYRANGE</a> defines to specify a polygon </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>num</em>&nbsp;</td><td>number of entires in `indices'. </td></tr>
    <tr><td valign="top"></td><td valign="top"><em>indices</em>&nbsp;</td><td>polygon index table to be assigned to range. range. </td></tr>
  </table>
</dl>

</div>
</div><p>
<a class="anchor" name="eec46df82c054b1026a6ef52658523dd"></a><!-- doxytag: member="iThingFactoryState::SetSmoothingFlag" ref="eec46df82c054b1026a6ef52658523dd" args="(bool smoothing)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetSmoothingFlag           </td>
          <td>(</td>
          <td class="paramtype">bool&nbsp;</td>
          <td class="paramname"> <em>smoothing</em>          </td>
          <td>&nbsp;)&nbsp;</td>
          <td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Sets the smoothing flag. 
<p>

</div>
</div><p>
<a class="anchor" name="bfcf9049be84eb95b38d681dcc254173"></a><!-- doxytag: member="iThingFactoryState::SetVertex" ref="bfcf9049be84eb95b38d681dcc254173" args="(int idx, const csVector3 &amp;vt)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void iThingFactoryState::SetVertex           </td>
          <td>(</td>
          <td class="paramtype">int&nbsp;</td>
          <td class="paramname"> <em>idx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="classcsVector3.html">csVector3</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>vt</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td width="100%"><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>
Set the object space vertices for a given vertex. 
<p>

</div>
</div><p>
<hr>The documentation for this struct was generated from the following file:<ul>
<li>imesh/<a class="el" href="thing_8h-source.html">thing.h</a></ul>
<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>