﻿<?xml version="1.0" encoding="UTF-8"?>
<X3D profile="Immersive"  version="3.1">
  <Transform>
    <MetadataSet name='Template'>
      <MetadataString containerField='value' name='TemplateID' value='"PixelateTransitionTemplate"'/>
      <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='"Dissolves"'/>
      <MetadataString containerField='value' name='TemplateThumbnailPath' value='""'/>
      <MetadataInteger containerField='value' name='TemplateSubType' value='2'/>
      <MetadataInteger containerField='value' name='TemplateEffectKind' value='2'/>
      <MetadataInteger containerField='value' name='TransitionCompatibility' 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='"previous"'/>
          <MetadataString containerField='value' name='socketParentDEF' value='""'/>
          <MetadataString containerField='value' name='socketChildNodeDEF' value='"PixelateShaderPrevious"'/>
        </MetadataSet>
        <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='"PixelateShaderCurrent"'/>
        </MetadataSet>
        <MetadataSet containerField='value' name='OutSocket'>
          <MetadataString containerField='value' name='socketName' value='"transparency"'/>
          <MetadataFloat containerField='value' name='socketCompatibilitySet' value='1.0'/>
          <MetadataString containerField='value' name='socketParentDEF' value='"PixelateInterpolator"'/>
          <MetadataString containerField='value' name='socketConnectAttribute' value='"value_changed"'/>
          <MetadataString containerField='value' name='socketConnectToExtent' value='"current"'/>
        </MetadataSet>
      </MetadataSet>
    </Transform>

    <!--IN properties -->
    <Transform>
      <MetadataSet DEF='InSockets'>
        <MetadataSet containerField='value' name='InSocket'>
          <MetadataString containerField='value' name='socketName' value='"transitionTimer"'/>
          <MetadataFloat containerField='value' name='socketCompatibilitySet' value='1.0'/>
          <MetadataString containerField='value' name='socketParentDEF' value='"PixelateInterpolator"'/>
          <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='PixelateShaderPrevious' minPixelCount='9 7'/>
          <PixelateShader DEF='PixelateShaderCurrent' minPixelCount='9 7'/>
        </Appearance>
      </Shape>
    </Transform>

    <!--Nodes that need to be injected-->
    <Transform DEF='InjectSet'>
      <ScalarInterpolator DEF='PixelateInterpolator' key='0 1' keyValue='1 0'/>
      <ScalarInterpolator DEF='PixelateShaderInterpolator' key='0 0.5 1' keyValue='0 1 0'/>
      <ROUTE fromNode='PixelateInterpolator' fromField='value_changed' toNode='PixelateShaderInterpolator' toField='set_fraction'/>
      <ROUTE fromNode='PixelateShaderInterpolator' fromField='value_changed' toNode='PixelateShaderPrevious' toField='set_fraction'/>
      <ROUTE fromNode='PixelateShaderInterpolator' fromField='value_changed' toNode='PixelateShaderCurrent' toField='set_fraction'/>

      <!--Aspect ratio calculation: we'll always want the minimum vertical pixel count to be 7;
      we only adjust the horizontal value based on the aspect ratio (if it's 1, we want 7 7)-->
      <PositionInterpolator2D DEF='PixelateCountInterpolator' key='0 10' keyValue='0 7 70 7'/>
      <ROUTE fromNode='PixelateCountInterpolator' fromField='value_changed' toNode='PixelateShaderPrevious' toField='set_minPixelCount'/>
      <ROUTE fromNode='PixelateCountInterpolator' fromField='value_changed' toNode='PixelateShaderCurrent' toField='set_minPixelCount'/>
    </Transform>

  </Transform>
</X3D>
