Source: scripts/basic-script.js

/**
Basic script object. Scripts are loaded and instantiated when server demands it.
Experimental, most likely to change a lot, more towards IOC.
 */
export class BasicScript {
  /** 
  @param world the World this script runs in, contains babylon scene, WorldManager and everything else
  @param vrObject VRObject added tot he scene.. 
   */
  constructor( world, vrObject ) {
    this.world = world;
    this.scene = world.scene;
    this.worldManager = world.worldManager;
    this.VRSPACE = this.worldManager.VRSPACE;
    this.vrObject = vrObject;
    this.vrObject.attachedScript = this;
    this.vrObject.addListener((obj,changes)=>this.remoteChange(this.vrObject,changes));
  }
  /**
  Supposed to create a visible object and return root node
   */
  init() {
    return null;
  }

  /**
   * Executed when a remote change is triggerred. Changes have been already applied to the object.
  */  
  remoteChange(vrObject, changes) {
    console.log("Remote changes for "+vrObject.id, changes);
  }
  
  dispose() {
    console.log("Disposing of script", this.vrObject);
  }
  
  isMine() {
    return this.vrObject.properties && this.VRSPACE.me.id == this.vrObject.properties.clientId;
  }
}