#VRML V2.0 utf8
# X3D-to-VRML-97 XSL translation autogenerated by X3dToVrml97.xslt
# http://www.web3d.org/x3d/content/X3dToVrml97.xslt
# Generated using XSLT processor: SAXON 8.7 from Saxonica

# [X3D] VRML V3.0 utf8
# PROFILE Immersive
# [X3D] version=3.0
# [X3D] noNamespaceSchemaLocation=http://www.web3d.org/specifications/x3d-3.0.xsd
# [head]

# META "title" "EventUtilityPrototypes.x3d"
# META "description" "Event utility node prototypes for boolean filtering and other event utility nodes."
# META "authors" "Nick Polys, Tony Parisi, Don Brutzman, Justin Couch"
# META "created" "25 September 2002"
# META "modified" "28 April 2005"
# META "warning" "Under development, IntegerTrigger example needed."
# META "reference" "EventUtilityExamples.x3d"
# META "subject" "BooleanFilter BooleanToggle BooleanTrigger IntegerTrigger TimeTrigger"
# META "identifier" "http://www.web3d.org/x3d/content/examples/Basic/development/EventUtilityPrototypes.x3d"
# META "generator" "X3D-Edit 3.2, https://savage.nps.edu/X3D-Edit"
# META "license" "../license.html"
# <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
# 
# <html>
# <head>
# 			<title>NPS MOVES Software License</title>
# 			<meta name="description" content="NPS MOVES Software License" />
# 			<meta name="author" content="Donald P. Brutzman" />
# 			<meta name="created" content="4 March 2005" />
# 			<meta name="revised" content="17 December 2006" />
# 			<meta name="reference" content="http://www.oreilly.com/catalog/osfreesoft" />
# 			<meta name="reference" content="http://opensource.org/licenses/bsd-license.php" />
# 			<meta name="reference" content="http://xchat.movesinstitute.org/bugzilla/show_bug.cgi?id=32" />
# 			<link rel="icon" href="http://www.web3D.org/x3d/content/examples/images/X3DtextIcon16.png" title="X3D" type="image/png"/>
# </head>
# <body>
# <p>Copyright (c) 1995-2008 held by the author(s).  All rights reserved.</p>
# 
# <p>Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:</p>
# 
# <ul>
# 		<li>
#       Redistributions of source code must retain the above copyright
#       notice, this list of conditions and the following disclaimer.
#     </li>  
# 		<li>	
# 			Redistributions in binary form must reproduce the above copyright
#       notice, this list of conditions and the following disclaimer
#       in the documentation and/or other materials provided with the
#       distribution.
# 		</li>	
# 		<li>	
#       Neither the names of the 
# 			<a href="http://www.nps.edu">Naval Postgraduate School (NPS)</a>
#       <a href="http://www.MovesInstitute.org">Modeling Virtual Environments and Simulation (MOVES) Institute</a>
#       nor the names of its contributors may be used to endorse or
#       promote products derived from this software without specific
#       prior written permission.
#     </li>
# </ul>			
# 
# <p>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.</p>
# 
# </body>
# </html>
 
# [Scene] ========== ========== ==========
# ========================================
PROTO IntegerTrigger [
  # [appinfo] IntegerTrigger converts boolean true or time input events to integer value (suitable for Switch node).

  eventIn      SFBool	set_boolean    # [appinfo] If set_boolean input is true trigger output of integer value.

  eventIn      SFInt32	set_integerKey    # [appinfo] Resets value used for output when triggered later.

  exposedField SFInt32	integerKey -1    # [appinfo] integerKey is value for output when triggered.

  eventOut     SFInt32	integerKey_changed    # [appinfo] Reports change in integerKey value.

  eventOut     SFInt32	triggerValue    # [appinfo] triggerValue provides integer event output matching integerKey when true set_boolean received.

] {
  Group {
    children [
        DEF IntegerKeyHolder Switch {
                      whichChoice IS integerKey
        }
        DEF TriggerIntegerScript Script {
          eventIn      SFBool	set_boolean IS set_boolean
          eventIn      SFInt32	set_integerKey IS set_integerKey
          field        SFNode      integerKeyHolderNode             USE IntegerKeyHolder
          eventOut     SFInt32	integerKey_changed IS integerKey_changed
          eventOut     SFInt32	triggerValue IS triggerValue
          directOutput TRUE
                                                          
	url [ "javascript:

function set_boolean (inputValue, timestamp)
{
	if (inputValue == true)
	{
		integerKey = integerKeyHolderNode.whichChoice;
		triggerValue = integerKey; // send output event
	}
}
function set_integerKey (inputValue, timestamp)
{
	integerKey = inputValue;
	integerKeyHolderNode.whichChoice = integerKey;
	integerKey_changed = integerKey; // send output event
}
      
          
" ]
        }
    ]
  }
}
