├── .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 | 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 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /babylon-firework/dist/assets/favicon.17e50649.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 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