| | |
| | | import ctuLoadedNoBattery from '/map/agv/ctuLoadedNoBattery.svg'; |
| | | import ctuLoadedHalfBattery from '/map/agv/ctuLoadedHalfBattery.svg'; |
| | | import ctuLoadedFullBattery from '/map/agv/ctuLoadedFullBattery.svg'; |
| | | // asr |
| | | import ASREmptyNoBattery from '/map/asr/ASREmptyNoBattery.svg'; |
| | | import ASREmptyHalfBattery from '/map/asr/ASREmptyHalfBattery.svg'; |
| | | import ASREmptyFullBattery from '/map/asr/ASREmptyFullBattery.svg'; |
| | | import ASRLoadedNoBattery from '/map/asr/ASRLoadedNoBattery.svg'; |
| | | import ASRLoadedHalfBattery from '/map/asr/ASRLoadedHalfBattery.svg'; |
| | | import ASRLoadedFullBattery from '/map/asr/ASRLoadedFullBattery.svg'; |
| | | |
| | | let app, mapContainer, themeMode; |
| | | let selectedSprite, effectOverlay, effectTicker; |
| | |
| | | sprite.width = 750; |
| | | sprite.height = 1300; |
| | | sprite.zIndex = DEVICE_Z_INDEX.AGV; |
| | | |
| | | // // sprite.width = 750; |
| | | // // sprite.height = 1300; |
| | | // sprite.zIndex = DEVICE_Z_INDEX.AGV; |
| | | // sprite.scale.set(12, 10) |
| | | break |
| | | case DEVICE_TYPE.POINT: |
| | | sprite = new PIXI.Sprite(PIXI.Texture.from(point, { resourceOptions: { scale: 1 } })); |
| | |
| | | if (!mapContainer || !sprite) { |
| | | return; |
| | | } |
| | | const data = sprite.data || (sprite.data = {}); |
| | | |
| | | if (data.rotationTween) { |
| | | data.rotationTween.stop(); |
| | | data.rotationTween = null; |
| | | } |
| | | // origin |
| | | let currentRotation = sprite.rotation + rotationOffset; |
| | | // target |
| | |
| | | // destination |
| | | const endRotation = sprite.rotation + rotationDifference; |
| | | |
| | | new TWEEDLE.Tween(sprite) |
| | | const rotationTween = new TWEEDLE.Tween(sprite) |
| | | .to({ rotation: endRotation }, ANIMATE_DURING_TIME) |
| | | .easing(TWEEDLE.Easing.Linear.None) |
| | | .onUpdate(() => { |
| | |
| | | } |
| | | }) |
| | | .start(); |
| | | data.rotationTween = rotationTween; |
| | | rotationTween.onComplete(() => { |
| | | if (data.rotationTween === rotationTween) { |
| | | data.rotationTween = null; |
| | | } |
| | | }); |
| | | }; |
| | | |
| | | export const incrementSpriteNo = (str, incrementValue) => { |
| | |
| | | return; |
| | | } |
| | | } |
| | | |
| | | // export const generateAgvSpriteTexture = (agvStatusMode) => { |
| | | // switch (agvStatusMode) { |
| | | // case AGV_STATUS_MODE.EMPTY_NO_BATTERY: |
| | | // return ASREmptyNoBattery; |
| | | // case AGV_STATUS_MODE.EMPTY_HALF_BATTERY: |
| | | // return ASREmptyHalfBattery; |
| | | // case AGV_STATUS_MODE.EMPTY_FULL_BATTERY: |
| | | // return ASREmptyFullBattery; |
| | | // case AGV_STATUS_MODE.LOADED_NO_BATTERY: |
| | | // return ASRLoadedNoBattery; |
| | | // case AGV_STATUS_MODE.LOADED_HALF_BATTERY: |
| | | // return ASRLoadedHalfBattery; |
| | | // case AGV_STATUS_MODE.LOADED_FULL_BATTERY: |
| | | // return ASRLoadedFullBattery; |
| | | // default: |
| | | // return; |
| | | // } |
| | | // } |
| | | |
| | | export function createAgvJobPanel(parentContainer, text) { |
| | | const panelScale = 4; |
| | |
| | | }); |
| | | agvText.anchor.set(0.5, 0.5); |
| | | agvText.position.set(0, 8); |
| | | // agvText.position.set(0, 18); |
| | | agvText.scale.set(MAP_MIRROR ? -1 : 1, 1) |
| | | agvSprite.addChild(agvText); |
| | | |
| | | agvSprite.updateTextRotation = () => { |
| | | if (agvText && agvSprite) { |
| | | agvText.rotation = -agvSprite.rotation - rotationParseNum(MAP_DEFAULT_ROTATION); |
| | | // agvText.rotation = -agvSprite.rotation - rotationParseNum(MAP_DEFAULT_ROTATION + 180); |
| | | } |
| | | }; |
| | | agvSprite.updateTextRotation(); |
| | |
| | | |
| | | beInsight(agvSprite, setCurSprite); |
| | | |
| | | new TWEEDLE.Tween(agvSprite.position) |
| | | if (agvSprite.data.moveTween) { |
| | | agvSprite.data.moveTween.stop(); |
| | | agvSprite.data.moveTween = null; |
| | | } |
| | | |
| | | const moveTween = new TWEEDLE.Tween(agvSprite.position) |
| | | .to({ |
| | | x: codeSprite.position.x, |
| | | y: codeSprite.position.y |
| | | }, ANIMATE_DURING_TIME) |
| | | .easing(TWEEDLE.Easing.Linear.None) |
| | | .start(); |
| | | agvSprite.data.moveTween = moveTween; |
| | | moveTween.onComplete(() => { |
| | | if (agvSprite.data?.moveTween === moveTween) { |
| | | agvSprite.data.moveTween = null; |
| | | } |
| | | }); |
| | | } |
| | | |
| | | const drawerAgvPath = (curZone, agvVo) => { |
| | |
| | | for (let i = mapContainer.children.length - 1; i >= 0; i--) { |
| | | const child = mapContainer.children[i]; |
| | | if (child?.data?.type === DEVICE_TYPE.AGV) { |
| | | if (child.data.moveTween) { |
| | | child.data.moveTween.stop(); |
| | | child.data.moveTween = null; |
| | | } |
| | | if (child.data.rotationTween) { |
| | | child.data.rotationTween.stop(); |
| | | child.data.rotationTween = null; |
| | | } |
| | | if (child.data.jobEffect) { |
| | | app?.ticker.remove(child.data.jobEffect._onTick); |
| | | child.removeChild(child.data.jobEffect); |
| | |
| | | const label = new PIXI.Text(text ?? '', labelStyle); |
| | | label.anchor.set(0.5); |
| | | label.position.set(centerX, centerY); |
| | | label.rotation = rotationParseNum(MAP_DEFAULT_ROTATION); |
| | | label.rotation = -rotationParseNum(MAP_DEFAULT_ROTATION); |
| | | label.scale.set(MAP_MIRROR ? -1 : 1, 1); |
| | | draft.addChild(label); |
| | | }; |
| | |
| | | .easing(TWEEDLE.Easing.Quadratic.Out) |
| | | .to(targetPos, 500) |
| | | .start(); |
| | | }; |
| | | }; |