<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "https://www.web3d.org/specifications/x3d-3.0.dtd">
<![CDATA[
ecmascript: function initialize () { whichchoice =0; CounterWeight=100; } function set_boolean ( boolean_input, eventTime) { if ( boolean_input== false ) { return; } // ignore the unclick whichchoice = whichchoice +1; if (whichchoice == 0)CounterWeight=50.00; if (whichchoice == 1)CounterWeight=500.00; if (whichchoice == 2)CounterWeight=1000.00; if (whichchoice == 3)CounterWeight=10000.00; if ( whichchoice ==4 ) { whichchoice = 0; CounterWeight=50; } Browser.println ('CounterWeight ='+CounterWeight); }
]]>
<![CDATA[
ecmascript: function set_boolean (boolean_input, eventTime) { if ( boolean_input== false ) { return; } // ignore unclick whichchoice = whichchoice +1; if (whichchoice == 0)ProjectileWeight=10.00; if (whichchoice == 1)ProjectileWeight=1000.00; if (whichchoice == 2)ProjectileWeight=5; if ( whichchoice ==3 ) { whichchoice = 0; ProjectileWeight=10.00; } Browser.println ('Projectile Weight'+ProjectileWeight); }
]]>
<![CDATA[
ecmascript: function set_boolean (boolean_input, eventTime) { if ( boolean_input== false ) { return; } // ignore unclick whichchoice = whichchoice +1; if ( whichchoice ==2 ) whichchoice = 0; }
]]>
<![CDATA[
ecmascript: function initialize () { MassCounterWeight=100; MassProjectileWeight=10; Browser.println ('MassCounterWeight =' + MassCounterWeight); Browser.println ('MassProjectileWeight =' + MassProjectileWeight); } function set_MassProjectileWeight (value, timestamp) { MassProjectileWeight = value; Browser.println ('new MassProjectileWeight =' + MassProjectileWeight); } function set_MassCounterWeight (value2, timestamp) { MassCounterWeight = value2; Browser.println ('new MassCounterWeight =' + MassCounterWeight); } function set_fraction ( fraction, eventTime ) { var TrebuchetHeight=45; var Height =25; x = (2*(MassCounterWeight/MassProjectileWeight)*Height*fraction)-.5*TrebuchetHeight; // start at TrebuchetHeight and keep along z axis (z=zero) y = (MassCounterWeight/MassProjectileWeight)*Height*Math.sin(fraction*3.14); z = 0; transparent = new SFVec3f (1,1,1); if (y <1.5*TrebuchetHeight )if (x<TrebuchetHeight) { x=x-10; y=y+1; transparent = new SFVec3f(.01, .01, .01); } value_changed = new SFVec3f (x, y, z); Browser.println ('x=' + value_changed[0] + ' y=' + value_changed[1] + ' z=' + value_changed[2]); }
]]>
Event Graph ROUTE Table entries with 26 ROUTE connections total, showing X3D event-model relationships for this scene.
Each row shows an event cascade that may occur during a single timestamp interval between frame renderings, as part of the X3D execution model.
LauncheeChoice
TouchSensor touchTime SFTime |
HolyHandGrenadeSound
AudioClip set_startTime SFTime |
|||||||||
LauncheeChoice
TouchSensor touchTime SFTime |
CowSound
AudioClip set_startTime SFTime |
|||||||||
LauncheeChoice
TouchSensor touchTime SFTime |
HamsterSound
AudioClip set_startTime SFTime |
|||||||||
LauncheeChoice
TouchSensor isActive SFBool |
LauncheeScript
Script set_boolean SFBool |
then |
LauncheeScript
Script ProjectileWeight SFFloat |
Mover
Script set_MassProjectileWeight SFFloat |
then |
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
|||
then |
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
||||||||
then |
LauncheeScript
Script whichchoice SFInt32 |
projectile
Switch whichChoice SFInt32 |
||||||||
then |
LauncheeScript
Script whichchoice SFInt32 |
projectilename
Switch whichChoice SFInt32 |
weightselector
TouchSensor isActive SFBool |
WeightScript
Script set_boolean SFBool |
then |
WeightScript
Script CounterWeight SFFloat |
Mover
Script set_MassCounterWeight SFFloat |
then |
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
|||
then |
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
||||||||
then |
WeightScript
Script whichchoice SFInt32 |
Weight
Switch whichChoice SFInt32 |
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
|
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
WeightScript
Script CounterWeight SFFloat |
Mover
Script set_MassCounterWeight SFFloat |
then |
Mover
Script transparent SFVec3f |
ProjectileTransform
Transform set_scale SFVec3f |
||
then |
Mover
Script value_changed SFVec3f |
ProjectileTransform
Transform set_translation SFVec3f |
||||
WeightScript
Script whichchoice SFInt32 |
Weight
Switch whichChoice SFInt32 |
<!--
Online at
https://www.web3d.org/x3d/content/examples/Basic/StudentProjects/TrebuchetIndex.html
-->
<!--
Version control at
https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/content/examples/Basic/StudentProjects/Trebuchet.x3d
-->
<!--
Color legend: X3D terminology
<X3dNode
DEF='idName' field='value'/>
matches XML terminology
<XmlElement
DEF='idName' attribute='value'/>
(Light-blue background: event-based behavior node or statement)
(Grey background inside box: inserted documentation)
(Magenta background: X3D Extensibility)
-->
<!-- For additional help information about X3D scenes, please see X3D Tooltips, X3D Resources, and X3D Scene Authoring Hints. -->