Skip to content

Instantly share code, notes, and snippets.

@andreasplesch
Last active March 11, 2019 14:44
Show Gist options
  • Save andreasplesch/a70a5544ce291e1d2708d0a7ec52746c to your computer and use it in GitHub Desktop.
Save andreasplesch/a70a5544ce291e1d2708d0a7ec52746c to your computer and use it in GitHub Desktop.
x_ite test
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.3//EN" "http://www.web3d.org/specifications/x3d-3.3.dtd">
<X3D profile='Full' version='3.3' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation='http://www.web3d.org/specifications/x3d-3.3.xsd'>
<head>
<meta name='comment' content='World of Titania'/>
<meta name='created' content='Fri, 04 Sep 2015 09:59:41 GMT'/>
<meta name='creator' content='Holger Seelig'/>
<meta name='generator' content='Titania V1.2.2, http://titania.create3000.de'/>
<meta name='modified' content='Sun, 10 Jan 2016 02:57:53 GMT'/>
<meta name='title' content='Scene.rootNodes.2'/>
</head>
<Scene>
<WorldInfo
title='ColorSpheres'>
<MetadataSet DEF='Titania'
name='Titania'
reference='http://titania.create3000.de'>
<MetadataSet DEF='NavigationInfo' containerField='value'
name='NavigationInfo'
reference='http://titania.create3000.de'>
<MetadataString DEF='type' containerField='value'
name='type'
reference='http://titania.create3000.de'
value='"EXAMINE"'/>
</MetadataSet>
<MetadataSet DEF='Viewpoint' containerField='value'
name='Viewpoint'
reference='http://titania.create3000.de'>
<MetadataDouble DEF='position' containerField='value'
name='position'
reference='http://titania.create3000.de'
value='0, 0, 10'/>
<MetadataDouble DEF='orientation' containerField='value'
name='orientation'
reference='http://titania.create3000.de'
value='0, 0, 1, 0'/>
<MetadataDouble DEF='centerOfRotation' containerField='value'
name='centerOfRotation'
reference='http://titania.create3000.de'
value='0, 0, 0'/>
</MetadataSet>
</MetadataSet>
</WorldInfo>
<Group DEF='Buttons'>
<Transform DEF='InsertButton'
translation='-0.3 -3 0'
scale='0.2 0.2 0.2'>
<TouchSensor DEF='InsertTouch'
description='Add Node to Scene'/>
<Inline DEF='Inline'
url='"box.x3d", "https://raw.githubusercontent.com/create3000/Library/master/Tests/Components/Geometry3D/box.x3d"'/>
<Script DEF='InsertScript'
directOutput='true'>
<field accessType='inputOnly' type='SFTime' name='set_time'/>
<field accessType='initializeOnly' type='SFVec3f' name='minTranslation' value='-2 -2 -2'/>
<field accessType='initializeOnly' type='SFVec3f' name='maxTranslation' value='2 2 2'/>
<field accessType='initializeOnly' type='SFVec3f' name='scale' value='0.1 0.1 0.1'/>
<![CDATA[vrmlscript:
function set_time ()
{
var scene = Browser .currentScene;
scene .addRootNode (createNode ());
}
function createNode ()
{
var scene = Browser .currentScene;
var transform = scene .createNode ('Transform');
var shape = scene .createNode ('Shape');
transform .translation = random3f (minTranslation, maxTranslation);
transform .scale = scale;
transform .children = new MFNode (shape);
var material = scene .createNode ('Material');
material .diffuseColor = new SFColor (Math .random (), Math .random (), Math .random ());
shape .appearance = scene .createNode ('Appearance');
shape .appearance .material = material;
shape .geometry = create (scene);
return transform;
}
function create (scene)
{
switch (scene .rootNodes .length % 3)
{
case 0:
return scene .createNode ('Sphere');
case 1:
return scene .createNode ("Cylinder");
case 2:
return scene .createNode ("Box");
}
}
function random3f (min, max)
{
var size = max .subtract (min);
var value = new SFVec3f (Math .random () * size .x,
Math .random () * size .y,
Math .random () * size .z);
return min .add (value);
}
]]>
</Script>
</Transform>
<Transform DEF='ClearButton'
translation='0.3 -3 0'
scale='0.2 0.2 0.2'>
<TouchSensor DEF='ClearTouch'
description='Dispose node'/>
<Inline USE='Inline'
/>
<Script DEF='ClearScript'
directOutput='true'>
<field accessType='inputOnly' type='SFTime' name='set_time'/>
<![CDATA[vrmlscript:
function set_time ()
{
var currentScene = Browser .currentScene;
if (currentScene .rootNodes .length > 2)
currentScene .rootNodes [currentScene .rootNodes .length - 1] .getValue () .dispose (); // SAI not JS
print (currentScene .rootNodes);
}
]]>
</Script>
</Transform>
</Group>
<ROUTE fromNode='InsertTouch' fromField='touchTime' toNode='InsertScript' toField='set_time'/>
<ROUTE fromNode='ClearTouch' fromField='touchTime' toNode='ClearScript' toField='set_time'/>
</Scene>
</X3D>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<link rel="stylesheet" type="text/css" href="https://code.create3000.de/x_ite/latest/dist/x_ite.css"/>
<script type="text/javascript" src="https://code.create3000.de/x_ite/latest/dist/x_ite.js"></script>
<style type="text/css">
X3DCanvas {
width: 768px;
height: 432px;
}
</style>
</head>
<body>
<X3DCanvas src="dispose.x3d">
<p>Your browser may not support all features required by X_ITE.
For a better experience, keep your browser up to date.
<a href="http://outdatedbrowser.com">Check here for latest versions.</a></p>
</X3DCanvas>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment