diff --git a/plugins/rollup.js b/plugins/rollup.js index 8228a90..0a3ae30 100644 --- a/plugins/rollup.js +++ b/plugins/rollup.js @@ -31,6 +31,7 @@ const text = require('../types/text.js'); //const fog = require('../types/fog.js'); // const background = require('../types/background.js'); const rendersettings = require('../types/rendersettings.js'); +const windsettings = require('../types/windsettings.js'); const spawnpoint = require('../types/spawnpoint.js'); const group = require('../types/group.js'); const directory = require('../types/.js'); @@ -55,6 +56,7 @@ const loaders = { // fog, // background, rendersettings, + windsettings, spawnpoint, group, '': directory, @@ -75,7 +77,7 @@ const _getType = id => { } let extension; let match2; - if (match2 = type.match(/^application\/(light|text|rendersettings|group|spawnpoint)$/)) { + if (match2 = type.match(/^application\/(light|text|rendersettings|group|spawnpoint|windsettings)$/)) { extension = match2[1]; } else { extension = mimeTypes.extension(type); diff --git a/type_templates/windsettings.js b/type_templates/windsettings.js new file mode 100644 index 0000000..e93f896 --- /dev/null +++ b/type_templates/windsettings.js @@ -0,0 +1,45 @@ +import * as THREE from 'three'; +import metaversefile from 'metaversefile'; +const {useApp, useFrame, useCleanup, useWorld} = metaversefile; + +const localVector = new THREE.Vector3(); +const localVector2 = new THREE.Vector3(); + +export default e => { + const app = useApp(); + app.appType = 'wind'; + + // const {gifLoader} = useLoaders(); + const world = useWorld(); + + const srcUrl = '${this.srcUrl}'; + + e.waitUntil((async () => { + const res = await fetch(srcUrl); + const j = await res.json(); + let {forceFactor, direction, refreshDelay} = j; + + const windParameters = world.getWindParameters(); + windParameters.forceFactor = forceFactor; + windParameters.refreshDelay = refreshDelay; + windParameters.direction = new THREE.Vector3(); + windParameters.direction.fromArray(direction); + + })()); + + useFrame(() => { + + }); + + useCleanup(() => { + + const windParameters = world.getWindParameters(); + + windParameters.forceFactor = 0; + windParameters.refreshDelay = 10000.0; //10s + windParameters.direction.set(0,0,0); + + }); + + return app; +}; diff --git a/types/windsettings.js b/types/windsettings.js new file mode 100644 index 0000000..6955bf5 --- /dev/null +++ b/types/windsettings.js @@ -0,0 +1,22 @@ +const path = require('path'); +const fs = require('fs'); +const {fillTemplate} = require('../util.js'); + +const templateString = fs.readFileSync(path.join(__dirname, '..', 'type_templates', 'windsettings.js'), 'utf8'); +const cwd = process.cwd(); + +module.exports = { + load(id) { + if (id.startsWith(cwd)) { + id = id.slice(cwd.length); + } + const code = fillTemplate(templateString, { + srcUrl: id, + }); + // console.log('got image id', id); + return { + code, + map: null, + }; + }, +}; \ No newline at end of file