init: 路桥一把手孪生 大屏看板 项目首次入库

This commit is contained in:
XingCheng3
2026-05-29 14:50:51 +08:00
commit 6aa246f110
365 changed files with 89222 additions and 0 deletions

View File

@@ -0,0 +1,12 @@
let SelectedObjects
let ObjMaterial
let THREEJS
onmessage = function(e) {
SelectedObjects = e.data.SelectedObjects
playMoveTrigger1()
}
function playMoveTrigger1() {
console.log(SelectedObjects)
}

View File

@@ -0,0 +1,54 @@
let ObjectNames
let Values
let Dir
let ModelRotateWorker
let AnimObjectArray
let ModelMotionAttributeWorker
let RotationValue
let RotateSpeed
let Direction = 1
onmessage = function (e) {
ObjectNames = e.data.ObjectNames
Values = e.data.Values
Dir = e.data.Dir
ModelRotateWorker = e.data.ModelRotateWorker
RotationValue = e.data.RotationValue
RotateSpeed = e.data.RotateSpeed
modelRotationWorker(e.data.ObjectNames, e.data.Dir, e.data.Values, e.data.RotationValue)
}
function modelRotationWorker(objectNames, Dir, Values, rotationValue) {
let m = ModelRotateWorker
Dir = parseInt(Dir)
if (m.state === Dir) return
if (Dir === 0) {
m.doAnimation = false
m.state = 0
self.close();
clearInterval(m.myVarSetInterval)
} else {
clearInterval(m.myVarSetInterval)
m.state = Dir
if (Dir === 1) {
Direction = Values / Math.abs(Values)
m.doAnimation = true
m.myVarSetInterval = setInterval(()=> {
if(m.state === 1){
rotationValue += RotateSpeed * Direction
self.postMessage({
objectNames: objectNames,
rotation: rotationValue
})
} else {
clearInterval(m.myVarSetInterval)
// Worker 线程结束
self.close();
m.doAnimation = false
}
},500 / (3 * Math.abs(Values)))
}
}
}

View File

@@ -0,0 +1,157 @@
var IsOk
var MoveTrigger
var craftPlaySolveType
onmessage = function(e) {
IsOk = e.data.isOk
MoveTrigger = JSON.parse(e.data.moveTrigger)
craftPlaySolveType = e.data.craftPlaySolveType
playMoveTrigger1(e.data.ActID, e.data.State)
}
function playMoveTrigger1(ActID, moveStatus) {
// debugger
if (!IsOk) return
if (!MoveTrigger) return
if (MoveTrigger.moveStatusPosition !== 0) return
if (ActID === '') return
if (MoveTrigger.moveStatus === moveStatus) {
return
} else {
MoveTrigger.moveStatus = moveStatus
}
const m = MoveTrigger
if (moveStatus === 0) {
clearInterval(m.myVarSetInterval)
m.doAnimation = false
m.pausedFrame = m.currentFrame
self.postMessage({
ActID: ActID,
currentFrameData: m.animOperations.OPERATION.frames[m.pausedFrame + 1].objStates,
currentFrame: m.pausedFrame + 1,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: m.pausedFrame + 1,
frameType: ''
})
} else if (moveStatus === 1) {
// 播放时,只能暂停和复原。不允许继续播放
if (m.doAnimation === true) return
m.doAnimation = true
m.currentFrame = m.pausedFrame
} else if (moveStatus === 2) {
clearInterval(m.myVarSetInterval)
m.moveStatusPosition = 0
m.moveStatus = 0
m.currentFrame = 0
m.pausedFrame = 0
self.postMessage({
ActID: ActID,
currentFrameData: m.animOperations.OPERATION.frames[0].objStates,
currentFrame: 0,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: 0,
frameType: ''
})
// Worker 线程结束
self.close()
}
m.myVarSetInterval = setInterval(() => {
if (m.currentFrame < m.animOperations.OPERATION.frames.length && m.doAnimation === true) {
const frameIndex = m.currentFrame
const frameDataPlay = m.animOperations.OPERATION.frames[frameIndex].objStates
const frameDataCraft = m.animOperations.OPERATION.frames[frameIndex].crafts
const frameDataVisible = m.animOperations.OPERATION.frames[frameIndex].visibles
const frameDataRotation = m.animOperations.OPERATION.frames[frameIndex].rotations
const frameDataAttach = m.animOperations.OPERATION.frames[frameIndex].attachs
for (const moveData of frameDataPlay) {
self.postMessage({
ActID: ActID,
currentFrame: m.currentFrame,
currentFrameData: moveData,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: m.currentFrame,
frameType: craftPlaySolveType.FrameData
})
}
for (const craftData of frameDataCraft) {
self.postMessage({
ActID: ActID,
currentFrame: m.currentFrame,
currentFrameData: craftData,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: m.currentFrame,
frameType: craftPlaySolveType.craft
})
}
for (const visibleData of frameDataVisible) {
self.postMessage({
ActID: ActID,
currentFrame: m.currentFrame,
currentFrameData: visibleData,
frameDataPlay: m.myVarSetInterval,
pausedFrame: m.currentFrame,
frameType: craftPlaySolveType.visible
})
}
for (const rotationData of frameDataRotation) {
self.postMessage({
ActID: ActID,
currentFrame: m.currentFrame,
currentFrameData: rotationData,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: m.currentFrame,
frameType: craftPlaySolveType.rotation
})
}
for (const attachData of frameDataAttach) {
self.postMessage({
ActID: ActID,
currentFrame: m.currentFrame,
currentFrameData: attachData,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: m.currentFrame,
frameType: craftPlaySolveType.attach
})
}
m.currentFrame++
} else {
// 结束仿真
if (moveStatus === 2) {
m.moveStatusPosition = 0
m.moveStatus = 0
m.currentFrame = 0
m.pausedFrame = 0
self.postMessage({
ActID: ActID,
currentFrame: 0,
currentFrameData: m.animOperations.OPERATION.frames[0].objStates,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: 0,
frameType: ''
})
// Worker 线程结束
self.close()
}
clearInterval(m.myVarSetInterval)
// if we finished the entire simulation, we need to reset the frames
if (m.doAnimation === true) {
m.currentFrame = 0
m.pausedFrame = 0
self.postMessage({
ActID: ActID,
currentFrame: 0,
currentFrameData: m.animOperations.OPERATION.frames[0].objStates,
myVarSetInterval: m.myVarSetInterval,
pausedFrame: 0,
frameType: ''
})
// Worker 线程结束
self.close()
}
m.doAnimation = false
}
}, m.simPaceTime)
}