渲染顺序功能
This commit is contained in:
1 parent
aabf4ff693
commit
c041503004
22 files changed
+1904
-1291
No files matched your search
@@ -0,0 +1,73 @@
|
||||
import { build } from 'esbuild'
|
||||
|
||||
const bundled = await build({
|
||||
bundle: true,
|
||||
entryPoints: ['src/views/stage/renderLayer.ts'],
|
||||
format: 'esm',
|
||||
platform: 'node',
|
||||
write: false,
|
||||
})
|
||||
const { resolveRenderTarget } = await import(
|
||||
`data:text/javascript;base64,${Buffer.from(bundled.outputFiles[0].text).toString('base64')}`
|
||||
)
|
||||
|
||||
const spines = [{
|
||||
id: 7,
|
||||
enabled: true,
|
||||
status: 'ready',
|
||||
slots: [
|
||||
{ name: 'slot_back', order: 0 },
|
||||
{ name: 'slot_body', order: 1 },
|
||||
{ name: 'slot_hand', order: 2 },
|
||||
],
|
||||
}]
|
||||
const base = {
|
||||
renderLayerMode: 'slot',
|
||||
renderLayerSpineId: 7,
|
||||
renderLayerSlotName: 'slot_hand',
|
||||
renderLayerSlotPosition: 'above',
|
||||
renderLayerFollowAttachment: true,
|
||||
}
|
||||
|
||||
function expect(actual, expected, label) {
|
||||
if (JSON.stringify(actual) !== JSON.stringify(expected)) {
|
||||
throw new Error(`${label}: expected ${JSON.stringify(expected)}, got ${JSON.stringify(actual)}`)
|
||||
}
|
||||
}
|
||||
|
||||
expect(resolveRenderTarget(spines, { ...base, renderLayerMode: 'top' }), null, '最上层不应挂槽位')
|
||||
expect(
|
||||
resolveRenderTarget(spines, base),
|
||||
{ spineId: 7, slotName: 'slot_hand', targetSlotName: 'slot_hand', followAttachment: true },
|
||||
'图片之上应挂到目标插槽',
|
||||
)
|
||||
expect(
|
||||
resolveRenderTarget(spines, { ...base, renderLayerSlotPosition: 'below' }),
|
||||
{ spineId: 7, slotName: 'slot_body', targetSlotName: 'slot_hand', followAttachment: false },
|
||||
'图片之下应挂到 drawOrder 前一个插槽',
|
||||
)
|
||||
expect(
|
||||
resolveRenderTarget(spines, { ...base, renderLayerSlotPosition: 'below' }, ['slot_back', 'slot_hand', 'slot_body']),
|
||||
{ spineId: 7, slotName: 'slot_back', targetSlotName: 'slot_hand', followAttachment: false },
|
||||
'动画 drawOrder 变化时应按当前顺序取前一个插槽',
|
||||
)
|
||||
expect(
|
||||
resolveRenderTarget(spines, { ...base, renderLayerSlotPosition: 'below' }, ['slot_hand', 'slot_body', 'slot_back']),
|
||||
null,
|
||||
'当前 drawOrder 中目标位于最底层时无法放在其下方',
|
||||
)
|
||||
expect(
|
||||
resolveRenderTarget(spines, { ...base, renderLayerSlotName: 'slot_body', renderLayerSlotPosition: 'below' }, ['slot_hand', 'slot_body', 'slot_back']),
|
||||
{ spineId: 7, slotName: 'slot_hand', targetSlotName: 'slot_body', followAttachment: false },
|
||||
'当前 drawOrder 中应取紧邻的前一个插槽',
|
||||
)
|
||||
expect(
|
||||
resolveRenderTarget(spines, { ...base, renderLayerSlotName: 'slot_back', renderLayerSlotPosition: 'below' }),
|
||||
null,
|
||||
'第一个插槽下方没有可用层级',
|
||||
)
|
||||
expect(resolveRenderTarget(spines, { ...base, renderLayerSlotName: 'missing' }), null, '插槽不存在时应回退')
|
||||
expect(resolveRenderTarget([{ ...spines[0], enabled: false }], base), null, 'Spine 停用时应回退')
|
||||
expect(resolveRenderTarget([{ ...spines[0], status: 'loading' }], base), null, 'Spine 未就绪时应回退')
|
||||
|
||||
console.log('渲染层级解析校验通过:最上层 / 插槽之上 / 插槽之下 / 动画 drawOrder / 失效回退')
|
||||
Reference in new issue
Block a user