docs: public void AnchorInteractivity(InteractiveObject interactiveObject) {
          // The interactiveObject contains an Anchor tag.
          // Could be a link to another x3d page, <Viewpoint> (camera) or web page
  
          final InteractiveObject interactiveObjectFinal = interactiveObject;
  
          interactiveObject.getSensor().getOwnerObject().forAllDescendants(
                  new GVRSceneObject.SceneVisitor()
                  {
                      public boolean visit (GVRSceneObject obj)
                      {
                          obj.attachCollider(new GVRMeshCollider(gvrContext, true));
                          return true;
                      }
                  });
  
          interactiveObject.getSensor().addISensorEvents(new ISensorEvents() {
              boolean isActiveDone = false;
              boolean newSceneLoaded = false;
  
              @Override
              public void onSensorEvent(SensorEvent event) {
                  // Anchor event could either call for new .x3d file, new camera location
                  // or to load a web page
                  if (event.isActive()) {
                      if (!isActiveDone) {
                          isActiveDone = true;
                          String url = interactiveObjectFinal.getSensor().getAnchorURL();
  
                          // Get rid of any single or double quotes surrounding the filename.
                          // this happens when the url = '"filename.x3d"' for example
                          if ( (url.indexOf("\"") == 0) || (url.indexOf("\'") == 0) ) {
                              url = url.substring(1, url.length());
                          }
                          if ( (url.indexOf("\"") == (url.length()-1)) || (url.indexOf("\'") == (url.length()-1)) ) {
                              url = url.substring(0, url.length()-1);
                          }
                          if (url.toLowerCase().endsWith(".x3d")) {
                              if ( !newSceneLoaded ) {
                                  // Go to another X3D scene
                                  newSceneLoaded = true;
                                  GVRExternalScene gvrExternalScene = new GVRExternalScene(gvrContext, url, true);
                                  GVRSceneObject gvrSceneObjectAnchor = new GVRSceneObject(gvrContext);
                                  gvrSceneObjectAnchor.attachComponent( gvrExternalScene );
                                  boolean load = gvrExternalScene.load(gvrContext.getMainScene());
                                  if (!load) Log.e(TAG, "Error loading new X3D scene " + url);
                                  else {
                                      interactiveObjectFinal.getSensor().disable();
                                      Log.e(TAG, "New X3D scene " + url + " loaded.");
                                  }
  
                              }
                          }  // end if .x3d file
                          else if (url.startsWith("#")) {
                              // go to another Viewpoint
                              SetNewViewpoint(url);
                          }  // end if new Viewpoint selected
                          else if ((url.endsWith(".xml")) || (url.endsWith(".rss"))) {
                              // Web page with XML, RSS data
                              if (!webPageActive && !webPageClosed) {
                                  webPageActive = true;
                                  webPageContent = "<HTML><BODY><FONT SIZE=7>Issue pressenting RSS / XML page</FONT></BODY></HTML>";
                                  final String urlFinal = url;
                                  Threads.spawn(new Runnable() {
  
                                      public void run() {
                                          File file = null;
                                          FileInputStream fileInputStream = null;
                                          try {
                                              Context context = gvrContext.getContext();
                                              file = gvrContext.getAssetLoader().downloadFile(context, urlFinal);
                                              fileInputStream = new FileInputStream(file);
  
                                              // Parse the XML/RSS file
                                              SAXParserFactory factory = SAXParserFactory.newInstance();
                                              SAXParser saxParser = factory.newSAXParser();
                                              UserHandler userhandler = new UserHandler();
  
                                              // CSS definitions will make XML/RSS data look nice
                                              webPageContent = "<html><body>";
                                              String css = "<style>" +
                                                      "#title { font-size: 60px; font-family: Arial; }" +
                                                      "#desc { font-size: 50px; font-family: Arial; }" +
                                                      "#link { font-size: 60px; font-family: Arial; }" +
                                                      "</style>";
                                              webPageContent += css;
                                              saxParser.parse(fileInputStream, userhandler);
                                              webPageContent += "</body></html>";
  
                                              LaunchWebPage(interactiveObjectFinal, urlFinal);
                                          } catch (FileNotFoundException e) {
                                              Log.e(TAG, "File " + urlFinal + " not found: " + e);
                                          } catch (IOException e) {
                                              Log.e(TAG, "File " + urlFinal + " IOException: " + e);
                                          } catch (Exception e) {
                                              Log.e(TAG, "File " + urlFinal + " exception: " + e);
                                          } finally {
                                              if (fileInputStream != null) {
                                                  try {
                                                      fileInputStream.close();
                                                  } catch (IOException e) {
  
                                                  }
                                              }
                                              if (file != null) {
                                                  file.delete();
                                              }
                                          }
                                      }
                                  });
                              } // end if !webPageActive
                          } // end if rss or xml data
  
                          else {
                              if ( !webPageActive  && !webPageClosed) {
                                  // Launch a web page window
                                  LaunchWebPage(interactiveObjectFinal, url);
                                  webPageActive = true;
                              }
                          }  // end launching a Web Page
                      }  // end if isActiveDone = false
                      else {
                          isActiveDone = false;
                      }
                  }
                  else if (!event.isActive() ) {
                      //Prevents closing the web page from invoking a new page on the item behind it.
                      webPageClosed = false;
                  }
                  else if (event.isOver()) {
                      GVRSceneObject sensorObj = interactiveObjectFinal.getSensor().getOwnerObject();
                      if (sensorObj != null) {
                          GVRSceneObject sensorObj2 = sensorObj.getChildByIndex(0);
                          if (sensorObj2 != null) {
                              GVRCameraRig mainCameraRig = gvrContext.getMainScene().getMainCameraRig();
                              float[] cameraPosition = new float[3];
                              cameraPosition[0] = mainCameraRig.getTransform().getPositionX();
                              cameraPosition[1] = mainCameraRig.getTransform().getPositionY();
                              cameraPosition[2] = mainCameraRig.getTransform().getPositionZ();
                          }
                      }
                  } else {
                      GVRSceneObject sensorObj = interactiveObjectFinal.getSensor().getOwnerObject();
                      if (sensorObj != null) {
                          GVRSceneObject sensorObj2 = sensorObj.getChildByIndex(0);
                          if (sensorObj2 != null) {
                              GVRCameraRig mainCameraRig = gvrContext.getMainScene().getMainCameraRig();
                              float[] cameraPosition = new float[3];
                              cameraPosition[0] = mainCameraRig.getTransform().getPositionX();
                              cameraPosition[1] = mainCameraRig.getTransform().getPositionY();
                              cameraPosition[2] = mainCameraRig.getTransform().getPositionZ();
                          }
                      }
                  }
              }  // end of onSensorEvent
          });  // end of AddISensorEvent
  
      }