<?xml version="1.0" encoding="UTF-8" ?>

<PropertyList>

	<path>Automatic_Green_Gate_20m.ac</path>

	<animation>
		<type>pick</type>
		<object-name>RGate</object-name>
		<object-name>LGate</object-name>
		<object-name>RGuide</object-name>
		<object-name>LGuide</object-name>
		<action>
			<button>0</button>
			<repeatable type="bool">false</repeatable>
			<binding>
				<command>nasal</command>
				<!-- Nasal pick code, based on jetway-movable.xml -->
				<script><![CDATA[
if (props.globals.getNode ("/scenery/airport/automgate[0]/extended") == nil)  {
    props.globals.initNode ("/scenery/airport/automgate[0]/extended", 0, "BOOL");
    setprop ("/scenery/airport/automgate[0]/position-norm", 0);
}

#nasal interpolation function - returns a value based on a set interpolation table, like the <interpolate> feature of XML animations
#takes an array with sub-arrays, like
#[[<ind>, <dep>], [<ind>, <dep>]]
var interpolateTable = func (table, value) {
  var newValue = 0;

  forindex (i; table) {
    if (value >= table[i][0]) {
	if (i + 1 < size (table)) {
	    newValue = (value - table[i][0]) / (table[i + 1][0] - table[i][0]) * (table[i + 1][1] - table[i][1]) + table[i][1];
	} else {
	    newValue = table[i][1];
	  }
      }
  }

  return newValue;
};

var xtranslate = 10;
var xtranslaterate = 1;
var xtranslatetable =[[0.0, 0.0],
		      [0.2, 0.2],
		      [0.6, 0.6],
		      [0.8, 0.8],
		      [1.0, 1.0]];

var length = math.abs (xtranslate / xtranslaterate);

if (!props.globals.getNode ("/scenery/airport/automgate[0]/extended").getBoolValue ()) {
  props.globals.getNode ("/scenery/airport/automgate[0]/extended").setBoolValue (1);
  interpolate ("/scenery/airport/automgate[0]/position-norm", 1, -getprop ("/scenery/airport/automgate[0]/position-norm") + 1 * length);
  gui.popupTip ("Opening gate.");

  var loop = func {
    var position = getprop ("/scenery/airport/automgate[0]/position-norm");
    setprop ("/scenery/airport/automgate[0]/x-translation-m", interpolateTable (xtranslatetable, position) * xtranslate);

    if (position < 1 and props.globals.getNode ("/scenery/airport/automgate[0]/extended").getBoolValue ()) {
      settimer (loop, 0);
    }
  };
  loop ();
} else {
  props.globals.getNode ("/scenery/airport/automgate[0]/extended").setBoolValue (0);
  interpolate ("/scenery/airport/automgate[0]/position-norm", 0, getprop ("/scenery/airport/automgate[0]/position-norm") * length);
  gui.popupTip ("Closing gate.");

  var loop = func {
    var position = getprop ("/scenery/airport/automgate[0]/position-norm");
    setprop ("/scenery/airport/automgate[0]/x-translation-m", interpolateTable (xtranslatetable, position) * xtranslate);

    if (position > 0 and ! props.globals.getNode ("/scenery/airport/automgate[0]/extended").getBoolValue ()) {
      settimer (loop, 0);
    }
  };
  loop ();
}
				]]></script>
			</binding>
		</action>
	</animation>

	<animation>
		<type>translate</type>
		<object-name>RGate</object-name>
		<property>/scenery/airport/automgate[0]/x-translation-m</property>
		<axis>
			<x>1</x>
			<y>0</y>
			<z>0</z>
		</axis>
	</animation>
	<animation>
		<type>translate</type>
		<object-name>LGate</object-name>
		<property>/scenery/airport/automgate[0]/x-translation-m</property>
		<axis>
			<x>-1</x>
			<y>0</y>
			<z>0</z>
		</axis>
	</animation>
</PropertyList>
