﻿<?xml version="1.0" encoding="UTF-8"?>
<X3D profile="Immersive"  version="3.1">
  <Transform>
    <MetadataSet name='Template'>
      <MetadataString containerField='value' name='TemplateID' value='"PixelateEffectTemplate"'/>
      <MetadataInteger containerField='value' name='TemplateKind' value='3'/>
      <MetadataString containerField='value' name='TimeDependentNode' value='""'/>
      <MetadataString containerField='value' name='TemplateTitle' value='"@"'/>
      <MetadataString containerField='value' name='TemplateCategory' value='"Motions and Fades"'/>
      <MetadataString containerField='value' name='TemplateThumbnailPath' value='""'/>
      <MetadataInteger containerField='value' name='TemplateSubType' value='1'/>
      <MetadataInteger containerField='value' name='TemplateEffectKind' value='1'/>
    </MetadataSet>

    <!--OUT properties -->
    <Transform>
      <MetadataSet DEF='OutSockets'>
        <MetadataSet containerField='value' name='OutSocket'>
          <MetadataString containerField='value' name='socketName' value='"effectShader"'/>
          <MetadataFloat containerField='value' name='socketCompatibilitySet' value='1.0'/>
          <MetadataString containerField='value' name='socketConnectToExtent' value='"current"'/>
          <MetadataString containerField='value' name='socketParentDEF' value='""'/>
          <MetadataString containerField='value' name='socketChildNodeDEF' value='"PixelateShader"'/>
        </MetadataSet>
      </MetadataSet>
    </Transform>

    <!--IN properties -->
    <Transform>
      <MetadataSet DEF='InSockets'>
        <MetadataSet containerField='value' name='InSocket'>
          <MetadataString containerField='value' name='socketName' value='"effectTimer"'/>
          <MetadataFloat containerField='value' name='socketCompatibilitySet' value='1.0'/>
          <MetadataString containerField='value' name='socketParentDEF' value='"PixelateEffectInterpolator"'/>
          <MetadataString containerField='value' name='socketConnectAttribute' value='"set_fraction"'/>
        </MetadataSet>
        <MetadataSet containerField='value' name='InSocket'>
          <MetadataString containerField='value' name='socketName' value='"projectAspectRatio"'/>
          <MetadataFloat containerField='value' name='socketCompatibilitySet' value='1.0'/>
          <MetadataString containerField='value' name='socketParentDEF' value='"PixelateCountInterpolator"'/>
          <MetadataString containerField='value' name='socketConnectAttribute' value='"set_fraction"'/>
        </MetadataSet>
      </MetadataSet>
    </Transform>

    <!--Socket Nodes scratch pad (only nodes with def's are injected)-->
    <Transform>
      <Shape>
      <Appearance>
        <PixelateShader DEF='PixelateShader' minPixelCount='12 8'/>
      </Appearance>
    </Shape>
    </Transform>

    <!--Nodes that need to be injected-->
    <Transform DEF='InjectSet'>
      <ScalarInterpolator DEF='PixelateEffectInterpolator' key='0 1' keyValue='0 1'/>
      <ROUTE fromNode='PixelateEffectInterpolator' fromField='value_changed' toNode='PixelateShader' toField='set_fraction'/>

      <!--Aspect ratio calculation: we'll always want the minimum vertical pixel count to be 8;
      we only adjust the horizontal value based on the aspect ratio (if it's 1, we want 8 8)-->
      <PositionInterpolator2D DEF='PixelateCountInterpolator' key='0 10' keyValue='0 8 80 8'/>
      <ROUTE fromNode='PixelateCountInterpolator' fromField='value_changed' toNode='PixelateShader' toField='set_minPixelCount'/>
    </Transform>

  </Transform>
</X3D>
