(async function() { if(typeof PIXI!="object") { if(typeof loadfail=="function") { loadfail("libpointerfx.js: PIXI(type of "+(typeof PIXI)+") is not an object"); } else { window.alert("libpointerfx.js: PIXI(type of "+(typeof PIXI)+") is not an object"); } return; } if(typeof Transition!="function") { if(typeof loadfail=="function") { loadfail("libpointerfx.js: Transition(type of "+(typeof Transition)+") is not an function"); } else { window.alert("libpointerfx.js: Transition(type of "+(typeof Transition)+") is not an function"); } return; } if(typeof libmain!="object") { if(typeof loadfail=="function") { loadfail("libpointerfx.js: libmain(type of "+(typeof libmain)+") is not an object"); } else { window.alert("libpointerfx.js: libmain(type of "+(typeof libmain)+") is not an object"); } return; } var libpointerfx= {}; libpointerfx.fx_template_list=[]; libpointerfx.fx_instance_map= {}; libpointerfx.fx_pointer_texture=PIXI.Texture.WHITE; // pack sprite sheet into PIXI.GifSprite libpointerfx.fx_tail_anim_textures=[]; var tail_base=await PIXI.Assets.load({"src":await AssetManager.loadWithCache("./assets/sprite-pointer_tail.png"), "loadParser":"loadTextures"}); for(var i=9; i>=0; i--) { var crop_rect = new PIXI.Rectangle(i*32, 0, 32, 32); var t=PIXI.Texture.from(tail_base.source); t.frame.x=i*32; t.frame.y=0; t.frame.width=32; t.frame.height=32; t.updateUvs(); libpointerfx.fx_tail_anim_textures.push(t); } var on_pointer_down=function(event) { var pointer_id=event.pointerType+event.pointerId; var fx_instance = new PIXI.Sprite(libpointerfx.fx_pointer_texture); fx_instance.anchor.set(0.5, 0.5); fx_instance.position.copyFrom(event.global); fx_instance.width=4; fx_instance.height=4; libpointerfx.fx_instance_map[pointer_id] = fx_instance; libmain.scenes.pointer_fx.root.addChild(fx_instance); }; var on_pointer_move=function(event) { var pointer_id=event.pointerType+event.pointerId; if(!(pointer_id in libpointerfx.fx_instance_map)) { //console.warn("warn: pointer_id `"+pointer_id+"` is NOT in libpointerfx.fx_instance_map"); return; } libpointerfx.fx_instance_map[pointer_id].position.copyFrom(event.global); var fx_instance = new PIXI.AnimatedSprite(libpointerfx.fx_tail_anim_textures); fx_instance.anchor.set(0.5, 0.5); fx_instance.position.copyFrom(event.global); fx_instance.width=32; fx_instance.height=32; fx_instance.animationSpeed=0.4; fx_instance.autoUpdate=true; fx_instance.currentFrame=0; fx_instance.loop=true; fx_instance.play(); var func_remove=function() { libmain.scenes.pointer_fx.root.removeChild(fx_instance); }; libmain.scenes.pointer_fx.root.addChild(fx_instance); var fx_end_transition=new Transition(); fx_end_transition.obj=fx_instance; fx_end_transition.key="alpha"; fx_end_transition.startval=1.0; fx_end_transition.endval=0.0; fx_end_transition.duration=300; fx_end_transition.onend=func_remove; fx_end_transition.start(); }; var on_pointer_up=function(event) { var pointer_id=event.pointerType+event.pointerId; if(!(pointer_id in libpointerfx.fx_instance_map)) { //console.warn("warn: pointer_id `"+pointer_id+"` is NOT in libpointerfx.fx_instance_map"); return; } var fx_instance_toend=libpointerfx.fx_instance_map[pointer_id]; delete(libpointerfx.fx_instance_map[pointer_id]); var func_remove=function() { libmain.scenes.pointer_fx.root.removeChild(fx_instance_toend); }; var fx_end_transition=new Transition(); fx_end_transition.obj=fx_instance_toend; fx_end_transition.key="alpha"; fx_end_transition.startval=1.0; fx_end_transition.endval=0.0; fx_end_transition.duration=300; fx_end_transition.onend=func_remove; fx_end_transition.start(); }; libmain.scenes.pointer_fx.root.interactiveChildren=false; libmain.scenes.pointer_fx.judge_rect.eventMode="static"; libmain.scenes.pointer_fx.judge_rect.alpha=0.0; libmain.scenes.pointer_fx.judge_rect.on("pointerdown", on_pointer_down); libmain.scenes.pointer_fx.judge_rect.on("pointermove", on_pointer_move); libmain.scenes.pointer_fx.judge_rect.on("pointerup", on_pointer_up); libmain.scenes.pointer_fx.judge_rect.on("pointerout", on_pointer_up); libmain.scenes.pointer_fx.judge_rect.x=0; libmain.scenes.pointer_fx.judge_rect.y=0; libmain.scenes.pointer_fx.judge_rect.anchor.set(0, 0); //libmain.settings.hud.show_pointerfx window.libpointerfx=libpointerfx; console.log("[libpointerfx] initialized successfully."); })();