Skip to content

Commit

Permalink
Update use of plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
gkjohnson committed Jul 6, 2024
1 parent 4ce25c7 commit 4e8ca5d
Show file tree
Hide file tree
Showing 2 changed files with 355 additions and 22 deletions.
42 changes: 20 additions & 22 deletions example/landformSite.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ import {
} from 'three';
import { GUI } from 'three/examples/jsm/libs/lil-gui.module.min.js';
import { JPLLandformSiteSceneLoader } from './src/jpl/JPLLandformSceneLoader.js';
import { TextureOverlayTilesRendererMixin } from './src/plugins/overlays/TextureOverlayTilesRenderer.js';
import { TextureOverlayMaterialMixin } from './src/plugins/overlays/TextureOverlayMaterial.js';
import { TextureOverlayPlugin } from './src/plugins/overlays/TextureOverlayPlugin.js';

Expand Down Expand Up @@ -114,45 +113,38 @@ function init() {
const tokens = url.split( /[\\/]/g );
tokens.pop();

const TextureOverlayTilesRenderer = TextureOverlayTilesRendererMixin( TilesRenderer );
const TextureOverlayMaterial = TextureOverlayMaterialMixin( MeshBasicMaterial );
scene.tilesets.forEach( info => {

const url = [ ...tokens, `${ info.id }_tileset.json` ].join( '/' );
const tiles = new TextureOverlayTilesRenderer( url );
const plugin = new TextureOverlayPlugin( scene => {

} );
tiles.registerPlugin( plugin );

// ensure all materials support overlay textures
tiles.addEventListener( 'load-model', ( { tile, scene } )=> {
const tiles = new TilesRenderer( url );
const plugin = new TextureOverlayPlugin( ( scene, tile, plugin ) => {

scene.traverse( c => {

if ( c.material ) {

const newMaterial = new TextureOverlayMaterial();
newMaterial.copy( c.material );
newMaterial.textures = Object.values( tiles.getTexturesForTile( tile ) );
newMaterial.displayAsOverlay = params.slopeDisplay === 'OVERLAY';
c.material = newMaterial;
c.material.textures = Object.values( plugin.getTexturesForTile( tile ) );
c.material.displayAsOverlay = params.slopeDisplay === 'OVERLAY';
c.material.needsUpdate = true;

}

} );

} );
tiles.registerPlugin( plugin );

// assign the texture layers
tiles.addEventListener( 'layer-textures-change', ( { tile, scene } ) => {
// ensure all materials support overlay textures
tiles.addEventListener( 'load-model', ( { tile, scene } )=> {

scene.traverse( c => {

if ( c.material ) {

c.material.textures = Object.values( plugin.getTexturesForTile( tile ) );
c.material.needsUpdate = true;
const newMaterial = new TextureOverlayMaterial();
newMaterial.copy( c.material );
c.material = newMaterial;

}

Expand Down Expand Up @@ -191,9 +183,10 @@ function init() {

tileSets.forEach( t => {

if ( ! t.hasLayer( 'slopeLayer' ) ) {
const plugin = t.getPluginByName( 'TEXTURE_OVERLAY_PLUGIN' );
if ( ! plugin.hasLayer( 'slopeLayer' ) ) {

t.registerLayer( 'slopeLayer', layerFunction );
plugin.registerLayer( 'slopeLayer', layerFunction );

}

Expand All @@ -216,7 +209,12 @@ function init() {

} else {

tileSets.forEach( t => t.unregisterLayer( 'slopeLayer' ) );
tileSets.forEach( t => {

const plugin = t.getPluginByName( 'TEXTURE_OVERLAY_PLUGIN' );
plugin.unregisterLayer( 'slopeLayer' );

} );

}

Expand Down
Loading

0 comments on commit 4e8ca5d

Please sign in to comment.