docs: public void InitializeScript() {
  
          for (InteractiveObject interactiveObject : interactiveObjects) {
              if (interactiveObject.getScriptObject() != null) {
  
                  BuildInitJavaScript(interactiveObject);
                  Object[] parameters = SetJavaScriptArguments(interactiveObject, 0, 0, 0, 0,false);
                  parameters[0] = 0;
                  if (interactiveObject.getScriptObject().getTimeStampParameter()) parameters[1] = 0;
  
                  if ( V8JavaScriptEngine ) {
                      // Using V8 JavaScript compiler and run-time engine
                      GVRJavascriptV8File gvrJavascriptV8File = interactiveObject.getScriptObject().getGVRJavascriptV8File();
                      // Append the X3D data type constructors to the end of the JavaScript file
                      if ( !interactiveObject.getScriptObject().getInitializationDone()) {
                          gvrJavascriptV8File.setScriptText(gvrJavascriptV8File.getScriptText() +
                                  interactiveObject.getScriptObject().getGearVRinitJavaScript());
  
                          if ( !interactiveObject.getScriptObject().getScriptCalledPerFrame() ) {
                              // only initialize if this is not called per frame
                              // initialization for scripts called per frame must be called
                              // when we begin the first frame due to V8 engine start-up
                              String paramString = "var params =[";
                              for (int i = 0; i < parameters.length; i++ ) {
                                  paramString += (parameters[i] + ", ");
                              }
                              paramString = paramString.substring(0, (paramString.length()-2)) + "];";
  
                              final GVRJavascriptV8File gvrJavascriptV8FileFinal = gvrJavascriptV8File;
                              final InteractiveObject interactiveObjectFinal = interactiveObject;
                              final Object[] parametersFinal = parameters;
                              final String paramStringFinal = paramString;
                              gvrContext.runOnGlThread(new Runnable() {
                                  @Override
                                  public void run() {
                                      RunInitializeScriptThread( gvrJavascriptV8FileFinal, interactiveObjectFinal, parametersFinal, paramStringFinal);
                                  }
                              });
                          }  // ! per frame script
                      }
                      interactiveObject.getScriptObject().setInitializationDone(true);
  
                  } //  end of running initialize functions in V8 JavaScript engine
                  else {
                      // Using older Mozilla Rhino engine
                      GVRJavascriptScriptFile gvrJavascriptFile = interactiveObject.getScriptObject().getGVRJavascriptScriptFile();
  
                      // Append the X3D data type constructors to the end of the JavaScript file
                      gvrJavascriptFile.setScriptText(gvrJavascriptFile.getScriptText() +
                              interactiveObject.getScriptObject().getGearVRinitJavaScript());
  
                      // Run the newly created method 'GEARVR_INIT_JAVASCRIPT_FUNCTION' that
                      //    constructs the objects required for this JavaScript program.
                      boolean complete = gvrJavascriptFile.invokeFunction(GEARVR_INIT_JAVASCRIPT_FUNCTION_NAME, parameters);
                      if (complete) {
                          // if the objects required for this function were constructed, then
                          //   check if this <SCRIPT> has an initialize() method that is run just once.
                          if (gvrJavascriptFile.getScriptText().contains(INITIALIZE_FUNCTION)) {
                              RunScript(interactiveObject, INITIALIZE_FUNCTION, parameters);
                          }
                      } else {
                          Log.e(TAG, "Error parsing / running initializing Rhino JavaScript function in SCRIPT '" +
                                  interactiveObject.getScriptObject().getName() + "'");
                      }
                  }  //  end using older Mozilla Rhino engine
              }  // end check for interactiveObject having a Script Object
          }  // end loop thru all interactiveObjects for a ScriptObject
      }