ALL THE STUFF

This commit is contained in:
Hamcha 2020-09-27 02:38:43 +02:00
parent 5bcbefd291
commit 1ec48eaf65
Signed by: hamcha
GPG key ID: 41467804B19A3315
19 changed files with 500 additions and 53 deletions

25
CREDITS.md Normal file
View file

@ -0,0 +1,25 @@
# Graphics
- Title screen background: [Star Nest by Pablo Roman Andrioli](https://www.shadertoy.com/view/XlfGRj) (MIT)
# Music
- Title screen music: [Je suis un Phoenix by BlueMillenium](http://ccmixter.org/files/Bluemillenium/61325) (CC BY-NC 3.0)
# Sound effects
- Door open/close sounds:
- [Hatch Seal.wav by Paul368 (freesound)](https://freesound.org/people/Paul368/sounds/264063/) (CC0 1.0)
- [SFX Door Open.wav by Paul368 (freesound)](https://freesound.org/people/Paul368/sounds/264061/) (CC0 1.0)
- Notification/beeps:
- [Chord Alert Notification by graham_makes (freesound)](https://freesound.org/people/graham_makes/sounds/457518/) (CC BY 3.0)
- [Messenger Notification Sounds by zzwerty (freesound)](https://freesound.org/people/zzwerty/sounds/315878/) (CC BY-NC 3.0)
- [Radio Sign Off by dylanh.sound (freesound)](https://freesound.org/people/dylanh.sound/sounds/524205/) (CC0 1.0)
# Code
- [React](https://github.com/facebook/react) (MIT)
- [PixiJS](https://github.com/pixijs/pixi.js) (MIT)
- [howler.js](https://github.com/goldfire/howler.js) (MIT)
- [Parcel](https://github.com/parcel-bundler/parcel) (MIT)
- [Hotkeys](https://github.com/jaywcjlove/hotkeys) (MIT)

5
LICENSE Normal file
View file

@ -0,0 +1,5 @@
Copyright 2020 Alessandro Gatti
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

13
README.md Normal file
View file

@ -0,0 +1,13 @@
# NSS Odyssey
**Warning: Toy project**
Co-op survival space sim, keep the NSS Odyssey alive and kicking while roaming in space.
Takes heavy inspiration from Space Station 13 and FTL.
## Credits
See `CREDITS.md` for an exhaustive list of sources for all assets not made by me (Hamcha)
See `LICENSE` for code license (TL;DR it's [ISC](https://en.wikipedia.org/wiki/ISC_license))

Binary file not shown.

After

Width:  |  Height:  |  Size: 371 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 327 KiB

View file

@ -4,11 +4,17 @@
"main": "index.js",
"license": "MIT",
"dependencies": {
"@inlet/react-pixi": "^5.1.4",
"@types/howler": "^2.2.1",
"@types/react": "^16.9.49",
"@types/react-dom": "^16.9.8",
"animejs": "^3.2.0",
"hotkeys-js": "^3.8.1",
"howler": "^2.2.0",
"parcel-bundler": "^1.12.4",
"pixi.js": "^5.3.3",
"react": "^16.13.1",
"react-dom": "^16.13.1",
"typescript": "^4.0.3"
},
"scripts": {
@ -16,6 +22,8 @@
"clean": "rimraf ./dist"
},
"devDependencies": {
"glslify-bundle": "^5.1.1",
"glslify-deps": "^1.3.1",
"rimraf": "^3.0.2",
"sass": "^1.26.11"
}

View file

@ -0,0 +1,20 @@
import * as React from "react";
import MenuBackgroundFilter from "../graphics/filters/MenuBackground";
import { Sprite, useApp, useTick } from "@inlet/react-pixi";
export default function () {
const app = useApp();
const scale = 2;
const menubg = new MenuBackgroundFilter(app.renderer, scale);
useTick((delta) => {
menubg.update(delta);
menubg.render();
});
window.addEventListener("resize", () => {
menubg.rescale(scale);
});
return <Sprite texture={menubg.texture} scale={{ x: scale, y: scale }} />;
}

0
src/game/lib/hook.ts Normal file
View file

View file

View file

@ -0,0 +1,33 @@
import * as PIXI from "pixi.js";
import RTTShader from "../utils/RTTShader";
//@ts-expect-error Frag file
import filter_src from "./frag/MenuBackground.frag";
export default class MenuBackgroundFilter extends RTTShader {
private elapsed: number;
private filter: PIXI.Filter;
constructor(renderer: PIXI.Renderer, scale: number) {
const filter = new PIXI.Filter(null, filter_src, {
iTime: 0,
iResolution: [renderer.width / scale, renderer.height / scale],
});
super(renderer, filter, scale);
this.elapsed = 0;
this.filter = filter;
}
rescale(scale: number) {
super.rescale(scale);
this.filter.uniforms.iResolution = [
this.renderer.width / scale,
this.renderer.height / scale,
];
}
update(delta: number) {
this.filter.uniforms.iTime = this.elapsed;
this.elapsed += delta / 60;
}
}

View file

@ -0,0 +1,47 @@
precision mediump float;
uniform sampler2D noise_sparse;
uniform sampler2D noise_fine;
uniform vec2 iResolution;
uniform float scroll_speed;
uniform float warp_boost;
uniform float warp_opacity;
uniform float time;
const float noise_sparse_scale = 0.0007;
const float noise_fine_scale = 0.003;
const float warp_clouds_scale = 0.0003;
const vec2 scroll_dir = vec2(1,0);
const vec2 blink_scroll = vec2(50.0, 0);
const float PI = 3.1415;
void main() {
vec2 uv=gl_FragCoord.xy/iResolution.xy;
float scroll = scroll_speed * time;
float sparse = texture2D(noise_sparse, (gl_FragCoord.xy + scroll_dir * scroll)*noise_sparse_scale).r;
sparse = ((sparse * sparse) - 0.2) * 1.2;
float fine = texture2D(noise_fine, (gl_FragCoord.xy + scroll_dir * scroll)*noise_fine_scale).r;
fine = fine - 0.6;
if (fine > 0.) {
fine = fine * 10.0;
}
if (fine > 0.3) {
float fine_blink_fade = texture2D(noise_sparse, (gl_FragCoord.xy + blink_scroll*time)*noise_sparse_scale).r;
fine = fine - ((fine_blink_fade * fine_blink_fade) - 0.2) * 1.2;
}
vec4 clouds = vec4(vec3(0.3, 0.5, 0.7) * sparse, 1.0);
vec4 stars = vec4(fine);
vec2 warp_scroll = scroll_dir * scroll;
vec2 warp_uv = (gl_FragCoord.xy * sin(uv.y * PI) + warp_scroll)*warp_clouds_scale;
vec2 warp_uv_inv = (gl_FragCoord.xy * sin((abs(uv.y-0.5)) * uv.x * PI) + warp_scroll*0.5)*warp_clouds_scale;
float warp_clouds_sparse = texture2D(noise_sparse, vec2(0.5,1) * warp_uv).r;
float warp_clouds_fine = texture2D(noise_sparse, vec2(2,1) * warp_uv_inv).r;
vec4 warp = vec4(vec3(0), 1);
warp += vec4(vec3(0.3,0.2,0.9)*warp_clouds_sparse, 0);
warp += vec4(vec3(0.5,0.0,0.5)*(warp_clouds_fine*0.5+warp_clouds_sparse)*abs(uv.y-0.5), 0);
gl_FragColor = mix(clouds + stars, warp*warp_boost, warp_opacity);
}

View file

@ -1,26 +1,8 @@
import { Howl } from "howler";
import * as PIXI from "pixi.js";
//@ts-expect-error It's a music file
import title from "../assets/sounds/music/title.opus";
const pixiApp = new PIXI.Application({
width: window.innerWidth,
height: window.innerHeight,
resolution: window.devicePixelRatio || 1,
});
window.addEventListener("resize", function () {
pixiApp.renderer.resize(window.innerWidth, window.innerHeight);
});
document.body.appendChild(pixiApp.view);
const filter_src = `
// Star Nest by Pablo Roman Andrioli
// This content is under the MIT License.
precision mediump float;
uniform vec3 iResolution;
uniform vec2 iResolution;
uniform float iTime;
#define iterations 17
@ -56,8 +38,8 @@ void main()
dir.xz*=rot1;
dir.xy*=rot2;
vec3 from=vec3(1.,.5,0.5);
from+=vec3(time*2.,time,-2.);
from.xz*=rot1;
from+=vec3(time*2.,time,-2.);
from.xz*=rot1;
from.xy*=rot2;
//volumetric rendering
@ -84,23 +66,4 @@ void main()
v=mix(vec3(length(v)),v,saturation); //color adjust
gl_FragColor = vec4(v*.01,1.);
}
`;
const filter = new PIXI.Filter(null, filter_src, {
iTime: 0,
iResolution: [window.innerWidth, window.innerHeight],
});
pixiApp.stage.filterArea = pixiApp.renderer.screen;
pixiApp.stage.filters = [filter];
let elapsed = 0;
pixiApp.ticker.add((delta) => {
filter.uniforms.iTime = elapsed;
elapsed += delta / 60;
});
var sound = new Howl({
src: [title],
autoplay: true,
});
}

View file

@ -0,0 +1,30 @@
import * as PIXI from "pixi.js";
export default class RTTShader {
readonly texture: PIXI.RenderTexture;
readonly container: PIXI.Container;
readonly renderer: PIXI.Renderer;
constructor(renderer: PIXI.Renderer, filter: PIXI.Filter, scale: number = 2) {
this.renderer = renderer;
this.texture = PIXI.RenderTexture.create({
width: this.renderer.width / scale,
height: this.renderer.height / scale,
});
this.container = new PIXI.Container();
this.container.filterArea = this.texture.frame;
this.container.filters = [filter];
}
rescale(scale: number) {
this.texture.resize(
this.renderer.width / scale,
this.renderer.height / scale
);
this.container.filterArea = this.texture.frame;
}
render() {
this.renderer.render(this.container, this.texture);
}
}

View file

@ -4,11 +4,11 @@
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>NSS Odyssey</title>
<link rel="stylesheet" href="./screen.scss" />
<link rel="stylesheet" href="screen.scss" />
<link rel="icon" href="favicon.ico" />
</head>
<body>
<main id="app"></main>
<script src="./index.ts"></script>
<script src="./index.tsx"></script>
</body>
</html>

26
src/index.tsx Normal file
View file

@ -0,0 +1,26 @@
import * as React from "react";
import * as PIXI from "pixi.js";
import ReactDOM from "react-dom";
import { Stage, useApp } from "@inlet/react-pixi";
import MenuBackground from "./game/MenuBackground";
PIXI.settings.SCALE_MODE = PIXI.SCALE_MODES.NEAREST;
const mounted = (app: PIXI.Application) => {
window.addEventListener("resize", () => {
app.queueResize();
});
app.queueResize();
};
ReactDOM.render(
<React.Fragment>
<Stage options={{ resolution: 1, resizeTo: window }} onMount={mounted}>
<MenuBackground />
</Stage>
<div id="ui">
<p>Hello!</p>
</div>
</React.Fragment>,
document.getElementById("app")
);

View file

@ -8,17 +8,25 @@ body {
height: 100vh;
}
#app {
#ui {
display: flex;
align-items: center;
justify-content: center;
width: 100vw;
height: 100vh;
z-index: 10;
position: fixed;
top: 0;
left: 0;
p {
font-size: 20pt;
color: white;
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
font-style: italic;
}
}
#app,
body > canvas {
#ui {
position: fixed;
top: 0;
left: 0;

4
src/ui/App.tsx Normal file
View file

@ -0,0 +1,4 @@
import * as React from "react";
import ReactDOM from "react-dom";
ReactDOM.render(<p>Hello</p>, document.getElementById("ui"));

1
src/ui/Menu.tsx Normal file
View file

@ -0,0 +1 @@
import * as React from "react";

276
yarn.lock
View file

@ -877,11 +877,26 @@
lodash "^4.17.19"
to-fast-properties "^2.0.0"
"@choojs/findup@^0.2.0":
version "0.2.1"
resolved "https://registry.yarnpkg.com/@choojs/findup/-/findup-0.2.1.tgz#ac13c59ae7be6e1da64de0779a0a7f03d75615a3"
integrity sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==
dependencies:
commander "^2.15.1"
"@iarna/toml@^2.2.0":
version "2.2.5"
resolved "https://registry.yarnpkg.com/@iarna/toml/-/toml-2.2.5.tgz#b32366c89b43c6f8cefbdefac778b9c828e3ba8c"
integrity sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==
"@inlet/react-pixi@^5.1.4":
version "5.1.4"
resolved "https://registry.yarnpkg.com/@inlet/react-pixi/-/react-pixi-5.1.4.tgz#fdccf0abbe0f7f4fda457f938b71a04e499af9da"
integrity sha512-CWd/DYjx6LgWitZMe5APW62g44RMy8xzXHcqFSbCnpVTvKAm4ikdStyWq6a9viJKlro7VrBCkGmaFl901TkPTw==
dependencies:
performance-now "^2.1.0"
react-reconciler "0.25.1"
"@mrmlnc/readdir-enhanced@^2.2.1":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz#524af240d1a360527b730475ecfa1344aa540dde"
@ -1253,11 +1268,31 @@
resolved "https://registry.yarnpkg.com/@types/howler/-/howler-2.2.1.tgz#c95314724a8e970b1b29a731861975f39987b9ca"
integrity sha512-1MiSldngr+eAO4lDPtjzl4Nf2GmRh8VDHIpNBIkyd25L22JExVlI6w3fjSM7+FNc1e1WZAPNq7/flkw685byfg==
"@types/prop-types@*":
version "15.7.3"
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.3.tgz#2ab0d5da2e5815f94b0b9d4b95d1e5f243ab2ca7"
integrity sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==
"@types/q@^1.5.1":
version "1.5.4"
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.4.tgz#15925414e0ad2cd765bfef58842f7e26a7accb24"
integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==
"@types/react-dom@^16.9.8":
version "16.9.8"
resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-16.9.8.tgz#fe4c1e11dfc67155733dfa6aa65108b4971cb423"
integrity sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==
dependencies:
"@types/react" "*"
"@types/react@*", "@types/react@^16.9.49":
version "16.9.49"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.49.tgz#09db021cf8089aba0cdb12a49f8021a69cce4872"
integrity sha512-DtLFjSj0OYAdVLBbyjhuV9CdGVHCkHn2R+xr3XkBvK2rS1Y1tkc14XSGjYgm5Fjjr90AxH9tiSzc1pCFMGO06g==
dependencies:
"@types/prop-types" "*"
csstype "^3.0.2"
abab@^2.0.0:
version "2.0.5"
resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a"
@ -1301,6 +1336,11 @@ alphanum-sort@^1.0.0:
resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3"
integrity sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=
animejs@^3.2.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/animejs/-/animejs-3.2.0.tgz#2daea7365983249022cc454fa726acdb4a84345d"
integrity sha512-zhtGl5cS0G2f5DfciMO8uwWpnx06nfFnHlXYYXHBazHep1Lyd6kEtBQP+9hpYKE0dBZjIigHp9VpMO95ZfXQJQ==
ansi-regex@^2.0.0:
version "2.1.1"
resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
@ -1905,7 +1945,7 @@ command-exists@^1.2.6:
resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69"
integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==
commander@^2.11.0, commander@^2.19.0, commander@^2.20.0:
commander@^2.11.0, commander@^2.15.1, commander@^2.19.0, commander@^2.20.0:
version "2.20.3"
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
@ -2205,6 +2245,11 @@ cssstyle@^1.1.1:
dependencies:
cssom "0.3.x"
csstype@^3.0.2:
version "3.0.3"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.3.tgz#2b410bbeba38ba9633353aff34b05d9755d065f8"
integrity sha512-jPl+wbWPOWJ7SXsWyqGRk3lGecbar0Cb0OvZF/r/ZU011R4YqiRehgkQ9p4eQfo9DSDLqLL3wHwfxeJiuIsNag==
dashdash@^1.12.0:
version "1.14.1"
resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
@ -2571,6 +2616,11 @@ eventemitter3@^3.1.0:
resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
events@^1.0.2:
version "1.1.1"
resolved "https://registry.yarnpkg.com/events/-/events-1.1.1.tgz#9ebdb7635ad099c70dcc4c2a1f5004288e8bd924"
integrity sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=
events@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379"
@ -2828,7 +2878,113 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
graceful-fs@^4.1.11:
glsl-inject-defines@^1.0.1:
version "1.0.3"
resolved "https://registry.yarnpkg.com/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz#dd1aacc2c17fcb2bd3fc32411c6633d0d7b60fd4"
integrity sha1-3RqswsF/yyvT/DJBHGYz0Ne2D9Q=
dependencies:
glsl-token-inject-block "^1.0.0"
glsl-token-string "^1.0.1"
glsl-tokenizer "^2.0.2"
glsl-resolve@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/glsl-resolve/-/glsl-resolve-0.0.1.tgz#894bef73910d792c81b5143180035d0a78af76d3"
integrity sha1-iUvvc5ENeSyBtRQxgANdCnivdtM=
dependencies:
resolve "^0.6.1"
xtend "^2.1.2"
glsl-token-assignments@^2.0.0:
version "2.0.2"
resolved "https://registry.yarnpkg.com/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz#a5d82ab78499c2e8a6b83cb69495e6e665ce019f"
integrity sha1-pdgqt4SZwuimuDy2lJXm5mXOAZ8=
glsl-token-defines@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz#cb892aa959936231728470d4f74032489697fa9d"
integrity sha1-y4kqqVmTYjFyhHDU90AySJaX+p0=
dependencies:
glsl-tokenizer "^2.0.0"
glsl-token-depth@^1.1.0, glsl-token-depth@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz#23c5e30ee2bd255884b4a28bc850b8f791e95d84"
integrity sha1-I8XjDuK9JViEtKKLyFC495HpXYQ=
glsl-token-descope@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz#0fc90ab326186b82f597b2e77dc9e21efcd32076"
integrity sha1-D8kKsyYYa4L1l7LnfcniHvzTIHY=
dependencies:
glsl-token-assignments "^2.0.0"
glsl-token-depth "^1.1.0"
glsl-token-properties "^1.0.0"
glsl-token-scope "^1.1.0"
glsl-token-inject-block@^1.0.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz#e1015f5980c1091824adaa2625f1dfde8bd00034"
integrity sha1-4QFfWYDBCRgkraomJfHf3ovQADQ=
glsl-token-properties@^1.0.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz#483dc3d839f0d4b5c6171d1591f249be53c28a9e"
integrity sha1-SD3D2Dnw1LXGFx0VkfJJvlPCip4=
glsl-token-scope@^1.1.0, glsl-token-scope@^1.1.1:
version "1.1.2"
resolved "https://registry.yarnpkg.com/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz#a1728e78df24444f9cb93fd18ef0f75503a643b1"
integrity sha1-oXKOeN8kRE+cuT/RjvD3VQOmQ7E=
glsl-token-string@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/glsl-token-string/-/glsl-token-string-1.0.1.tgz#59441d2f857de7c3449c945666021ece358e48ec"
integrity sha1-WUQdL4V958NEnJRWZgIezjWOSOw=
glsl-token-whitespace-trim@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz#46d1dfe98c75bd7d504c05d7d11b1b3e9cc93b10"
integrity sha1-RtHf6Yx1vX1QTAXX0RsbPpzJOxA=
glsl-tokenizer@^2.0.0, glsl-tokenizer@^2.0.2:
version "2.1.5"
resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a"
integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==
dependencies:
through2 "^0.6.3"
glslify-bundle@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/glslify-bundle/-/glslify-bundle-5.1.1.tgz#30d2ddf2e6b935bf44d1299321e3b729782c409a"
integrity sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==
dependencies:
glsl-inject-defines "^1.0.1"
glsl-token-defines "^1.0.0"
glsl-token-depth "^1.1.1"
glsl-token-descope "^1.0.2"
glsl-token-scope "^1.1.1"
glsl-token-string "^1.0.1"
glsl-token-whitespace-trim "^1.0.0"
glsl-tokenizer "^2.0.2"
murmurhash-js "^1.0.0"
shallow-copy "0.0.1"
glslify-deps@^1.3.1:
version "1.3.1"
resolved "https://registry.yarnpkg.com/glslify-deps/-/glslify-deps-1.3.1.tgz#dfa6962322454a91ecc4de25b5e710415b0c89ad"
integrity sha512-Ogm179MCazwIRyEqs3g3EOY4Y3XIAa0yl8J5RE9rJC6QH1w8weVOp2RZu0mvnYy/2xIas1w166YR2eZdDkWQxg==
dependencies:
"@choojs/findup" "^0.2.0"
events "^1.0.2"
glsl-resolve "0.0.1"
glsl-tokenizer "^2.0.0"
graceful-fs "^4.1.2"
inherits "^2.0.1"
map-limit "0.0.1"
resolve "^1.0.0"
graceful-fs@^4.1.11, graceful-fs@^4.1.2:
version "4.2.4"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb"
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
@ -3318,6 +3474,11 @@ is-wsl@^1.1.0:
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
isarray@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
isarray@1.0.0, isarray@^1.0.0, isarray@~1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
@ -3535,7 +3696,7 @@ log-symbols@^2.2.0:
dependencies:
chalk "^2.0.1"
loose-envify@^1.0.0:
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@ -3554,6 +3715,13 @@ map-cache@^0.2.2:
resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=
map-limit@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/map-limit/-/map-limit-0.0.1.tgz#eb7961031c0f0e8d001bf2d56fab685d58822f38"
integrity sha1-63lhAxwPDo0AG/LVb6toXViCLzg=
dependencies:
once "~1.3.0"
map-visit@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
@ -3698,6 +3866,11 @@ ms@2.1.2:
resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
murmurhash-js@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/murmurhash-js/-/murmurhash-js-1.0.0.tgz#b06278e21fc6c37fa5313732b0412bcb6ae15f51"
integrity sha1-sGJ44h/Gw3+lMTcysEEry2rhX1E=
nan@^2.12.1:
version "2.14.1"
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01"
@ -3893,6 +4066,13 @@ once@^1.3.0:
dependencies:
wrappy "1"
once@~1.3.0:
version "1.3.3"
resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20"
integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA=
dependencies:
wrappy "1"
onetime@^2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4"
@ -4553,6 +4733,15 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
prop-types@^15.6.2:
version "15.7.2"
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
dependencies:
loose-envify "^1.4.0"
object-assign "^4.1.1"
react-is "^16.8.1"
psl@^1.1.28:
version "1.8.0"
resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24"
@ -4644,6 +4833,50 @@ range-parser@~1.2.1:
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
react-dom@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.13.1.tgz#c1bd37331a0486c078ee54c4740720993b2e0e7f"
integrity sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.19.1"
react-is@^16.8.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
react-reconciler@0.25.1:
version "0.25.1"
resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.25.1.tgz#f9814d59d115e1210762287ce987801529363aaa"
integrity sha512-R5UwsIvRcSs3w8n9k3tBoTtUHdVhu9u84EG7E5M0Jk9F5i6DA1pQzPfUZd6opYWGy56MJOtV3VADzy6DRwYDjw==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
scheduler "^0.19.1"
react@^16.13.1:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
prop-types "^15.6.2"
"readable-stream@>=1.0.33-1 <1.1.0-0":
version "1.0.34"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c"
integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.1"
isarray "0.0.1"
string_decoder "~0.10.x"
readable-stream@^2.0.2, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.3, readable-stream@~2.3.6:
version "2.3.7"
resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
@ -4810,7 +5043,12 @@ resolve-url@^0.2.1:
resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=
resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0:
resolve@^0.6.1:
version "0.6.3"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-0.6.3.tgz#dd957982e7e736debdf53b58a4dd91754575dd46"
integrity sha1-3ZV5gufnNt699TtYpN2RdUV13UY=
resolve@^1.0.0, resolve@^1.1.5, resolve@^1.3.2, resolve@^1.4.0:
version "1.17.0"
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444"
integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==
@ -4911,6 +5149,14 @@ saxes@^3.1.9:
dependencies:
xmlchars "^2.1.1"
scheduler@^0.19.1:
version "0.19.1"
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196"
integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==
dependencies:
loose-envify "^1.1.0"
object-assign "^4.1.1"
semver@7.0.0:
version "7.0.0"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
@ -4983,7 +5229,7 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
shallow-copy@~0.0.1:
shallow-copy@0.0.1, shallow-copy@~0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/shallow-copy/-/shallow-copy-0.0.1.tgz#415f42702d73d810330292cc5ee86eae1a11a170"
integrity sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=
@ -5195,6 +5441,11 @@ string_decoder@^1.0.0, string_decoder@^1.1.1:
dependencies:
safe-buffer "~5.2.0"
string_decoder@~0.10.x:
version "0.10.31"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94"
integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=
string_decoder@~1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
@ -5293,6 +5544,14 @@ terser@^4.8.0:
source-map "~0.6.1"
source-map-support "~0.5.12"
through2@^0.6.3:
version "0.6.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48"
integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=
dependencies:
readable-stream ">=1.0.33-1 <1.1.0-0"
xtend ">=4.0.0 <4.1.0-0"
through2@^2.0.0, through2@~2.0.3:
version "2.0.5"
resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd"
@ -5681,7 +5940,12 @@ xmlchars@^2.1.1:
resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
xtend@^4.0.0, xtend@~4.0.1:
"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1:
version "4.0.2"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"
integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==
xtend@^2.1.2:
version "2.2.0"
resolved "https://registry.yarnpkg.com/xtend/-/xtend-2.2.0.tgz#eef6b1f198c1c8deafad8b1765a04dad4a01c5a9"
integrity sha1-7vax8ZjByN6vrYsXZaBNrUoBxak=