﻿<?xml version="1.0" encoding="UTF-8"?>
<X3D profile="Immersive"  version="3.1">
  <Transform>
    <MetadataSet name='Template'>
      <MetadataString containerField='value' name='TemplateID' value='"FadeInFromWhiteEffectTemplate"'/>
      <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='"FadeInShader"'/>
        </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='"FadeInEffectInterpolator"'/>
          <MetadataString containerField='value' name='socketConnectAttribute' value='"set_fraction"'/>
        </MetadataSet>
        <MetadataSet containerField='value' name='InSocket'>
          <MetadataString containerField='value' name='socketName' value='"effectDuration"'/>
          <MetadataFloat containerField='value' name='socketCompatibilitySet' value='1.0'/>
          <MetadataString containerField='value' name='socketParentDEF' value='"FadeInEffectDurationToFractionInterpolator"'/>
          <MetadataString containerField='value' name='socketConnectAttribute' value='"key"'/>
          <MetadataInteger containerField='value' name='socketConnectIndex' value='1'/>
        </MetadataSet>
      </MetadataSet>
    </Transform>

    <!--Socket Nodes scratch pad (only nodes with def's are injected)-->
    <Transform>
      <Shape>
      <Appearance>
        <FadeShader DEF='FadeInShader' fromColor='1 1 1 1'/>
      </Appearance>
    </Shape>
    </Transform>

    <!--Nodes that need to be injected-->
    <Transform DEF='InjectSet'>
      <!--Use the duration (replacing the placeholder 5) to convert the desired fade-in time (0.6 seconds) to a fraction of the total length-->
      <ScalarInterpolator DEF='FadeInEffectDurationToFractionInterpolator' key='0 5' keyValue='0 1' set_fraction='0.6'/>

      <!--Limit the fade duration to no more than 3/10 of the clip duration-->
      <ScalarInterpolator DEF='FadeInEffectFractionLimiterInterpolator' key='0 0.3' keyValue='0 0.3'/>

      <!--The appropriate fraction is routed into the second key entry-->
      <ScalarInterpolator DEF='FadeInEffectInterpolator' key='0 0.12 1' keyValue='0 1 1'/>

      <ROUTE fromNode='FadeInEffectDurationToFractionInterpolator' fromField='value_changed' toNode='FadeInEffectFractionLimiterInterpolator' toField='set_fraction'/>
      <ROUTE fromNode='FadeInEffectFractionLimiterInterpolator' fromField='value_changed' toNode='FadeInEffectInterpolator' toField='key' toIndex='1'/>
      <ROUTE fromNode='FadeInEffectInterpolator' fromField='value_changed' toNode='FadeInShader' toField='set_fraction'/>
    </Transform>

  </Transform>
</X3D>
