├── .gitignore
├── pixi-lol
├── dist
│ ├── images
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── lol-bg.jpg
│ ├── index.html
│ └── assets
│ │ └── index.dbe44f8d.js
├── public
│ └── images
│ │ ├── 1.png
│ │ ├── 2.png
│ │ └── lol-bg.jpg
├── vite.config.js
├── index.html
├── package.json
├── src
│ ├── app.js
│ ├── config.js
│ ├── monster.js
│ ├── button.js
│ ├── factory.js
│ ├── player.js
│ └── index.js
└── yarn.lock
├── dream-swims
├── dist
│ ├── player
│ │ ├── 0.png
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ └── 5.png
│ ├── background
│ │ └── bg.jpg
│ ├── index.html
│ └── assets
│ │ └── index.1d27f605.js
├── public
│ ├── player
│ │ ├── 0.png
│ │ ├── 1.png
│ │ ├── 2.png
│ │ ├── 3.png
│ │ ├── 4.png
│ │ └── 5.png
│ └── background
│ │ └── bg.jpg
├── vite.config.js
├── package.json
├── src
│ ├── player.js
│ ├── app.js
│ ├── priorityQueue.js
│ ├── config.js
│ ├── main.js
│ └── mapGuide.js
├── index.html
└── yarn.lock
├── babylon-firework
├── dist
│ ├── textures
│ │ └── flare.png
│ ├── index.html
│ └── assets
│ │ ├── favicon.17e50649.svg
│ │ └── index.26b33bda.js
├── public
│ └── textures
│ │ └── flare.png
├── vite.config.js
├── package.json
├── index.html
├── favicon.svg
├── main.js
└── artfice.js
├── tween-animation
├── vite.config.js
├── package.json
├── index.html
├── dist
│ ├── index.html
│ └── assets
│ │ ├── index.f7d4de87.js
│ │ └── vendor.81b052bd.js
├── src
│ └── index.js
└── yarn.lock
├── README.md
├── index.html
└── canvas-emoji
└── canvas.html
/.gitignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | /css3d-soul-link
3 | /3d-lol-1
--------------------------------------------------------------------------------
/pixi-lol/dist/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/pixi-lol/dist/images/1.png
--------------------------------------------------------------------------------
/pixi-lol/dist/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/pixi-lol/dist/images/2.png
--------------------------------------------------------------------------------
/pixi-lol/public/images/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/pixi-lol/public/images/1.png
--------------------------------------------------------------------------------
/pixi-lol/public/images/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/pixi-lol/public/images/2.png
--------------------------------------------------------------------------------
/dream-swims/dist/player/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/player/0.png
--------------------------------------------------------------------------------
/dream-swims/dist/player/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/player/1.png
--------------------------------------------------------------------------------
/dream-swims/dist/player/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/player/2.png
--------------------------------------------------------------------------------
/dream-swims/dist/player/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/player/3.png
--------------------------------------------------------------------------------
/dream-swims/dist/player/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/player/4.png
--------------------------------------------------------------------------------
/dream-swims/dist/player/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/player/5.png
--------------------------------------------------------------------------------
/dream-swims/public/player/0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/player/0.png
--------------------------------------------------------------------------------
/dream-swims/public/player/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/player/1.png
--------------------------------------------------------------------------------
/dream-swims/public/player/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/player/2.png
--------------------------------------------------------------------------------
/dream-swims/public/player/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/player/3.png
--------------------------------------------------------------------------------
/dream-swims/public/player/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/player/4.png
--------------------------------------------------------------------------------
/dream-swims/public/player/5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/player/5.png
--------------------------------------------------------------------------------
/pixi-lol/dist/images/lol-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/pixi-lol/dist/images/lol-bg.jpg
--------------------------------------------------------------------------------
/pixi-lol/public/images/lol-bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/pixi-lol/public/images/lol-bg.jpg
--------------------------------------------------------------------------------
/dream-swims/dist/background/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/dist/background/bg.jpg
--------------------------------------------------------------------------------
/dream-swims/public/background/bg.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/dream-swims/public/background/bg.jpg
--------------------------------------------------------------------------------
/babylon-firework/dist/textures/flare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/babylon-firework/dist/textures/flare.png
--------------------------------------------------------------------------------
/babylon-firework/public/textures/flare.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/betteralong/visual-example/HEAD/babylon-firework/public/textures/flare.png
--------------------------------------------------------------------------------
/dream-swims/vite.config.js:
--------------------------------------------------------------------------------
1 |
2 | export default ({ command, mode }) => {
3 | if (command === 'serve') {
4 | return {
5 | // serve 独有配置
6 | }
7 | } else {
8 | return {
9 | // build 独有配置
10 | base: './'
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/pixi-lol/vite.config.js:
--------------------------------------------------------------------------------
1 |
2 | export default ({ command, mode }) => {
3 | if (command === 'serve') {
4 | return {
5 | // serve 独有配置
6 | }
7 | } else {
8 | return {
9 | // build 独有配置
10 | base: './'
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/babylon-firework/vite.config.js:
--------------------------------------------------------------------------------
1 |
2 | export default ({ command, mode }) => {
3 | if (command === 'serve') {
4 | return {
5 | // serve 独有配置
6 | }
7 | } else {
8 | return {
9 | // build 独有配置
10 | base: './'
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/tween-animation/vite.config.js:
--------------------------------------------------------------------------------
1 |
2 | export default ({ command, mode }) => {
3 | if (command === 'serve') {
4 | return {
5 | // serve 独有配置
6 | }
7 | } else {
8 | return {
9 | // build 独有配置
10 | base: './'
11 | }
12 | }
13 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 可视化案例
2 | [1.从表情包来学canvas](betteralong.github.io/pixi-lol/index.html)
3 |
4 | [2.从英雄联盟来学pixi.js](betteralong.github.io/pixi-lol/dist/index.html)
5 |
6 | [3.梦幻西游](betteralong.github.io/dream-swims/index.html)
7 |
8 | [4. 烟花](betteralong.github.io/babylon-firework/dist/index.html)
--------------------------------------------------------------------------------
/dream-swims/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "3d-lol-1",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build",
7 | "serve": "vite preview"
8 | },
9 | "dependencies": {
10 | "pixi.js": "^5.3.8"
11 | },
12 | "devDependencies": {
13 | "vite": "^2.1.3"
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/pixi-lol/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | pixi-lol
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/babylon-firework/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "babylon-firework",
3 | "version": "0.0.0",
4 | "scripts": {
5 | "dev": "vite",
6 | "build": "vite build",
7 | "preview": "vite preview"
8 | },
9 | "devDependencies": {
10 | "vite": "^2.7.2"
11 | },
12 | "dependencies": {
13 | "@babylonjs/core": "^4.2.1",
14 | "@babylonjs/gui": "^4.2.1"
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/babylon-firework/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/pixi-lol/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "pixi-lol",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "MIT",
13 | "dependencies": {
14 | "@tweenjs/tween.js": "^18.6.4",
15 | "pixi.js": "^5.3.8"
16 | },
17 | "devDependencies": {
18 | "vite": "^2.0.5"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/pixi-lol/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | pixi-lol
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/tween-animation/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "tween-animation",
3 | "version": "1.0.0",
4 | "description": "",
5 | "main": "index.js",
6 | "scripts": {
7 | "dev": "vite",
8 | "build": "vite build"
9 | },
10 | "keywords": [],
11 | "author": "",
12 | "license": "MIT",
13 | "dependencies": {
14 | "@tweenjs/tween.js": "^18.6.4",
15 | "roughjs": "^4.3.1"
16 | },
17 | "devDependencies": {
18 | "vite": "^2.0.5"
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/dream-swims/src/player.js:
--------------------------------------------------------------------------------
1 | import { AnimatedSprite } from 'pixi.js'
2 | export class Player extends AnimatedSprite{
3 |
4 | constructor(textures) {
5 | super(textures)
6 | this.anchor.set(0.5, 0.85)
7 | this.position.set(100, 100)
8 | this.animationSpeed = 0.1
9 | this.play()
10 | }
11 |
12 | goto(x, y) {
13 | return new Promise(resolve => {
14 | setTimeout(() => {
15 | this.position.set(x, y)
16 | resolve()
17 | }, 60)
18 | })
19 | }
20 | }
--------------------------------------------------------------------------------
/pixi-lol/src/app.js:
--------------------------------------------------------------------------------
1 | import { Application } from 'pixi.js'
2 | import { WIDTH, HEIGHT } from './config'
3 | export function appFactory() {
4 | const app = new Application({
5 | width: WIDTH,
6 | height: HEIGHT,
7 | antialias: true, // default: false 反锯齿
8 | transparent: false, // default: false 透明度
9 | resolution: 1 // default: 1 分辨率
10 | })
11 |
12 | document.body.appendChild(app.view)
13 | app.view.oncontextmenu = (e) => { e.preventDefault()}
14 | return app
15 | }
--------------------------------------------------------------------------------
/dream-swims/src/app.js:
--------------------------------------------------------------------------------
1 | import { Application } from 'pixi.js'
2 | import { WIDTH, HEIGHT } from './config'
3 | export function appFactory() {
4 | const app = new Application({
5 | width: WIDTH,
6 | height: HEIGHT,
7 | view: document.getElementById('canvas'),
8 | antialias: true, // default: false 反锯齿
9 | transparent: false, // default: false 透明度
10 | resolution: 1 // default: 1 分辨率
11 | })
12 |
13 | app.view.oncontextmenu = (e) => { e.preventDefault()}
14 | return app
15 | }
--------------------------------------------------------------------------------
/pixi-lol/src/config.js:
--------------------------------------------------------------------------------
1 | export const WIDTH = 1000
2 | export const HEIGHT = 600
3 | export const IMAGES = [{
4 | name: 'player',
5 | url: 'images/1.png'
6 | }, {
7 | name: 'background',
8 | url: 'images/2.png'
9 | }, {
10 | name: 'starBackground',
11 | url: 'images/lol-bg.jpg'
12 | }]
13 |
14 | export const PLAYER_OPTIONS = {
15 | x: WIDTH / 2,
16 | y: HEIGHT / 2,
17 | scale: 0.3,
18 | width: 356,
19 | height: 220,
20 | speed: 3
21 | }
22 |
23 | export const MONSTER_OPTIONS = {
24 | number: 1, // 每次生产数量
25 | time: 800 // 每次生产时间
26 | }
--------------------------------------------------------------------------------
/babylon-firework/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/pixi-lol/src/monster.js:
--------------------------------------------------------------------------------
1 | import { Graphics } from 'pixi.js'
2 | export class Monster extends Graphics {
3 | constructor(options) {
4 | super()
5 | this.beginFill(0x9966FF)
6 | this.drawCircle(0,0, options.size || 32);
7 | this.endFill();
8 | this.x = options.x
9 | this.y = options.y
10 | }
11 |
12 | goto(x , y) {
13 | this.targetX = x
14 | this.targetY = y
15 | this.radian = Math.atan2((y - this.y), (x - this.x))
16 | this.rotation = this.radian
17 | }
18 |
19 | walk() {
20 | this.x = this.x + 3 * Math.cos(this.radian)
21 | this.y = this.y + 3 * Math.sin(this.radian)
22 | }
23 | }
--------------------------------------------------------------------------------
/dream-swims/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/tween-animation/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | tween-animation
7 |
8 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/dream-swims/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Vite App
8 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/pixi-lol/src/button.js:
--------------------------------------------------------------------------------
1 | import { Graphics, Text } from 'pixi.js'
2 | export function getButton(text) {
3 | const button = new Graphics()
4 | button.lineStyle(2, 0x000, 0.3)
5 | button.beginFill(0xF5E817)
6 | button.drawPolygon([
7 | 0, 0,
8 | 180, 0,
9 | 150, 48,
10 | 0, 48,
11 | ])
12 | button.endFill();
13 | button.interactive = true;
14 | if(text) {
15 | const message = new Text(text)
16 | message.x = 28
17 | message.y = 12
18 | message.style = { fill: "black", fontSize: 24 }
19 | button.addChild(message)
20 | button.on('mouseover', () => {
21 | message.style.fill = 'white'
22 | })
23 | button.on('mouseout', () => {
24 | message.style.fill = 'black'
25 | })
26 | }
27 | return button
28 | }
--------------------------------------------------------------------------------
/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | 可视化案例
8 |
22 |
23 |
24 |
25 | -
26 | 从表情包来学canvas
27 |
28 | -
29 | 从英雄联盟来学pixi.js
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/tween-animation/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | tween-animation
7 |
8 |
9 |
10 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/dream-swims/src/priorityQueue.js:
--------------------------------------------------------------------------------
1 | export class PriorityQueue{
2 | items = []
3 | constructor(compare) {
4 | if (!compare) {
5 | this.compare = (a, b) => { return a - b }
6 | } else {
7 | this.compare = compare
8 | }
9 | }
10 | enqueue(item) {
11 | this.items.push(item)
12 | }
13 | dequeue() {
14 | if (!this.items.length) return
15 | let minIndex = 0
16 | for(let i = 1; i < this.items.length; i++) {
17 | if (this.compare(this.items[i], this.items[minIndex]) < 0) {
18 | minIndex = i
19 | }
20 | }
21 | // 最小项出队列
22 | const min = this.items[minIndex]
23 | this.items[minIndex] = this.items[this.items.length -1]
24 | this.items.pop()
25 | return min
26 | }
27 |
28 | get length() {
29 | return this.items.length
30 | }
31 |
32 | }
--------------------------------------------------------------------------------
/dream-swims/src/config.js:
--------------------------------------------------------------------------------
1 | export const WIDTH = 500
2 | export const HEIGHT = 500
3 | export const CELLS_IZE = 5
4 | export const MAP_WIDTH = WIDTH / CELLS_IZE
5 | export const MAP_HEIGHT = HEIGHT / CELLS_IZE
6 |
7 | export const IMAGES = [{
8 | name: 'background',
9 | url: 'background/bg.jpg'
10 | }, {
11 | name: 'player',
12 | url: 'player/0.png'
13 | },{
14 | name: 'player1',
15 | url: 'player/1.png'
16 | }, {
17 | name: 'player2',
18 | url: 'player/2.png'
19 | }, {
20 | name: 'player3',
21 | url: 'player/3.png'
22 | },{
23 | name: 'player4',
24 | url: 'player/4.png'
25 | },{
26 | name: 'player5',
27 | url: 'player/5.png'
28 | }]
29 |
30 | // 假定50 50 到 60 70有障碍
31 | const MAP_OBSTACLES = new Array(MAP_WIDTH * MAP_HEIGHT).fill(0)
32 | for(let x = 50; x < 60; x++) {
33 | for(let y = 50; y < 70; y++) {
34 | MAP_OBSTACLES[x + y * MAP_WIDTH] = 1
35 | }
36 | }
37 |
38 | export {
39 | MAP_OBSTACLES
40 | }
--------------------------------------------------------------------------------
/dream-swims/src/main.js:
--------------------------------------------------------------------------------
1 | import { Sprite } from 'pixi.js'
2 | import { appFactory } from './app'
3 | import { IMAGES, MAP_OBSTACLES } from './config.js'
4 | import { MapGuide } from './mapGuide'
5 | import { Player } from './player'
6 | const app = appFactory()
7 | app.loader.add(IMAGES).load(setup)
8 | let mapGuide, jianxiake
9 |
10 | function setup() {
11 | initScene()
12 | }
13 |
14 | function initScene() {
15 | const mapTexture = app.loader.resources['background'].texture
16 | const map = new Sprite(mapTexture)
17 | app.stage.addChild(map)
18 |
19 | jianxiake = new Player(
20 | [
21 | app.loader.resources['player1'].texture,
22 | app.loader.resources['player2'].texture,
23 | app.loader.resources['player3'].texture,
24 | app.loader.resources['player4'].texture,
25 | app.loader.resources['player5'].texture
26 | ]
27 | )
28 | mapGuide = new MapGuide(MAP_OBSTACLES, jianxiake, app.stage)
29 | mapGuide.drawObstacles()
30 | app.stage.addChild(jianxiake)
31 | app.stage.interactive = true
32 | app.stage.on('click', e => {
33 | const { x ,y } = e.data.global
34 | mapGuide.pathTo({x,y})
35 | })
36 | }
--------------------------------------------------------------------------------
/pixi-lol/src/factory.js:
--------------------------------------------------------------------------------
1 | import { Rectangle } from 'pixi.js'
2 | import { Player } from './player'
3 | import { Monster } from './monster'
4 | import { WIDTH, HEIGHT, PLAYER_OPTIONS } from './config'
5 | export function playerFactory(resources) {
6 | if (!resources) {
7 | console.warn('请先加载图片资源')
8 | return null
9 | }
10 | let frames = []
11 | const playerTexture = resources.texture
12 | const { width, height } = PLAYER_OPTIONS
13 | for (let i = 0; i < 4; i++) {
14 | const sprite = playerTexture.clone()
15 | const rect = new Rectangle(592 + width * i ,152 , width, height)
16 | sprite.frame = rect
17 | frames.push(sprite)
18 | }
19 | return new Player(frames)
20 | }
21 |
22 | function getRadom(max = 255, min = 0) {
23 | return Math.floor(Math.random() * (max - min + 1)) + min;
24 | }
25 |
26 | export function monsterFactory(scene, target ,number, time = 300) {
27 | const boundary = [
28 | [0, WIDTH, 0, 0],
29 | [0, 0, 0, HEIGHT],
30 | [WIDTH, WIDTH, 0, HEIGHT],
31 | [0, WIDTH, HEIGHT, HEIGHT]
32 | ]
33 | const timer = setInterval(() => {
34 | for(let i = 0; i < number; i++) {
35 | const randomRange = boundary[getRadom(number, 0)]
36 | const x = getRadom(randomRange[1], randomRange[0])
37 | const y = getRadom(randomRange[3], randomRange[2])
38 | const monster = new Monster({
39 | x,
40 | y
41 | })
42 | monster.goto(target.x, target.y)
43 | scene.addChild(monster)
44 | }
45 | }, time);
46 | return timer
47 | }
--------------------------------------------------------------------------------
/pixi-lol/src/player.js:
--------------------------------------------------------------------------------
1 | import { AnimatedSprite } from 'pixi.js'
2 | import { PLAYER_OPTIONS } from './config'
3 | export class Player extends AnimatedSprite{
4 |
5 | constructor(frames, options) {
6 | super(frames)
7 | this.options = {}
8 | Object.assign(this.options, options, PLAYER_OPTIONS)
9 | this.radian = 0
10 | this.anchor.set(0.5, 0.5)
11 | this.targetX = this.options.x
12 | this.targetY = this.options.y
13 | this.position.set(this.options.x, this.options.y)
14 | this.animationSpeed = this.options.animationSpeed
15 | this.scale.set(this.options.scale, this.options.scale)
16 | }
17 |
18 | goto(x , y) {
19 | this.targetX = x
20 | this.targetY = y
21 | this.radian = Math.atan2((y - this.y), (x - this.x))
22 | this.rotation = this.radian
23 | }
24 |
25 | walk() {
26 | if(this.targetX === this.x && this.targetY === this.y) return
27 | const dx = this.x - this.targetX
28 | const dy = this.y - this.targetY
29 | const distance = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2))
30 | if(distance < this.options.speed) { // 距离小于一帧直接赋值
31 | this.x = this.targetX
32 | this.y = this.targetY
33 | } else {
34 | this.x = this.x + this.options.speed * Math.cos(this.radian)
35 | this.y = this.y + this.options.speed * Math.sin(this.radian)
36 | }
37 | }
38 |
39 | reset() {
40 | this.radian = 0
41 | this.x = this.options.x
42 | this.y = this.options.y
43 | this.targetX = this.options.x
44 | this.targetY = this.options.y
45 | }
46 | }
--------------------------------------------------------------------------------
/babylon-firework/favicon.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/babylon-firework/dist/assets/favicon.17e50649.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/tween-animation/dist/assets/index.f7d4de87.js:
--------------------------------------------------------------------------------
1 | import{s as e,T as t,E as l,r as o,g as n}from"./vendor.81b052bd.js";!function(e=".",t="__import__"){try{self[t]=new Function("u","return import(u)")}catch(l){const o=new URL(e,location),n=e=>{URL.revokeObjectURL(e.src),e.remove()};self[t]=e=>new Promise(((l,r)=>{const a=new URL(e,o);if(self[t].moduleMap[a])return l(self[t].moduleMap[a]);const s=new Blob([`import * as m from '${a}';`,`${t}.moduleMap['${a}']=m;`],{type:"text/javascript"}),i=Object.assign(document.createElement("script"),{type:"module",src:URL.createObjectURL(s),onerror(){r(new Error(`Failed to import: ${e}`)),n(i)},onload(){l(self[t].moduleMap[a]),n(i)}});document.head.appendChild(i)})),self[t].moduleMap={}}}("assets/");const r=document.getElementById("svg"),a=e.svg(r);let s,i={height:0},c={offset:200};function d(e,t,l=20,o=60,n=15){return`M${e} ${t} L${e+l} ${t} L${e+l} ${t+o} Q${e+l/2} ${t+o+n} ${e} ${t+o} L${e} ${t}`}function p(){r.appendChild(a.circle(300,300,300,{fill:"yellow"})),r.appendChild(a.rectangle(160,220,60,40,{fill:"white"})),r.appendChild(a.rectangle(300,220,60,40,{fill:"white"})),r.appendChild(a.circle(180,240,15,{fill:"black"})),r.appendChild(a.circle(326,240,15,{fill:"black"}));let e=a.path(d(176,255,20,i.height),{stroke:"blue",strokeWidth:"1",fill:"blue"}),t=a.path(d(316,255,20,i.height),{stroke:"blue",strokeWidth:"1",fill:"blue"});s=function(){let e=a.curve([[200,360],[280,380],[340,360]]);return e.style.strokeDasharray=200,e.style.strokeDashoffset=c.offset,e}(),r.appendChild(e),r.appendChild(t),r.appendChild(s)}const f=new t(c).to({offset:0},2e3).easing(l.Quadratic.In).onUpdate((()=>{s.style.strokeDashoffset=c.offset})).onComplete((()=>{o(f)})).start(),u=new t(i).to({height:60},2e3).easing(l.Quadratic.In).onComplete((()=>{o(u)})).start();p(),function e(){requestAnimationFrame(e),n().forEach((e=>{e.update()}))}(),setInterval((()=>{r.innerHTML="",p()}),400);
2 |
--------------------------------------------------------------------------------
/tween-animation/src/index.js:
--------------------------------------------------------------------------------
1 |
2 | import rough from 'roughjs'
3 | import { Tween, Easing, getAll, remove } from '@tweenjs/tween.js'
4 |
5 | const svg = document.getElementById('svg')
6 | const rc = rough.svg(svg);
7 | let mouth, timer
8 | let tear = {height :0}
9 | let dash = {offset: 200}
10 |
11 | function getTear(x, y, width = 20, height = 60, radian = 15) {
12 | return `M${x} ${y} L${x + width} ${y} L${x + width} ${y + height} Q${x + width / 2} ${y + height + radian} ${x} ${y+height} L${x} ${y}`
13 | }
14 |
15 | function getMouth() {
16 | let m = rc.curve([[200, 360], [280, 380], [340, 360]])
17 | m.style['strokeDasharray'] = 200
18 | m.style['strokeDashoffset'] = dash.offset
19 | return m
20 | }
21 |
22 | function stage() {
23 | svg.appendChild(rc.circle(300, 300, 300, {
24 | fill: 'yellow'
25 | }))
26 | svg.appendChild(rc.rectangle(160, 220, 60, 40, {
27 | fill: 'white'
28 | }))
29 | svg.appendChild(rc.rectangle(300, 220, 60, 40, {
30 | fill: 'white'
31 | }))
32 | svg.appendChild(rc.circle(180, 240, 15, {
33 | fill: 'black'
34 | }))
35 | svg.appendChild(rc.circle(326, 240, 15, {
36 | fill: 'black'
37 | }))
38 | let tear1 = rc.path(getTear(176, 255, 20, tear.height), {
39 | stroke: 'blue',
40 | strokeWidth: '1',
41 | fill: 'blue'
42 | })
43 | let tear2 = rc.path(getTear(316, 255, 20, tear.height), {
44 | stroke: 'blue',
45 | strokeWidth: '1',
46 | fill: 'blue'
47 | })
48 | mouth = getMouth()
49 | svg.appendChild(tear1)
50 | svg.appendChild(tear2)
51 | svg.appendChild(mouth)
52 | }
53 | const mouthTween = new Tween(dash).to({offset: 0}, 2000).easing(Easing.Quadratic.In).onUpdate(() => {
54 | mouth.style['strokeDashoffset'] = dash.offset
55 | }).onComplete(() => {
56 | remove(mouthTween)
57 | }).start()
58 | const tearTween = new Tween(tear).to({height: 60}, 2000).easing(Easing.Quadratic.In).onComplete(() => {
59 | remove(tearTween)
60 | }).start()
61 | stage()
62 |
63 |
64 | function animate() {
65 | timer = requestAnimationFrame(animate)
66 | getAll().forEach((t) => {
67 | t.update()
68 | })
69 | }
70 |
71 | animate()
72 | setInterval(() => {
73 | svg.innerHTML = ''
74 | stage()
75 | }, 400)
76 |
77 | // function animation() {
78 | // svg.innerHTML = ''
79 | // stage()
80 | // requestAnimationFrame(animation)
81 | // }
82 | // animation()
83 |
--------------------------------------------------------------------------------
/babylon-firework/main.js:
--------------------------------------------------------------------------------
1 | import { Scene, Engine, ArcRotateCamera,Vector3,Color3 } from "@babylonjs/core"
2 | import { Button,AdvancedDynamicTexture,Control } from '@babylonjs/gui'
3 | import { artifice } from './artfice'
4 |
5 | const getRandomBetween = (Min, Max) =>{
6 | let Range = Max - Min;
7 | let Rand = Math.random();
8 | let num = Min + Math.round(Rand * Range);
9 | return num;
10 | }
11 |
12 | class App {
13 | _scene
14 | _canvas
15 | _engine
16 |
17 | constructor() {
18 | this._canvas = this._createCanvas();
19 | this._engine = new Engine(this._canvas, true);
20 | this._scene = new Scene(this._engine);
21 | this._scene.clearColor = Color3.Black;
22 | const camera = new ArcRotateCamera("ArcRotateCamera", -1, 1, 100, new Vector3(0, 0, 0), this._scene);
23 | camera.attachControl(this._canvas, true);
24 | this._createPlayButton()
25 |
26 |
27 | this._engine.runRenderLoop(() => {
28 | this._scene.render();
29 | })
30 | }
31 |
32 | _createPlayButton() {
33 | const advancedTexture = AdvancedDynamicTexture.CreateFullscreenUI("UI");
34 | const button = Button.CreateSimpleButton("playButton", "发射");
35 | button.width = "150px"
36 | button.height = "40px";
37 | button.color = "white";
38 | button.posi
39 | button.cornerRadius = 20;
40 | button.background = "red";
41 | button.verticalAlignment = Control.VERTICAL_ALIGNMENT_BOTTOM
42 | button.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_RIGHT
43 | button.onPointerUpObservable.add(()=> {
44 | const x = getRandomBetween(-20,20)
45 | this.play(x)
46 | });
47 | advancedTexture.addControl(button);
48 | }
49 |
50 | play(x) {
51 | const firework = new artifice(this._scene)
52 | firework.shoot(x)
53 | }
54 |
55 | _createCanvas(id = 'babylon') {
56 | document.documentElement.style["overflow"] = "hidden";
57 | document.documentElement.style.overflow = "hidden";
58 | document.documentElement.style.width = "100%";
59 | document.documentElement.style.height = "100%";
60 | document.documentElement.style.margin = "0";
61 | document.documentElement.style.padding = "0";
62 | document.body.style.overflow = "hidden";
63 | document.body.style.width = "100%";
64 | document.body.style.height = "100%";
65 | document.body.style.margin = "0";
66 | document.body.style.padding = "0";
67 |
68 | this._canvas = document.createElement("canvas");
69 | this._canvas.style.width = "100%";
70 | this._canvas.style.height = "100%";
71 | this._canvas.id = id;
72 | document.body.appendChild(this._canvas);
73 |
74 | return this._canvas;
75 | }
76 | }
77 | const app = new App();
78 |
79 | app.play()
80 |
--------------------------------------------------------------------------------
/dream-swims/src/mapGuide.js:
--------------------------------------------------------------------------------
1 | import { PriorityQueue } from './priorityQueue'
2 | import { MAP_WIDTH, MAP_HEIGHT, CELLS_IZE } from './config.js'
3 | import { Graphics } from 'pixi.js'
4 | export class MapGuide{
5 | mapObstacles
6 | target = [0,0]
7 | guide = false
8 | constructor(mapObstacles, player, container) {
9 | this.mapObstacles = mapObstacles
10 | this.player = player
11 | this.container = container
12 | }
13 | bindPlayer(player) {
14 | this.player = player
15 | }
16 |
17 | drawObstacles() {
18 | for(let i= 0; i< MAP_WIDTH; i++) {
19 | for(let j = 0; j < MAP_HEIGHT; j++) {
20 | if (this.mapObstacles[i + MAP_WIDTH * j]) {
21 | const rectangle = new Graphics()
22 | rectangle.beginFill(0x66CCFF)
23 | rectangle.drawRect(i* CELLS_IZE,j * CELLS_IZE,CELLS_IZE, CELLS_IZE)
24 | this.container.addChild(rectangle)
25 | }
26 | }
27 | }
28 | }
29 |
30 | pathTo(to) {
31 | const that = this
32 | const path = this.findPath(to)
33 | if (!path) return
34 | return new Promise((resolve, reject) => {
35 | const index = path.length -1
36 | playerStep(index)
37 | function playerStep(index) {
38 | that.player.goto(path[index][0] * CELLS_IZE, path[index][1] * CELLS_IZE ).then(() => {
39 | if (index <= 0) {
40 | resolve()
41 | } else {
42 | playerStep(index -1)
43 | }
44 | }).catch((e)=> {
45 | console.log(e)
46 | reject()
47 | })
48 | }
49 | })
50 | }
51 |
52 | findPath(to) {
53 | let map = [].concat(this.mapObstacles)
54 | let from = {
55 | x: this.player.x / CELLS_IZE,
56 | y: this.player.y / CELLS_IZE
57 | }
58 | this.target[0] = parseInt(to.x / CELLS_IZE)
59 | this.target[1] = parseInt(to.y / CELLS_IZE)
60 | if (this.mapObstacles[this.target[0] + this.target[1] * MAP_WIDTH]) {
61 | return
62 | }
63 | console.log(`从(${from.x},${from.y})移动到${this.target[0]},${this.target[1]})移动到`)
64 | const queue = new PriorityQueue(this.distance.bind(this))
65 | queue.enqueue([from.x, from.y])
66 | function tryGo(x, y, pre) {
67 | // 边界判断
68 | if(x < 0 || x>= MAP_WIDTH || y < 0 || y >= MAP_HEIGHT) return
69 | // 地图障碍
70 | if(map[x + y * MAP_WIDTH]) return
71 | // 存储上一步位置
72 | map[x + y * MAP_WIDTH] = pre
73 | // 如果该点位可以正常行走,入栈
74 | queue.enqueue([x, y])
75 | }
76 | while(queue.length) {
77 | let [x, y] = queue.dequeue()
78 | if (x === this.target[0] && y === this.target[1]) {
79 | console.log('找到路了')
80 | // 找到路线 倒序回去
81 | let finalPath = [];
82 | while(x!= from.x || y!= from.y) {
83 | finalPath.push(map[x + MAP_WIDTH * y])
84 | let oX = x
85 | let oY = y
86 | x = map[oX + MAP_WIDTH * oY][0]
87 | y = map[oX + MAP_WIDTH * oY][1]
88 | }
89 | return finalPath
90 | }
91 | const direction = [
92 | [1, 0], [0, 1], [-1, 0], [0, -1], // 四个正方向
93 | [1, 1], [-1, 1], [1, -1], [-1, -1] // 四个斜角方向
94 | ]
95 | direction.forEach(dir => {
96 | tryGo(x + dir[0], y + dir[1], [x, y])
97 | })
98 | }
99 | return
100 | }
101 |
102 | distance(point1, point2) {
103 | // 求出和终点距离较近的点位
104 | const dis1 = Math.pow(point1[0] - this.target[0], 2) + Math.pow(point1[1] - this.target[1], 2)
105 | const dis2 = Math.pow(point2[0] - this.target[0], 2) + Math.pow(point2[1] - this.target[1], 2)
106 | return dis1 - dis2
107 | }
108 | }
--------------------------------------------------------------------------------
/dream-swims/dist/assets/index.1d27f605.js:
--------------------------------------------------------------------------------
1 | var e=Object.defineProperty,t=(t,s,r)=>(((t,s,r)=>{s in t?e(t,s,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[s]=r})(t,"symbol"!=typeof s?s+"":s,r),r);import{A as s,G as r,a,S as n}from"./vendor.b3eb47af.js";!function(e=".",t="__import__"){try{self[t]=new Function("u","return import(u)")}catch(s){const r=new URL(e,location),a=e=>{URL.revokeObjectURL(e.src),e.remove()};self[t]=e=>new Promise(((s,n)=>{const i=new URL(e,r);if(self[t].moduleMap[i])return s(self[t].moduleMap[i]);const o=new Blob([`import * as m from '${i}';`,`${t}.moduleMap['${i}']=m;`],{type:"text/javascript"}),l=Object.assign(document.createElement("script"),{type:"module",src:URL.createObjectURL(o),onerror(){n(new Error(`Failed to import: ${e}`)),a(l)},onload(){s(self[t].moduleMap[i]),a(l)}});document.head.appendChild(l)})),self[t].moduleMap={}}}("assets/");const i=new Array(1e4).fill(0);for(let d=50;d<60;d++)for(let e=50;e<70;e++)i[d+100*e]=1;class o{constructor(e){t(this,"items",[]),this.compare=e||((e,t)=>e-t)}enqueue(e){this.items.push(e)}dequeue(){if(!this.items.length)return;let e=0;for(let s=1;s{!function a(n){t.player.goto(5*s[n][0],5*s[n][1]).then((()=>{n<=0?e():a(n-1)})).catch((e=>{console.log(e),r()}))}(s.length-1)}))}findPath(e){let t=[].concat(this.mapObstacles),s={x:this.player.x/5,y:this.player.y/5};if(this.target[0]=parseInt(e.x/5),this.target[1]=parseInt(e.y/5),this.mapObstacles[this.target[0]+100*this.target[1]])return;console.log(`从(${s.x},${s.y})移动到${this.target[0]},${this.target[1]})移动到`);const r=new o(this.distance.bind(this));function a(e,s,a){e<0||e>=100||s<0||s>=100||t[e+100*s]||(t[e+100*s]=a,r.enqueue([e,s]))}for(r.enqueue([s.x,s.y]);r.length;){let[e,n]=r.dequeue();if(e===this.target[0]&&n===this.target[1]){console.log("找到路了");let r=[];for(;e!=s.x||n!=s.y;){r.push(t[e+100*n]);let s=e,a=n;e=t[s+100*a][0],n=t[s+100*a][1]}return r}[[1,0],[0,1],[-1,0],[0,-1],[1,1],[-1,1],[1,-1],[-1,-1]].forEach((t=>{a(e+t[0],n+t[1],[e,n])}))}}distance(e,t){return Math.pow(e[0]-this.target[0],2)+Math.pow(e[1]-this.target[1],2)-(Math.pow(t[0]-this.target[0],2)+Math.pow(t[1]-this.target[1],2))}}class c extends a{constructor(e){super(e),this.anchor.set(.5,.85),this.position.set(100,100),this.animationSpeed=.1,this.play()}goto(e,t){return new Promise((s=>{setTimeout((()=>{this.position.set(e,t),s()}),60)}))}}const h=function(){const e=new s({width:500,height:500,view:document.getElementById("canvas"),antialias:!0,transparent:!1,resolution:1});return e.view.oncontextmenu=e=>{e.preventDefault()},e}();let u,p;h.loader.add([{name:"background",url:"background/bg.jpg"},{name:"player",url:"player/0.png"},{name:"player1",url:"player/1.png"},{name:"player2",url:"player/2.png"},{name:"player3",url:"player/3.png"},{name:"player4",url:"player/4.png"},{name:"player5",url:"player/5.png"}]).load((function(){!function(){const e=h.loader.resources.background.texture,t=new n(e);h.stage.addChild(t),p=new c([h.loader.resources.player1.texture,h.loader.resources.player2.texture,h.loader.resources.player3.texture,h.loader.resources.player4.texture,h.loader.resources.player5.texture]),u=new l(i,p,h.stage),u.drawObstacles(),h.stage.addChild(p),h.stage.interactive=!0,h.stage.on("click",(e=>{const{x:t,y:s}=e.data.global;u.pathTo({x:t,y:s})}))}()}));
2 |
--------------------------------------------------------------------------------
/pixi-lol/dist/assets/index.dbe44f8d.js:
--------------------------------------------------------------------------------
1 | import{A as t,a as e,G as i,R as s,T as n,C as a,S as o,f as r,b as l,c as h,E as d}from"./vendor.2b34de43.js";!function(t=".",e="__import__"){try{self[e]=new Function("u","return import(u)")}catch(i){const s=new URL(t,location),n=t=>{URL.revokeObjectURL(t.src),t.remove()};self[e]=t=>new Promise(((i,a)=>{const o=new URL(t,s);if(self[e].moduleMap[o])return i(self[e].moduleMap[o]);const r=new Blob([`import * as m from '${o}';`,`${e}.moduleMap['${o}']=m;`],{type:"text/javascript"}),l=Object.assign(document.createElement("script"),{type:"module",src:URL.createObjectURL(r),onerror(){a(new Error(`Failed to import: ${t}`)),n(l)},onload(){i(self[e].moduleMap[o]),n(l)}});document.head.appendChild(l)})),self[e].moduleMap={}}}("assets/");const c={x:500,y:300,scale:.3,width:356,height:220,speed:3},u=1,p=800;class m extends e{constructor(t,e){super(t),this.options={},Object.assign(this.options,e,c),this.radian=0,this.anchor.set(.5,.5),this.targetX=this.options.x,this.targetY=this.options.y,this.position.set(this.options.x,this.options.y),this.animationSpeed=this.options.animationSpeed,this.scale.set(this.options.scale,this.options.scale)}goto(t,e){this.targetX=t,this.targetY=e,this.radian=Math.atan2(e-this.y,t-this.x),this.rotation=this.radian}walk(){if(this.targetX===this.x&&this.targetY===this.y)return;const t=this.x-this.targetX,e=this.y-this.targetY;Math.sqrt(Math.pow(t,2)+Math.pow(e,2)){i.style.fill="white"})),e.on("mouseout",(()=>{i.style.fill="black"}))}return e}const y=function(){const e=new t({width:1e3,height:600,antialias:!0,transparent:!1,resolution:1});return document.body.appendChild(e.view),e.view.oncontextmenu=t=>{t.preventDefault()},e}();let x,b,v,C,k,M,F,j;function E(t){[x,b,v].forEach((e=>{M=t,t===e.name?(e.visible=!0,"start"===t&&(j.visible=!1),"play"===t?(j.visible=!0,F=0,C.reset(),k=function(t,e,i,s=300){const n=[[0,1e3,0,0],[0,0,0,600],[1e3,1e3,0,600],[0,1e3,600,600]];return setInterval((()=>{for(let s=0;s{"yaoji"!==t.name&&"map"!==t.name&&b.removeChild(t)}))}))}function R(t,e){let i=!1;const s=t.x-e.x,n=t.y-e.y,a=(t.width+e.width)/2,o=(t.height+e.height)/2;return Math.abs(s){E("play")}));const g=w("其他功能");g.position.set(24,320),x.addChild(g),y.stage.addChild(x),x.visible=!0,function(){if(x){let t=function(){m=requestAnimationFrame(t),g.update()};const e=100,n=32,a=(new i).beginFill(16711680).drawCircle(e+n,e+n,e).endFill();a.filters=[new r.BlurFilter(n)];const c=new s(0,0,1e3,600),u=y.renderer.generateTexture(a,l.NEAREST,1,c),p=new o(u);y.stage.addChild(p);x.getChildByName("background").mask=p;let m=null;const g=new h(p.scale).to({x:5,y:5},1500).easing(d.Quadratic.In).onComplete((()=>{m&&(cancelAnimationFrame(m),m=null)})).start();requestAnimationFrame(t)}}(),b=new a,b.name="play";const f=y.loader.resources.background.texture,k=new s(0,1080,1550,900);f.frame=k;const M=new o(f);M.name="map";const R=1e3/M.width,S=600/M.height;M.scale.set(R,S),b.addChild(M),C=function(t){if(!t)return console.warn("请先加载图片资源"),null;let e=[];const i=t.texture,{width:n,height:a}=c;for(let o=0;o<4;o++){const t=i.clone(),r=new s(592+n*o,152,n,a);t.frame=r,e.push(t)}return new m(e)}(y.loader.resources.player),C.name="yaoji",b.addChild(C),b.interactive=!0,b.on("rightclick",(t=>{const{x:e,y:i}=t.data.global;C.goto(e,i)})),y.stage.addChild(b),b.visible=!1,v=new a,v.name="over";const X=w("重新开始");X.position.set(24,320),X.on("click",(()=>{E("start")})),v.addChild(X);const Y=new n("加油,再来一次,你是下一个Faker");Y.x=300,Y.y=300,Y.align="center",Y.style={fill:"white",fontSize:32},v.visible=!1,v.addChild(Y),F=0,j=new n(`${F}`),j.style={fill:"red",fontSize:32},j.position.set(500,200),j.visible=!1,y.stage.addChild(j),y.stage.addChild(v)})(),y.ticker.add((()=>{if("play"===M){for(let t=0;t{"yaoji"!==t.name&&"map"!==t.name&&t.walk()}))}}))})),window.onbeforeload=()=>{clearInterval(k)};
2 |
--------------------------------------------------------------------------------
/babylon-firework/dist/assets/index.26b33bda.js:
--------------------------------------------------------------------------------
1 | var T=Object.defineProperty;var S=(a,i,s)=>i in a?T(a,i,{enumerable:!0,configurable:!0,writable:!0,value:s}):a[i]=s;var h=(a,i,s)=>(S(a,typeof i!="symbol"?i+"":i,s),s);import{M as f,V as l,P as u,T as v,C as m,a as y,E as b,S as P,b as R,A as C,c as B,B as N,d as x}from"./vendor.c55a8b7e.js";const L=function(){const i=document.createElement("link").relList;if(i&&i.supports&&i.supports("modulepreload"))return;for(const t of document.querySelectorAll('link[rel="modulepreload"]'))o(t);new MutationObserver(t=>{for(const e of t)if(e.type==="childList")for(const r of e.addedNodes)r.tagName==="LINK"&&r.rel==="modulepreload"&&o(r)}).observe(document,{childList:!0,subtree:!0});function s(t){const e={};return t.integrity&&(e.integrity=t.integrity),t.referrerpolicy&&(e.referrerPolicy=t.referrerpolicy),t.crossorigin==="use-credentials"?e.credentials="include":t.crossorigin==="anonymous"?e.credentials="omit":e.credentials="same-origin",e}function o(t){if(t.ep)return;t.ep=!0;const e=s(t);fetch(t.href,e)}};L();class M{constructor(i){this.scene=i,this.isTop=!1,this.timer=0,this.isFired=!1,this.timer1=0,this.textureFirework="textures/flare.png",this.posX=0,this.posY=0,this.posZ=0}shoot(i=0,s=-20,o=0){let t=new f.CreateSphere("Shoot",4,1,this.scene);t.position=new l(i,s,o),t.isVisible=!1;let e=new u("particles",350,this.scene);e.particleTexture=new v(this.textureFirework,this.scene),e.emitter=t,e.minEmitBox=new l(0,0,0),e.maxEmitBox=new l(0,0,0),e.color1=new m(1,.8,1,1),e.color2=new m(1,.5,1,1),e.colorDead=new m(0,0,.2,.5),e.minSize=1,e.maxSize=1,e.minLifeTime=.5,e.maxLifeTime=.5,e.emitRate=350,e.blendMode=u.BLENDMODE_ONEONE,e.direction1=new l(0,-2,0),e.direction2=new l(0,-2,0),e.minEmitPower=1,e.maxEmitPower=1,e.updateSpeed=.005;let r=function(d){for(let c=0;c=n.lifeTime){this.recycleParticle(n),c--;continue}else n.size-=.01,n.direction.scaleToRef(e._scaledUpdateSpeed,e._scaledDirection),n.position.addInPlace(e._scaledDirection),e.gravity.scaleToRef(e._scaledUpdateSpeed,e._scaledGravity),n.direction.addInPlace(e._scaledGravity)}};e.updateFunction=r,e.start(),this.scene.registerBeforeRender(()=>{if(!this.isFired){if(!this.isTop)t.position.y+=.5,t.position.y>30&&(this.isTop=!this.isTop,this.isTop&&(this.posX=t.position.x,this.posY=t.position.y,this.posZ=t.position.z),e.stop(),t.position.x-=.5);else if(this.timer+=5,this.timer==125){for(let d=0;d<2;d++)this.firework();this.isFired=!this.isFired}}})}getRandomBetween(i,s){let o=s-i,t=Math.random();return i+Math.round(t*o)}firework(){let i=new f.CreateSphere("explosion",4,1,this.scene);i.isVisible=!1,i.position.x=this.posX,i.position.y=this.posY,i.position.z=this.posZ;let s=i;s.useVertexColors=!0;let o=s.getVerticesData(y.PositionKind),t=s.getVerticesData(y.NormalKind),e=[];for(let r=0;r=n.lifeTime){this.recycleParticle(n),c--;continue}else t||(n.size=n.size+.005,n.size>=.162&&(t=!t)),n.direction.scaleToRef(e._scaledUpdateSpeed,e._scaledDirection),n.position.addInPlace(e._scaledDirection),e.gravity.scaleToRef(e._scaledUpdateSpeed,e._scaledGravity),n.direction.addInPlace(e._scaledGravity)}};e.updateFunction=r,e.domeRadius=10,e.particleTexture=new v(this.textureFirework,this.scene),e.emitter=i,e.minEmitBox=new l(1,0,0),e.maxEmitBox=new l(1,0,0),e.color1=o,e.color2=o,e.colorDead=new m(0,0,0,0),e.minSize=.1,e.maxSize=.1,e.minLifeTime=1,e.maxLifeTime=2,e.emitRate=500,e.blendMode=u.BLENDMODE_ONEONE,e.gravity=new l(0,-9.81,0),e.direction1=s,e.direction2=s,e.minEmitPower=10,e.maxEmitPower=13,e.updateSpeed=.01,e.start(),this.scene.registerBeforeRender(()=>{this.timer1<300?this.timer1+=.15:e.stop()})}}const O=(a,i)=>{let s=i-a,o=Math.random();return a+Math.round(o*s)};class z{constructor(){h(this,"_scene");h(this,"_canvas");h(this,"_engine");this._canvas=this._createCanvas(),this._engine=new b(this._canvas,!0),this._scene=new P(this._engine),this._scene.clearColor=R.Black,new C("ArcRotateCamera",-1,1,100,new l(0,0,0),this._scene).attachControl(this._canvas,!0),this._createPlayButton(),this._engine.runRenderLoop(()=>{this._scene.render()})}_createPlayButton(){const i=B.CreateFullscreenUI("UI"),s=N.CreateSimpleButton("playButton","\u53D1\u5C04");s.width="150px",s.height="40px",s.color="white",s.posi,s.cornerRadius=20,s.background="red",s.verticalAlignment=x.VERTICAL_ALIGNMENT_BOTTOM,s.horizontalAlignment=x.HORIZONTAL_ALIGNMENT_RIGHT,s.onPointerUpObservable.add(()=>{const o=O(-20,20);this.play(o)}),i.addControl(s)}play(i){new M(this._scene).shoot(i)}_createCanvas(i="babylon"){return document.documentElement.style.overflow="hidden",document.documentElement.style.overflow="hidden",document.documentElement.style.width="100%",document.documentElement.style.height="100%",document.documentElement.style.margin="0",document.documentElement.style.padding="0",document.body.style.overflow="hidden",document.body.style.width="100%",document.body.style.height="100%",document.body.style.margin="0",document.body.style.padding="0",this._canvas=document.createElement("canvas"),this._canvas.style.width="100%",this._canvas.style.height="100%",this._canvas.id=i,document.body.appendChild(this._canvas),this._canvas}}const D=new z;D.play();
2 |
--------------------------------------------------------------------------------
/canvas-emoji/canvas.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Document
8 |
9 |
10 |
11 |
12 |
13 |
204 |
--------------------------------------------------------------------------------
/tween-animation/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@tweenjs/tween.js@^18.6.4":
6 | version "18.6.4"
7 | resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-18.6.4.tgz#40a3d0a93647124872dec8e0fd1bd5926695b6ca"
8 | integrity sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==
9 |
10 | colorette@^1.2.2:
11 | version "1.2.2"
12 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
13 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
14 |
15 | esbuild@^0.9.3:
16 | version "0.9.6"
17 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.9.6.tgz#2cae519e7ce2328ecf57ae738090d07ce7245850"
18 | integrity sha512-F6vASxU0wT/Davt9aj2qtDwDNSkQxh9VbyO56M7PDWD+D/Vgq/rmUDGDQo7te76W5auauVojjnQr/wTu3vpaUA==
19 |
20 | fsevents@~2.3.1:
21 | version "2.3.2"
22 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
23 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
24 |
25 | function-bind@^1.1.1:
26 | version "1.1.1"
27 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
28 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
29 |
30 | has@^1.0.3:
31 | version "1.0.3"
32 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
33 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
34 | dependencies:
35 | function-bind "^1.1.1"
36 |
37 | is-core-module@^2.2.0:
38 | version "2.2.0"
39 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
40 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
41 | dependencies:
42 | has "^1.0.3"
43 |
44 | nanoid@^3.1.20:
45 | version "3.1.22"
46 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844"
47 | integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==
48 |
49 | path-data-parser@0.1.0, path-data-parser@^0.1.0:
50 | version "0.1.0"
51 | resolved "https://registry.yarnpkg.com/path-data-parser/-/path-data-parser-0.1.0.tgz#8f5ba5cc70fc7becb3dcefaea08e2659aba60b8c"
52 | integrity sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==
53 |
54 | path-parse@^1.0.6:
55 | version "1.0.6"
56 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
57 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
58 |
59 | points-on-curve@0.2.0, points-on-curve@^0.2.0:
60 | version "0.2.0"
61 | resolved "https://registry.yarnpkg.com/points-on-curve/-/points-on-curve-0.2.0.tgz#7dbb98c43791859434284761330fa893cb81b4d1"
62 | integrity sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==
63 |
64 | points-on-path@^0.2.1:
65 | version "0.2.1"
66 | resolved "https://registry.yarnpkg.com/points-on-path/-/points-on-path-0.2.1.tgz#553202b5424c53bed37135b318858eacff85dd52"
67 | integrity sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==
68 | dependencies:
69 | path-data-parser "0.1.0"
70 | points-on-curve "0.2.0"
71 |
72 | postcss@^8.2.1:
73 | version "8.2.8"
74 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece"
75 | integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==
76 | dependencies:
77 | colorette "^1.2.2"
78 | nanoid "^3.1.20"
79 | source-map "^0.6.1"
80 |
81 | resolve@^1.19.0:
82 | version "1.20.0"
83 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
84 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
85 | dependencies:
86 | is-core-module "^2.2.0"
87 | path-parse "^1.0.6"
88 |
89 | rollup@^2.38.5:
90 | version "2.42.3"
91 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.42.3.tgz#7935d7bc8687faa5743432e207d761aa31fe6fee"
92 | integrity sha512-JjaT9WaUS5vmjy6xUrnPOskjkQg2cN4WSACNCwbOvBz8VDmbiKVdmTFUoMPRqTud0tsex8Xy9/boLbDW9HKD1w==
93 | optionalDependencies:
94 | fsevents "~2.3.1"
95 |
96 | roughjs@^4.3.1:
97 | version "4.3.1"
98 | resolved "https://registry.yarnpkg.com/roughjs/-/roughjs-4.3.1.tgz#b7af0b205c94bc3b79ee5a7eae1e09d5063bc3fe"
99 | integrity sha512-m42+OBaBR7x5UhIKyjBCnWqqkaEkBKLkXvHv4pOWJXPofvMnQY4ZcFEQlqf3coKKyZN2lfWMyx7QXSg2GD7SGA==
100 | dependencies:
101 | path-data-parser "^0.1.0"
102 | points-on-curve "^0.2.0"
103 | points-on-path "^0.2.1"
104 |
105 | source-map@^0.6.1:
106 | version "0.6.1"
107 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
108 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
109 |
110 | vite@^2.0.5:
111 | version "2.1.2"
112 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.1.2.tgz#0aecaf6d34112b24536df1a14cd8d74fdcab6e20"
113 | integrity sha512-K96k5Nb1kywggFwZNGf/NQVZIrjMSvjebYWFIEQRu8AQWtzxatMF8/reExFXebmrfWAT3PTUk6l4zJBkpMtyVg==
114 | dependencies:
115 | esbuild "^0.9.3"
116 | postcss "^8.2.1"
117 | resolve "^1.19.0"
118 | rollup "^2.38.5"
119 | optionalDependencies:
120 | fsevents "~2.3.1"
121 |
--------------------------------------------------------------------------------
/pixi-lol/src/index.js:
--------------------------------------------------------------------------------
1 | import { Container, Graphics, Rectangle, Sprite, Text, filters, SCALE_MODES } from 'pixi.js'
2 | import { Tween, Easing } from '@tweenjs/tween.js'
3 | import { WIDTH, HEIGHT, IMAGES, MONSTER_OPTIONS } from './config'
4 | import { appFactory } from './app'
5 | import { playerFactory, monsterFactory} from './factory'
6 | import { getButton } from './button'
7 | const app = appFactory()
8 |
9 | app.loader.add(IMAGES).load(setup)
10 | let startScene, playScene, overScene, yaoji, timer, currentScene, score, scoreText
11 | function setup() {
12 | // 初始化场景
13 | initScene()
14 | app.ticker.add(() => {
15 | if (currentScene === 'play') {
16 | for(let i = 0; i < playScene.children.length; i++) {
17 | let c = playScene.children[i]
18 | if (c.name !== 'yaoji' && c.name !== 'map') {
19 | if(hit(yaoji, c)) { // 碰撞检测
20 | changeScene('over')
21 | return
22 | }
23 | }
24 | }
25 | scoreText.text = `${++score}` // 更新得分
26 | yaoji.walk()
27 | playScene.children.forEach(c => {
28 | if (c.name !== 'yaoji' && c.name !== 'map') {
29 | c.walk()
30 | // if(hit(yaoji, c)) { // 碰撞检测
31 | // changeScene('over')
32 | // }
33 | }
34 | })
35 | }
36 | })
37 | }
38 |
39 | // 开场动画
40 | function beginAnimation() {
41 | if (startScene) {
42 | // 圆的内半径
43 | const radius = 100;
44 | // 模糊量
45 | const blurSize = 32;
46 | const circle = new Graphics()
47 | .beginFill(0xFF0000)
48 | .drawCircle(radius + blurSize, radius + blurSize, radius)
49 | .endFill()
50 | circle.filters = [new filters.BlurFilter(blurSize)];
51 | const bounds = new Rectangle(0, 0, WIDTH, HEIGHT);
52 | const texture = app.renderer.generateTexture(circle, SCALE_MODES.NEAREST, 1, bounds);
53 | const focus = new Sprite(texture);
54 | app.stage.addChild(focus);
55 | const backgroundImage = startScene.getChildByName('background')
56 | backgroundImage.mask = focus
57 | let animateTimer = null
58 | const tween = new Tween(focus.scale).to({
59 | x: 5,
60 | y: 5,
61 | }, 1500).easing(Easing.Quadratic.In).onComplete((() => {
62 | if(animateTimer) {
63 | cancelAnimationFrame(animateTimer)
64 | animateTimer = null
65 | }
66 | })).start()
67 |
68 | function animate() {
69 | animateTimer = requestAnimationFrame(animate)
70 | tween.update()
71 | }
72 | requestAnimationFrame(animate)
73 | }
74 | }
75 |
76 | function initScene() {
77 | /********************* 场景一 ******************/
78 | startScene = new Container()
79 | startScene.name = 'start'
80 | const backgroundImage = new Sprite(app.loader.resources['starBackground'].texture)
81 | backgroundImage.name = 'background'
82 | const scareX = WIDTH / backgroundImage.width
83 | const scareY = HEIGHT / backgroundImage.height
84 | backgroundImage.scale.set(scareX, scareY)
85 | startScene.addChild(backgroundImage)
86 | // 添加按钮
87 | const startButton = getButton('开始游戏')
88 | startButton.position.set(24, 240)
89 | startScene.addChild(startButton)
90 | startButton.on('click', () => {
91 | changeScene('play')
92 | })
93 | const otherButton = getButton('其他功能')
94 | otherButton.position.set(24, 320)
95 | startScene.addChild(otherButton)
96 | app.stage.addChild(startScene)
97 | startScene.visible = true
98 | beginAnimation()
99 | /********************* 场景二 ******************/
100 | playScene = new Container()
101 | playScene.name = 'play'
102 | const mapTexture = app.loader.resources['background'].texture
103 | const rectangle = new Rectangle(0, 1080, 1550, 900)
104 | mapTexture.frame = rectangle
105 | const map = new Sprite(mapTexture)
106 | map.name = 'map'
107 | const mapScareX = WIDTH / map.width
108 | const mapScareY = HEIGHT / map.height
109 | map.scale.set(mapScareX, mapScareY)
110 | playScene.addChild(map)
111 |
112 | // 添加妖姬
113 | yaoji = playerFactory(app.loader.resources['player'])
114 | yaoji.name = 'yaoji'
115 | playScene.addChild(yaoji)
116 | playScene.interactive = true;
117 | playScene.on("rightclick", (e) => {
118 | const { x ,y } = e.data.global
119 | yaoji.goto(x, y)
120 | })
121 | app.stage.addChild(playScene)
122 | playScene.visible = false
123 | /********************* 场景三 ******************/
124 | overScene = new Container()
125 | overScene.name = 'over'
126 | const playButton = getButton('重新开始')
127 | playButton.position.set(24, 320)
128 | playButton.on('click', () => {
129 | changeScene('start')
130 | })
131 | overScene.addChild(playButton)
132 | const overText = new Text('加油,再来一次,你是下一个Faker')
133 | overText.x = 300
134 | overText.y = HEIGHT / 2
135 | overText.align = 'center'
136 | overText.style = { fill: "white", fontSize: 32 }
137 | overScene.visible = false
138 | overScene.addChild(overText)
139 | score = 0
140 | scoreText = new Text(`${score}`)
141 | scoreText.style = { fill: "red", fontSize: 32 }
142 | scoreText.position.set(WIDTH / 2, HEIGHT / 3)
143 | scoreText.visible = false
144 | app.stage.addChild(scoreText)
145 | app.stage.addChild(overScene)
146 | }
147 |
148 | function changeScene(sceneName) {
149 | const scenes = [startScene, playScene, overScene ]
150 | scenes.forEach((scene) => {
151 | currentScene = sceneName
152 | if (sceneName === scene.name) {
153 | scene.visible = true
154 | if (sceneName === 'start') {
155 | scoreText.visible = false
156 | }
157 | if (sceneName === 'play') {
158 | scoreText.visible = true
159 | score = 0
160 | yaoji.reset()
161 | timer = monsterFactory(playScene, yaoji, MONSTER_OPTIONS.number, MONSTER_OPTIONS.time)
162 | } else {
163 | if (timer) {
164 | clearInterval(timer)
165 | timer = null
166 | }
167 | }
168 | } else {
169 | scene.visible = false
170 | }
171 | if(sceneName === 'start') {
172 | playScene.children.forEach((c) => {
173 | if (c.name !== 'yaoji' && c.name !== 'map') {
174 | playScene.removeChild(c)
175 | }
176 | })
177 | }
178 | })
179 | }
180 |
181 | function hit(obj1, obj2) {
182 | let isHit = false
183 | const dx = obj1.x - obj2.x
184 | const dy = obj1.y - obj2.y
185 | const combinedHalfWidths = (obj1.width + obj2.width) / 2
186 | const combinedHalfHeights = (obj1.height + obj2.height) / 2
187 | if (Math.abs(dx) < combinedHalfWidths) {
188 | if (Math.abs(dy) < combinedHalfHeights) {
189 | isHit = true;
190 | }
191 | }
192 | return isHit
193 | }
194 |
195 | window.onbeforeload = () => {
196 | clearInterval(timer)
197 | }
198 |
199 |
--------------------------------------------------------------------------------
/babylon-firework/artfice.js:
--------------------------------------------------------------------------------
1 | import { Mesh, Vector3, Color4, ParticleSystem, Texture, VertexBuffer } from "@babylonjs/core"
2 | export class artifice
3 | {
4 | constructor(scene)
5 | {
6 | this.scene = scene
7 | this.isTop = false;
8 | this.timer = 0;
9 | this.isFired = false;
10 | this.timer1 = 0;
11 | this.textureFirework = "textures/flare.png";
12 | this.posX = 0
13 | this.posY = 0
14 | this.posZ = 0
15 | }
16 |
17 | shoot(posX = 0, posY = -20, posZ = 0)
18 | {
19 | let startSphere = new Mesh.CreateSphere("Shoot", 4, 1, this.scene);
20 | startSphere.position = new Vector3(posX, posY, posZ);
21 | startSphere.isVisible = false;
22 |
23 | let particleSystem = new ParticleSystem("particles", 350, this.scene);
24 | particleSystem.particleTexture = new Texture(this.textureFirework, this.scene);
25 | particleSystem.emitter = startSphere;
26 | particleSystem.minEmitBox = new Vector3(0, 0, 0);
27 | particleSystem.maxEmitBox = new Vector3(0, 0, 0);
28 | particleSystem.color1 = new Color4(1, 0.8, 1.0, 1.0);
29 | particleSystem.color2 = new Color4(1, 0.5, 1.0, 1.0);
30 | particleSystem.colorDead = new Color4(0, 0, 0.2, 0.5);
31 | particleSystem.minSize = 1;
32 | particleSystem.maxSize = 1;
33 | particleSystem.minLifeTime = 0.5;
34 | particleSystem.maxLifeTime = .5;
35 | particleSystem.emitRate = 350;
36 | particleSystem.blendMode = ParticleSystem.BLENDMODE_ONEONE;
37 | particleSystem.direction1 = new Vector3(0, -2, 0);
38 | particleSystem.direction2 = new Vector3(0, -2, 0);
39 | particleSystem.minEmitPower = 1;
40 | particleSystem.maxEmitPower = 1;
41 | particleSystem.updateSpeed = 0.005;
42 |
43 | let bigEnough = false;
44 | let updateFunction = function(particles) {
45 | for (let index = 0; index < particles.length; index++) {
46 | let particle = particles[index];
47 | particle.age += this._scaledUpdateSpeed;
48 | if (particle.age >= particle.lifeTime) {
49 | this.recycleParticle(particle);
50 | index--;
51 | continue;
52 | } else {
53 | if(!bigEnough){
54 | particle.size -= .01;
55 | }
56 | particle.direction.scaleToRef(particleSystem._scaledUpdateSpeed, particleSystem._scaledDirection);
57 | particle.position.addInPlace(particleSystem._scaledDirection);
58 | particleSystem.gravity.scaleToRef(particleSystem._scaledUpdateSpeed, particleSystem._scaledGravity);
59 | particle.direction.addInPlace(particleSystem._scaledGravity);
60 | }
61 | }
62 | };
63 | particleSystem.updateFunction = updateFunction;
64 | particleSystem.start();
65 |
66 | this.scene.registerBeforeRender(() => {
67 | if(!this.isFired){
68 | if(!this.isTop){
69 | startSphere.position.y += .5;
70 | if(startSphere.position.y > 30){
71 | this.isTop = !this.isTop;
72 | if (this.isTop ) {
73 | this.posX = startSphere.position.x
74 | this.posY = startSphere.position.y
75 | this.posZ = startSphere.position.z
76 | }
77 | particleSystem.stop();
78 | startSphere.position.x -= .5;
79 | }
80 | } else {
81 | this.timer +=5;
82 | if(this.timer == 125){
83 | for(let i = 0; i < 2; i++){
84 | this.firework();
85 | }
86 | this.isFired = !this.isFired;
87 | }
88 | }
89 | }
90 | });
91 | }
92 |
93 | getRandomBetween(Min, Max){
94 | let Range = Max - Min;
95 | let Rand = Math.random();
96 | let num = Min + Math.round(Rand * Range);
97 | return num;
98 | }
99 |
100 | firework()
101 | {
102 | let fountain = new Mesh.CreateSphere("explosion", 4, 1, this.scene);
103 | fountain.isVisible = false;
104 | fountain.position.x = this.posX
105 | fountain.position.y = this.posY
106 | fountain.position.z = this.posZ
107 | let perticleFromVerticesEmitter = fountain;
108 | perticleFromVerticesEmitter.useVertexColors = true;
109 | let verticesPositions = perticleFromVerticesEmitter.getVerticesData(VertexBuffer.PositionKind);
110 | let verticesNormals = perticleFromVerticesEmitter.getVerticesData(VertexBuffer.NormalKind);
111 | let verticesColor = [];
112 |
113 | for (let i = 0; i < verticesPositions.length; i += 3){
114 | let vertexPosition = new Vector3(
115 | verticesPositions[i],
116 | verticesPositions[i + 1],
117 | verticesPositions[i + 2]
118 | );
119 | let vertexNormal = new Vector3(
120 | verticesNormals[i],
121 | verticesNormals[i + 1],
122 | verticesNormals[i + 2]
123 | );
124 | let r = Math.random();
125 | let g = Math.random();
126 | let b = Math.random();
127 | let alpha = 1.0;
128 | let color = new Color4(r, g, b, alpha);
129 | verticesColor.push(r);
130 | verticesColor.push(g);
131 | verticesColor.push(b);
132 | verticesColor.push(alpha);
133 | let gizmo = Mesh.CreateBox('gizmo', 0.001, this.scene);
134 | gizmo.position = vertexPosition;
135 | gizmo.parent = perticleFromVerticesEmitter;
136 | this.createParticleSystem(gizmo, vertexNormal.normalize().scale(1), color);
137 | }
138 |
139 | perticleFromVerticesEmitter.setVerticesData(VertexBuffer.ColorKind, verticesColor);
140 | }
141 |
142 | createParticleSystem(emitter, direction, color)
143 | {
144 | let bigEnough = false;
145 | let particleSystem1 = new ParticleSystem("particles", 500, this.scene);
146 | let updateFunction = function(particles) {
147 | for (let index = 0; index < particles.length; index++) {
148 | let particle = particles[index];
149 | particle.age += this._scaledUpdateSpeed;
150 | if (particle.age >= particle.lifeTime) {
151 | this.recycleParticle(particle);
152 | index--;
153 | continue;
154 | } else {
155 | if(!bigEnough){
156 | particle.size = particle.size +.005;
157 | if(particle.size >= .162){
158 | bigEnough = !bigEnough;
159 | }
160 | }
161 | particle.direction.scaleToRef(particleSystem1._scaledUpdateSpeed, particleSystem1._scaledDirection);
162 | particle.position.addInPlace(particleSystem1._scaledDirection);
163 | particleSystem1.gravity.scaleToRef(particleSystem1._scaledUpdateSpeed, particleSystem1._scaledGravity);
164 | particle.direction.addInPlace(particleSystem1._scaledGravity);
165 | }
166 | }
167 | };
168 | particleSystem1.updateFunction = updateFunction;
169 | particleSystem1.domeRadius = 10;
170 | particleSystem1.particleTexture = new Texture(this.textureFirework, this.scene);
171 | particleSystem1.emitter = emitter; // the starting object, the emitter
172 | particleSystem1.minEmitBox = new Vector3(1, 0, 0); // Starting all from
173 | particleSystem1.maxEmitBox = new Vector3(1, 0, 0); // To...
174 | particleSystem1.color1 = color;
175 | particleSystem1.color2 = color;
176 | particleSystem1.colorDead = new Color4(0, 0, 0, 0.0);
177 | particleSystem1.minSize = .1;
178 | particleSystem1.maxSize = .1;
179 | particleSystem1.minLifeTime = 1;
180 | particleSystem1.maxLifeTime = 2;
181 | particleSystem1.emitRate = 500;
182 | particleSystem1.blendMode = ParticleSystem.BLENDMODE_ONEONE;
183 | particleSystem1.gravity = new Vector3(0, -9.81, 0);
184 | particleSystem1.direction1 = direction;
185 | particleSystem1.direction2 = direction;
186 | particleSystem1.minEmitPower = 10;
187 | particleSystem1.maxEmitPower = 13;
188 | particleSystem1.updateSpeed = 0.01;
189 | particleSystem1.start();
190 |
191 | this.scene.registerBeforeRender(() =>{
192 | if(this.timer1 < 300){
193 | this.timer1 += 0.15;
194 | } else {
195 | particleSystem1.stop();
196 | }
197 | });
198 | }
199 | }
--------------------------------------------------------------------------------
/pixi-lol/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@pixi/accessibility@5.3.8":
6 | version "5.3.8"
7 | resolved "https://registry.npm.taobao.org/@pixi/accessibility/download/@pixi/accessibility-5.3.8.tgz#c80a5a0849b82dc97b52bbe8e65ebef61ec8a6ff"
8 | integrity sha1-yApaCEm4Lcl7Urvo5l6+9h7Ipv8=
9 | dependencies:
10 | "@pixi/core" "5.3.8"
11 | "@pixi/display" "5.3.8"
12 | "@pixi/utils" "5.3.8"
13 |
14 | "@pixi/app@5.3.8":
15 | version "5.3.8"
16 | resolved "https://registry.npm.taobao.org/@pixi/app/download/@pixi/app-5.3.8.tgz#e13d36fa5fc2b1e052a81ce67f053a0bec8504f3"
17 | integrity sha1-4T02+l/CseBSqBzmfwU6C+yFBPM=
18 | dependencies:
19 | "@pixi/core" "5.3.8"
20 | "@pixi/display" "5.3.8"
21 |
22 | "@pixi/constants@5.3.8":
23 | version "5.3.8"
24 | resolved "https://registry.npm.taobao.org/@pixi/constants/download/@pixi/constants-5.3.8.tgz#3777b268feab6a5636bb8508fbbaad41c0b30874"
25 | integrity sha1-N3eyaP6ralY2u4UI+7qtQcCzCHQ=
26 |
27 | "@pixi/core@5.3.8":
28 | version "5.3.8"
29 | resolved "https://registry.npm.taobao.org/@pixi/core/download/@pixi/core-5.3.8.tgz#28e6348b5f99aa2cfc9483796219dd379a858b36"
30 | integrity sha1-KOY0i1+Zqiz8lIN5YhndN5qFizY=
31 | dependencies:
32 | "@pixi/constants" "5.3.8"
33 | "@pixi/math" "5.3.8"
34 | "@pixi/runner" "5.3.8"
35 | "@pixi/settings" "5.3.8"
36 | "@pixi/ticker" "5.3.8"
37 | "@pixi/utils" "5.3.8"
38 |
39 | "@pixi/display@5.3.8":
40 | version "5.3.8"
41 | resolved "https://registry.npm.taobao.org/@pixi/display/download/@pixi/display-5.3.8.tgz#4a351f834af249a02928a9fbee61b31edb9c977c"
42 | integrity sha1-SjUfg0rySaApKKn77mGzHtucl3w=
43 | dependencies:
44 | "@pixi/math" "5.3.8"
45 | "@pixi/settings" "5.3.8"
46 | "@pixi/utils" "5.3.8"
47 |
48 | "@pixi/extract@5.3.8":
49 | version "5.3.8"
50 | resolved "https://registry.npm.taobao.org/@pixi/extract/download/@pixi/extract-5.3.8.tgz#851a8b346993b920f46a9b3c67611464e7aa7d28"
51 | integrity sha1-hRqLNGmTuSD0aps8Z2EUZOeqfSg=
52 | dependencies:
53 | "@pixi/core" "5.3.8"
54 | "@pixi/math" "5.3.8"
55 | "@pixi/utils" "5.3.8"
56 |
57 | "@pixi/filter-alpha@5.3.8":
58 | version "5.3.8"
59 | resolved "https://registry.npm.taobao.org/@pixi/filter-alpha/download/@pixi/filter-alpha-5.3.8.tgz#2a2d878071833e8e781af4cf136bbce822ba2a57"
60 | integrity sha1-Ki2HgHGDPo54GvTPE2u86CK6Klc=
61 | dependencies:
62 | "@pixi/core" "5.3.8"
63 |
64 | "@pixi/filter-blur@5.3.8":
65 | version "5.3.8"
66 | resolved "https://registry.npm.taobao.org/@pixi/filter-blur/download/@pixi/filter-blur-5.3.8.tgz#1a1c573f98f6d8e1d3cde5ef980f296a7a052e23"
67 | integrity sha1-GhxXP5j22OHTzeXvmA8panoFLiM=
68 | dependencies:
69 | "@pixi/core" "5.3.8"
70 | "@pixi/settings" "5.3.8"
71 |
72 | "@pixi/filter-color-matrix@5.3.8":
73 | version "5.3.8"
74 | resolved "https://registry.npm.taobao.org/@pixi/filter-color-matrix/download/@pixi/filter-color-matrix-5.3.8.tgz#24d254587159cf4cb46386df4c89bb9d0686163c"
75 | integrity sha1-JNJUWHFZz0y0Y4bfTIm7nQaGFjw=
76 | dependencies:
77 | "@pixi/core" "5.3.8"
78 |
79 | "@pixi/filter-displacement@5.3.8":
80 | version "5.3.8"
81 | resolved "https://registry.npm.taobao.org/@pixi/filter-displacement/download/@pixi/filter-displacement-5.3.8.tgz#d184ab5a637382b4473462e2f4a21d8ef9f67861"
82 | integrity sha1-0YSrWmNzgrRHNGLi9KIdjvn2eGE=
83 | dependencies:
84 | "@pixi/core" "5.3.8"
85 | "@pixi/math" "5.3.8"
86 |
87 | "@pixi/filter-fxaa@5.3.8":
88 | version "5.3.8"
89 | resolved "https://registry.npm.taobao.org/@pixi/filter-fxaa/download/@pixi/filter-fxaa-5.3.8.tgz#dbf954b9cb999aa60ecfe254062a178afd1fbd79"
90 | integrity sha1-2/lUucuZmqYOz+JUBioXiv0fvXk=
91 | dependencies:
92 | "@pixi/core" "5.3.8"
93 |
94 | "@pixi/filter-noise@5.3.8":
95 | version "5.3.8"
96 | resolved "https://registry.npm.taobao.org/@pixi/filter-noise/download/@pixi/filter-noise-5.3.8.tgz#1a927ba9ba3ce73434a939543571579d82e3c569"
97 | integrity sha1-GpJ7qbo85zQ0qTlUNXFXnYLjxWk=
98 | dependencies:
99 | "@pixi/core" "5.3.8"
100 |
101 | "@pixi/graphics@5.3.8":
102 | version "5.3.8"
103 | resolved "https://registry.npm.taobao.org/@pixi/graphics/download/@pixi/graphics-5.3.8.tgz#7cf8b6f9fc7c5b503dc0dec2f6650803a8f89ded"
104 | integrity sha1-fPi2+fx8W1A9wN7C9mUIA6j4ne0=
105 | dependencies:
106 | "@pixi/constants" "5.3.8"
107 | "@pixi/core" "5.3.8"
108 | "@pixi/display" "5.3.8"
109 | "@pixi/math" "5.3.8"
110 | "@pixi/sprite" "5.3.8"
111 | "@pixi/utils" "5.3.8"
112 |
113 | "@pixi/interaction@5.3.8":
114 | version "5.3.8"
115 | resolved "https://registry.npm.taobao.org/@pixi/interaction/download/@pixi/interaction-5.3.8.tgz#12fd73162326fbb4fbc35ad76a2cb343981846cb"
116 | integrity sha1-Ev1zFiMm+7T7w1rXaiyzQ5gYRss=
117 | dependencies:
118 | "@pixi/core" "5.3.8"
119 | "@pixi/display" "5.3.8"
120 | "@pixi/math" "5.3.8"
121 | "@pixi/ticker" "5.3.8"
122 | "@pixi/utils" "5.3.8"
123 |
124 | "@pixi/loaders@5.3.8":
125 | version "5.3.8"
126 | resolved "https://registry.npm.taobao.org/@pixi/loaders/download/@pixi/loaders-5.3.8.tgz#78a53a137972dc78d66891f602fd2e80bdddc93a"
127 | integrity sha1-eKU6E3ly3HjWaJH2Av0ugL3dyTo=
128 | dependencies:
129 | "@pixi/core" "5.3.8"
130 | "@pixi/utils" "5.3.8"
131 | resource-loader "^3.0.1"
132 |
133 | "@pixi/math@5.3.8":
134 | version "5.3.8"
135 | resolved "https://registry.npm.taobao.org/@pixi/math/download/@pixi/math-5.3.8.tgz#fe9081709806e20ee778e04cf4f5e281062d9f74"
136 | integrity sha1-/pCBcJgG4g7neOBM9PXigQYtn3Q=
137 |
138 | "@pixi/mesh-extras@5.3.8":
139 | version "5.3.8"
140 | resolved "https://registry.npm.taobao.org/@pixi/mesh-extras/download/@pixi/mesh-extras-5.3.8.tgz#d040044aab1951cebfc67bc7b94caf62b8de6405"
141 | integrity sha1-0EAESqsZUc6/xnvHuUyvYrjeZAU=
142 | dependencies:
143 | "@pixi/constants" "5.3.8"
144 | "@pixi/core" "5.3.8"
145 | "@pixi/math" "5.3.8"
146 | "@pixi/mesh" "5.3.8"
147 | "@pixi/utils" "5.3.8"
148 |
149 | "@pixi/mesh@5.3.8":
150 | version "5.3.8"
151 | resolved "https://registry.npm.taobao.org/@pixi/mesh/download/@pixi/mesh-5.3.8.tgz#e5a6ef1f0beadd948c143de4370c6fd5bd5e2430"
152 | integrity sha1-5abvHwvq3ZSMFD3kNwxv1b1eJDA=
153 | dependencies:
154 | "@pixi/constants" "5.3.8"
155 | "@pixi/core" "5.3.8"
156 | "@pixi/display" "5.3.8"
157 | "@pixi/math" "5.3.8"
158 | "@pixi/settings" "5.3.8"
159 | "@pixi/utils" "5.3.8"
160 |
161 | "@pixi/mixin-cache-as-bitmap@5.3.8":
162 | version "5.3.8"
163 | resolved "https://registry.npm.taobao.org/@pixi/mixin-cache-as-bitmap/download/@pixi/mixin-cache-as-bitmap-5.3.8.tgz#f614e4007f2ab1ad557b0e1949280118cca245a9"
164 | integrity sha1-9hTkAH8qsa1Vew4ZSSgBGMyiRak=
165 | dependencies:
166 | "@pixi/core" "5.3.8"
167 | "@pixi/display" "5.3.8"
168 | "@pixi/math" "5.3.8"
169 | "@pixi/settings" "5.3.8"
170 | "@pixi/sprite" "5.3.8"
171 | "@pixi/utils" "5.3.8"
172 |
173 | "@pixi/mixin-get-child-by-name@5.3.8":
174 | version "5.3.8"
175 | resolved "https://registry.npm.taobao.org/@pixi/mixin-get-child-by-name/download/@pixi/mixin-get-child-by-name-5.3.8.tgz#f487942d2ab8a64f7a4b5adce2a6e390970a4f75"
176 | integrity sha1-9IeULSq4pk96S1rc4qbjkJcKT3U=
177 | dependencies:
178 | "@pixi/display" "5.3.8"
179 |
180 | "@pixi/mixin-get-global-position@5.3.8":
181 | version "5.3.8"
182 | resolved "https://registry.npm.taobao.org/@pixi/mixin-get-global-position/download/@pixi/mixin-get-global-position-5.3.8.tgz#ac927fcec19913b48c2aee2db53d185e4b572a64"
183 | integrity sha1-rJJ/zsGZE7SMKu4ttT0YXktXKmQ=
184 | dependencies:
185 | "@pixi/display" "5.3.8"
186 | "@pixi/math" "5.3.8"
187 |
188 | "@pixi/particles@5.3.8":
189 | version "5.3.8"
190 | resolved "https://registry.npm.taobao.org/@pixi/particles/download/@pixi/particles-5.3.8.tgz#6ca5f9c8ea58be91fdddfd76ef1a6e37ea3add72"
191 | integrity sha1-bKX5yOpYvpH93f127xpuN+o63XI=
192 | dependencies:
193 | "@pixi/constants" "5.3.8"
194 | "@pixi/core" "5.3.8"
195 | "@pixi/display" "5.3.8"
196 | "@pixi/math" "5.3.8"
197 | "@pixi/utils" "5.3.8"
198 |
199 | "@pixi/polyfill@5.3.8":
200 | version "5.3.8"
201 | resolved "https://registry.npm.taobao.org/@pixi/polyfill/download/@pixi/polyfill-5.3.8.tgz#425433c95f91615136e456fe8448b230a3fcc8cc"
202 | integrity sha1-QlQzyV+RYVE25Fb+hEiyMKP8yMw=
203 | dependencies:
204 | es6-promise-polyfill "^1.2.0"
205 | object-assign "^4.1.1"
206 |
207 | "@pixi/prepare@5.3.8":
208 | version "5.3.8"
209 | resolved "https://registry.npm.taobao.org/@pixi/prepare/download/@pixi/prepare-5.3.8.tgz#451183c43611c06adc10afaa28d8e54aa67b19ee"
210 | integrity sha1-RRGDxDYRwGrcEK+qKNjlSqZ7Ge4=
211 | dependencies:
212 | "@pixi/core" "5.3.8"
213 | "@pixi/display" "5.3.8"
214 | "@pixi/graphics" "5.3.8"
215 | "@pixi/settings" "5.3.8"
216 | "@pixi/text" "5.3.8"
217 | "@pixi/ticker" "5.3.8"
218 |
219 | "@pixi/runner@5.3.8":
220 | version "5.3.8"
221 | resolved "https://registry.npm.taobao.org/@pixi/runner/download/@pixi/runner-5.3.8.tgz#6d6d36c2d573f490d7ed68dae9ddcc3063b5be77"
222 | integrity sha1-bW02wtVz9JDX7Wja6d3MMGO1vnc=
223 |
224 | "@pixi/settings@5.3.8":
225 | version "5.3.8"
226 | resolved "https://registry.npm.taobao.org/@pixi/settings/download/@pixi/settings-5.3.8.tgz#58275eae1ced5dc47c76f9cd22e33bbf71f1cd0e"
227 | integrity sha1-WCderhztXcR8dvnNIuM7v3HxzQ4=
228 | dependencies:
229 | ismobilejs "^1.1.0"
230 |
231 | "@pixi/sprite-animated@5.3.8":
232 | version "5.3.8"
233 | resolved "https://registry.npm.taobao.org/@pixi/sprite-animated/download/@pixi/sprite-animated-5.3.8.tgz#e6588f28320d7cb10d97cb186d63ff7e3da55bd3"
234 | integrity sha1-5liPKDINfLENl8sYbWP/fj2lW9M=
235 | dependencies:
236 | "@pixi/core" "5.3.8"
237 | "@pixi/sprite" "5.3.8"
238 | "@pixi/ticker" "5.3.8"
239 |
240 | "@pixi/sprite-tiling@5.3.8":
241 | version "5.3.8"
242 | resolved "https://registry.npm.taobao.org/@pixi/sprite-tiling/download/@pixi/sprite-tiling-5.3.8.tgz#08f35ce57be2c2b8e294a6eb3830cb279b94c243"
243 | integrity sha1-CPNc5XviwrjilKbrODDLJ5uUwkM=
244 | dependencies:
245 | "@pixi/constants" "5.3.8"
246 | "@pixi/core" "5.3.8"
247 | "@pixi/display" "5.3.8"
248 | "@pixi/math" "5.3.8"
249 | "@pixi/sprite" "5.3.8"
250 | "@pixi/utils" "5.3.8"
251 |
252 | "@pixi/sprite@5.3.8":
253 | version "5.3.8"
254 | resolved "https://registry.npm.taobao.org/@pixi/sprite/download/@pixi/sprite-5.3.8.tgz#6cfb06f6c27555d9043b0422f48a641f6794ce24"
255 | integrity sha1-bPsG9sJ1VdkEOwQi9IpkH2eUziQ=
256 | dependencies:
257 | "@pixi/constants" "5.3.8"
258 | "@pixi/core" "5.3.8"
259 | "@pixi/display" "5.3.8"
260 | "@pixi/math" "5.3.8"
261 | "@pixi/settings" "5.3.8"
262 | "@pixi/utils" "5.3.8"
263 |
264 | "@pixi/spritesheet@5.3.8":
265 | version "5.3.8"
266 | resolved "https://registry.npm.taobao.org/@pixi/spritesheet/download/@pixi/spritesheet-5.3.8.tgz#66b22c5342e394a51f844d872191bee6e8c81c9f"
267 | integrity sha1-ZrIsU0LjlKUfhE2HIZG+5ujIHJ8=
268 | dependencies:
269 | "@pixi/core" "5.3.8"
270 | "@pixi/loaders" "5.3.8"
271 | "@pixi/math" "5.3.8"
272 | "@pixi/utils" "5.3.8"
273 |
274 | "@pixi/text-bitmap@5.3.8":
275 | version "5.3.8"
276 | resolved "https://registry.npm.taobao.org/@pixi/text-bitmap/download/@pixi/text-bitmap-5.3.8.tgz#7b991bb28b6879478e9a031ffc15164efd79f0f7"
277 | integrity sha1-e5kbsotoeUeOmgMf/BUWTv158Pc=
278 | dependencies:
279 | "@pixi/core" "5.3.8"
280 | "@pixi/display" "5.3.8"
281 | "@pixi/loaders" "5.3.8"
282 | "@pixi/math" "5.3.8"
283 | "@pixi/mesh" "5.3.8"
284 | "@pixi/settings" "5.3.8"
285 | "@pixi/text" "5.3.8"
286 | "@pixi/utils" "5.3.8"
287 |
288 | "@pixi/text@5.3.8":
289 | version "5.3.8"
290 | resolved "https://registry.npm.taobao.org/@pixi/text/download/@pixi/text-5.3.8.tgz#4cee2526fe25798f4ea4d1f7a6e89485e5ddc588"
291 | integrity sha1-TO4lJv4leY9OpNH3puiUheXdxYg=
292 | dependencies:
293 | "@pixi/core" "5.3.8"
294 | "@pixi/math" "5.3.8"
295 | "@pixi/settings" "5.3.8"
296 | "@pixi/sprite" "5.3.8"
297 | "@pixi/utils" "5.3.8"
298 |
299 | "@pixi/ticker@5.3.8":
300 | version "5.3.8"
301 | resolved "https://registry.npm.taobao.org/@pixi/ticker/download/@pixi/ticker-5.3.8.tgz#dc4be5db117a15c72f9e99076b674e09a9d7ecbd"
302 | integrity sha1-3Evl2xF6FccvnpkHa2dOCanX7L0=
303 | dependencies:
304 | "@pixi/settings" "5.3.8"
305 |
306 | "@pixi/utils@5.3.8":
307 | version "5.3.8"
308 | resolved "https://registry.npm.taobao.org/@pixi/utils/download/@pixi/utils-5.3.8.tgz#ea4d55e59362270b74d9d80d3cd2a3ec9d2da708"
309 | integrity sha1-6k1V5ZNiJwt02dgNPNKj7J0tpwg=
310 | dependencies:
311 | "@pixi/constants" "5.3.8"
312 | "@pixi/settings" "5.3.8"
313 | earcut "^2.1.5"
314 | eventemitter3 "^3.1.0"
315 | url "^0.11.0"
316 |
317 | "@tweenjs/tween.js@^18.6.4":
318 | version "18.6.4"
319 | resolved "https://registry.npm.taobao.org/@tweenjs/tween.js/download/@tweenjs/tween.js-18.6.4.tgz#40a3d0a93647124872dec8e0fd1bd5926695b6ca"
320 | integrity sha1-QKPQqTZHEkhy3sjg/RvVkmaVtso=
321 |
322 | colorette@^1.2.2:
323 | version "1.2.2"
324 | resolved "https://registry.npm.taobao.org/colorette/download/colorette-1.2.2.tgz?cache=0&sync_timestamp=1614259647923&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcolorette%2Fdownload%2Fcolorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
325 | integrity sha1-y8x51emcrqLb8Q6zom/Ys+as+pQ=
326 |
327 | earcut@^2.1.5:
328 | version "2.2.2"
329 | resolved "https://registry.npm.taobao.org/earcut/download/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11"
330 | integrity sha1-QbC8NfY+D+gNp83f8oUR5+LoDRE=
331 |
332 | es6-promise-polyfill@^1.2.0:
333 | version "1.2.0"
334 | resolved "https://registry.npm.taobao.org/es6-promise-polyfill/download/es6-promise-polyfill-1.2.0.tgz#f38925f23cb3e3e8ce6cda8ff774fcebbb090cde"
335 | integrity sha1-84kl8jyz4+jObNqP93T867sJDN4=
336 |
337 | esbuild@^0.8.52:
338 | version "0.8.57"
339 | resolved "https://registry.npm.taobao.org/esbuild/download/esbuild-0.8.57.tgz?cache=0&sync_timestamp=1615271952928&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fesbuild%2Fdownload%2Fesbuild-0.8.57.tgz#a42d02bc2b57c70bcd0ef897fe244766bb6dd926"
340 | integrity sha1-pC0CvCtXxwvNDviX/iRHZrtt2SY=
341 |
342 | eventemitter3@^3.1.0:
343 | version "3.1.2"
344 | resolved "https://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
345 | integrity sha1-LT1I+cNGaY/Og6hdfWZOmFNd9uc=
346 |
347 | fsevents@~2.3.1:
348 | version "2.3.2"
349 | resolved "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.2.tgz?cache=0&sync_timestamp=1612537044236&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
350 | integrity sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=
351 |
352 | function-bind@^1.1.1:
353 | version "1.1.1"
354 | resolved "https://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
355 | integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=
356 |
357 | has@^1.0.3:
358 | version "1.0.3"
359 | resolved "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
360 | integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=
361 | dependencies:
362 | function-bind "^1.1.1"
363 |
364 | is-core-module@^2.2.0:
365 | version "2.2.0"
366 | resolved "https://registry.npm.taobao.org/is-core-module/download/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
367 | integrity sha1-lwN+89UiJNhRY/VZeytj2a/tmBo=
368 | dependencies:
369 | has "^1.0.3"
370 |
371 | ismobilejs@^1.1.0:
372 | version "1.1.1"
373 | resolved "https://registry.npm.taobao.org/ismobilejs/download/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e"
374 | integrity sha1-xWygro5Sskyg8iul7zIVot27qg4=
375 |
376 | mini-signals@^1.2.0:
377 | version "1.2.0"
378 | resolved "https://registry.npm.taobao.org/mini-signals/download/mini-signals-1.2.0.tgz#45b08013c5fae51a24aa1a935cd317c9ed721d74"
379 | integrity sha1-RbCAE8X65RokqhqTXNMXye1yHXQ=
380 |
381 | nanoid@^3.1.20:
382 | version "3.1.20"
383 | resolved "https://registry.npm.taobao.org/nanoid/download/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788"
384 | integrity sha1-utwmPGsdzxS3HvqoX2q0wdbPx4g=
385 |
386 | object-assign@^4.1.1:
387 | version "4.1.1"
388 | resolved "https://registry.npm.taobao.org/object-assign/download/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
389 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
390 |
391 | parse-uri@^1.0.0:
392 | version "1.0.3"
393 | resolved "https://registry.npm.taobao.org/parse-uri/download/parse-uri-1.0.3.tgz#f3c24a74907a4e357c1741e96ca9faadecfd6db5"
394 | integrity sha1-88JKdJB6TjV8F0HpbKn6rez9bbU=
395 |
396 | path-parse@^1.0.6:
397 | version "1.0.6"
398 | resolved "https://registry.npm.taobao.org/path-parse/download/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
399 | integrity sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=
400 |
401 | pixi.js@^5.3.8:
402 | version "5.3.8"
403 | resolved "https://registry.npm.taobao.org/pixi.js/download/pixi.js-5.3.8.tgz#f6389f128be61ca81067a8ecf165dc94861957de"
404 | integrity sha1-9jifEovmHKgQZ6js8WXclIYZV94=
405 | dependencies:
406 | "@pixi/accessibility" "5.3.8"
407 | "@pixi/app" "5.3.8"
408 | "@pixi/constants" "5.3.8"
409 | "@pixi/core" "5.3.8"
410 | "@pixi/display" "5.3.8"
411 | "@pixi/extract" "5.3.8"
412 | "@pixi/filter-alpha" "5.3.8"
413 | "@pixi/filter-blur" "5.3.8"
414 | "@pixi/filter-color-matrix" "5.3.8"
415 | "@pixi/filter-displacement" "5.3.8"
416 | "@pixi/filter-fxaa" "5.3.8"
417 | "@pixi/filter-noise" "5.3.8"
418 | "@pixi/graphics" "5.3.8"
419 | "@pixi/interaction" "5.3.8"
420 | "@pixi/loaders" "5.3.8"
421 | "@pixi/math" "5.3.8"
422 | "@pixi/mesh" "5.3.8"
423 | "@pixi/mesh-extras" "5.3.8"
424 | "@pixi/mixin-cache-as-bitmap" "5.3.8"
425 | "@pixi/mixin-get-child-by-name" "5.3.8"
426 | "@pixi/mixin-get-global-position" "5.3.8"
427 | "@pixi/particles" "5.3.8"
428 | "@pixi/polyfill" "5.3.8"
429 | "@pixi/prepare" "5.3.8"
430 | "@pixi/runner" "5.3.8"
431 | "@pixi/settings" "5.3.8"
432 | "@pixi/sprite" "5.3.8"
433 | "@pixi/sprite-animated" "5.3.8"
434 | "@pixi/sprite-tiling" "5.3.8"
435 | "@pixi/spritesheet" "5.3.8"
436 | "@pixi/text" "5.3.8"
437 | "@pixi/text-bitmap" "5.3.8"
438 | "@pixi/ticker" "5.3.8"
439 | "@pixi/utils" "5.3.8"
440 |
441 | postcss@^8.2.1:
442 | version "8.2.7"
443 | resolved "https://registry.npm.taobao.org/postcss/download/postcss-8.2.7.tgz#48ed8d88b4de10afa0dfd1c3f840aa57b55c4d47"
444 | integrity sha1-SO2NiLTeEK+g39HD+ECqV7VcTUc=
445 | dependencies:
446 | colorette "^1.2.2"
447 | nanoid "^3.1.20"
448 | source-map "^0.6.1"
449 |
450 | punycode@1.3.2:
451 | version "1.3.2"
452 | resolved "https://registry.npm.taobao.org/punycode/download/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
453 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
454 |
455 | querystring@0.2.0:
456 | version "0.2.0"
457 | resolved "https://registry.npm.taobao.org/querystring/download/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
458 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
459 |
460 | resolve@^1.19.0:
461 | version "1.20.0"
462 | resolved "https://registry.npm.taobao.org/resolve/download/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
463 | integrity sha1-YpoBP7P3B1XW8LeTXMHCxTeLGXU=
464 | dependencies:
465 | is-core-module "^2.2.0"
466 | path-parse "^1.0.6"
467 |
468 | resource-loader@^3.0.1:
469 | version "3.0.1"
470 | resolved "https://registry.npm.taobao.org/resource-loader/download/resource-loader-3.0.1.tgz#33355bb5421e2994f59454bbc7f6dbff8df06d47"
471 | integrity sha1-MzVbtUIeKZT1lFS7x/bb/43wbUc=
472 | dependencies:
473 | mini-signals "^1.2.0"
474 | parse-uri "^1.0.0"
475 |
476 | rollup@^2.38.5:
477 | version "2.41.0"
478 | resolved "https://registry.npm.taobao.org/rollup/download/rollup-2.41.0.tgz?cache=0&sync_timestamp=1615271062102&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Frollup%2Fdownload%2Frollup-2.41.0.tgz#b2a398bbabbf227738dedaef099e494aed468982"
479 | integrity sha1-sqOYu6u/Inc43trvCZ5JSu1GiYI=
480 | optionalDependencies:
481 | fsevents "~2.3.1"
482 |
483 | source-map@^0.6.1:
484 | version "0.6.1"
485 | resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
486 | integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
487 |
488 | url@^0.11.0:
489 | version "0.11.0"
490 | resolved "https://registry.npm.taobao.org/url/download/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
491 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
492 | dependencies:
493 | punycode "1.3.2"
494 | querystring "0.2.0"
495 |
496 | vite@^2.0.5:
497 | version "2.0.5"
498 | resolved "https://registry.npm.taobao.org/vite/download/vite-2.0.5.tgz#ac46857a3fa8686d077921e61bd48a986931df1d"
499 | integrity sha1-rEaFej+oaG0HeSHmG9SKmGkx3x0=
500 | dependencies:
501 | esbuild "^0.8.52"
502 | postcss "^8.2.1"
503 | resolve "^1.19.0"
504 | rollup "^2.38.5"
505 | optionalDependencies:
506 | fsevents "~2.3.1"
507 |
--------------------------------------------------------------------------------
/dream-swims/yarn.lock:
--------------------------------------------------------------------------------
1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
2 | # yarn lockfile v1
3 |
4 |
5 | "@pixi/accessibility@5.3.9":
6 | version "5.3.9"
7 | resolved "https://registry.yarnpkg.com/@pixi/accessibility/-/accessibility-5.3.9.tgz#c091ce48f5ab46a3026f46bc86cf8c09329a611e"
8 | integrity sha512-Y0+gjfq1ZJl4O6hC6O9KMCLvjAwSy3p9motZvfYs2x2QNLPI9IAafjn2qnM2Cp/Q86ySvqD6DCvLJZ/ni9tyVQ==
9 | dependencies:
10 | "@pixi/core" "5.3.9"
11 | "@pixi/display" "5.3.9"
12 | "@pixi/utils" "5.3.9"
13 |
14 | "@pixi/app@5.3.9":
15 | version "5.3.9"
16 | resolved "https://registry.yarnpkg.com/@pixi/app/-/app-5.3.9.tgz#d21e9e0cc17671ca383652a7634671f40ffdd550"
17 | integrity sha512-5SDMFjCqX0TCMgjuDxLRNpphpIUC3mtTatw06PGf9OUgxMuRwy/PqamYArFosIhnoU4R9ubeo4dE1tQaeYniQw==
18 | dependencies:
19 | "@pixi/core" "5.3.9"
20 | "@pixi/display" "5.3.9"
21 |
22 | "@pixi/constants@5.3.9":
23 | version "5.3.9"
24 | resolved "https://registry.yarnpkg.com/@pixi/constants/-/constants-5.3.9.tgz#587bed7f110975b0b0ac628e6b4411aa582f7e00"
25 | integrity sha512-ItYz91qkQdklsjVMHFBPjxE2qiuhv8M8A1c+j3oSBIvRR2/usjwJ24ppYe9TeISa/ONmM24EIW9u9X8WZ0fF8g==
26 |
27 | "@pixi/core@5.3.9":
28 | version "5.3.9"
29 | resolved "https://registry.yarnpkg.com/@pixi/core/-/core-5.3.9.tgz#d7c615699b2cc383ed842d9350a291a13bc70b10"
30 | integrity sha512-a2W/tqbMGeaNgkcZ2F4930W6OSFwZcOza/z0U9/Pw1JQRgzpJw1ZjZWM+XP0zI0BYcAI+jQUqleBxg5lp3L9HQ==
31 | dependencies:
32 | "@pixi/constants" "5.3.9"
33 | "@pixi/math" "5.3.9"
34 | "@pixi/runner" "5.3.9"
35 | "@pixi/settings" "5.3.9"
36 | "@pixi/ticker" "5.3.9"
37 | "@pixi/utils" "5.3.9"
38 |
39 | "@pixi/display@5.3.9":
40 | version "5.3.9"
41 | resolved "https://registry.yarnpkg.com/@pixi/display/-/display-5.3.9.tgz#c6799c148cef516f7218f1463f1ceac8ee00e28d"
42 | integrity sha512-5oNJjZp2if+cm1Wc19OjnO5yDmJozg0ctcxonT7YV2zMkfYc3M1C8svgpkKq5zJILjwSKio2lYbTa/6pGSgtBA==
43 | dependencies:
44 | "@pixi/math" "5.3.9"
45 | "@pixi/settings" "5.3.9"
46 | "@pixi/utils" "5.3.9"
47 |
48 | "@pixi/extract@5.3.9":
49 | version "5.3.9"
50 | resolved "https://registry.yarnpkg.com/@pixi/extract/-/extract-5.3.9.tgz#64304bf924311d1ec130ddf421aa1f4ac5f7b144"
51 | integrity sha512-h74fAPyiRgZudysbd1Jss3uKtl89wprRxRVbTQHWzSeu382qBGPXONHmT7RIQRk4hRMAASxeWltibVtKMphelQ==
52 | dependencies:
53 | "@pixi/core" "5.3.9"
54 | "@pixi/math" "5.3.9"
55 | "@pixi/utils" "5.3.9"
56 |
57 | "@pixi/filter-alpha@5.3.9":
58 | version "5.3.9"
59 | resolved "https://registry.yarnpkg.com/@pixi/filter-alpha/-/filter-alpha-5.3.9.tgz#409e322f4466ddfd0ce364511f33be3b0437d45f"
60 | integrity sha512-qfPJeKViLl/55dGzqX7qzTXy7XLIURw8kOdr89BssoQnGLosI7gEcKXMk2ib+tKk2KYzlGCScmcx1TU+sC++xQ==
61 | dependencies:
62 | "@pixi/core" "5.3.9"
63 |
64 | "@pixi/filter-blur@5.3.9":
65 | version "5.3.9"
66 | resolved "https://registry.yarnpkg.com/@pixi/filter-blur/-/filter-blur-5.3.9.tgz#99bba22b57d36bc2f2f75e7f46fddfd0956405d6"
67 | integrity sha512-Xr5/irGK70oF4Xw3wabeKecq9oFTZDJ/oKPKotFgG+Dxiy2DmBh+oHpOsteCJ18QLHvKLrr0AJt6AkpoNFcKnQ==
68 | dependencies:
69 | "@pixi/core" "5.3.9"
70 | "@pixi/settings" "5.3.9"
71 |
72 | "@pixi/filter-color-matrix@5.3.9":
73 | version "5.3.9"
74 | resolved "https://registry.yarnpkg.com/@pixi/filter-color-matrix/-/filter-color-matrix-5.3.9.tgz#26914ce45cfebc98067435fd42755f4454a28877"
75 | integrity sha512-02Bj4TPhLl5PneZh9eaAhJgWjKv4HfR/4+gJxzp4/Es61aW/fz+38DD5JywmXNDV39RnUhLpvnMrbqYzdHXZIw==
76 | dependencies:
77 | "@pixi/core" "5.3.9"
78 |
79 | "@pixi/filter-displacement@5.3.9":
80 | version "5.3.9"
81 | resolved "https://registry.yarnpkg.com/@pixi/filter-displacement/-/filter-displacement-5.3.9.tgz#1bd2c7ef006207664de5f644bffcc71a10d58716"
82 | integrity sha512-VWwk1jyrS2VMprzknaqA9PqNda7TS2qp3tAVt97qadM5sRE0LzkhYvd+w4/b2TzvrHcu+0q5odmKuFuiSSE51Q==
83 | dependencies:
84 | "@pixi/core" "5.3.9"
85 | "@pixi/math" "5.3.9"
86 |
87 | "@pixi/filter-fxaa@5.3.9":
88 | version "5.3.9"
89 | resolved "https://registry.yarnpkg.com/@pixi/filter-fxaa/-/filter-fxaa-5.3.9.tgz#fe63023c9f0bd63bed32ad91f54976437b5002f1"
90 | integrity sha512-fuOADEHVn9XVyo8o88TiPgHRQ7P3NpGkQmS95mFW9SIP//QuQ8ikj3yYuBKtNM6TsCsJe7/bTv4i7uX8l00kVQ==
91 | dependencies:
92 | "@pixi/core" "5.3.9"
93 |
94 | "@pixi/filter-noise@5.3.9":
95 | version "5.3.9"
96 | resolved "https://registry.yarnpkg.com/@pixi/filter-noise/-/filter-noise-5.3.9.tgz#7f670fa2a838358078fda9e0b9eca58c44071321"
97 | integrity sha512-FtVbg49p0DLoaW2ua4no8ACgBJkip5yVYDqBkuZIPUP6PrXssCSjpU0w060TtcL6qQI9GpUqOBxffN3Qhn+VHg==
98 | dependencies:
99 | "@pixi/core" "5.3.9"
100 |
101 | "@pixi/graphics@5.3.9":
102 | version "5.3.9"
103 | resolved "https://registry.yarnpkg.com/@pixi/graphics/-/graphics-5.3.9.tgz#bf9a8e447aa58b75326291a961e593dce4852d87"
104 | integrity sha512-JWzMabJI4iy3Wynv26VcgMvTN/QH6w2qoYS2WQZlA9YYPLrdIpRoArHUlSU4bAoc9AqrTuOI6Xd6xHZspLH36A==
105 | dependencies:
106 | "@pixi/constants" "5.3.9"
107 | "@pixi/core" "5.3.9"
108 | "@pixi/display" "5.3.9"
109 | "@pixi/math" "5.3.9"
110 | "@pixi/sprite" "5.3.9"
111 | "@pixi/utils" "5.3.9"
112 |
113 | "@pixi/interaction@5.3.9":
114 | version "5.3.9"
115 | resolved "https://registry.yarnpkg.com/@pixi/interaction/-/interaction-5.3.9.tgz#b748d6e0b8517c50854a0aeea90ffa5b788173fe"
116 | integrity sha512-sDxS6/MXY3zhIJKbKCwHMhO7+2hbXGydIkZtn6LtpKN2X19z69M/C9Ka+5ckPfbmrKf25ohjvcGS8xWqf0sNOw==
117 | dependencies:
118 | "@pixi/core" "5.3.9"
119 | "@pixi/display" "5.3.9"
120 | "@pixi/math" "5.3.9"
121 | "@pixi/ticker" "5.3.9"
122 | "@pixi/utils" "5.3.9"
123 |
124 | "@pixi/loaders@5.3.9":
125 | version "5.3.9"
126 | resolved "https://registry.yarnpkg.com/@pixi/loaders/-/loaders-5.3.9.tgz#848cad2e545f42bce3f9e841b550f32863b4946e"
127 | integrity sha512-qepjJ/aup+A5do26yj13Ma3z8kKp+HhkQL2F4uPeIm019DytO8vfKntjmNzU7obw2FMKbn1PRUmX8METLC6DOA==
128 | dependencies:
129 | "@pixi/core" "5.3.9"
130 | "@pixi/utils" "5.3.9"
131 | resource-loader "^3.0.1"
132 |
133 | "@pixi/math@5.3.9":
134 | version "5.3.9"
135 | resolved "https://registry.yarnpkg.com/@pixi/math/-/math-5.3.9.tgz#6a7debdaecb82f54e05d2aa2c47057757009be54"
136 | integrity sha512-Ka5ypD22Te+DEx2572Zsct7mYnbl0em+lzvJBdbQnddCfvW9JBILAwULFa4Z8KxeeLT2PMCgp1wxwG1yQaiS6A==
137 |
138 | "@pixi/mesh-extras@5.3.9":
139 | version "5.3.9"
140 | resolved "https://registry.yarnpkg.com/@pixi/mesh-extras/-/mesh-extras-5.3.9.tgz#c2219fee9c963b9291af57331bf83e2bc3f07991"
141 | integrity sha512-Xl7rXSjS048r8x1ZJ0s0DmKARqUhUPLp0VVhZho38IZKRFyEj1dkiOFYkamovxrVYdmZ12GvhdS74NSKiX1wEA==
142 | dependencies:
143 | "@pixi/constants" "5.3.9"
144 | "@pixi/core" "5.3.9"
145 | "@pixi/math" "5.3.9"
146 | "@pixi/mesh" "5.3.9"
147 | "@pixi/utils" "5.3.9"
148 |
149 | "@pixi/mesh@5.3.9":
150 | version "5.3.9"
151 | resolved "https://registry.yarnpkg.com/@pixi/mesh/-/mesh-5.3.9.tgz#1c01af2b073b7e96ccce2ff809e495accd4e54cd"
152 | integrity sha512-fyKlk1AKJHwQ/0u+4+4nxScstreH05yHmCyDVM2fc1e9VbJy2Z7ZOueZCgguRfJrDvMqMqtkfKTWTzDvcADsYQ==
153 | dependencies:
154 | "@pixi/constants" "5.3.9"
155 | "@pixi/core" "5.3.9"
156 | "@pixi/display" "5.3.9"
157 | "@pixi/math" "5.3.9"
158 | "@pixi/settings" "5.3.9"
159 | "@pixi/utils" "5.3.9"
160 |
161 | "@pixi/mixin-cache-as-bitmap@5.3.9":
162 | version "5.3.9"
163 | resolved "https://registry.yarnpkg.com/@pixi/mixin-cache-as-bitmap/-/mixin-cache-as-bitmap-5.3.9.tgz#a69fc20cb05eab0d4c09620195a652ccf4a13ffe"
164 | integrity sha512-udmyHkc8FIRlHzAg29kmvSFlbkO7Q9B3G3Oxiw5g/c8L2HE45iXpasor7o0gSAz90+gwWxieBK60uDKr4vX8sQ==
165 | dependencies:
166 | "@pixi/core" "5.3.9"
167 | "@pixi/display" "5.3.9"
168 | "@pixi/math" "5.3.9"
169 | "@pixi/settings" "5.3.9"
170 | "@pixi/sprite" "5.3.9"
171 | "@pixi/utils" "5.3.9"
172 |
173 | "@pixi/mixin-get-child-by-name@5.3.9":
174 | version "5.3.9"
175 | resolved "https://registry.yarnpkg.com/@pixi/mixin-get-child-by-name/-/mixin-get-child-by-name-5.3.9.tgz#a5feb5022f9691b9c9a5221da512202c215bf77f"
176 | integrity sha512-rGjPrKSdr84iHMxQp26ZHYEc1BStLsNsxyQLcKCxOGZzzzP7g2X8Wwsw66Ie51U/ue4OpcxcUoGOlh88hVJtNw==
177 | dependencies:
178 | "@pixi/display" "5.3.9"
179 |
180 | "@pixi/mixin-get-global-position@5.3.9":
181 | version "5.3.9"
182 | resolved "https://registry.yarnpkg.com/@pixi/mixin-get-global-position/-/mixin-get-global-position-5.3.9.tgz#a8c3763ba7c5da119d2c66ab9f6ed6dbb426a1e0"
183 | integrity sha512-HPhb7gI3XnO8bJonqXYt/dEesh7TD6EkLHzKq8d7GdrB+JebfK4RMwgbL6vliVQianmTzl2J/1NgZ96fKg8HAw==
184 | dependencies:
185 | "@pixi/display" "5.3.9"
186 | "@pixi/math" "5.3.9"
187 |
188 | "@pixi/particles@5.3.9":
189 | version "5.3.9"
190 | resolved "https://registry.yarnpkg.com/@pixi/particles/-/particles-5.3.9.tgz#9eacf15a7803d039474d889844a3f252213bdaca"
191 | integrity sha512-NAB3to0Om5LicwUpMeMsjxaXZYXi9mdTOgucXirf7I+RKPEp8wZg9g10esXjFjCryQYSlr2YPTpfANiK2pzdJw==
192 | dependencies:
193 | "@pixi/constants" "5.3.9"
194 | "@pixi/core" "5.3.9"
195 | "@pixi/display" "5.3.9"
196 | "@pixi/math" "5.3.9"
197 | "@pixi/utils" "5.3.9"
198 |
199 | "@pixi/polyfill@5.3.9":
200 | version "5.3.9"
201 | resolved "https://registry.yarnpkg.com/@pixi/polyfill/-/polyfill-5.3.9.tgz#f9ca05a2239c5886587f97b8bf4b2fa2b340e630"
202 | integrity sha512-y5DLSWtIMafET1o4C1xfNyXvZGC5HZLqRoQ7ypmvjcn7owk2C+61KPV0rrH5kyK5ncWaI6utnoVyvivo/Shp8A==
203 | dependencies:
204 | es6-promise-polyfill "^1.2.0"
205 | object-assign "^4.1.1"
206 |
207 | "@pixi/prepare@5.3.9":
208 | version "5.3.9"
209 | resolved "https://registry.yarnpkg.com/@pixi/prepare/-/prepare-5.3.9.tgz#083cd7c89ee404457cefebac58f72bab359c0c1c"
210 | integrity sha512-ykb5YI06rYPQm5ZC8ymmVprjyno4WskRdr8DRuq/z8008ZqL1+YN0Yw/8v0aXpOdh43uPYUPHvHj77tLuV8BRQ==
211 | dependencies:
212 | "@pixi/core" "5.3.9"
213 | "@pixi/display" "5.3.9"
214 | "@pixi/graphics" "5.3.9"
215 | "@pixi/settings" "5.3.9"
216 | "@pixi/text" "5.3.9"
217 | "@pixi/ticker" "5.3.9"
218 |
219 | "@pixi/runner@5.3.9":
220 | version "5.3.9"
221 | resolved "https://registry.yarnpkg.com/@pixi/runner/-/runner-5.3.9.tgz#f0f5702c2df30f4934dffccd9ed4c615172acca7"
222 | integrity sha512-AN36mZivER12D1wmjoAf7scjK1JLO/uA9PyzfAResccafkev4W/PtjAYODSYUbNf3SnxvQMlpdVK7NHSwnxifQ==
223 |
224 | "@pixi/settings@5.3.9":
225 | version "5.3.9"
226 | resolved "https://registry.yarnpkg.com/@pixi/settings/-/settings-5.3.9.tgz#3d4b8c65e7a6d08941209bc7ee1311d120c0a149"
227 | integrity sha512-4moUuiDOibv/Fm2QVUg2TUL/6ZmYEi6OSifV4OlzMkaoyEtpc//4YC6nm+a0zDoQ2SxCWn9ADUexkNGsKNwi6Q==
228 | dependencies:
229 | ismobilejs "^1.1.0"
230 |
231 | "@pixi/sprite-animated@5.3.9":
232 | version "5.3.9"
233 | resolved "https://registry.yarnpkg.com/@pixi/sprite-animated/-/sprite-animated-5.3.9.tgz#c677a15aae9c9510abbaf48d5b921cb327817742"
234 | integrity sha512-8s4Y8eHMbzwDX62LuvW0E8TV5mNnLcrqYGXxh5AkY5pp2b33ob9LD6ajs9vfVAaAXLwCjNCWy6N8K7jB07NzhQ==
235 | dependencies:
236 | "@pixi/core" "5.3.9"
237 | "@pixi/sprite" "5.3.9"
238 | "@pixi/ticker" "5.3.9"
239 |
240 | "@pixi/sprite-tiling@5.3.9":
241 | version "5.3.9"
242 | resolved "https://registry.yarnpkg.com/@pixi/sprite-tiling/-/sprite-tiling-5.3.9.tgz#5166435001c7bbf4d03cbf9e4d24fdb598f72649"
243 | integrity sha512-3KgsYJcdR4VCHNa9vdsbrJOpAFg9ggNvGhHfU2zrZqv54b2NK1ieBLgFLXsefB2/1SYpgWjQUQ9wWzoc8Z5NXQ==
244 | dependencies:
245 | "@pixi/constants" "5.3.9"
246 | "@pixi/core" "5.3.9"
247 | "@pixi/display" "5.3.9"
248 | "@pixi/math" "5.3.9"
249 | "@pixi/sprite" "5.3.9"
250 | "@pixi/utils" "5.3.9"
251 |
252 | "@pixi/sprite@5.3.9":
253 | version "5.3.9"
254 | resolved "https://registry.yarnpkg.com/@pixi/sprite/-/sprite-5.3.9.tgz#46cc41c64129a03bdbc4c95a4a9b0725ddf8acdc"
255 | integrity sha512-NCBl53D3OGuXyBzsDY5j4tzyMhXo9x3B9tGkZTaPamy6LFuJAHKz1rJLCft0dhQG0mCRihDHA7RVJF6t2NcQag==
256 | dependencies:
257 | "@pixi/constants" "5.3.9"
258 | "@pixi/core" "5.3.9"
259 | "@pixi/display" "5.3.9"
260 | "@pixi/math" "5.3.9"
261 | "@pixi/settings" "5.3.9"
262 | "@pixi/utils" "5.3.9"
263 |
264 | "@pixi/spritesheet@5.3.9":
265 | version "5.3.9"
266 | resolved "https://registry.yarnpkg.com/@pixi/spritesheet/-/spritesheet-5.3.9.tgz#33983aeb1fd7e61ee8841d7f60d48ca3c3805971"
267 | integrity sha512-N7wK8qQMI8rBpLXO1QalA9HOJ8j0+jM/ZYl2JWewo8rbxKpXTllOazr8QdSaofxAhCCsmG2QBzfR//tZS+WfGg==
268 | dependencies:
269 | "@pixi/core" "5.3.9"
270 | "@pixi/loaders" "5.3.9"
271 | "@pixi/math" "5.3.9"
272 | "@pixi/utils" "5.3.9"
273 |
274 | "@pixi/text-bitmap@5.3.9":
275 | version "5.3.9"
276 | resolved "https://registry.yarnpkg.com/@pixi/text-bitmap/-/text-bitmap-5.3.9.tgz#c2e1de4871078464a244fbfda10843f0e9f196d3"
277 | integrity sha512-s33Y+iiiLIIe4d9Tevn8VQ9HZfmpud0GU1OdoWRhMAKiXXsoI12e+hzVS6bOS5rsD0iyyS7Bcs4zxbBezSU24A==
278 | dependencies:
279 | "@pixi/core" "5.3.9"
280 | "@pixi/display" "5.3.9"
281 | "@pixi/loaders" "5.3.9"
282 | "@pixi/math" "5.3.9"
283 | "@pixi/mesh" "5.3.9"
284 | "@pixi/settings" "5.3.9"
285 | "@pixi/text" "5.3.9"
286 | "@pixi/utils" "5.3.9"
287 |
288 | "@pixi/text@5.3.9":
289 | version "5.3.9"
290 | resolved "https://registry.yarnpkg.com/@pixi/text/-/text-5.3.9.tgz#15fbd2a197dd65e8e26cc2d7fc91d59b9066e3be"
291 | integrity sha512-QT1XRqLpaN0IsIHCbL8hgvRQSoHTodgvjeMCfAbp8KC0fLYxxKaD7RIU02Ito1Vl0cGON65/lg/qQMegQocgsg==
292 | dependencies:
293 | "@pixi/core" "5.3.9"
294 | "@pixi/math" "5.3.9"
295 | "@pixi/settings" "5.3.9"
296 | "@pixi/sprite" "5.3.9"
297 | "@pixi/utils" "5.3.9"
298 |
299 | "@pixi/ticker@5.3.9":
300 | version "5.3.9"
301 | resolved "https://registry.yarnpkg.com/@pixi/ticker/-/ticker-5.3.9.tgz#f124cc2d9c06872d8fca4efbc20755df18284351"
302 | integrity sha512-t7hc72X70lAp3H+m5BY6fS3U6XOdMqQrv6+5z4vfqBBr1lOuJGWUhgIpGXk0qhOl4F88LQlXkOsfk/qqUN+NCQ==
303 | dependencies:
304 | "@pixi/settings" "5.3.9"
305 |
306 | "@pixi/utils@5.3.9":
307 | version "5.3.9"
308 | resolved "https://registry.yarnpkg.com/@pixi/utils/-/utils-5.3.9.tgz#6077c79b268496e73fe2715c68c9139b7325ef9e"
309 | integrity sha512-yvwaRo9VtSTAQsEFkYHjz12h3eW5Ww8Emk6XunEOiGPlByvs7AUsDpDGcym7DcKlePszHBSDPOj6gW56pZLzdA==
310 | dependencies:
311 | "@pixi/constants" "5.3.9"
312 | "@pixi/settings" "5.3.9"
313 | earcut "^2.1.5"
314 | eventemitter3 "^3.1.0"
315 | url "^0.11.0"
316 |
317 | colorette@^1.2.2:
318 | version "1.2.2"
319 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94"
320 | integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==
321 |
322 | earcut@^2.1.5:
323 | version "2.2.2"
324 | resolved "https://registry.yarnpkg.com/earcut/-/earcut-2.2.2.tgz#41b0bc35f63e0fe80da7cddff28511e7e2e80d11"
325 | integrity sha512-eZoZPPJcUHnfRZ0PjLvx2qBordSiO8ofC3vt+qACLM95u+4DovnbYNpQtJh0DNsWj8RnxrQytD4WA8gj5cRIaQ==
326 |
327 | es6-promise-polyfill@^1.2.0:
328 | version "1.2.0"
329 | resolved "https://registry.yarnpkg.com/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz#f38925f23cb3e3e8ce6cda8ff774fcebbb090cde"
330 | integrity sha1-84kl8jyz4+jObNqP93T867sJDN4=
331 |
332 | esbuild@^0.9.3:
333 | version "0.9.7"
334 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.9.7.tgz#ea0d639cbe4b88ec25fbed4d6ff00c8d788ef70b"
335 | integrity sha512-VtUf6aQ89VTmMLKrWHYG50uByMF4JQlVysb8dmg6cOgW8JnFCipmz7p+HNBl+RR3LLCuBxFGVauAe2wfnF9bLg==
336 |
337 | eventemitter3@^3.1.0:
338 | version "3.1.2"
339 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7"
340 | integrity sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==
341 |
342 | fsevents@~2.3.1:
343 | version "2.3.2"
344 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
345 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
346 |
347 | function-bind@^1.1.1:
348 | version "1.1.1"
349 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
350 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
351 |
352 | has@^1.0.3:
353 | version "1.0.3"
354 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
355 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
356 | dependencies:
357 | function-bind "^1.1.1"
358 |
359 | is-core-module@^2.2.0:
360 | version "2.2.0"
361 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a"
362 | integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==
363 | dependencies:
364 | has "^1.0.3"
365 |
366 | ismobilejs@^1.1.0:
367 | version "1.1.1"
368 | resolved "https://registry.yarnpkg.com/ismobilejs/-/ismobilejs-1.1.1.tgz#c56ca0ae8e52b24ca0f22ba5ef3215a2ddbbaa0e"
369 | integrity sha512-VaFW53yt8QO61k2WJui0dHf4SlL8lxBofUuUmwBo0ljPk0Drz2TiuDW4jo3wDcv41qy/SxrJ+VAzJ/qYqsmzRw==
370 |
371 | mini-signals@^1.2.0:
372 | version "1.2.0"
373 | resolved "https://registry.yarnpkg.com/mini-signals/-/mini-signals-1.2.0.tgz#45b08013c5fae51a24aa1a935cd317c9ed721d74"
374 | integrity sha1-RbCAE8X65RokqhqTXNMXye1yHXQ=
375 |
376 | nanoid@^3.1.20:
377 | version "3.1.22"
378 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.22.tgz#b35f8fb7d151990a8aebd5aa5015c03cf726f844"
379 | integrity sha512-/2ZUaJX2ANuLtTvqTlgqBQNJoQO398KyJgZloL0PZkC0dpysjncRUPsFe3DUPzz/y3h+u7C46np8RMuvF3jsSQ==
380 |
381 | object-assign@^4.1.1:
382 | version "4.1.1"
383 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
384 | integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=
385 |
386 | parse-uri@^1.0.0:
387 | version "1.0.3"
388 | resolved "https://registry.yarnpkg.com/parse-uri/-/parse-uri-1.0.3.tgz#f3c24a74907a4e357c1741e96ca9faadecfd6db5"
389 | integrity sha512-upMnGxNcm+45So85HoguwZTVZI9u11i36DdxJfGF2HYWS2eh3TIx7+/tTi7qrEq15qzGkVhsKjesau+kCk48pA==
390 |
391 | path-parse@^1.0.6:
392 | version "1.0.6"
393 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
394 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
395 |
396 | pixi.js@^5.3.8:
397 | version "5.3.9"
398 | resolved "https://registry.yarnpkg.com/pixi.js/-/pixi.js-5.3.9.tgz#073fdf4bfbd644b128555bc17e90f62a2d3afa6d"
399 | integrity sha512-MLczwbhFmFBXImy9TlUbjnQb8nQK3Zez/UHs2z3cBqXDLx9wSZ0kwJbeY4XAWuJNy3WeZtqKeDoteonNaDxMUQ==
400 | dependencies:
401 | "@pixi/accessibility" "5.3.9"
402 | "@pixi/app" "5.3.9"
403 | "@pixi/constants" "5.3.9"
404 | "@pixi/core" "5.3.9"
405 | "@pixi/display" "5.3.9"
406 | "@pixi/extract" "5.3.9"
407 | "@pixi/filter-alpha" "5.3.9"
408 | "@pixi/filter-blur" "5.3.9"
409 | "@pixi/filter-color-matrix" "5.3.9"
410 | "@pixi/filter-displacement" "5.3.9"
411 | "@pixi/filter-fxaa" "5.3.9"
412 | "@pixi/filter-noise" "5.3.9"
413 | "@pixi/graphics" "5.3.9"
414 | "@pixi/interaction" "5.3.9"
415 | "@pixi/loaders" "5.3.9"
416 | "@pixi/math" "5.3.9"
417 | "@pixi/mesh" "5.3.9"
418 | "@pixi/mesh-extras" "5.3.9"
419 | "@pixi/mixin-cache-as-bitmap" "5.3.9"
420 | "@pixi/mixin-get-child-by-name" "5.3.9"
421 | "@pixi/mixin-get-global-position" "5.3.9"
422 | "@pixi/particles" "5.3.9"
423 | "@pixi/polyfill" "5.3.9"
424 | "@pixi/prepare" "5.3.9"
425 | "@pixi/runner" "5.3.9"
426 | "@pixi/settings" "5.3.9"
427 | "@pixi/sprite" "5.3.9"
428 | "@pixi/sprite-animated" "5.3.9"
429 | "@pixi/sprite-tiling" "5.3.9"
430 | "@pixi/spritesheet" "5.3.9"
431 | "@pixi/text" "5.3.9"
432 | "@pixi/text-bitmap" "5.3.9"
433 | "@pixi/ticker" "5.3.9"
434 | "@pixi/utils" "5.3.9"
435 |
436 | postcss@^8.2.1:
437 | version "8.2.8"
438 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.8.tgz#0b90f9382efda424c4f0f69a2ead6f6830d08ece"
439 | integrity sha512-1F0Xb2T21xET7oQV9eKuctbM9S7BC0fetoHCc4H13z0PT6haiRLP4T0ZY4XWh7iLP0usgqykT6p9B2RtOf4FPw==
440 | dependencies:
441 | colorette "^1.2.2"
442 | nanoid "^3.1.20"
443 | source-map "^0.6.1"
444 |
445 | punycode@1.3.2:
446 | version "1.3.2"
447 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d"
448 | integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=
449 |
450 | querystring@0.2.0:
451 | version "0.2.0"
452 | resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.0.tgz#b209849203bb25df820da756e747005878521620"
453 | integrity sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=
454 |
455 | resolve@^1.19.0:
456 | version "1.20.0"
457 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975"
458 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==
459 | dependencies:
460 | is-core-module "^2.2.0"
461 | path-parse "^1.0.6"
462 |
463 | resource-loader@^3.0.1:
464 | version "3.0.1"
465 | resolved "https://registry.yarnpkg.com/resource-loader/-/resource-loader-3.0.1.tgz#33355bb5421e2994f59454bbc7f6dbff8df06d47"
466 | integrity sha512-fBuCRbEHdLCI1eglzQhUv9Rrdcmqkydr1r6uHE2cYHvRBrcLXeSmbE/qI/urFt8rPr/IGxir3BUwM5kUK8XoyA==
467 | dependencies:
468 | mini-signals "^1.2.0"
469 | parse-uri "^1.0.0"
470 |
471 | rollup@^2.38.5:
472 | version "2.43.1"
473 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.43.1.tgz#9e5c9208c2011de227ac6c93101e11dc12e88e04"
474 | integrity sha512-kvRE6VJbiv4d8m2nGeccc3qRpzOMghAhu2KeITjyZVCjneIFLPQ3zm2Wmqnl0LcUg3FvDaV0MfKnG4NCMbiSfw==
475 | optionalDependencies:
476 | fsevents "~2.3.1"
477 |
478 | source-map@^0.6.1:
479 | version "0.6.1"
480 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
481 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
482 |
483 | url@^0.11.0:
484 | version "0.11.0"
485 | resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
486 | integrity sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=
487 | dependencies:
488 | punycode "1.3.2"
489 | querystring "0.2.0"
490 |
491 | vite@^2.1.3:
492 | version "2.1.3"
493 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.1.3.tgz#a31a844d26d3846b5a78f06970d1ea1f8a442955"
494 | integrity sha512-bUzArZIUwADVJS/3ywCr4KKFn3a7izs4M87ZDlAlY2V34E4g1kH6p3sVNAh8/IXCn/56fwgMh3rRavPUW7qEQQ==
495 | dependencies:
496 | esbuild "^0.9.3"
497 | postcss "^8.2.1"
498 | resolve "^1.19.0"
499 | rollup "^2.38.5"
500 | optionalDependencies:
501 | fsevents "~2.3.1"
502 |
--------------------------------------------------------------------------------
/tween-animation/dist/assets/vendor.81b052bd.js:
--------------------------------------------------------------------------------
1 | function t(t,e,s){if(t&&t.length){const[n,i]=e,r=Math.PI/180*s,o=Math.cos(r),a=Math.sin(r);t.forEach((t=>{const[e,s]=t;t[0]=(e-n)*o-(s-i)*a+n,t[1]=(e-n)*a+(s-i)*o+i}))}}function e(t){const e=t[0],s=t[1];return Math.sqrt(Math.pow(e[0]-s[0],2)+Math.pow(e[1]-s[1],2))}function s(t,e,s,n){const i=e[1]-t[1],r=t[0]-e[0],o=i*t[0]+r*t[1],a=n[1]-s[1],h=s[0]-n[0],u=a*s[0]+h*s[1],c=i*h-a*r;return c?[(h*o-r*u)/c,(i*u-a*o)/c]:null}function n(t,e,s){const n=t.length;if(n<3)return!1;const a=[Number.MAX_SAFE_INTEGER,s],h=[e,s];let u=0;for(let c=0;c=Math.min(t[0],s[0])&&e[1]<=Math.max(t[1],s[1])&&e[1]>=Math.min(t[1],s[1])}function r(t,e,s){const n=(e[1]-t[1])*(s[0]-e[0])-(e[0]-t[0])*(s[1]-e[1]);return 0===n?0:n>0?1:2}function o(t,e,s,n){const o=r(t,e,s),a=r(t,e,n),h=r(s,n,t),u=r(s,n,e);return o!==a&&h!==u||!(0!==o||!i(t,s,e))||!(0!==a||!i(t,n,e))||!(0!==h||!i(s,t,n))||!(0!==u||!i(s,e,n))}function a(e,s){const n=[0,0],i=Math.round(s.hachureAngle+90);i&&t(e,n,i);const r=function(t,e){const s=[...t];s[0].join(",")!==s[s.length-1].join(",")&&s.push([s[0][0],s[0][1]]);const n=[];if(s&&s.length>2){let t=e.hachureGap;t<0&&(t=4*e.strokeWidth),t=Math.max(t,.1);const i=[];for(let e=0;et.ymine.ymin?1:t.xe.x?1:t.ymax===e.ymax?0:(t.ymax-e.ymax)/Math.abs(t.ymax-e.ymax))),!i.length)return n;let r=[],o=i[0].ymin;for(;r.length||i.length;){if(i.length){let t=-1;for(let e=0;eo);e++)t=e;i.splice(0,t+1).forEach((t=>{r.push({s:o,edge:t})}))}if(r=r.filter((t=>!(t.edge.ymax<=o))),r.sort(((t,e)=>t.edge.x===e.edge.x?0:(t.edge.x-e.edge.x)/Math.abs(t.edge.x-e.edge.x))),r.length>1)for(let t=0;t=r.length)break;const s=r[t].edge,i=r[e].edge;n.push([[Math.round(s.x),o],[Math.round(i.x),o]])}o+=t,r.forEach((e=>{e.edge.x=e.edge.x+t*e.edge.islope}))}}return n}(e,s);return i&&(t(e,n,-i),function(e,s,n){const i=[];e.forEach((t=>i.push(...t))),t(i,s,n)}(r,n,-i)),r}class h{constructor(t){this.helper=t}fillPolygon(t,e){return this._fillPolygon(t,e)}_fillPolygon(t,e,s=!1){let n=a(t,e);if(s){const e=this.connectingLines(t,n);n=n.concat(e)}return{type:"fillSketch",ops:this.renderLines(n,e)}}renderLines(t,e){const s=[];for(const n of t)s.push(...this.helper.doubleLineOps(n[0][0],n[0][1],n[1][0],n[1][1],e));return s}connectingLines(t,s){const n=[];if(s.length>1)for(let i=1;i3){const e=this.splitOnIntersections(t,o);n.push(...e)}}return n}midPointInPolygon(t,e){return n(t,(e[0][0]+e[1][0])/2,(e[0][1]+e[1][1])/2)}splitOnIntersections(t,i){const r=Math.max(5,.1*e(i)),a=[];for(let n=0;nr&&n>r&&a.push({point:t,distance:s})}}}if(a.length>1){const e=a.sort(((t,e)=>t.distance-e.distance)).map((t=>t.point));if(n(t,...i[0])||e.shift(),n(t,...i[1])||e.pop(),e.length<=1)return this.midPointInPolygon(t,i)?[i]:[];const s=[i[0],...e,i[1]],r=[];for(let n=0;n{const o=e(t),a=Math.floor(o/(n+i)),h=(o+i-a*(n+i))/2;let u=t[0],c=t[1];u[0]>c[0]&&(u=t[1],c=t[0]);const l=Math.atan((c[1]-u[1])/(c[0]-u[0]));for(let e=0;e{const r=e(t),o=Math.round(r/(2*s));let a=t[0],h=t[1];a[0]>h[0]&&(a=t[1],h=t[0]);const u=Math.atan((h[1]-a[1])/(h[0]-a[0]));for(let e=0;en%2?t+s:t+e));r.push({key:"C",data:t}),e=t[4],s=t[5];break}case"Q":r.push({key:"Q",data:[...a]}),e=a[2],s=a[3];break;case"q":{const t=a.map(((t,n)=>n%2?t+s:t+e));r.push({key:"Q",data:t}),e=t[2],s=t[3];break}case"A":r.push({key:"A",data:[...a]}),e=a[5],s=a[6];break;case"a":e+=a[5],s+=a[6],r.push({key:"A",data:[a[0],a[1],a[2],a[3],a[4],e,s]});break;case"H":r.push({key:"H",data:[...a]}),e=a[0];break;case"h":e+=a[0],r.push({key:"H",data:[e]});break;case"V":r.push({key:"V",data:[...a]}),s=a[0];break;case"v":s+=a[0],r.push({key:"V",data:[s]});break;case"S":r.push({key:"S",data:[...a]}),e=a[2],s=a[3];break;case"s":{const t=a.map(((t,n)=>n%2?t+s:t+e));r.push({key:"S",data:t}),e=t[2],s=t[3];break}case"T":r.push({key:"T",data:[...a]}),e=a[0],s=a[1];break;case"t":e+=a[0],s+=a[1],r.push({key:"T",data:[e,s]});break;case"Z":case"z":r.push({key:"Z",data:[]}),e=n,s=i}return r}function b(t){const e=[];let s="",n=0,i=0,r=0,o=0,a=0,h=0;for(const{key:u,data:c}of t){switch(u){case"M":e.push({key:"M",data:[...c]}),[n,i]=c,[r,o]=c;break;case"C":e.push({key:"C",data:[...c]}),n=c[4],i=c[5],a=c[2],h=c[3];break;case"L":e.push({key:"L",data:[...c]}),[n,i]=c;break;case"H":n=c[0],e.push({key:"L",data:[n,i]});break;case"V":i=c[0],e.push({key:"L",data:[n,i]});break;case"S":{let t=0,r=0;"C"===s||"S"===s?(t=n+(n-a),r=i+(i-h)):(t=n,r=i),e.push({key:"C",data:[t,r,...c]}),a=c[0],h=c[1],n=c[2],i=c[3];break}case"T":{const[t,r]=c;let o=0,u=0;"Q"===s||"T"===s?(o=n+(n-a),u=i+(i-h)):(o=n,u=i);const l=n+2*(o-n)/3,p=i+2*(u-i)/3,f=t+2*(o-t)/3,d=r+2*(u-r)/3;e.push({key:"C",data:[l,p,f,d,t,r]}),a=o,h=u,n=t,i=r;break}case"Q":{const[t,s,r,o]=c,u=n+2*(t-n)/3,l=i+2*(s-i)/3,p=r+2*(t-r)/3,f=o+2*(s-o)/3;e.push({key:"C",data:[u,l,p,f,r,o]}),a=t,h=s,n=r,i=o;break}case"A":{const t=Math.abs(c[0]),s=Math.abs(c[1]),r=c[2],o=c[3],a=c[4],h=c[5],u=c[6];0===t||0===s?(e.push({key:"C",data:[n,i,h,u,h,u]}),n=h,i=u):n===h&&i===u||(v(n,i,h,u,t,s,r,o,a).forEach((function(t){e.push({key:"C",data:t})})),n=h,i=u);break}case"Z":e.push({key:"Z",data:[]}),n=r,i=o}s=u}return e}function m(t,e,s){return[t*Math.cos(s)-e*Math.sin(s),t*Math.sin(s)+e*Math.cos(s)]}function v(t,e,s,n,i,r,o,a,h,u){const c=(l=o,Math.PI*l/180);var l;let p=[],f=0,d=0,g=0,_=0;if(u)[f,d,g,_]=u;else{[t,e]=m(t,e,-c),[s,n]=m(s,n,-c);const o=(t-s)/2,u=(e-n)/2;let l=o*o/(i*i)+u*u/(r*r);l>1&&(l=Math.sqrt(l),i*=l,r*=l);const p=i*i,y=r*r,M=p*y-p*u*u-y*o*o,k=p*u*u+y*o*o,b=(a===h?-1:1)*Math.sqrt(Math.abs(M/k));g=b*i*u/r+(t+s)/2,_=b*-r*o/i+(e+n)/2,f=Math.asin(parseFloat(((e-_)/r).toFixed(9))),d=Math.asin(parseFloat(((n-_)/r).toFixed(9))),td&&(f-=2*Math.PI),!h&&d>f&&(d-=2*Math.PI)}let y=d-f;if(Math.abs(y)>120*Math.PI/180){const t=d,e=s,a=n;d=h&&d>f?f+120*Math.PI/180*1:f+120*Math.PI/180*-1,p=v(s=g+i*Math.cos(d),n=_+r*Math.sin(d),e,a,i,r,o,0,h,[d,t,g,_])}y=d-f;const M=Math.cos(f),k=Math.sin(f),b=Math.cos(d),w=Math.sin(d),P=Math.tan(y/4),S=4/3*i*P,O=4/3*r*P,x=[t,e],I=[t+S*k,e-O*M],T=[s+S*w,n-O*b],C=[s,n];if(I[0]=2*x[0]-I[0],I[1]=2*x[1]-I[1],u)return[I,T,C].concat(p);{p=[I,T,C].concat(p);const t=[];for(let e=0;e2){const i=[];for(let e=0;e2*Math.PI&&(f=0,d=2*Math.PI);const g=2*Math.PI/h.curveStepCount,_=Math.min(g/2,(d-f)/2),y=j(_,u,c,l,p,f,d,1,h);if(!h.disableMultiStroke){const t=j(_,u,c,l,p,f,d,1.5,h);y.push(...t)}return o&&(a?y.push(...R(u,c,u+l*Math.cos(f),c+p*Math.sin(f),h),...R(u,c,u+l*Math.cos(d),c+p*Math.sin(d),h)):y.push({op:"lineTo",data:[u,c]},{op:"lineTo",data:[u+l*Math.cos(f),c+p*Math.sin(f)]})),{type:"path",ops:y}}function T(t,e){const s=[];if(t.length){const n=e.maxRandomnessOffset||0,i=t.length;if(i>2){s.push({op:"move",data:[t[0][0]+E(n,e),t[0][1]+E(n,e)]});for(let r=1;r500?.4:-.0016668*h+1.233334;let c=i.maxRandomnessOffset||0;c*c*100>a&&(c=h/10);const l=c/2,p=.2+.2*L(i);let f=i.bowing*i.maxRandomnessOffset*(n-e)/200,d=i.bowing*i.maxRandomnessOffset*(t-s)/200;f=E(f,i,u),d=E(d,i,u);const g=[],_=()=>E(l,i,u),y=()=>E(c,i,u);return r&&(o?g.push({op:"move",data:[t+_(),e+_()]}):g.push({op:"move",data:[t+E(c,i,u),e+E(c,i,u)]})),o?g.push({op:"bcurveTo",data:[f+t+(s-t)*p+_(),d+e+(n-e)*p+_(),f+t+2*(s-t)*p+_(),d+e+2*(n-e)*p+_(),s+_(),n+_()]}):g.push({op:"bcurveTo",data:[f+t+(s-t)*p+y(),d+e+(n-e)*p+y(),f+t+2*(s-t)*p+y(),d+e+2*(n-e)*p+y(),s+y(),n+y()]}),g}function F(t,e,s){const n=[];n.push([t[0][0]+E(e,s),t[0][1]+E(e,s)]),n.push([t[0][0]+E(e,s),t[0][1]+E(e,s)]);for(let i=1;i3){const r=[],o=1-s.curveTightness;i.push({op:"move",data:[t[1][0],t[1][1]]});for(let e=1;e+21&&i.push(s)):i.push(s),i.push(t[e+3])}else{const n=.5,r=t[e+0],o=t[e+1],a=t[e+2],h=t[e+3],u=V(r,o,n),c=V(o,a,n),l=V(a,h,n),p=V(u,c,n),f=V(c,l,n),d=V(p,f,n);B([r,u,p,d],0,s,i),B([d,f,l,h],0,s,i)}var r,o;return i}function N(t,e){return Q(t,0,t.length,e)}function Q(t,e,s,n,i){const r=i||[],o=t[e],a=t[s-1];let h=0,u=1;for(let c=e+1;ch&&(h=e,u=c)}return Math.sqrt(h)>n?(Q(t,e,u+1,n,r),Q(t,u,s,n,r)):(r.length||r.push(o),r.push(a)),r}function Z(t,e=.15,s){const n=[],i=(t.length-1)/3;for(let r=0;r0?Q(n,0,n.length,s):n}const H="none";class X{constructor(t){this.defaultOptions={maxRandomnessOffset:2,roughness:1,bowing:1,stroke:"#000",strokeWidth:1,curveTightness:0,curveFitting:.95,curveStepCount:9,fillStyle:"hachure",fillWeight:-1,hachureAngle:-41,hachureGap:-1,dashOffset:-1,dashGap:-1,zigzagOffset:-1,seed:0,combineNestedSvgPaths:!1,disableMultiStroke:!1,disableMultiStrokeFill:!1},this.config=t||{},this.config.options&&(this.defaultOptions=this._o(this.config.options))}static newSeed(){return Math.floor(Math.random()*2**31)}_o(t){return t?Object.assign({},this.defaultOptions,t):this.defaultOptions}_d(t,e,s){return{shape:t,sets:e||[],options:s||this.defaultOptions}}line(t,e,s,n,i){const r=this._o(i);return this._d("line",[P(t,e,s,n,r)],r)}rectangle(t,e,s,n,i){const r=this._o(i),o=[],a=function(t,e,s,n,i){return S([[t,e],[t+s,e],[t+s,e+n],[t,e+n]],!0,i)}(t,e,s,n,r);if(r.fill){const i=[[t,e],[t+s,e],[t+s,e+n],[t,e+n]];"solid"===r.fillStyle?o.push(T(i,r)):o.push(C(i,r))}return r.stroke!==H&&o.push(a),this._d("rectangle",o,r)}ellipse(t,e,s,n,i){const r=this._o(i),o=[],a=O(s,n,r),h=x(t,e,r,a);if(r.fill)if("solid"===r.fillStyle){const s=x(t,e,r,a).opset;s.type="fillPath",o.push(s)}else o.push(C(h.estimatedPoints,r));return r.stroke!==H&&o.push(h.opset),this._d("ellipse",o,r)}circle(t,e,s,n){const i=this.ellipse(t,e,s,s,n);return i.shape="circle",i}linearPath(t,e){const s=this._o(e);return this._d("linearPath",[S(t,!1,s)],s)}arc(t,e,s,n,i,r,o=!1,a){const h=this._o(a),u=[],c=I(t,e,s,n,i,r,o,!0,h);if(o&&h.fill)if("solid"===h.fillStyle){const o=I(t,e,s,n,i,r,!0,!1,h);o.type="fillPath",u.push(o)}else u.push(function(t,e,s,n,i,r,o){const a=t,h=e;let u=Math.abs(s/2),c=Math.abs(n/2);u+=E(.01*u,o),c+=E(.01*c,o);let l=i,p=r;for(;l<0;)l+=2*Math.PI,p+=2*Math.PI;p-l>2*Math.PI&&(l=0,p=2*Math.PI);const f=(p-l)/o.curveStepCount,d=[];for(let g=l;g<=p;g+=f)d.push([a+u*Math.cos(g),h+c*Math.sin(g)]);return d.push([a+u*Math.cos(p),h+c*Math.sin(p)]),d.push([a,h]),C(d,o)}(t,e,s,n,i,r,h));return h.stroke!==H&&u.push(c),this._d("arc",u,h)}curve(t,e){const s=this._o(e),n=[],i=function(t,e){let s=F(t,1*(1+.2*e.roughness),e);if(!e.disableMultiStroke){const n=F(t,1.5*(1+.22*e.roughness),function(t){const e=Object.assign({},t);return e.randomizer=void 0,t.seed&&(e.seed=t.seed+1),e}(e));s=s.concat(n)}return{type:"path",ops:s}}(t,s);if(s.fill&&s.fill!==H&&t.length>=3){const e=Z(function(t,e=0){const s=t.length;if(s<3)throw new Error("A curve must have at least three points.");const n=[];if(3===s)n.push($(t[0]),$(t[1]),$(t[2]),$(t[2]));else{const s=[];s.push(t[0],t[0]);for(let e=1;e{a.length>=4&&r.push(...Z(a,1)),a=[]},u=()=>{h(),r.length&&(i.push(r),r=[])};for(const{key:l,data:p}of n)switch(l){case"M":u(),o=[p[0],p[1]],r.push(o);break;case"L":h(),r.push([p[0],p[1]]);break;case"C":if(!a.length){const t=r.length?r[r.length-1]:o;a.push([t[0],t[1]])}a.push([p[0],p[1]]),a.push([p[2],p[3]]),a.push([p[4],p[5]]);break;case"Z":h(),r.push([o[0],o[1]])}if(u(),!s)return i;const c=[];for(const l of i){const t=N(l,s);t.length&&c.push(t)}return c}(t,0,o?4-4*s.simplification:(1+s.roughness)/2);if(i)if(s.combineNestedSvgPaths){const t=[];a.forEach((e=>t.push(...e))),"solid"===s.fillStyle?n.push(T(t,s)):n.push(C(t,s))}else a.forEach((t=>{"solid"===s.fillStyle?n.push(T(t,s)):n.push(C(t,s))}));return r&&(o?a.forEach((t=>{n.push(S(t,!1,s))})):n.push(function(t,e){const s=b(k(M(t))),n=[];let i=[0,0],r=[0,0];for(const{key:o,data:a}of s)switch(o){case"M":{const t=1*(e.maxRandomnessOffset||0);n.push({op:"move",data:a.map((s=>s+E(t,e)))}),r=[a[0],a[1]],i=[a[0],a[1]];break}case"L":n.push(...R(r[0],r[1],a[0],a[1],e)),r=[a[0],a[1]];break;case"C":{const[t,s,i,o,h,u]=a;n.push(...q(t,s,i,o,h,u,r,e)),r=[h,u];break}case"Z":n.push(...R(r[0],r[1],i[0],i[1],e)),r=[i[0],i[1]]}return{type:"path",ops:n}}(t,s))),this._d("path",n,s)}opsToPath(t){let e="";for(const s of t.ops){const t=s.data;switch(s.op){case"move":e+=`M${t[0]} ${t[1]} `;break;case"bcurveTo":e+=`C${t[0]} ${t[1]}, ${t[2]} ${t[3]}, ${t[4]} ${t[5]} `;break;case"lineTo":e+=`L${t[0]} ${t[1]} `}}return e.trim()}toPaths(t){const e=t.sets||[],s=t.options||this.defaultOptions,n=[];for(const i of e){let t=null;switch(i.type){case"path":t={d:this.opsToPath(i),stroke:s.stroke,strokeWidth:s.strokeWidth,fill:H};break;case"fillPath":t={d:this.opsToPath(i),stroke:H,strokeWidth:0,fill:s.fill||H};break;case"fillSketch":t=this.fillSketch(i,s)}t&&n.push(t)}return n}fillSketch(t,e){let s=e.fillWeight;return s<0&&(s=e.strokeWidth/2),{d:this.opsToPath(t),stroke:e.fill||H,strokeWidth:s,fill:H}}}class J{constructor(t,e){this.canvas=t,this.ctx=this.canvas.getContext("2d"),this.gen=new X(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.ctx;for(const i of e)switch(i.type){case"path":n.save(),n.strokeStyle="none"===s.stroke?"transparent":s.stroke,n.lineWidth=s.strokeWidth,s.strokeLineDash&&n.setLineDash(s.strokeLineDash),s.strokeLineDashOffset&&(n.lineDashOffset=s.strokeLineDashOffset),this._drawToContext(n,i),n.restore();break;case"fillPath":n.save(),n.fillStyle=s.fill||"";const e="curve"===t.shape||"polygon"===t.shape?"evenodd":"nonzero";this._drawToContext(n,i,e),n.restore();break;case"fillSketch":this.fillSketch(n,i,s)}}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2),t.save(),s.fillLineDash&&t.setLineDash(s.fillLineDash),s.fillLineDashOffset&&(t.lineDashOffset=s.fillLineDashOffset),t.strokeStyle=s.fill||"",t.lineWidth=n,this._drawToContext(t,e),t.restore()}_drawToContext(t,e,s="nonzero"){t.beginPath();for(const n of e.ops){const e=n.data;switch(n.op){case"move":t.moveTo(e[0],e[1]);break;case"bcurveTo":t.bezierCurveTo(e[0],e[1],e[2],e[3],e[4],e[5]);break;case"lineTo":t.lineTo(e[0],e[1])}}"fillPath"===e.type?t.fill(s):t.stroke()}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}line(t,e,s,n,i){const r=this.gen.line(t,e,s,n,i);return this.draw(r),r}rectangle(t,e,s,n,i){const r=this.gen.rectangle(t,e,s,n,i);return this.draw(r),r}ellipse(t,e,s,n,i){const r=this.gen.ellipse(t,e,s,n,i);return this.draw(r),r}circle(t,e,s,n){const i=this.gen.circle(t,e,s,n);return this.draw(i),i}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s),s}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s),s}arc(t,e,s,n,i,r,o=!1,a){const h=this.gen.arc(t,e,s,n,i,r,o,a);return this.draw(h),h}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s),s}path(t,e){const s=this.gen.path(t,e);return this.draw(s),s}}const K="http://www.w3.org/2000/svg";class Y{constructor(t,e){this.svg=t,this.gen=new X(e)}draw(t){const e=t.sets||[],s=t.options||this.getDefaultOptions(),n=this.svg.ownerDocument||window.document,i=n.createElementNS(K,"g");for(const r of e){let e=null;switch(r.type){case"path":e=n.createElementNS(K,"path"),e.setAttribute("d",this.opsToPath(r)),e.setAttribute("stroke",s.stroke),e.setAttribute("stroke-width",s.strokeWidth+""),e.setAttribute("fill","none"),s.strokeLineDash&&e.setAttribute("stroke-dasharray",s.strokeLineDash.join(" ").trim()),s.strokeLineDashOffset&&e.setAttribute("stroke-dashoffset",""+s.strokeLineDashOffset);break;case"fillPath":e=n.createElementNS(K,"path"),e.setAttribute("d",this.opsToPath(r)),e.setAttribute("stroke","none"),e.setAttribute("stroke-width","0"),e.setAttribute("fill",s.fill||""),"curve"!==t.shape&&"polygon"!==t.shape||e.setAttribute("fill-rule","evenodd");break;case"fillSketch":e=this.fillSketch(n,r,s)}e&&i.appendChild(e)}return i}fillSketch(t,e,s){let n=s.fillWeight;n<0&&(n=s.strokeWidth/2);const i=t.createElementNS(K,"path");return i.setAttribute("d",this.opsToPath(e)),i.setAttribute("stroke",s.fill||""),i.setAttribute("stroke-width",n+""),i.setAttribute("fill","none"),s.fillLineDash&&i.setAttribute("stroke-dasharray",s.fillLineDash.join(" ").trim()),s.fillLineDashOffset&&i.setAttribute("stroke-dashoffset",""+s.fillLineDashOffset),i}get generator(){return this.gen}getDefaultOptions(){return this.gen.defaultOptions}opsToPath(t){return this.gen.opsToPath(t)}line(t,e,s,n,i){const r=this.gen.line(t,e,s,n,i);return this.draw(r)}rectangle(t,e,s,n,i){const r=this.gen.rectangle(t,e,s,n,i);return this.draw(r)}ellipse(t,e,s,n,i){const r=this.gen.ellipse(t,e,s,n,i);return this.draw(r)}circle(t,e,s,n){const i=this.gen.circle(t,e,s,n);return this.draw(i)}linearPath(t,e){const s=this.gen.linearPath(t,e);return this.draw(s)}polygon(t,e){const s=this.gen.polygon(t,e);return this.draw(s)}arc(t,e,s,n,i,r,o=!1,a){const h=this.gen.arc(t,e,s,n,i,r,o,a);return this.draw(h)}curve(t,e){const s=this.gen.curve(t,e);return this.draw(s)}path(t,e){const s=this.gen.path(t,e);return this.draw(s)}}var tt,et={canvas:(t,e)=>new J(t,e),svg:(t,e)=>new Y(t,e),generator:t=>new X(t),newSeed:()=>X.newSeed()},st={Linear:{None:function(t){return t}},Quadratic:{In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},Cubic:{In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},Quartic:{In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},Quintic:{In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},Sinusoidal:{In:function(t){return 1-Math.cos(t*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return.5*(1-Math.cos(Math.PI*t))}},Exponential:{In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}},Circular:{In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},Elastic:{In:function(t){return 0===t?0:1===t?1:-Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)},Out:function(t){return 0===t?0:1===t?1:Math.pow(2,-10*t)*Math.sin(5*(t-.1)*Math.PI)+1},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?-.5*Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)+1}},Back:{In:function(t){var e=1.70158;return t*t*((e+1)*t-e)},Out:function(t){var e=1.70158;return--t*t*((e+1)*t+e)+1},InOut:function(t){var e=2.5949095;return(t*=2)<1?t*t*((e+1)*t-e)*.5:.5*((t-=2)*t*((e+1)*t+e)+2)}},Bounce:{In:function(t){return 1-st.Bounce.Out(1-t)},Out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return t<.5?.5*st.Bounce.In(2*t):.5*st.Bounce.Out(2*t-1)+.5}}},nt="undefined"==typeof self&&"undefined"!=typeof process&&process.hrtime?function(){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}:"undefined"!=typeof self&&void 0!==self.performance&&void 0!==self.performance.now?self.performance.now.bind(self.performance):void 0!==Date.now?Date.now:function(){return(new Date).getTime()},it=function(){function t(){this._tweens={},this._tweensAddedDuringUpdate={}}return t.prototype.getAll=function(){var t=this;return Object.keys(this._tweens).map((function(e){return t._tweens[e]}))},t.prototype.removeAll=function(){this._tweens={}},t.prototype.add=function(t){this._tweens[t.getId()]=t,this._tweensAddedDuringUpdate[t.getId()]=t},t.prototype.remove=function(t){delete this._tweens[t.getId()],delete this._tweensAddedDuringUpdate[t.getId()]},t.prototype.update=function(t,e){void 0===t&&(t=nt()),void 0===e&&(e=!1);var s=Object.keys(this._tweens);if(0===s.length)return!1;for(;s.length>0;){this._tweensAddedDuringUpdate={};for(var n=0;n1?r(t[s],t[s-1],s-n):r(t[i],t[i+1>s?s:i+1],n-i)},Bezier:function(t,e){for(var s=0,n=t.length-1,i=Math.pow,r=rt.Utils.Bernstein,o=0;o<=n;o++)s+=i(1-e,n-o)*i(e,o)*t[o]*r(n,o);return s},CatmullRom:function(t,e){var s=t.length-1,n=s*e,i=Math.floor(n),r=rt.Utils.CatmullRom;return t[0]===t[s]?(e<0&&(i=Math.floor(n=s*(1+e))),r(t[(i-1+s)%s],t[i],t[(i+1)%s],t[(i+2)%s],n-i)):e<0?t[0]-(r(t[0],t[0],t[1],t[1],-n)-t[0]):e>1?t[s]-(r(t[s],t[s],t[s-1],t[s-1],n-s)-t[s]):r(t[i?i-1:0],t[i],t[s1;s--)e*=s;return tt[t]=e,e}),CatmullRom:function(t,e,s,n,i){var r=.5*(s-t),o=.5*(n-e),a=i*i;return(2*e-2*s+r+o)*(i*a)+(-3*e+3*s-2*r-o)*a+r*i+e}}},ot=function(){function t(){}return t.nextId=function(){return t._nextId++},t._nextId=0,t}(),at=new it,ht=function(){function t(t,e){void 0===e&&(e=at),this._object=t,this._group=e,this._isPaused=!1,this._pauseStart=0,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._initialRepeat=0,this._repeat=0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=0,this._easingFunction=st.Linear.None,this._interpolationFunction=rt.Linear,this._chainedTweens=[],this._onStartCallbackFired=!1,this._id=ot.nextId(),this._isChainStopped=!1,this._goToEnd=!1}return t.prototype.getId=function(){return this._id},t.prototype.isPlaying=function(){return this._isPlaying},t.prototype.isPaused=function(){return this._isPaused},t.prototype.to=function(t,e){return this._valuesEnd=Object.create(t),void 0!==e&&(this._duration=e),this},t.prototype.duration=function(t){return this._duration=t,this},t.prototype.start=function(t){if(this._isPlaying)return this;if(this._group&&this._group.add(this),this._repeat=this._initialRepeat,this._reversed)for(var e in this._reversed=!1,this._valuesStartRepeat)this._swapEndStartRepeatValues(e),this._valuesStart[e]=this._valuesStartRepeat[e];return this._isPlaying=!0,this._isPaused=!1,this._onStartCallbackFired=!1,this._isChainStopped=!1,this._startTime=void 0!==t?"string"==typeof t?nt()+parseFloat(t):t:nt(),this._startTime+=this._delayTime,this._setupProperties(this._object,this._valuesStart,this._valuesEnd,this._valuesStartRepeat),this},t.prototype._setupProperties=function(t,e,s,n){for(var i in s){var r=t[i],o=Array.isArray(r),a=o?"array":typeof r,h=!o&&Array.isArray(s[i]);if("undefined"!==a&&"function"!==a){if(h){var u=s[i];if(0===u.length)continue;u=u.map(this._handleRelativeValue.bind(this,r)),s[i]=[r].concat(u)}if("object"!==a&&!o||!r||h)void 0===e[i]&&(e[i]=r),o||(e[i]*=1),n[i]=h?s[i].slice().reverse():e[i]||0;else{for(var c in e[i]=o?[]:{},r)e[i][c]=r[c];n[i]=o?[]:{},this._setupProperties(r,e[i],s[i],n[i])}}}},t.prototype.stop=function(){return this._isChainStopped||(this._isChainStopped=!0,this.stopChainedTweens()),this._isPlaying?(this._group&&this._group.remove(this),this._isPlaying=!1,this._isPaused=!1,this._onStopCallback&&this._onStopCallback(this._object),this):this},t.prototype.end=function(){return this._goToEnd=!0,this.update(1/0),this},t.prototype.pause=function(t){return void 0===t&&(t=nt()),this._isPaused||!this._isPlaying||(this._isPaused=!0,this._pauseStart=t,this._group&&this._group.remove(this)),this},t.prototype.resume=function(t){return void 0===t&&(t=nt()),this._isPaused&&this._isPlaying?(this._isPaused=!1,this._startTime+=t-this._pauseStart,this._pauseStart=0,this._group&&this._group.add(this),this):this},t.prototype.stopChainedTweens=function(){for(var t=0,e=this._chainedTweens.length;ti)return!1;e&&this.start(t)}if(this._goToEnd=!1,t1?1:n;var r=this._easingFunction(n);if(this._updateProperties(this._object,this._valuesStart,this._valuesEnd,r),this._onUpdateCallback&&this._onUpdateCallback(this._object,n),1===n){if(this._repeat>0){for(s in isFinite(this._repeat)&&this._repeat--,this._valuesStartRepeat)this._yoyo||"string"!=typeof this._valuesEnd[s]||(this._valuesStartRepeat[s]=this._valuesStartRepeat[s]+parseFloat(this._valuesEnd[s])),this._yoyo&&this._swapEndStartRepeatValues(s),this._valuesStart[s]=this._valuesStartRepeat[s];return this._yoyo&&(this._reversed=!this._reversed),void 0!==this._repeatDelayTime?this._startTime=t+this._repeatDelayTime:this._startTime=t+this._delayTime,this._onRepeatCallback&&this._onRepeatCallback(this._object),!0}this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var o=0,a=this._chainedTweens.length;o