|  |  | 
					
						
						|  | var app; | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | var { | 
					
						
						|  | Application, live2d: { Live2DModel } | 
					
						
						|  | } = PIXI; | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | var { | 
					
						
						|  | Face, Vector: { lerp }, Utils: { clamp } | 
					
						
						|  | } = Kalidokit; | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | var modelUrl = "./haru_greeter_t05.model3.json"; | 
					
						
						|  | var currentModel; | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | (async function main() { | 
					
						
						|  |  | 
					
						
						|  | app = new PIXI.Application({ | 
					
						
						|  | view: document.getElementById("my-live2d"), | 
					
						
						|  | autoStart: true, | 
					
						
						|  | backgroundAlpha: 0, | 
					
						
						|  | backgroundColor: 0x0000ff, | 
					
						
						|  | resizeTo: window | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | currentModel = await Live2DModel.from(modelUrl, { autoInteract: false }); | 
					
						
						|  | currentModel.scale.set(0.5); | 
					
						
						|  | currentModel.interactive = true; | 
					
						
						|  | currentModel.anchor.set(0.5, 0.5); | 
					
						
						|  | currentModel.position.set(window.innerWidth/2, window.innerHeight); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | currentModel.on("pointerdown", e => { | 
					
						
						|  | currentModel.offsetX = e.data.global.x - currentModel.position.x; | 
					
						
						|  | currentModel.offsetY = e.data.global.y - currentModel.position.y; | 
					
						
						|  | currentModel.dragging = true; | 
					
						
						|  | }); | 
					
						
						|  | currentModel.on("pointerup", e => { | 
					
						
						|  | currentModel.dragging = false; | 
					
						
						|  | var updateFn = currentModel.internalModel.motionManager.update; | 
					
						
						|  | var coreModel = currentModel.internalModel.coreModel; | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | }); | 
					
						
						|  | currentModel.on("pointermove", e => { | 
					
						
						|  | if (currentModel.dragging) { | 
					
						
						|  | currentModel.position.set( | 
					
						
						|  | e.data.global.x - currentModel.offsetX, | 
					
						
						|  | e.data.global.y - currentModel.offsetY | 
					
						
						|  | ); | 
					
						
						|  | } | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | document.querySelector("#my-live2d").addEventListener("wheel", e => { | 
					
						
						|  | e.preventDefault(); | 
					
						
						|  | currentModel.scale.set( | 
					
						
						|  | clamp(currentModel.scale.x + event.deltaY * -0.001, -0.5, 10) | 
					
						
						|  | ); | 
					
						
						|  | }); | 
					
						
						|  |  | 
					
						
						|  | let background = PIXI.Sprite.fromImage('./background.png'); | 
					
						
						|  | background.anchor.set(0.5); | 
					
						
						|  | background.x = app.screen.width / 2; | 
					
						
						|  | background.y = app.screen.height / 2; | 
					
						
						|  | background.height = app.screen.height; | 
					
						
						|  | background.width = app.screen.width; | 
					
						
						|  | app.stage.addChild(background); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  | app.stage.addChild(currentModel); | 
					
						
						|  |  | 
					
						
						|  | })(); | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  | 
					
						
						|  |  |