<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE doc
  SYSTEM '../../clonk.dtd'>
<?xml-stylesheet type="text/xsl" href="../../clonk.xsl"?>
<doc>
  <title>CNAT - Contact Attachment</title>
  <h>CNAT - Contact Attachment</h>
  <text>In multiple places the engine uses ContactAttachment values (a bitmask) to manage the orientation of objects and processes. For example, a vertex of an object can have the <code id="CNAT">CNAT</code> bit <em>left</em>. If that object has <emlink href="definition/properties.html">ContactCalls</emlink> activated, the engine calls on every contact of that vertex with the landscape the object script function <em>ContactLeft</em>. CNAT values are composed of the following bits:</text>
  <text>
    <table>
      <rowh>
        <col>CNAT</col>
        <col>Description</col>
      </rowh>
      <row>
        <col>CNAT_Left</col>
        <col>Direction: Left</col>
      </row>
      <row>
        <col>CNAT_Right</col>
        <col>Direction: Right</col>
      </row>
      <row>
        <col>CNAT_Top</col>
        <col>Direction: Up</col>
      </row>
      <row>
        <col>CNAT_Bottom</col>
        <col>Direction: Down</col>
      </row>
      <row>
        <col>CNAT_Center</col>
        <col>Direction: Center (not for attachment)</col>
      </row>
      <row>
        <col>CNAT_MultiAttach</col>
        <col>Special flag: new attachment behaviour for objects with the same direction value at several vertices.</col>
      </row>
      <row>
        <col>CNAT_NoCollision</col>
        <col>Extra flag: non-colliding vertex</col>
      </row>
      <row>
        <col>CNAT_PhaseHalfVehicle</col>
        <col>Extra flag: Entirely suppress collisions with HalfVehicle</col>
      </row>
      <bitmask>CNAT</bitmask>
    </table>
  </text>
  <text>A vertex can have multiple CNAT values, they can be combined them with the | operator. Example:</text>
  <code>Attach = CNAT_Bottom | CNAT_Left</code>
  <author>Newton</author><date>2013-11</date>
</doc>
