#VRML V2.0 utf8 Cosmo PageFX #Cosmo PageFX V1.0 PROTO OnLoad [ eventIn SFTime gotNotifyFromOtherProto eventOut SFTime loadTime eventOut SFTime notifyOtherProto ] { DEF ONLOAD_0 Script { eventIn SFTime gotInitEvent eventIn SFTime gotNotifyFromOtherProto IS gotNotifyFromOtherProto eventOut SFTime loadTime IS loadTime eventOut SFTime initEvent eventOut SFTime notifyOtherProto IS notifyOtherProto url "javascript: function initialize() { initEvent = 0; } function gotInitEvent(val, time) { loadTime = time; notifyOtherProto = time; } function gotNotifyFromOtherProto(val, time) { loadTime = time; }" } ROUTE ONLOAD_0.initEvent TO ONLOAD_0.gotInitEvent } PROTO GroupAsset [ eventIn SFBool set_show eventIn SFFloat set_transparency eventIn SFColor set_diffuseColor eventIn SFColor set_emissiveColor eventIn SFColor set_specularColor eventIn SFFloat set_shininess eventIn SFVec2f set_texCenter eventIn SFFloat set_texRotation eventIn SFVec2f set_texScale eventIn SFVec2f set_texTranslation eventIn MFString set_url eventIn SFBool forceInitialize eventOut SFBool show_changed eventOut SFFloat transparency_changed eventOut SFColor diffuseColor_changed eventOut SFColor emissiveColor_changed eventOut SFColor specularColor_changed eventOut SFFloat shininess_changed eventOut SFVec2f texCenter_changed eventOut SFFloat texRotation_changed eventOut SFVec2f texScale_changed eventOut SFVec2f texTranslation_changed eventOut MFString url_changed eventOut MFNode assets_changed exposedField SFNode parent NULL exposedField MFNode xforms [] exposedField SFNode primaryAnimationTimer NULL exposedField SFInt32 startMotionId -1 exposedField SFTime popTime 1 exposedField SFTime pushTime 0 exposedField SFBool isTop FALSE field MFNode children [] field SFBool lit TRUE field SFBool show TRUE field MFNode assets [] ] { Group { children IS children } DEF S Script { eventIn SFBool set_show IS set_show eventIn SFFloat set_transparency IS set_transparency eventIn SFColor set_diffuseColor IS set_diffuseColor eventIn SFColor set_emissiveColor IS set_emissiveColor eventIn SFColor set_specularColor IS set_specularColor eventIn SFFloat set_shininess IS set_shininess eventIn SFVec2f set_texCenter IS set_texCenter eventIn SFFloat set_texRotation IS set_texRotation eventIn SFVec2f set_texScale IS set_texScale eventIn SFVec2f set_texTranslation IS set_texTranslation eventIn MFString set_url IS set_url eventIn SFBool forceInitialize IS forceInitialize eventOut SFBool show_changed IS show_changed eventOut SFFloat transparency_changed IS transparency_changed eventOut SFColor diffuseColor_changed IS diffuseColor_changed eventOut SFColor emissiveColor_changed IS emissiveColor_changed eventOut SFColor specularColor_changed IS specularColor_changed eventOut SFFloat shininess_changed IS shininess_changed eventOut SFVec2f texCenter_changed IS texCenter_changed eventOut SFFloat texRotation_changed IS texRotation_changed eventOut SFVec2f texScale_changed IS texScale_changed eventOut SFVec2f texTranslation_changed IS texTranslation_changed eventOut MFString url_changed IS url_changed eventOut MFNode assets_changed IS assets_changed field SFBool show IS show field MFNode assets IS assets url "vrmlscript: function set_show(val) { for (i=0; i= outline.edgeCoordIndex.length - 2 || idx1 == -1) { idx1 = start; grabStart = TRUE; } if (idx0 != -1 && idx1 != -1) { // no need to worry about polygon endings idx0 += skipPoints; // two indices on this layer idx1 += skipPoints; idx2 = idx0 + outline.coord.length; // two indices on the next layer idx3 = idx1 + outline.coord.length; // now make the two triangles per profile face // -- all profile faces are quads coordIndex[j++] = idx0; coordIndex[j++] = idx2; coordIndex[j++] = idx1; coordIndex[j++] = -1; coordIndex[j++] = idx1; coordIndex[j++] = idx2; coordIndex[j++] = idx3; coordIndex[j++] = -1; } else grabStart = TRUE; } } // back -- reverse front indices for back indices, // and set the Z depth for points. backOffset = outline.coord.length * (profile.prof.length-1); for (i = outline.coordIndex.length - 2; i >= 0; i--, j++) { idx = outline.coordIndex[i]; if (idx != -1) { idx += backOffset; } coordIndex[j] = idx; } coordIndex[j] = -1; j++; coordIndex.length = j; // now that everything is set up, adjust the profiles, if neccessary // If all the profile points are zero, then we don't need to do anything. if (profileNonZero) { adjustProfilePoints(); } coord_changed = coord; } function computeThinGeometry() { coord = outline.coord; coordIndex = outline.coordIndex; coord_changed = coord; } function computeColors() { if ((lit == TRUE) && (gradientDirection == -1)) return; if (gradientDirection == 0) { min = gradientStart.x; max = gradientEnd.x; } else { min = gradientStart.y; max = gradientEnd.y; } width = max - min; color.length = coord.length; for (pntIndex=0; pntIndex 1) { fraction = 1; } newColor.r = bottomOrLeftGradColor.r * (1-fraction) + topOrRightGradColor.r * fraction; newColor.g = bottomOrLeftGradColor.g * (1-fraction) + topOrRightGradColor.g * fraction; newColor.b = bottomOrLeftGradColor.b * (1-fraction) + topOrRightGradColor.b * fraction; } color[pntIndex] = newColor; } color_changed = color; } function computeTexCoords() { width = new SFVec2f(0,0); width.x = gradientEnd.x - gradientStart.x; width.y = gradientEnd.y - gradientStart.y; texCoord.length = coord.length; for (pntIndex=0; pntIndex= 4) { theSwitch.whichChoice = 4; choice = 4; } // if there's a non-negative gradient_direction // else choose choice 0 else if (gradientDirection >= 0) { theSwitch.whichChoice = 2; choice = 2; } else { theSwitch.whichChoice = 0; choice = 0; } } else { // If we are VRML text, choose the unlit version if (origChoice >= 4) { theSwitch.whichChoice = 5; choice = 5; } // if there is non-negative gradient_direciton // choose choice 3 // else choose choice 1 else if (gradientDirection >= 0) { theSwitch.whichChoice = 3; choice = 3; } else { theSwitch.whichChoice = 1; choice = 1; } } } else { theSwitch.whichChoice = -1; choice = -1; } show = val; show_changed = val; } function computeGeometry() { // only need to generate polys if there is a profile... if (isFlat) { computeThinGeometry(); } else { computeThickGeometry(); } } function initialize() { set_show(show); diffuseColor_changed = diffuseColor; if (choice < 4) { computeGeometry(); computeTexCoords(); computeColors(); } } function set_diffuseColor(val) { diffuseColor = val; diffuseColor_changed = val; computeColors(); } function forceInitialize() { } " directOutput TRUE } ROUTE CharScript_18.coord_changed TO theCoords_11.set_point ROUTE CharScript_18.texCoord_changed TO theTexCoords_12.set_point ROUTE CharScript_18.coordIndex TO theIFS_10.set_coordIndex ROUTE CharScript_18.coord_changed TO theCoordsVColors_15.set_point ROUTE CharScript_18.color_changed TO theColors_16.set_color ROUTE CharScript_18.texCoord_changed TO theTexCoordsVColors_17.set_point ROUTE CharScript_18.coordIndex TO theIFSVColors_14.set_coordIndex ROUTE CharScript_18.choice TO theSwitch_6.set_whichChoice } PROTO TypeOutline [ exposedField MFVec3f coord [ ] exposedField MFInt32 coordIndex [ ] exposedField MFInt32 edgeCoordIndex [ ] ] { Group { } } PROTO TypeProfile [ exposedField MFVec2f prof [ 0 0, 1 0 ] exposedField MFInt32 profColorIndex 1 ] { Group { } } PROTO SuperTimer [ eventIn SFTime start eventIn SFTime stop eventIn SFTime interrupt eventIn SFTime setFixedDuration eventOut SFFloat fraction eventOut SFFloat fixedDurationFraction eventOut SFFloat dampFraction eventOut SFTime cycleDuration_changed eventOut SFTime fixedDuration_changed eventOut SFVec2f fixedDurationAndCycleDuration_changed eventOut SFTime startTime eventOut SFTime stopTime eventOut SFTime beginCycleTime eventOut SFTime endCycleTime eventOut SFTime interruptTime field SFTime cycleInterval 2 field SFTime cycleIntervalDelta 0 field SFBool fixedDurationFlag TRUE field SFTime fixedDuration 5 field SFTime fixedDurationDelta 0 field SFTime dampStartDuration 1 field SFTime dampStopDuration 1 field SFBool hardStop FALSE field SFInt32 direction 0 field SFBool loop TRUE field SFBool easeFraction FALSE field SFBool restartAtBeginning TRUE field SFBool runAtStartup FALSE ] { DEF TS_19 TimeSensor { enabled FALSE startTime 1 stopTime 0 cycleInterval IS cycleInterval loop TRUE } DEF S_20 Script { eventIn SFTime start IS start eventIn SFTime stop IS stop eventIn SFFloat set_fraction eventIn SFTime interrupt IS interrupt eventIn SFTime setFixedDuration IS setFixedDuration eventOut SFFloat fraction IS fraction eventOut SFFloat fixedDurationFraction IS fixedDurationFraction eventOut SFFloat dampFraction IS dampFraction eventOut SFTime cycleDuration_changed IS cycleDuration_changed eventOut SFTime fixedDuration_changed IS fixedDuration_changed eventOut SFVec2f fixedDurationAndCycleDuration_changed IS fixedDurationAndCycleDuration_changed eventOut SFTime startTime IS startTime eventOut SFTime stopTime IS stopTime eventOut SFTime beginCycleTime IS beginCycleTime eventOut SFTime endCycleTime IS endCycleTime eventOut SFTime cycleInterval_changed eventOut SFBool enableTimer eventOut SFTime timer_startTime eventOut SFTime timer_stopTime eventOut SFTime interruptTime IS interruptTime field SFBool isFirstFraction TRUE field SFFloat lastFraction 0 field SFTime timeStarted 0 field SFInt32 direction IS direction field SFFloat zeroToOneVal 0 field SFBool restartAtBeginning IS restartAtBeginning field SFBool loop IS loop field SFBool easeFraction IS easeFraction field SFTime cycleInterval IS cycleInterval field SFTime cycleIntervalDelta IS cycleIntervalDelta field SFBool fixedDurationFlag IS fixedDurationFlag field SFTime fixedDuration IS fixedDuration field SFTime fixedDurationDelta IS fixedDurationDelta field SFTime dampStartDuration IS dampStartDuration field SFTime dampStopDuration IS dampStopDuration field SFTime softStopStartTime 0 field SFBool hardStop IS hardStop field SFTime currentFixedDuration 0 field SFTime currentCycleDuration 0 field SFVec2f fixedDurationAndCycleDuration 0 0 field SFBool runAtStartup IS runAtStartup url "javascript: function generateRandomInterval() { var randVal = Math.random(); currentCycleDuration = (cycleInterval - cycleIntervalDelta) * (1 - randVal) + (cycleInterval + cycleIntervalDelta) * randVal; cycleInterval_changed = currentCycleDuration; } function generateRandomFixedDuration() { var randVal = Math.random(); currentFixedDuration = (fixedDuration - fixedDurationDelta) * (1 - randVal) + (fixedDuration + fixedDurationDelta) * randVal; } function initialize() { // if up/down, double the cycleInterval if (direction == 2) { cycleInterval *= 2; cycleIntervalDelta *= 2; cycleInterval_changed = cycleInterval; } generateRandomInterval(); if(fixedDurationFlag == TRUE) { generateRandomFixedDuration(); } else { currentFixedDuration = -1; } if (runAtStartup == FALSE) { enableTimer = FALSE; } else { start(1, 1); } } function start(val, t) { isFirstFraction = TRUE; if ((restartAtBeginning == TRUE) || ((currentFixedDuration > 0) && (fixedDurationFraction == 1))) { zeroToOneVal = 0; if (cycleIntervalDelta > 0) { generateRandomInterval(); } else { currentCycleDuration = cycleInterval; } if (fixedDurationFlag == TRUE) { if (fixedDurationDelta > 0) { generateRandomFixedDuration(); } else { currentFixedDuration = fixedDuration; } } } fixedDurationAndCycleDuration[0] = currentFixedDuration; fixedDurationAndCycleDuration[1] = currentCycleDuration; fixedDuration_changed = fixedDurationAndCycleDuration[0]; cycleDuration_changed = fixedDurationAndCycleDuration[1]; fixedDurationAndCycleDuration_changed = fixedDurationAndCycleDuration; enableTimer = TRUE; startTime = t; timer_startTime = t; } function stop(val, t) { if ((hardStop == TRUE) || (dampStopDuration == 0)) { enableTimer = FALSE; stopTime = t; } else { softStopStartTime = t; } } function interrupt(val, t) { if (enableTimer == TRUE) { enableTimer = FALSE; stopTime = t; } interruptTime = t; } function setFixedDuration(val, t) { fixedDuration = val; if (fixedDuration < (dampStartDuration + dampStopDuration)) { fixedDuration = dampStartDuration + dampStopDuration; } fixedDuration_changed = fixedDuration; currentFixedDuration = fixedDuration; } function dampStop(val, t) { enableTimer = FALSE; stopTime = t; softStopStartTime = 0; dampFraction = 0; } function loopStop(val, t) { enableTimer = FALSE; stopTime = t; softStopStartTime = 0; dampFraction = 0; } function fixedStop(val, t) { enableTimer = FALSE; stopTime = timeStarted + currentFixedDuration; // if nothing random, be exact if ((cycleIntervalDelta == 0) && (fixedDurationDelta == 0)) { // generate the exact lastFraction var totalTime = currentFixedDuration; while (totalTime > cycleInterval) { totalTime -= cycleInterval; } var realFract = totalTime / cycleInterval; if (totalTime > cycleInterval) { realFract = 1; } if ((easeFraction == FALSE) || ((dampStartDuration == 0) && (dampStopDuration == 0))) { if (direction == 0) { fraction = realFract; } else if (direction == 1) { fraction = 1 - realFract; } else { if (realFract > .5) { fraction = 2*(1 - realFract); } else { fraction = 2*realFract; } } } } if (currentFixedDuration > 0) { fixedDurationFraction = 1; if (direction == 1) { fixedDurationFraction = 1 - fixedDurationFraction; } } softStopStartTime = 0; dampFraction = 0; } function set_fraction(val, t) { if (enableTimer == FALSE) { return; } // damping first, because it's needed to do ease if (isFirstFraction == FALSE) { if ((dampStartDuration > 0) && ((t - timeStarted) <= dampStartDuration)) { dampFraction = (t-timeStarted) / dampStartDuration; } else if ((dampStopDuration > 0) && (currentFixedDuration > 0) && ((t-timeStarted) >= (currentFixedDuration - dampStopDuration))) { dampFraction = ((currentFixedDuration - (t - timeStarted)) / dampStopDuration); } else if ((dampStopDuration > 0) && (loop == FALSE) && ((t-timeStarted) >= (cycleInterval_changed - dampStopDuration))) { if (zeroToOneVal > 0) { dampFraction = ((cycleInterval_changed - (t - timeStarted)) / dampStopDuration); } } else if (softStopStartTime > 0) { if (t-softStopStartTime >= dampStopDuration) { dampStop(val, t); } else { dampFraction = 1 - ((t - softStopStartTime) / dampStopDuration); } } else { dampFraction = 1; } } else { dampFraction = 0; } if (isFirstFraction == TRUE) { isFirstFraction = FALSE; if (!restartAtBeginning && (currentFixedDuration > 0) && (fixedDurationFraction > 0) && (fixedDurationFraction < 1)) { timeStarted = timeStarted + (t - stopTime); } else { timeStarted = t; if ((loop == TRUE) && (restartAtBeginning)) { beginCycleTime = t; } } } else { if (val > lastFraction) { if (easeFraction == FALSE) { zeroToOneVal = zeroToOneVal + (val - lastFraction); } else { zeroToOneVal = zeroToOneVal + (val - lastFraction) * dampFraction*dampFraction; } } else { if (easeFraction == FALSE) { zeroToOneVal = zeroToOneVal + (1 - lastFraction) + val; } else { zeroToOneVal = zeroToOneVal + ((1-lastFraction) + val) * dampFraction*dampFraction; } } if (direction == 0) { // ramp up fraction = zeroToOneVal; if (fraction >= 1) { if (loop == TRUE) { fraction = fraction - 1; } else { fraction = 1; } } } else if (direction == 1) { // ramp down fraction = 1 - zeroToOneVal; if (fraction <= 0) { if (loop == TRUE) { fraction = fraction+1; } else { fraction = 0; } } } else if (direction == 2) { // ramp up/down fraction = zeroToOneVal; if (fraction >= 1) { if (loop == TRUE) { fraction = fraction - 1; } else { fraction = 1; } } if (fraction > .5) { fraction = 2*(1 - fraction); } else { fraction = 2*fraction; } } if (zeroToOneVal >= 1) { if (loop == TRUE) { zeroToOneVal -= 1; endCycleTime = t; beginCycleTime = endCycleTime; } else { zeroToOneVal = 0; loopStop(val, t); } } } if (currentFixedDuration > 0) { if ((t - timeStarted) > currentFixedDuration) { fixedStop(val, t); } else { fixedDurationFraction = (t-timeStarted) / currentFixedDuration; if (direction == 1) { fixedDurationFraction = 1 - fixedDurationFraction; } } } lastFraction = val; }" } ROUTE S_20.enableTimer TO TS_19.set_enabled ROUTE S_20.timer_startTime TO TS_19.set_startTime ROUTE S_20.timer_stopTime TO TS_19.set_stopTime ROUTE S_20.cycleInterval_changed TO TS_19.set_cycleInterval ROUTE TS_19.fraction_changed TO S_20.set_fraction } PROTO ColorBackground [ eventIn SFBool set_show eventIn SFColor set_diffuseColor eventIn SFColor set_bottomOrLeftGradColor eventIn SFColor set_topOrRightGradColor eventIn SFBool defaultBGBindEvent eventIn SFBool forceInitialize eventOut SFBool show_changed eventOut SFColor diffuseColor_changed eventOut SFColor bottomOrLeftGradColor_changed eventOut SFColor topOrRightGradColor_changed exposedField SFNode parent NULL exposedField MFNode xforms [] field SFColor diffuseColor 0 0 0.5 field SFColor bottomOrLeftGradColor 0 0 0.2 field SFColor topOrRightGradColor 0 0 0.8 field SFInt32 gradientDirection -1 field MFColor _skyColor [ ] field MFFloat _skyAngle [ ] field SFRotation _rotation 0 0 1 0 field SFBool show FALSE ] { DEF T Transform { children DEF B_21 Background { skyAngle IS _skyAngle skyColor IS _skyColor } rotation IS _rotation } DEF S_22 Script { eventIn SFBool set_show IS set_show eventIn SFColor set_diffuseColor IS set_diffuseColor eventIn SFColor set_bottomOrLeftGradColor IS set_bottomOrLeftGradColor eventIn SFColor set_topOrRightGradColor IS set_topOrRightGradColor eventIn SFBool defaultBGBindEvent IS defaultBGBindEvent eventIn SFBool forceInitialize IS forceInitialize eventOut MFColor skyColor_changed eventOut SFBool show_changed IS show_changed eventOut SFColor diffuseColor_changed IS diffuseColor_changed eventOut SFColor bottomOrLeftGradColor_changed IS bottomOrLeftGradColor_changed eventOut SFColor topOrRightGradColor_changed IS topOrRightGradColor_changed field SFColor diffuseColor IS diffuseColor field SFColor bottomOrLeftGradColor IS bottomOrLeftGradColor field SFColor topOrRightGradColor IS topOrRightGradColor field SFInt32 gradientDirection IS gradientDirection field SFBool show IS show field SFNode theBackground USE B_21 field SFBool iAmBound FALSE url "vrmlscript: function set_show(val) { theBackground.set_bind = val; show = val; show_changed = val; iAmBound = val; } function updateColors() { if (gradientDirection == -1) { skyColor_changed.length = 1; skyColor_changed[0] = diffuseColor_changed; } else if (gradientDirection == 0) { skyColor_changed.length = 3; skyColor_changed[0] = topOrRightGradColor_changed; skyColor_changed[1] = topOrRightGradColor_changed; skyColor_changed[2] = bottomOrLeftGradColor_changed; } else if (gradientDirection == 1) { skyColor_changed.length = 3; skyColor_changed[0] = topOrRightGradColor_changed; skyColor_changed[1] = topOrRightGradColor_changed; skyColor_changed[2] = bottomOrLeftGradColor_changed; } } function initialize() { if (show == TRUE) { set_show(show); } else { show_changed = FALSE; } diffuseColor_changed = diffuseColor; topOrRightGradColor_changed = topOrRightGradColor; bottomOrLeftGradColor_changed = bottomOrLeftGradColor; } function defaultBGBindEvent(val, t) { if ((val == TRUE) && (iAmBound == TRUE)) { set_show(show); } } function set_diffuseColor(val) { diffuseColor_changed = val; updateColors(); } function set_topOrRightGradColor(val) { topOrRightGradColor_changed = val; updateColors(); } function set_bottomOrLeftGradColor(val) { bottomOrLeftGradColor_changed = val; updateColors(); } function forceInitialize() { } " } ROUTE S_22.skyColor_changed TO B_21.set_skyColor } Group { children [ DEF DOC__PUBLISH_ROOT Group { children [ DEF SUBEFFECT45 OnLoad { } DEF DOC__DEF_VIEWPOINT Viewpoint { position 0 0 5 fieldOfView 0.410791 } DEF DOC__DEF_NAVINFO NavigationInfo { headlight FALSE type "NONE" } DEF DOC__DEF_BACKGROUND Background { skyColor 0.75 0.75 0.75 } DEF ASSET41 GroupAsset { children [ DEF ASSETSWITCH42 Switch { whichChoice 0 choice DEF ASSETX42 Transform { children DEF ASSETSX42 Transform { children DEF ASSET42 Light { distance 1.52788 attenuation 0.001 0.654502 0 parent USE ASSET41 xforms [ USE ASSETX42 USE ASSETSX42 ] } } translation 0.413992 0.0608812 4.03497 rotation -0.145494 0.989359 0 0.741812 center 0 0 0 } } DEF ASSETSWITCH43 Switch { whichChoice 0 choice DEF ASSETX43 Transform { children DEF ASSETSX43 Transform { children DEF ASSET43 Light { distance 1.52788 attenuation 0.001 0.654502 0 parent USE ASSET41 xforms [ USE ASSETX43 USE ASSETSX43 ] } } translation -1.06048 0.155953 2.30256 rotation -0.145494 -0.989359 0 0.741812 center 0 0 0 } } DEF ASSETSWITCH49 Switch { whichChoice 0 choice DEF ASSETX49 Transform { children DEF SUBEFFECT78 Spin { asset DEF ASSET49 GroupAsset { children DEF ASSETSWITCH56 Switch { whichChoice 0 choice DEF ASSETX56 Transform { children DEF ASSETSX56 Transform { children DEF ASSET56 TypeChar { url "" isFlat FALSE oneSided TRUE gradientStart 0.03 -0.01 gradientEnd 0.84 0.6 topOrRightGradColor 0 0 0 bottomOrLeftGradColor 0 0 0 gradientDirection -1 coord [ 0.84 0.6 0, 0.66 0.6 0, 0.66 0.59 0, 0.7 0.59 0, 0.72 0.57 0, 0.73 0.55 0, 0.72 0.52 0, 0.71 0.47 0, 0.59 0.14 0, 0.48 0.47 0, 0.46 0.52 0, 0.46 0.55 0, 0.47 0.58 0, 0.5 0.59 0, 0.52 0.59 0, 0.52 0.6 0, 0.29 0.6 0, 0.29 0.59 0, 0.32 0.59 0, 0.34 0.58 0, 0.39 0.48 0, 0.41 0.42 0, 0.32 0.14 0, 0.21 0.48 0, 0.19 0.53 0, 0.19 0.55 0, 0.2 0.58 0, 0.23 0.59 0, 0.24 0.59 0, 0.24 0.6 0, 0.03 0.6 0, 0.03 0.59 0, 0.07 0.59 0, 0.09 0.56 0, 0.1 0.54 0, 0.12 0.49 0, 0.29 -0.01 0, 0.32 -0.01 0, 0.43 0.36 0, 0.56 -0.01 0, 0.58 -0.01 0, 0.75 0.48 0, 0.76 0.53 0, 0.77 0.55 0, 0.8 0.59 0, 0.84 0.59 0, 0.84 0.6 -0.138889, 0.66 0.6 -0.138889, 0.66 0.59 -0.138889, 0.7 0.59 -0.138889, 0.72 0.57 -0.138889, 0.73 0.55 -0.138889, 0.72 0.52 -0.138889, 0.71 0.47 -0.138889, 0.59 0.14 -0.138889, 0.48 0.47 -0.138889, 0.46 0.52 -0.138889, 0.46 0.55 -0.138889, 0.47 0.58 -0.138889, 0.5 0.59 -0.138889, 0.52 0.59 -0.138889, 0.52 0.6 -0.138889, 0.29 0.6 -0.138889, 0.29 0.59 -0.138889, 0.32 0.59 -0.138889, 0.34 0.58 -0.138889, 0.39 0.48 -0.138889, 0.41 0.42 -0.138889, 0.32 0.14 -0.138889, 0.21 0.48 -0.138889, 0.19 0.53 -0.138889, 0.19 0.55 -0.138889, 0.2 0.58 -0.138889, 0.23 0.59 -0.138889, 0.24 0.59 -0.138889, 0.24 0.6 -0.138889, 0.03 0.6 -0.138889, 0.03 0.59 -0.138889, 0.07 0.59 -0.138889, 0.09 0.56 -0.138889, 0.1 0.54 -0.138889, 0.12 0.49 -0.138889, 0.29 -0.01 -0.138889, 0.32 -0.01 -0.138889, 0.43 0.36 -0.138889, 0.56 -0.01 -0.138889, 0.58 -0.01 -0.138889, 0.75 0.48 -0.138889, 0.76 0.53 -0.138889, 0.77 0.55 -0.138889, 0.8 0.59 -0.138889, 0.84 0.59 -0.138889 ] texCoord [ ] coordIndex [ 32, 30, 31, -1, 30, 32, 29, -1, 29, 32, 33, -1, 29, 33, 34, -1, 29, 34, 26, -1, 26, 34, 35, -1, 26, 35, 25, -1, 25, 35, 24, -1, 29, 26, 27, -1, 29, 27, 28, -1, 36, 24, 35, -1, 24, 36, 23, -1, 23, 36, 22, -1, 22, 36, 37, -1, 22, 37, 38, -1, 22, 38, 21, -1, 39, 10, 38, -1, 10, 39, 9, -1, 9, 39, 8, -1, 8, 39, 40, -1, 8, 40, 41, -1, 8, 41, 7, -1, 7, 41, 6, -1, 6, 41, 5, -1, 3, 1, 2, -1, 1, 3, 0, -1, 0, 3, 44, -1, 44, 3, 4, -1, 44, 4, 5, -1, 44, 5, 43, -1, 43, 5, 42, -1, 42, 5, 41, -1, 0, 44, 45, -1, 18, 16, 17, -1, 16, 18, 15, -1, 15, 18, 19, -1, 15, 19, 12, -1, 12, 19, 20, -1, 12, 20, 21, -1, 12, 21, 11, -1, 11, 21, 38, -1, 11, 38, 10, -1, 15, 12, 13, -1, 15, 13, 14, -1, 0, 46, 1, -1, 1, 46, 47, -1, 1, 47, 2, -1, 2, 47, 48, -1, 2, 48, 3, -1, 3, 48, 49, -1, 3, 49, 4, -1, 4, 49, 50, -1, 4, 50, 5, -1, 5, 50, 51, -1, 5, 51, 6, -1, 6, 51, 52, -1, 6, 52, 7, -1, 7, 52, 53, -1, 7, 53, 8, -1, 8, 53, 54, -1, 8, 54, 9, -1, 9, 54, 55, -1, 9, 55, 10, -1, 10, 55, 56, -1, 10, 56, 11, -1, 11, 56, 57, -1, 11, 57, 12, -1, 12, 57, 58, -1, 12, 58, 13, -1, 13, 58, 59, -1, 13, 59, 14, -1, 14, 59, 60, -1, 14, 60, 15, -1, 15, 60, 61, -1, 15, 61, 16, -1, 16, 61, 62, -1, 16, 62, 17, -1, 17, 62, 63, -1, 17, 63, 18, -1, 18, 63, 64, -1, 18, 64, 19, -1, 19, 64, 65, -1, 19, 65, 20, -1, 20, 65, 66, -1, 20, 66, 21, -1, 21, 66, 67, -1, 21, 67, 22, -1, 22, 67, 68, -1, 22, 68, 23, -1, 23, 68, 69, -1, 23, 69, 24, -1, 24, 69, 70, -1, 24, 70, 25, -1, 25, 70, 71, -1, 25, 71, 26, -1, 26, 71, 72, -1, 26, 72, 27, -1, 27, 72, 73, -1, 27, 73, 28, -1, 28, 73, 74, -1, 28, 74, 29, -1, 29, 74, 75, -1, 29, 75, 30, -1, 30, 75, 76, -1, 30, 76, 31, -1, 31, 76, 77, -1, 31, 77, 32, -1, 32, 77, 78, -1, 32, 78, 33, -1, 33, 78, 79, -1, 33, 79, 34, -1, 34, 79, 80, -1, 34, 80, 35, -1, 35, 80, 81, -1, 35, 81, 36, -1, 36, 81, 82, -1, 36, 82, 37, -1, 37, 82, 83, -1, 37, 83, 38, -1, 38, 83, 84, -1, 38, 84, 39, -1, 39, 84, 85, -1, 39, 85, 40, -1, 40, 85, 86, -1, 40, 86, 41, -1, 41, 86, 87, -1, 41, 87, 42, -1, 42, 87, 88, -1, 42, 88, 43, -1, 43, 88, 89, -1, 43, 89, 44, -1, 44, 89, 90, -1, 44, 90, 45, -1, 45, 90, 91, -1, 45, 91, 0, -1, 0, 91, 46, -1, 60, 59, 61, -1, 59, 58, 61, -1, 56, 84, 57, -1, 84, 67, 57, -1, 57, 67, 58, -1, 67, 66, 58, -1, 66, 65, 58, -1, 58, 65, 61, -1, 65, 64, 61, -1, 61, 64, 62, -1, 63, 62, 64, -1, 91, 90, 46, -1, 87, 51, 88, -1, 88, 51, 89, -1, 89, 51, 90, -1, 51, 50, 90, -1, 50, 49, 90, -1, 90, 49, 46, -1, 46, 49, 47, -1, 48, 47, 49, -1, 51, 87, 52, -1, 52, 87, 53, -1, 53, 87, 54, -1, 87, 86, 54, -1, 86, 85, 54, -1, 54, 85, 55, -1, 55, 85, 56, -1, 84, 56, 85, -1, 67, 84, 68, -1, 84, 83, 68, -1, 83, 82, 68, -1, 68, 82, 69, -1, 69, 82, 70, -1, 81, 70, 82, -1, 74, 73, 75, -1, 73, 72, 75, -1, 70, 81, 71, -1, 71, 81, 72, -1, 81, 80, 72, -1, 72, 80, 75, -1, 80, 79, 75, -1, 79, 78, 75, -1, 75, 78, 76, -1, 77, 76, 78, -1 ] color [ 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8, 0 0.48 0.8 ] outline DEF OUTLINE57_54696d6573204e657720526f6d616e_526567756c6172_5765737465726e_5a TypeOutline { coord [ 0.84 0.6 0, 0.66 0.6 0, 0.66 0.59 0, 0.7 0.59 0, 0.72 0.57 0, 0.73 0.55 0, 0.72 0.52 0, 0.71 0.47 0, 0.59 0.14 0, 0.48 0.47 0, 0.46 0.52 0, 0.46 0.55 0, 0.47 0.58 0, 0.5 0.59 0, 0.52 0.59 0, 0.52 0.6 0, 0.29 0.6 0, 0.29 0.59 0, 0.32 0.59 0, 0.34 0.58 0, 0.39 0.48 0, 0.41 0.42 0, 0.32 0.14 0, 0.21 0.48 0, 0.19 0.53 0, 0.19 0.55 0, 0.2 0.58 0, 0.23 0.59 0, 0.24 0.59 0, 0.24 0.6 0, 0.03 0.6 0, 0.03 0.59 0, 0.07 0.59 0, 0.09 0.56 0, 0.1 0.54 0, 0.12 0.49 0, 0.29 -0.01 0, 0.32 -0.01 0, 0.43 0.36 0, 0.56 -0.01 0, 0.58 -0.01 0, 0.75 0.48 0, 0.76 0.53 0, 0.77 0.55 0, 0.8 0.59 0, 0.84 0.59 0 ] coordIndex [ 32, 30, 31, -1, 30, 32, 29, -1, 29, 32, 33, -1, 29, 33, 34, -1, 29, 34, 26, -1, 26, 34, 35, -1, 26, 35, 25, -1, 25, 35, 24, -1, 29, 26, 27, -1, 29, 27, 28, -1, 36, 24, 35, -1, 24, 36, 23, -1, 23, 36, 22, -1, 22, 36, 37, -1, 22, 37, 38, -1, 22, 38, 21, -1, 39, 10, 38, -1, 10, 39, 9, -1, 9, 39, 8, -1, 8, 39, 40, -1, 8, 40, 41, -1, 8, 41, 7, -1, 7, 41, 6, -1, 6, 41, 5, -1, 3, 1, 2, -1, 1, 3, 0, -1, 0, 3, 44, -1, 44, 3, 4, -1, 44, 4, 5, -1, 44, 5, 43, -1, 43, 5, 42, -1, 42, 5, 41, -1, 0, 44, 45, -1, 18, 16, 17, -1, 16, 18, 15, -1, 15, 18, 19, -1, 15, 19, 12, -1, 12, 19, 20, -1, 12, 20, 21, -1, 12, 21, 11, -1, 11, 21, 38, -1, 11, 38, 10, -1, 15, 12, 13, -1, 15, 13, 14, -1 ] edgeCoordIndex [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, -1 ] } profile DEF PROFILEFLAT TypeProfile { prof [ 0 0, 1 0 ] profColorIndex [ ] } profileScale 0.04 extrusionDepth 0.138889 lit TRUE choice 0 transparency 0 diffuseColor 0 0.48 0.8 emissiveColor 0 0.09 0.15 specularColor 0.5 0.5 0.5 shininess 0.2 texRotation 0 texScale 1 1 texTranslation 0 0 charscale 1 1 kerning 0 leading 0.7416 tracking 0 baseline 0 parent USE ASSET49 } scale 0.72 0.72 1 } translation 0 0 0 } } parent USE ASSET41 xforms [ USE ASSETX49 USE SUBEFFECT78 DEF ASSETSX49 Transform { children [ USE ASSET49 DEF SUBEFFECT77 SuperTimer { cycleInterval 6 fixedDurationFlag FALSE dampStartDuration 0 dampStopDuration 0 easeFraction TRUE } ] scale 1 1 1 center 0 0 0 } ] assets USE ASSET56 } children USE ASSETSX49 xyztoggle 1 center 0.3132 0.2124 0 } translation -0.288496 -0.124299 3.1012 rotation 0 0 1 0 scaleOrientation 0 0 1 0 center 0 0 0 } } DEF ASSETSWITCH87 Switch { whichChoice 0 choice DEF ASSETX87 Transform { children DEF ASSETSX87 Transform { children DEF ASSET87 ColorBackground { _skyColor 0 0 0.5 _skyAngle [ ] _rotation 0 0 1 0 show TRUE parent USE ASSET41 xforms [ USE ASSETX87 USE ASSETSX87 ] } } } } ] isTop TRUE assets [ USE ASSET42 USE ASSET43 USE ASSET49 USE ASSET87 ] } DEF SUBEFFECT46 OnLoad { } ] } DEF DOC__NEED_ASSET Group { children [] } ] } ROUTE SUBEFFECT46.notifyOtherProto TO SUBEFFECT45.gotNotifyFromOtherProto ROUTE SUBEFFECT78.start_changed TO SUBEFFECT77.start ROUTE SUBEFFECT45.loadTime TO SUBEFFECT78.start ROUTE SUBEFFECT77.stopTime TO SUBEFFECT78.stop ROUTE SUBEFFECT77.fraction TO SUBEFFECT78.set_fraction ROUTE DOC__DEF_BACKGROUND.isBound TO ASSET87.defaultBGBindEvent ROUTE SUBEFFECT45.notifyOtherProto TO SUBEFFECT46.gotNotifyFromOtherProto