Last active
February 1, 2025 20:29
-
-
Save andreasplesch/6fd2fd0b0f745b3549b74150b7752d89 to your computer and use it in GitHub Desktop.
X3D toggle button
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<X3D profile='Full' version='4.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' https://www.web3d.org/specifications/x3d-4.0.xsd ' > | |
<head> | |
<meta name='title' content='toggleButtonExample.x3d '/> | |
<meta name='description' content='nine individual toggles'/> | |
<meta name='creator' content='Andreas Plesch'/> | |
<meta name='created' content='December 2024'/> | |
<meta name='subject' content='event utilities, no scripts'/> | |
<meta name='generator' content='https://andreasplesch.github.io/Library/Viewer/index.html'/> | |
<meta name='license' content='MIT'/> | |
</head> | |
<Scene> | |
<MetadataString name='children' reference='X3DNodeExtension' | |
value='"<Environment gammaCorrectionDefault='none'></Environment>"' | |
> | |
<MetadataString name='comment' value='"Environment is a x3dom node. It is inserted here via a special Metadata node which is recognized by x3dom."'></MetadataString> | |
</MetadataString> | |
<NavigationInfo type='NONE' headlight='true'/> | |
<ProtoDeclare name='toggleButtonTransform'> | |
<ProtoInterface> | |
<field name='translation' type='SFVec3f' value='0 0 0' accessType='inputOutput' | |
appinfo='default value 0 0 0'/> | |
<field name='scale' type='SFVec3f' value='0.99 0.99 0.99' accessType='inputOutput' | |
appinfo='default value 0.99 0.99 0.99'/> | |
<field name='toggledOn' type='SFBool' value='false' accessType='outputOnly' | |
appinfo='default value false'/> | |
<field name='toggledOnTime' type='SFTime' value='0' accessType='outputOnly' | |
appinfo='default value 0'/> | |
<field name='toggledOffTime' type='SFTime' value='0' accessType='outputOnly' | |
appinfo='default value 0'/> | |
</ProtoInterface> | |
<ProtoBody> | |
<Transform> | |
<IS> | |
<connect nodeField='translation' protoField='translation'/> | |
<connect nodeField='scale' protoField='scale'/> | |
</IS> | |
<TouchSensor DEF='buttonTS'></TouchSensor> | |
<Switch DEF='bluegreenPlane' whichChoice='1'> | |
<Transform> | |
<Shape> | |
<Appearance DEF='green'> | |
<Material diffuseColor='0 1 0'/> | |
</Appearance> | |
<Rectangle2D/> | |
</Shape> | |
</Transform> | |
<Transform> | |
<Shape> | |
<Appearance DEF='blue'> | |
<Material diffuseColor='0 0 1'/> | |
</Appearance> | |
<Rectangle2D/> | |
</Shape> | |
</Transform> | |
</Switch> | |
<IntegerSequencer DEF='chooser' key='0 1' keyValue='0 1' /> | |
<ROUTE fromNode='buttonTS' fromField='isActive' toNode='chooser' toField='next'></ROUTE> | |
<ROUTE fromNode='chooser' fromField='value_changed' toNode='bluegreenPlane' toField='whichChoice'></ROUTE> | |
<BooleanSequencer DEF='tracker' key='0 1' keyValue='true false' /> | |
<ROUTE fromNode='buttonTS' fromField='isActive' toNode='tracker' toField='next'></ROUTE> | |
<TimeTrigger DEF='onTime'> | |
<IS> | |
<connect nodeField='triggerTime' protoField='toggledOnTime'/> | |
</IS> | |
</TimeTrigger> | |
<TimeTrigger DEF='offTime'> | |
<IS> | |
<connect nodeField='triggerTime' protoField='toggledOffTime'/> | |
</IS> | |
</TimeTrigger> | |
<BooleanFilter DEF='onlyTrue'> | |
<IS> | |
<connect nodeField='inputTrue' protoField='toggledOn'/> | |
</IS> | |
</BooleanFilter> | |
<BooleanFilter DEF='onlyFalse' /> | |
<ROUTE fromNode='tracker' fromField='value_changed' toNode='onlyTrue' toField='set_boolean'></ROUTE> | |
<ROUTE fromNode='onlyTrue' fromField='inputTrue' toNode='onTime' toField='set_boolean'></ROUTE> | |
<ROUTE fromNode='tracker' fromField='value_changed' toNode='onlyFalse' toField='set_boolean'></ROUTE> | |
<ROUTE fromNode='onlyFalse' fromField='inputFalse' toNode='offTime' toField='set_boolean'></ROUTE> | |
</Transform> | |
</ProtoBody> | |
</ProtoDeclare> | |
<Transform DEF='controlPanel' translation='3 0 0'> | |
<ProtoInstance DEF='centerBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='0 0 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='centerRightBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='2 0 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='centerLeftBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='-2 0 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='topBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='0 2 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='topRightBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='2 2 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='topLeftBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='-2 2 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='bottomBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='0 -2 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='bottomRightBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='2 -2 0'/> | |
</ProtoInstance> | |
<ProtoInstance DEF='bottomLeftBt' name='toggleButtonTransform'> | |
<fieldValue name='translation' value='-2 -2 0'/> | |
</ProtoInstance> | |
</Transform> | |
<!-- controlee setup --> | |
<ProtoDeclare name='animatedBlob'> | |
<ProtoInterface> | |
<field name='enabled' type='SFBool' value='false' accessType='inputOnly' | |
appinfo='default value false'/> | |
<field name='resumeTime' type='SFTime' value='0' accessType='inputOnly' | |
appinfo='default value 0'/> | |
<field name='pauseTime' type='SFTime' value='0' accessType='inputOnly' | |
appinfo='default value 0'/> | |
<field name='startTime' type='SFTime' value='0' accessType='inputOnly' | |
appinfo='default value 0'/> | |
<field name='stopTime' type='SFTime' value='0' accessType='inputOnly' | |
appinfo='default value 0'/> | |
</ProtoInterface> | |
<ProtoBody> | |
<Transform DEF='sphereTrafo'> | |
<Shape> | |
<Appearance DEF='purple'> | |
<Material diffuseColor='1 0 1' transparency='0.8'/> | |
</Appearance> | |
<Sphere radius='1.8'/> | |
</Shape> | |
</Transform> | |
<TimeSensor DEF='clock' enabled='false' cycleInterval='5' loop='true'> | |
<IS> | |
<connect nodeField='enabled' protoField='enabled'/> | |
<connect nodeField='resumeTime' protoField='resumeTime'/> | |
<connect nodeField='pauseTime' protoField='pauseTime'/> | |
<connect nodeField='startTime' protoField='startTime'/> | |
<connect nodeField='stopTime' protoField='stopTime'/> | |
</IS> | |
</TimeSensor> | |
<PositionInterpolator DEF='scaler' key='0 0.5 1' keyValue='1,1,1 0.9,0.5,0.9 1,1,1'/> | |
<ROUTE fromNode='clock' fromField='fraction_changed' toNode='scaler' toField='set_fraction'/> | |
<ROUTE fromNode='scaler' fromField='value_changed' toNode='sphereTrafo' toField='set_scale'/> | |
</ProtoBody> | |
</ProtoDeclare> | |
<Transform DEF='bloboid' translation='-3 0 0'> | |
<Transform DEF='centerSph'> | |
<ProtoInstance DEF='centerBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='centerBt' fromField='toggledOn' toNode='centerBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='centerBt' fromField='toggledOnTime' toNode='centerBlob' toField='startTime' /> | |
<ROUTE fromNode='centerBt' fromField='toggledOffTime' toNode='centerBlob' toField='stopTime'/> | |
<Transform DEF='centerRightSph' translation='2 0 0'> | |
<ProtoInstance DEF='centerRightBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='centerRightBt' fromField='toggledOn' toNode='centerRightBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='centerRightBt' fromField='toggledOnTime' toNode='centerRightBlob' toField='startTime' /> | |
<ROUTE fromNode='centerRightBt' fromField='toggledOffTime' toNode='centerRightBlob' toField='stopTime'/> | |
<Transform DEF='centerLeftSph' translation='-2 0 0'> | |
<ProtoInstance DEF='centerLeftBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='centerLeftBt' fromField='toggledOn' toNode='centerLeftBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='centerLeftBt' fromField='toggledOnTime' toNode='centerLeftBlob' toField='startTime' /> | |
<ROUTE fromNode='centerLeftBt' fromField='toggledOffTime' toNode='centerLeftBlob' toField='stopTime'/> | |
<Transform DEF='topSph' translation='0 2 0'> | |
<ProtoInstance DEF='topBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='topBt' fromField='toggledOn' toNode='topBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='topBt' fromField='toggledOnTime' toNode='topBlob' toField='startTime' /> | |
<ROUTE fromNode='topBt' fromField='toggledOffTime' toNode='topBlob' toField='stopTime'/> | |
<Transform DEF='topRightSph' translation='2 2 0'> | |
<ProtoInstance DEF='topRightBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='topRightBt' fromField='toggledOn' toNode='topRightBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='topRightBt' fromField='toggledOnTime' toNode='topRightBlob' toField='startTime' /> | |
<ROUTE fromNode='topRightBt' fromField='toggledOffTime' toNode='topRightBlob' toField='stopTime'/> | |
<Transform DEF='topLeftSph' translation='-2 2 0'> | |
<ProtoInstance DEF='topLeftBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='topLeftBt' fromField='toggledOn' toNode='topLeftBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='topLeftBt' fromField='toggledOnTime' toNode='topLeftBlob' toField='startTime' /> | |
<ROUTE fromNode='topLeftBt' fromField='toggledOffTime' toNode='topLeftBlob' toField='stopTime'/> | |
<Transform DEF='bottomSph' translation='0 -2 0'> | |
<ProtoInstance DEF='bottomBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='bottomBt' fromField='toggledOn' toNode='bottomBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='bottomBt' fromField='toggledOnTime' toNode='bottomBlob' toField='startTime' /> | |
<ROUTE fromNode='bottomBt' fromField='toggledOffTime' toNode='bottomBlob' toField='stopTime'/> | |
<Transform DEF='bottomRightSph' translation='2 -2 0'> | |
<ProtoInstance DEF='bottomRightBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='bottomRightBt' fromField='toggledOn' toNode='bottomRightBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='bottomRightBt' fromField='toggledOnTime' toNode='bottomRightBlob' toField='startTime' /> | |
<ROUTE fromNode='bottomRightBt' fromField='toggledOffTime' toNode='bottomRightBlob' toField='stopTime'/> | |
<Transform DEF='bottomLeftSph' translation='-2 -2 0'> | |
<ProtoInstance DEF='bottomLeftBlob' name='animatedBlob'/> | |
</Transform> | |
<ROUTE fromNode='bottomLeftBt' fromField='toggledOn' toNode='bottomLeftBlob' toField='enabled' /> <!-- for first time enabling --> | |
<ROUTE fromNode='bottomLeftBt' fromField='toggledOnTime' toNode='bottomLeftBlob' toField='startTime' /> | |
<ROUTE fromNode='bottomLeftBt' fromField='toggledOffTime' toNode='bottomLeftBlob' toField='stopTime'/> | |
</Transform> | |
</Scene> | |
</X3D> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment