reference user() { reference body() { transform hip(position(1 0 0)) { pointAtNode(node(ankle), mode(axis 1 0 0)) { distance(node(ankle), startValue(90), endValue(55), minimum(0), maximum(90), when(changed,socket.orientation($value 0 0))) transform socket() { object upperLeg(file(avatarArm.pfb)) transform(position(0 1 0)) { node knee() } } } transform stride_(position(0 0 0)) { gravity fall(height(0.25)) } } } } timer pace(duration(0.5), when(changed,place_.set($value), raise_.set($value)), when(start,place_.set(0), place_.node(fall), start), when(end,raise_.set(0), place_.node++, place_.event(switch)++)) mover raise_() { moveToNode place_(node(fall), set(1), when(switch, startOrientation($orientation0 $orientation1 $orientation2), startPosition($position0 $position1 $position2))) { object foot(file(avatarFoot.pfb)) transform ankle(position(0 -0.3 0.4)) { pointAtNode(node(knee)) { object lowerLeg(file(avatarLeg.pfb)) } } } } //adjust and clamp foot stride interpolate(startValue(0), endValue(30), maximums(2), minimums(-2), when(changed,stride_.position(0 $value 0))) { add(when(changed,magnitude_.abs($value))) { value velocity_() } } //adjust foot raise interpolate(startValue(0), endValue(50), maximums(10), minimums(0), when(changed,raise_.endPosition(0 0 $value))) { mathematics magnitude_() }