User Thad() { caveNavigator(fly(off)) caveHead headUser0() { staticObject headAvatarUser0(cache(false),file(avatarHead.pfb)) } caveTracker wandTrackerUser0(sensor(1)) { caveWand wandUser0( ) staticObject wandAvatarUser0(file(avatarHand.pfb)) simpleTransform wristUser0(position(0 -0.5 0)) { pointAtNode(node(elbowUser0)) { object(file(avatarArm.pfb)) } } } body bodyUser0() { staticObject bodyAvatarUser0(cache(false),file(avatarBody.pfb)) //user Arm simpleTransform something(position(1 0 1)) { pointAtNode(node(wristUser0)) { distance(node(wristUser0), startValue(-90),endValue(-55), minimum(-90),maximum(0), when(changed,shoulderUser0.orientation(0 0 $value))) simpleTransform shoulderUser0() { object(file(avatarArm.pfb)) simpleTransform(position(0 1 0)) { node elbowUser0() } } } } //user Left Leg simpleTransform somethingelse(position(-1 0 0)) { pointAtNode(node(ankleUser0), mode(axis 1 0 0)) { distance(node(ankleUser0), startValue(90),endValue(55), minimum(0),maximum(90), when(changed,hipUser0.orientation($value 0 0))) simpleTransform hipUser0() { object(file(avatarArm.pfb)) simpleTransform(position(0 1 0)) { node kneeUser0() } } } } //user Right Leg simpleTransform somethingmore(position(1 0 0)) { pointAtNode(node(ankle2User0), mode(axis 1 0 0)) { distance(node(ankle2User0), startValue(90),endValue(55), minimum(0),maximum(90), when(changed,hip2User0.orientation($value 0 0))) simpleTransform hip2User0() { object(file(avatarArm.pfb)) simpleTransform(position(0 1 0)) { node knee2User0() } } } } //Gravity Nodes for Feet transform pace1(position(-1 4 4)) { gravity footGrav1(height(0.25)) } transform pace2(position(1 4 4)) { gravity footGrav2(height(0.25)) } userPosition(volume(cylinder 0 0 0 0 0 6 1), local(false), when(inside,currentPosition.values($xpos $ypos))) subtract deltaPosition(size(2), when(changed,xDelta.abs($value),yDelta.abs($value1)), when(setLast,lastPosition.values($xpos $ypos))) { value currentPosition(when(changed,deltaPosition.event(setLast,xpos=$value0,ypos=$value1))) value lastPosition() } interpolate(startValues(0 0), endValues(30 100), maximums(2 10), when(changed,pace1.position(-1 $value 4),pace2.position(1 $value 4), footUp1.endPosition(0 0 $value1),footUp2.endPosition(0 0 $value1),print(height:$value1))) { add() { mathematics xDelta() mathematics yDelta() } } } keyboard KBUser0(when(ckey, User0.toggleCollide),when(fkey,User0.toggleFly)) } /////////////////////////////////////////// //environment and light environment(skycolor(1 .15 .15)) light(position(1 -1 1)) //ground that is set to true floor transform (size(10)) { object(file(terrain.pfb),floor(true),position(0 0 0)) } wandtrigger trig1(when(button1,foot1.set(0),foot1.node(footGrav1),footTimer1.start,foot2.node,foot2.event(switch)), when(button3,foot2.set(0),foot2.node(footGrav2),footTimer2.start,foot1.node,foot1.event(switch))) timer footTimer1(duration(0.5), when(changed,foot1.set($value)), when(changed,footUp1.set($value)), when(end,footUp1.set(0)+0.1), when(end,trig1.event(button3)+0.15)) timer footTimer2(duration(0.5), when(changed,foot2.set($value)), when(changed,footUp2.set($value)), when(end,footUp2.set(0)+0.1), when(end,trig1.event(button1)+0.15)) mover footUp1(endPosition(0 0 10)) { moveToNode foot1(node(footGrav1),set(1), when(switch,print($position0 $position1 $position2), startOrientation($orientation0 $orientation1 $orientation2), startPosition($position0 $position1 $position2))) { object (file(block1.pfb), size(0.6 2 0.4)) simpleTransform ankleUser0(position(0 -0.3 0.4)) { pointAtNode(node(kneeUser0)) { object(file(avatarArm.pfb)) } } } } mover footUp2() { moveToNode foot2(node(footGrav2),set(1),when(switch,startOrientation($orientation0 $orientation1 $orientation2), startPosition($position0 $position1 $position2))) { object (file(block1.pfb), size(0.6 2 0.4)) simpleTransform ankle2User0(position(0 -0.3 0.4)) { pointAtNode(node(knee2User0)) { object(file(avatarArm.pfb)) } } } }