From 9dd2b6186b18c6d3281fe8c48f1ff4c2bc1fc8d7 Mon Sep 17 00:00:00 2001
From: luxiaotao1123 <t1341870251@163.com>
Date: 星期一, 14 十月 2024 14:00:56 +0800
Subject: [PATCH] #

---
 zy-acs-flow/src/map/tool.js |   51 +++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/zy-acs-flow/src/map/tool.js b/zy-acs-flow/src/map/tool.js
index fa64cbe..5a8e868 100644
--- a/zy-acs-flow/src/map/tool.js
+++ b/zy-acs-flow/src/map/tool.js
@@ -76,11 +76,15 @@
         default:
             break;
     }
+    if (sprite) {
+        sprite.blendMode = PIXI.BLEND_MODES.MULTIPLY;
+    }
     return sprite;
 }
 
 export const initSprite = (sprite, type) => {
     sprite.anchor.set(0.5);
+    // sprite.alpha = 1;
     sprite.cursor = 'pointer';
     sprite.eventMode = 'static';
     sprite.data = {
@@ -189,6 +193,17 @@
     }
 }
 
+export const copySprite = (sprite) => {
+    const copiedSprite = generateSprite(sprite.data.type)
+    initSprite(copiedSprite);
+    copiedSprite.position.set(sprite.position.x, sprite.position.y);
+    copiedSprite.scale.set(sprite.scale.x, sprite.scale.y);
+    copiedSprite.rotation = sprite.rotation;
+    copiedSprite.data = deepCopy(sprite.data);
+    copiedSprite.data.uuid = generateID();
+    return copiedSprite;
+}
+
 export const isSpriteInSelectionBox = (sprite, selectionBox) => {
     const spriteBounds = sprite.getBounds();
     const boxBounds = selectionBox.getBounds();
@@ -234,10 +249,11 @@
     }
 }
 
-
 export const showSelectedEffect = (sprite) => {
+    if (!sprite?.texture || !sprite?.texture?.valid) {
+        return;
+    }
     const { width, height } = sprite;
-
     const scale = sprite.scale.x;
     const sideLen = (Math.max(width, height) + 10) * scale;
     const color = themeMode === 'light' ? 0x273c75 : 0xffffff;
@@ -311,10 +327,41 @@
     effectHalfCircle.position.set(sprite.x, sprite.y);
 }
 
+export const rotationToNum = (rotation) => {
+    let res = rotation * 180 / Math.PI;
+    if (res < 0) {
+        res += 360;
+    } else if (res > 360) {
+        res -= 360;
+    }
+    return res;
+}
+
+export const rotationParseNum = (num) => {
+    return num * Math.PI / 180;
+}
+
+export const incrementSpriteNo = (str, incrementValue) => {
+    const match = str.match(/(\D*)(\d+)/);
+    if (match) {
+        const prefix = match[1];
+        const numberPart = match[2];
+        const newNumber = parseInt(numberPart, 10) + incrementValue;
+        const paddedNumber = newNumber.toString().padStart(numberPart.length, '0');
+        return `${prefix}${paddedNumber}`;
+    } else {
+        return str;
+    }
+}
+
 export const generateID = () => {
     return Date.now().toString(36) + Math.random().toString(36).substring(2);
 }
 
+export const deepCopy = (data) => {
+    return JSON.parse(JSON.stringify(data));
+}
+
 export const patchRaLayout = (param) => {
     const parentElement = document.getElementById('main-content');
     if (parentElement && parentElement.classList.contains('RaLayout-content')) {

--
Gitblit v1.9.1