فهرست منبع

Merge pull request #114 from NASA-AMMOS/on-load-tileset-cb

Add load tileset callback
Garrett Johnson 5 سال پیش
والد
کامیت
4cddb4910c
3فایلهای تغییر یافته به همراه51 افزوده شده و 0 حذف شده
  1. 1 0
      CHANGELOG.md
  2. 33 0
      README.md
  3. 17 0
      src/three/TilesRenderer.js

+ 1 - 0
CHANGELOG.md

@@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
 ### Added
 
 - `manager` field to `TilesRenderer` to enable support for DRACO decompression.
+- `TilesRenderer.onLoadTileSet` callback function.
 
 ### Fixed
 

+ 33 - 0
README.md

@@ -142,6 +142,31 @@ tilesRenderer.manager.addHandler( /\.gltf$/, {
 } );
 ```
 
+## Render On Change
+
+The tile set and model load callbacks can be used to detect when the data has changed and a new render is necessary.
+
+```js
+let needsRerender = true;
+const tilesRenderer = new TilesRenderer( './path/to/tileset.json' );
+tilesRenderer.onLoadTileSet = () => needsRerender = true;
+tilesRenderer.onLoadModel = () => needsRerender = true;
+
+function renderLoop() {
+
+	requestAnimationFrame( renderLoop );
+	if ( needsRerender ) {
+	
+		needsRerender = false;
+		tilesRenderer.upadate();
+		renderer.render( camera, scene );
+	
+	}
+
+}
+renderLoop();
+```
+
 # API
 
 ## TilesRenderer
@@ -317,6 +342,14 @@ forEachLoadedModel( callback : ( scene : Object3D, tile : object ) => void ) : v
 
 Fires the callback for every loaded scene in the hierarchy with the associatd tile as the second argument. This can be used to update the materials of all loaded meshes in the tile set.
 
+### .onLoadTileSet
+
+```js
+onLoadTileSet = null : ( tileSet : Object ) => void
+```
+
+Callback that is called whenever a tileset is loaded.
+
 ### .onLoadModel
 
 ```js

+ 17 - 0
src/three/TilesRenderer.js

@@ -82,6 +82,7 @@ export class TilesRenderer extends TilesRendererBase {
 		this.visibleTiles = new Set();
 		this._autoDisableRendererCulling = true;
 
+		this.onLoadTileSet = null;
 		this.onLoadModel = null;
 		this.onDisposeModel = null;
 
@@ -255,6 +256,22 @@ export class TilesRenderer extends TilesRendererBase {
 	}
 
 	/* Overriden */
+	loadTileSet( url ) {
+
+		const pr = super.loadTileSet( url );
+		pr.then(() => {
+
+			if ( this.onLoadTileSet ) {
+
+				this.onLoadTileSet( this.tileSets[ url ] );
+
+			}
+
+		});
+		return pr;
+
+	}
+
 	update() {
 
 		const group = this.group;