From 1e832e7bbbe34a755a7c86de2006c2682600b45a Mon Sep 17 00:00:00 2001 From: Philip Rosedale Date: Fri, 24 Oct 2014 16:38:24 -0700 Subject: [PATCH] Tour guide script --- examples/guidedTour.js | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 examples/guidedTour.js diff --git a/examples/guidedTour.js b/examples/guidedTour.js new file mode 100644 index 0000000000..fe31e1db30 --- /dev/null +++ b/examples/guidedTour.js @@ -0,0 +1,47 @@ +// +// TourGuide.js +// +// This script will follow another person, if their display name is "Tour Guide" +// +var leaderName = "Tour Guide"; + +var guide; +var isGuide = false; +var lastGuidePosition = { x:0, y:0, z:0 }; +var MIN_CHANGE = 2.0; +var LANDING_DISTANCE = 2.0; +var LANDING_RANDOM = 0.2; + +function update(deltaTime) { + + if (Math.random() < deltaTime) { + guide = AvatarList.avatarWithDisplayName(leaderName); + if (guide && !isGuide) { + print("found a guide!"); + isGuide = true; + } else if (!isGuide) { + print("Lost My Guide"); + isguide = false; + } + } + + if (guide) { + // Check whether guide has moved, update if so + if (Vec3.length(lastGuidePosition) == 0.0) { + lastGuidePosition = guide.position; + } else { + if (Vec3.length(Vec3.subtract(lastGuidePosition, guide.position)) > MIN_CHANGE) { + var meToGuide = Vec3.multiply(Vec3.normalize(Vec3.subtract(guide.position, MyAvatar.position)), LANDING_DISTANCE); + var newPosition = Vec3.subtract(guide.position, meToGuide); + newPosition = Vec3.sum(newPosition, { x: Math.random() * LANDING_RANDOM - LANDING_RANDOM / 2.0, + y: 0, + z: Math.random() * LANDING_RANDOM - LANDING_RANDOM / 2.0 }); + MyAvatar.position = newPosition; + + lastGuidePosition = guide.position; + MyAvatar.orientation = guide.orientation; + } + } + } +} +Script.update.connect(update); \ No newline at end of file