#X3D V3.2 utf8 PROFILE Interchange Shape { appearance Appearance { texture ImageTexture { url "../../textures/test_texture.png" } textureTransform TextureTransform { scale 2 2 } material Material { } } geometry IndexedQuadSet { coord Coordinate { point [ 0 0 0, 1 0 0, 1 1 0, 0 1 0, 0 2 0, 1 2 0, 1 3 0, 0 3 0 ] } index [ 0 1 2 3, 4 5 6 7 ] texCoord DEF TexCoord TextureCoordinate { point [ 0 0, 1 0, 1 1, 0 1, 0 0, 1 0, 1 1, 0 1, ] } solid FALSE } } DEF Timer TimeSensor { loop TRUE cycleInterval 5 } DEF Interp CoordinateInterpolator2D { key [ 0 0.25 0.5 0.75 1 ] keyValue [ 0 0, 1 0, 1 1, 0 1, 0 0, 1 0, 1 1, 0 1, 0.5 0, 1.5 0, 1 1, 0 1, 0.5 0, 1.5 0, 1 1, 0 1, 0 0, 1 0, 1 1, 0 1, 0 0, 1 0, 1 1, 0 1, 0 0, 1 0, 1 1.5, 0 1.5, 0 0, 1 0, 1 1.5, 0 1.5, 0 0, 1 0, 1 1, 0 1, 0 0, 1 0, 1 1, 0 1, ] } ROUTE Timer.fraction_changed TO Interp.set_fraction ROUTE Interp.value_changed TO TexCoord.point # Test of Timer.enabled. Press Ctrl key to set TimeSensor.enabled to FALSE. DEF Key KeySensor { } DEF BF BooleanFilter { } ROUTE Key.controlKey TO BF.set_boolean ROUTE BF.inputNegate TO Timer.enabled # DEF L Logger { enabled TRUE level 3 } # ROUTE Timer.enabled TO L.write # ROUTE Timer.loop TO L.write # ROUTE Timer.startTime TO L.write # ROUTE Timer.stopTime TO L.write # ROUTE Timer.cycleTime TO L.write # ROUTE Timer.elapsedTime TO L.write # ROUTE Timer.fraction_changed TO L.write # ROUTE Timer.isActive TO L.write # ROUTE Timer.isPaused TO L.write # ROUTE Timer.time TO L.write # Make sure that even in case of timeOriginAtLoad, we still make the initial # cycleTime. #KambiNavigationInfo { timeOriginAtLoad TRUE }