<Kernel name="VerifyOverlaps" dispatch="serial" implementation="Particle">
  <Parameter.Array name="@Particle.instance" type="EntityPtr" mode="READ"/>
  <Parameter.Array name="@Particle.radius" type="Real" mode="READ"/>
  <Parameter.Array name="@Particle.position" type="Vec3" mode="READ"/>
  <Parameter.Array name="@Particle.cellIndex" type="UInt:32bit" mode="READ"/>
  <Parameter.Array name="@Particle.cellSlot" type="UInt:16bit" mode="READ"/>
  
  <Parameter.Array name="@Cell.tier" type="UInt:8bit" mode="READ"/>  
  <Parameter.Array name="@Cell.id" type="Vec3i" mode="READ"/>
  <Parameter.Array name="@Cell.parent" type="UInt:32bit" mode="READ"/>
  <Parameter.Array name="@Cell.collisionObjects" type="IndexRange:32bit" mode="READ"/>
	
  <Parameter.Array name="@GridTier.size" type="Real" mode="READ"/>
  
  <Parameter.Array name="@GridOverlap.collisionObject1" type="UInt:32bit" mode="READ"/>
  <Parameter.Array name="@GridOverlap.collisionObject2" type="UInt:32bit" mode="READ"/>
</Kernel>

<Kernel name="VerifyOverlaps" dispatch="serial" implementation="Particle_2D">
  <Parameter.Array name="@Particle.instance" type="EntityPtr" mode="READ"/>
  <Parameter.Array name="@Particle.radius" type="Real" mode="READ"/>
  <Parameter.Array name="@Particle.position" type="Vec3" mode="READ"/>
  <Parameter.Array name="@Particle.cellIndex" type="UInt:32bit" mode="READ"/>
  <Parameter.Array name="@Particle.cellSlot" type="UInt:16bit" mode="READ"/>
  
  <Parameter.Array name="@Cell.tier" type="UInt:8bit" mode="READ"/>  
  <Parameter.Array name="@Cell.id" type="Vec2i" mode="READ"/>
  <Parameter.Array name="@Cell.parent" type="UInt:32bit" mode="READ"/>
  <Parameter.Array name="@Cell.collisionObjects" type="IndexRange:32bit" mode="READ"/>
	
  <Parameter.Array name="@GridTier.size" type="Real" mode="READ"/>
  
  <Parameter.Array name="@GridOverlap.collisionObject1" type="UInt:32bit" mode="READ"/>
  <Parameter.Array name="@GridOverlap.collisionObject2" type="UInt:32bit" mode="READ"/>
</Kernel>
