From 42f034742a7d03c392b1f0b058d33e190c36cb07 Mon Sep 17 00:00:00 2001 From: thanhtu2411 Date: Tue, 21 May 2024 10:02:45 +0700 Subject: [PATCH] Import shader graph --- assets/cc-game/TA/Scene/effect.effect | 45 - assets/cc-game/TA/Scene/effect.effect.meta | 11 - assets/cc-game/TA/Scene/mainscene-TA.scene | 2 +- assets/cc-game/TA/Shader.meta | 9 + .../TA/Shader/New Shader Graph.shadergraph | 132 + .../Shader/New Shader Graph.shadergraph.meta | 11 + assets/cc-game/scene/mainscene.scene | 2280 +---------------- extensions/shader-graph/README.md | 149 ++ extensions/shader-graph/README.zh-CN.md | 147 ++ .../shader-graph/dist/block-forge/block.js | 419 +++ .../shader-graph/dist/block-forge/enum.js | 100 + .../shader-graph/dist/block-forge/event.js | 69 + .../shader-graph/dist/block-forge/forge.js | 616 +++++ .../shader-graph/dist/block-forge/graph.js | 37 + .../shader-graph/dist/block-forge/index.js | 37 + .../dist/block-forge/interface/block.js | 3 + .../dist/block-forge/interface/forge.js | 6 + .../dist/block-forge/interface/graph.js | 3 + .../dist/block-forge/interface/index.js | 8 + .../dist/block-forge/interface/pin.js | 6 + .../dist/block-forge/internal/index.js | 18 + .../dist/block-forge/internal/pin-boolean.js | 59 + .../dist/block-forge/internal/pin-color.js | 65 + .../block-forge/internal/pin-dynamic-enum.js | 112 + .../dist/block-forge/internal/pin-enum.js | 71 + .../dist/block-forge/internal/pin-float.js | 58 + .../dist/block-forge/internal/pin-int.js | 58 + .../dist/block-forge/internal/pin-mat3.js | 83 + .../dist/block-forge/internal/pin-mat4.js | 87 + .../dist/block-forge/internal/pin-string.js | 60 + .../block-forge/internal/pin-texture2D.js | 88 + .../block-forge/internal/pin-textureCube.js | 62 + .../dist/block-forge/internal/pin-unknown.js | 22 + .../dist/block-forge/internal/pin-vec2.js | 75 + .../dist/block-forge/internal/pin-vec3.js | 75 + .../dist/block-forge/internal/pin-vec4.js | 77 + .../dist/block-forge/module/forge.js | 148 ++ .../shader-graph/dist/block-forge/pin.js | 256 ++ .../shader-graph/dist/block-forge/undo.js | 93 + .../shader-graph/dist/block-forge/utils.js | 85 + .../dist/contributions/assets-menu.js | 39 + .../dist/contributions/effect-header.js | 47 + .../dist/contributions/internal.js | 3 + .../dist/contributions/preview-scene.js | 20 + .../preview/Interactive-preview.js | 185 ++ .../dist/contributions/preview/buffer.js | 206 ++ .../dist/contributions/preview/index.js | 22 + .../contributions/preview/preview-base.js | 17 + .../preview/shader-graph-preview.js | 185 ++ .../shader-graph/dist/contributions/scene.js | 112 + extensions/shader-graph/dist/effect-utils.js | 23 + extensions/shader-graph/dist/hooks.js | 21 + .../shader-graph/dist/importer/index.js | 39 + .../dist/importer/shader-graph-3.8.js | 43 + .../dist/importer/shader-graph-handler.js | 93 + .../dist/importer/shader-graph.js | 234 ++ .../shader-graph/dist/importer/utils-3.8.js | 121 + extensions/shader-graph/dist/main.js | 36 + .../components/float-window/base/const.js | 18 + .../components/float-window/base/header.js | 66 + .../components/float-window/base/index.js | 157 ++ .../components/float-window/base/resizer.js | 211 ++ .../components/float-window/common.js | 109 + .../float-window/create-node/index.js | 327 +++ .../float-window/custom-nodes/index.js | 66 + .../float-window/graph-property/index.js | 352 +++ .../components/float-window/index.js | 52 + .../components/float-window/internal.js | 11 + .../components/float-window/preview/index.js | 317 +++ .../components/float-window/utils.js | 102 + .../dist/panels/shader-graph/float-windows.js | 104 + .../dist/panels/shader-graph/index.js | 91 + .../dist/panels/shader-graph/mask.js | 118 + .../dist/panels/shader-graph/shortcuts.js | 53 + .../dist/panels/shader-graph/view.js | 95 + .../dist/shader-graph/base/base-mgr.js | 39 + .../dist/shader-graph/base/forge-mgr.js | 38 + .../dist/shader-graph/base/graph-asset-mgr.js | 264 ++ .../shader-graph/base/graph-config-mgr.js | 113 + .../dist/shader-graph/base/graph-data-mgr.js | 233 ++ .../shader-graph/base/graph-editor-mgr.js | 282 ++ .../shader-graph/base/graph-property-mgr.js | 151 ++ .../dist/shader-graph/base/index.js | 24 + .../dist/shader-graph/base/internal.js | 56 + .../dist/shader-graph/base/mask-mgr.js | 55 + .../dist/shader-graph/base/message-mgr.js | 122 + .../dist/shader-graph/declare/block.js | 190 ++ .../dist/shader-graph/declare/graph.js | 118 + .../dist/shader-graph/declare/index.js | 69 + .../dist/shader-graph/global-exports.js | 21 + .../shader-graph/dist/shader-graph/index.js | 13 + .../dist/shader-graph/interface.js | 21 + .../dist/shader-graph/internal.js | 3 + .../dist/shader-graph/menu/index.js | 103 + .../shader-graph/menu/template/base-menu.js | 96 + .../shader-graph/dist/shader-graph/utils.js | 80 + extensions/shader-graph/i18n/en.js | 112 + extensions/shader-graph/i18n/zh.js | 112 + extensions/shader-graph/package.json | 271 ++ ...½¿ç”¨å±žæ€§èŠ‚点.png | Bin 0 -> 271803 bytes ...¿ç”¨æ™®é€šèŠ‚点.png | Bin 0 -> 262058 bytes ...³é”®åˆ›å»ºèµ„源.png | Bin 0 -> 410300 bytes ...¼å…¥æ‰©å±•æ–‡ä»¶.png | Bin 0 -> 17483 bytes ...¥æ‰©å±•æ–‡ä»¶å¤¹.png | Bin 0 -> 17959 bytes ...€æŸ¥å™¨é€‰æ‹©effect.png | Bin 0 -> 143137 bytes ...±žæ€§ç±»åž‹èŠ‚点.png | Bin 0 -> 8095 bytes .../readme/初始面板.png | Bin 0 -> 478418 bytes ...ˆ›å»ºåŽçš„资源.png | Bin 0 -> 30887 bytes ...ˆ›å»ºå±žæ€§çª—口.png | Bin 0 -> 17835 bytes ...ˆ›å»ºèŠ‚点菜单.png | Bin 0 -> 43450 bytes .../整体结构-EN.png | Bin 0 -> 201672 bytes .../readme/整体结构.png | Bin 0 -> 194917 bytes .../readme/效果图.png | Bin 0 -> 1226682 bytes ...®é€šç±»åž‹èŠ‚点.png | Bin 0 -> 10647 bytes .../自定义节点.png | Bin 0 -> 13126 bytes ...®šä¹‰èŠ‚点菜单.png | Bin 0 -> 40101 bytes .../readme/预览窗口.png | Bin 0 -> 31430 bytes extensions/shader-graph/shader-node/README.md | 216 ++ .../shader-graph/shader-node/README.zh-CN.md | 216 ++ .../shader-node/assets/graph.meta | 9 + .../shader-node/assets/graph/index.ts | 1 + .../shader-node/assets/graph/index.ts.meta | 9 + .../shader-node/assets/graph/register.ts | 61 + .../shader-node/assets/graph/register.ts.meta | 9 + .../shader-node/assets/operation.meta | 12 + .../shader-node/assets/operation/base.ts | 200 ++ .../shader-node/assets/operation/base.ts.meta | 9 + .../shader-node/assets/operation/context.ts | 21 + .../assets/operation/context.ts.meta | 9 + .../assets/operation/generated.meta | 9 + .../assets/operation/generated/input.meta | 9 + .../operation/generated/input/basic.meta | 9 + .../generated/input/basic/boolean.ts | 38 + .../generated/input/basic/boolean.ts.meta | 9 + .../operation/generated/input/basic/float.ts | 38 + .../generated/input/basic/float.ts.meta | 9 + .../operation/generated/input/basic/slider.ts | 39 + .../generated/input/basic/slider.ts.meta | 9 + .../generated/input/basic/vector2.ts | 40 + .../generated/input/basic/vector2.ts.meta | 9 + .../generated/input/basic/vector3.ts | 42 + .../generated/input/basic/vector3.ts.meta | 9 + .../generated/input/basic/vector4.ts | 44 + .../generated/input/basic/vector4.ts.meta | 9 + .../assets/operation/generated/math.meta | 9 + .../operation/generated/math/advanced.meta | 9 + .../generated/math/advanced/absolute.ts | 37 + .../generated/math/advanced/absolute.ts.meta | 9 + .../generated/math/advanced/exponential.ts | 37 + .../math/advanced/exponential.ts.meta | 9 + .../generated/math/advanced/length.ts | 37 + .../generated/math/advanced/length.ts.meta | 9 + .../operation/generated/math/advanced/log.ts | 37 + .../generated/math/advanced/log.ts.meta | 9 + .../generated/math/advanced/modulo.ts | 39 + .../generated/math/advanced/modulo.ts.meta | 9 + .../generated/math/advanced/negate.ts | 37 + .../generated/math/advanced/negate.ts.meta | 9 + .../generated/math/advanced/normalize.ts | 37 + .../generated/math/advanced/normalize.ts.meta | 9 + .../generated/math/advanced/posterize.ts | 39 + .../generated/math/advanced/posterize.ts.meta | 9 + .../math/advanced/reciprocal-square.ts | 37 + .../math/advanced/reciprocal-square.ts.meta | 9 + .../generated/math/advanced/reciprocal.ts | 37 + .../math/advanced/reciprocal.ts.meta | 9 + .../operation/generated/math/basic.meta | 9 + .../operation/generated/math/basic/add.ts | 40 + .../generated/math/basic/add.ts.meta | 9 + .../operation/generated/math/basic/divide.ts | 40 + .../generated/math/basic/divide.ts.meta | 9 + .../generated/math/basic/multiply.ts | 40 + .../generated/math/basic/multiply.ts.meta | 9 + .../operation/generated/math/basic/power.ts | 40 + .../generated/math/basic/power.ts.meta | 9 + .../operation/generated/math/basic/square.ts | 37 + .../generated/math/basic/square.ts.meta | 9 + .../generated/math/basic/substract.ts | 40 + .../generated/math/basic/substract.ts.meta | 9 + .../operation/generated/math/derivative.meta | 9 + .../generated/math/derivative/ddx.ts | 37 + .../generated/math/derivative/ddx.ts.meta | 9 + .../generated/math/derivative/ddxy.ts | 37 + .../generated/math/derivative/ddxy.ts.meta | 9 + .../generated/math/derivative/ddy.ts | 37 + .../generated/math/derivative/ddy.ts.meta | 9 + .../generated/math/interpolation.meta | 9 + .../math/interpolation/inverse-lerp.ts | 41 + .../math/interpolation/inverse-lerp.ts.meta | 9 + .../generated/math/interpolation/lerp.ts | 42 + .../generated/math/interpolation/lerp.ts.meta | 9 + .../math/interpolation/smoothstep.ts | 41 + .../math/interpolation/smoothstep.ts.meta | 9 + .../operation/generated/math/range.meta | 9 + .../operation/generated/math/range/clamp.ts | 41 + .../generated/math/range/clamp.ts.meta | 9 + .../generated/math/range/fraction.ts | 37 + .../generated/math/range/fraction.ts.meta | 9 + .../operation/generated/math/range/max.ts | 39 + .../generated/math/range/max.ts.meta | 9 + .../operation/generated/math/range/min.ts | 39 + .../generated/math/range/min.ts.meta | 9 + .../generated/math/range/one-minus.ts | 37 + .../generated/math/range/one-minus.ts.meta | 9 + .../generated/math/range/random-range.ts | 41 + .../generated/math/range/random-range.ts.meta | 9 + .../operation/generated/math/range/remap.ts | 42 + .../generated/math/range/remap.ts.meta | 9 + .../generated/math/range/saturate.ts | 37 + .../generated/math/range/saturate.ts.meta | 9 + .../operation/generated/math/round.meta | 9 + .../operation/generated/math/round/ceil.ts | 37 + .../generated/math/round/ceil.ts.meta | 9 + .../operation/generated/math/round/floor.ts | 37 + .../generated/math/round/floor.ts.meta | 9 + .../operation/generated/math/round/round.ts | 37 + .../generated/math/round/round.ts.meta | 9 + .../operation/generated/math/round/sign.ts | 37 + .../generated/math/round/sign.ts.meta | 9 + .../operation/generated/math/round/step.ts | 39 + .../generated/math/round/step.ts.meta | 9 + .../generated/math/round/truncate.ts | 37 + .../generated/math/round/truncate.ts.meta | 9 + .../generated/math/trigonometry.meta | 9 + .../generated/math/trigonometry/arccosine.ts | 37 + .../math/trigonometry/arccosine.ts.meta | 9 + .../generated/math/trigonometry/arcsine.ts | 37 + .../math/trigonometry/arcsine.ts.meta | 9 + .../generated/math/trigonometry/arctangent.ts | 37 + .../math/trigonometry/arctangent.ts.meta | 9 + .../math/trigonometry/arctangent2.ts | 39 + .../math/trigonometry/arctangent2.ts.meta | 9 + .../generated/math/trigonometry/cosine.ts | 37 + .../math/trigonometry/cosine.ts.meta | 9 + .../math/trigonometry/degrees-to-radians.ts | 37 + .../trigonometry/degrees-to-radians.ts.meta | 9 + .../math/trigonometry/hyperbolic-cosine.ts | 37 + .../trigonometry/hyperbolic-cosine.ts.meta | 9 + .../math/trigonometry/hyperbolic-sine.ts | 37 + .../math/trigonometry/hyperbolic-sine.ts.meta | 9 + .../generated/math/trigonometry/hyperbolic.ts | 37 + .../math/trigonometry/hyperbolic.ts.meta | 9 + .../math/trigonometry/radians-to-degrees.ts | 37 + .../trigonometry/radians-to-degrees.ts.meta | 9 + .../generated/math/trigonometry/sine.ts | 37 + .../generated/math/trigonometry/sine.ts.meta | 9 + .../generated/math/trigonometry/tangent.ts | 37 + .../math/trigonometry/tangent.ts.meta | 9 + .../operation/generated/math/vector.meta | 9 + .../generated/math/vector/cross-product.ts | 39 + .../math/vector/cross-product.ts.meta | 9 + .../generated/math/vector/distance.ts | 40 + .../generated/math/vector/distance.ts.meta | 9 + .../generated/math/vector/dot-product.ts | 40 + .../generated/math/vector/dot-product.ts.meta | 9 + .../generated/math/vector/fresnel.ts | 42 + .../generated/math/vector/fresnel.ts.meta | 9 + .../generated/math/vector/projection.ts | 39 + .../generated/math/vector/projection.ts.meta | 9 + .../generated/math/vector/reflection.ts | 39 + .../generated/math/vector/reflection.ts.meta | 9 + .../generated/math/vector/rejection.ts | 39 + .../generated/math/vector/rejection.ts.meta | 9 + .../generated/math/vector/sphere-mask.ts | 43 + .../generated/math/vector/sphere-mask.ts.meta | 9 + .../assets/operation/generated/math/wave.meta | 9 + .../generated/math/wave/noise-sine-wave.ts | 43 + .../math/wave/noise-sine-wave.ts.meta | 9 + .../generated/math/wave/sawtooth-wave.ts | 37 + .../generated/math/wave/sawtooth-wave.ts.meta | 9 + .../generated/math/wave/square-wave.ts | 37 + .../generated/math/wave/square-wave.ts.meta | 9 + .../generated/math/wave/triangle-wave.ts | 37 + .../generated/math/wave/triangle-wave.ts.meta | 9 + .../operation/generated/procedural.meta | 9 + .../operation/generated/procedural/noise.meta | 9 + .../procedural/noise/gradient-noise.ts | 43 + .../procedural/noise/gradient-noise.ts.meta | 9 + .../procedural/noise/simple-noise.ts | 43 + .../procedural/noise/simple-noise.ts.meta | 9 + .../operation/generated/procedural/shape.meta | 9 + .../generated/procedural/shape/ellipse.ts | 45 + .../procedural/shape/ellipse.ts.meta | 9 + .../generated/procedural/shape/rectangle.ts | 43 + .../procedural/shape/rectangle.ts.meta | 9 + .../procedural/shape/round-rectangle.ts | 45 + .../procedural/shape/round-rectangle.ts.meta | 9 + .../assets/operation/generated/uv.meta | 9 + .../generated/uv/polar-coordinates.ts | 47 + .../generated/uv/polar-coordinates.ts.meta | 9 + .../generated/uv/rotate-coordinates.ts | 45 + .../generated/uv/rotate-coordinates.ts.meta | 9 + .../generated/uv/tilling-and-offset.ts | 47 + .../generated/uv/tilling-and-offset.ts.meta | 9 + .../shader-node/assets/operation/index.ts | 107 + .../assets/operation/index.ts.meta | 9 + .../shader-node/assets/operation/manual.meta | 9 + .../assets/operation/manual/artistic.meta | 12 + .../assets/operation/manual/channel.meta | 12 + .../operation/manual/channel/combine.ts | 53 + .../operation/manual/channel/combine.ts.meta | 9 + .../assets/operation/manual/channel/split.ts | 38 + .../operation/manual/channel/split.ts.meta | 9 + .../assets/operation/manual/index.ts | 27 + .../assets/operation/manual/index.ts.meta | 9 + .../assets/operation/manual/input.meta | 12 + .../operation/manual/input/InputNode.ts.meta | 9 + .../assets/operation/manual/input/basic.meta | 12 + .../operation/manual/input/basic/color.ts | 28 + .../manual/input/basic/color.ts.meta | 9 + .../operation/manual/input/basic/time.ts | 49 + .../operation/manual/input/basic/time.ts.meta | 9 + .../operation/manual/input/geometry.meta | 12 + .../manual/input/geometry/normal-vector.ts | 48 + .../input/geometry/normal-vector.ts.meta | 9 + .../manual/input/geometry/position.ts | 50 + .../manual/input/geometry/position.ts.meta | 9 + .../operation/manual/input/geometry/uv.ts | 34 + .../manual/input/geometry/uv.ts.meta | 9 + .../manual/input/geometry/vertex-color.ts | 25 + .../input/geometry/vertex-color.ts.meta | 9 + .../manual/input/geometry/view-direction.ts | 51 + .../input/geometry/view-direction.ts.meta | 9 + .../operation/manual/input/input-node.ts | 7 + .../operation/manual/input/input-node.ts.meta | 9 + .../operation/manual/input/property-node.ts | 66 + .../manual/input/property-node.ts.meta | 9 + .../operation/manual/input/texture.meta | 12 + .../manual/input/texture/cubemap-asset.ts | 7 + .../input/texture/cubemap-asset.ts.meta | 9 + .../manual/input/texture/sample-cubemap.ts | 34 + .../input/texture/sample-cubemap.ts.meta | 9 + .../manual/input/texture/sample-texture2d.ts | 96 + .../input/texture/sample-texture2d.ts.meta | 9 + .../manual/input/texture/texture-asset.ts | 7 + .../input/texture/texture-asset.ts.meta | 9 + .../manual/input/texture/texture2d-asset.ts | 7 + .../input/texture/texture2d-asset.ts.meta | 9 + .../operation/manual/input/variable.meta | 9 + .../manual/input/variable/get-local-var.ts | 41 + .../input/variable/get-local-var.ts.meta | 9 + .../input/variable/register-local-var.ts | 42 + .../input/variable/register-local-var.ts.meta | 9 + .../assets/operation/manual/logic.meta | 9 + .../assets/operation/manual/logic/all.ts | 45 + .../assets/operation/manual/logic/all.ts.meta | 9 + .../assets/operation/manual/logic/and.ts | 40 + .../assets/operation/manual/logic/and.ts.meta | 9 + .../assets/operation/manual/logic/any.ts | 45 + .../assets/operation/manual/logic/any.ts.meta | 9 + .../assets/operation/manual/logic/branch.ts | 42 + .../operation/manual/logic/branch.ts.meta | 9 + .../operation/manual/logic/comparison.ts | 77 + .../operation/manual/logic/comparison.ts.meta | 9 + .../assets/operation/manual/logic/is-nan.ts | 39 + .../operation/manual/logic/is-nan.ts.meta | 9 + .../assets/operation/manual/logic/not.ts | 38 + .../assets/operation/manual/logic/not.ts.meta | 9 + .../assets/operation/manual/logic/or.ts | 40 + .../assets/operation/manual/logic/or.ts.meta | 9 + .../assets/operation/manual/master.meta | 12 + .../operation/manual/master/MasterNode.ts | 330 +++ .../manual/master/MasterNode.ts.meta | 9 + .../manual/master/SurfaceMasterNode.ts | 54 + .../manual/master/SurfaceMasterNode.ts.meta | 9 + .../manual/master/UnlitMasterNode.ts | 43 + .../manual/master/UnlitMasterNode.ts.meta | 9 + .../assets/operation/manual/math.meta | 12 + .../assets/operation/manual/procedural.meta | 12 + .../assets/operation/manual/subgraph.meta | 12 + .../operation/manual/subgraph/SubGraphNode.ts | 142 + .../manual/subgraph/SubGraphNode.ts.meta | 9 + .../manual/subgraph/SubGraphOutputNode.ts | 19 + .../subgraph/SubGraphOutputNode.ts.meta | 9 + .../assets/operation/manual/utility.meta | 12 + .../operation/manual/utility/PreviewNode.ts | 7 + .../manual/utility/PreviewNode.ts.meta | 9 + .../assets/operation/manual/uv.meta | 12 + .../shader-node/assets/operation/nodes.meta | 12 + .../assets/operation/nodes/math.meta | 9 + .../assets/operation/nodes/math/advanced.meta | 9 + .../assets/operation/nodes/math/basic.meta | 9 + .../operation/nodes/math/derivative.meta | 9 + .../operation/nodes/math/interpolation.meta | 9 + .../assets/operation/nodes/math/range.meta | 9 + .../assets/operation/nodes/math/round.meta | 9 + .../operation/nodes/math/trigonometry.meta | 9 + .../assets/operation/nodes/math/vector.meta | 9 + .../assets/operation/nodes/math/wave.meta | 9 + .../assets/operation/nodes/procedural.meta | 9 + .../operation/nodes/procedural/noise.meta | 9 + .../operation/nodes/procedural/shape.meta | 9 + .../assets/operation/nodes/subgraph.meta | 9 + .../assets/operation/nodes/utility.meta | 9 + .../assets/operation/nodes/uv.meta | 9 + .../shader-node/assets/operation/property.ts | 129 + .../assets/operation/property.ts.meta | 9 + .../assets/operation/shadergraph.ts | 132 + .../assets/operation/shadergraph.ts.meta | 9 + .../shader-node/assets/operation/slot.ts | 247 ++ .../shader-node/assets/operation/slot.ts.meta | 9 + .../shader-node/assets/operation/type.ts | 126 + .../shader-node/assets/operation/type.ts.meta | 9 + .../shader-node/assets/operation/utils.ts | 169 ++ .../assets/operation/utils.ts.meta | 9 + .../compile-shader/scripts/generate.js | 348 +++ .../compile-shader/scripts/utils.js | 18 + .../shader-templates/chunks/common.chunk | 9 + .../shader-templates/chunks/input_basic.chunk | 53 + .../shader-templates/chunks/math.chunk | 451 ++++ .../shader-templates/chunks/noise.chunk | 85 + .../shader-templates/chunks/range.chunk | 13 + .../shader-templates/chunks/shape.chunk | 54 + .../shader-templates/chunks/uv.chunk | 50 + .../master/SurfaceMasterNode.effect | 399 +++ .../master/UnlitMasterNode.effect | 349 +++ extensions/shader-graph/shader-node/test | 846 ++++++ extensions/shader-graph/static/asset-icon.png | Bin 0 -> 493 bytes extensions/shader-graph/static/icon.png | Bin 0 -> 264 bytes .../static/shader-graph/create-node.less | 47 + .../static/shader-graph/float-window.less | 160 ++ .../static/shader-graph/graph-property.less | 133 + .../static/shader-graph/index.html | 94 + .../static/shader-graph/preview.less | 107 + .../static/shader-graph/style.css | 487 ++++ .../static/shader-graph/style.less | 139 + 426 files changed, 21325 insertions(+), 2302 deletions(-) delete mode 100644 assets/cc-game/TA/Scene/effect.effect delete mode 100644 assets/cc-game/TA/Scene/effect.effect.meta create mode 100644 assets/cc-game/TA/Shader.meta create mode 100644 assets/cc-game/TA/Shader/New Shader Graph.shadergraph create mode 100644 assets/cc-game/TA/Shader/New Shader Graph.shadergraph.meta create mode 100644 extensions/shader-graph/README.md create mode 100644 extensions/shader-graph/README.zh-CN.md create mode 100644 extensions/shader-graph/dist/block-forge/block.js create mode 100644 extensions/shader-graph/dist/block-forge/enum.js create mode 100644 extensions/shader-graph/dist/block-forge/event.js create mode 100644 extensions/shader-graph/dist/block-forge/forge.js create mode 100644 extensions/shader-graph/dist/block-forge/graph.js create mode 100644 extensions/shader-graph/dist/block-forge/index.js create mode 100644 extensions/shader-graph/dist/block-forge/interface/block.js create mode 100644 extensions/shader-graph/dist/block-forge/interface/forge.js create mode 100644 extensions/shader-graph/dist/block-forge/interface/graph.js create mode 100644 extensions/shader-graph/dist/block-forge/interface/index.js create mode 100644 extensions/shader-graph/dist/block-forge/interface/pin.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/index.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-boolean.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-color.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-dynamic-enum.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-enum.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-float.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-int.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-mat3.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-mat4.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-string.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-texture2D.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-textureCube.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-unknown.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-vec2.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-vec3.js create mode 100644 extensions/shader-graph/dist/block-forge/internal/pin-vec4.js create mode 100644 extensions/shader-graph/dist/block-forge/module/forge.js create mode 100644 extensions/shader-graph/dist/block-forge/pin.js create mode 100644 extensions/shader-graph/dist/block-forge/undo.js create mode 100644 extensions/shader-graph/dist/block-forge/utils.js create mode 100644 extensions/shader-graph/dist/contributions/assets-menu.js create mode 100644 extensions/shader-graph/dist/contributions/effect-header.js create mode 100644 extensions/shader-graph/dist/contributions/internal.js create mode 100644 extensions/shader-graph/dist/contributions/preview-scene.js create mode 100644 extensions/shader-graph/dist/contributions/preview/Interactive-preview.js create mode 100644 extensions/shader-graph/dist/contributions/preview/buffer.js create mode 100644 extensions/shader-graph/dist/contributions/preview/index.js create mode 100644 extensions/shader-graph/dist/contributions/preview/preview-base.js create mode 100644 extensions/shader-graph/dist/contributions/preview/shader-graph-preview.js create mode 100644 extensions/shader-graph/dist/contributions/scene.js create mode 100644 extensions/shader-graph/dist/effect-utils.js create mode 100644 extensions/shader-graph/dist/hooks.js create mode 100644 extensions/shader-graph/dist/importer/index.js create mode 100644 extensions/shader-graph/dist/importer/shader-graph-3.8.js create mode 100644 extensions/shader-graph/dist/importer/shader-graph-handler.js create mode 100644 extensions/shader-graph/dist/importer/shader-graph.js create mode 100644 extensions/shader-graph/dist/importer/utils-3.8.js create mode 100644 extensions/shader-graph/dist/main.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/const.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/header.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/resizer.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/common.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/create-node/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/custom-nodes/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/graph-property/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/internal.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/preview/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/components/float-window/utils.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/float-windows.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/index.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/mask.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/shortcuts.js create mode 100644 extensions/shader-graph/dist/panels/shader-graph/view.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/base-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/forge-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/graph-asset-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/graph-config-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/graph-data-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/graph-editor-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/graph-property-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/index.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/internal.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/mask-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/base/message-mgr.js create mode 100644 extensions/shader-graph/dist/shader-graph/declare/block.js create mode 100644 extensions/shader-graph/dist/shader-graph/declare/graph.js create mode 100644 extensions/shader-graph/dist/shader-graph/declare/index.js create mode 100644 extensions/shader-graph/dist/shader-graph/global-exports.js create mode 100644 extensions/shader-graph/dist/shader-graph/index.js create mode 100644 extensions/shader-graph/dist/shader-graph/interface.js create mode 100644 extensions/shader-graph/dist/shader-graph/internal.js create mode 100644 extensions/shader-graph/dist/shader-graph/menu/index.js create mode 100644 extensions/shader-graph/dist/shader-graph/menu/template/base-menu.js create mode 100644 extensions/shader-graph/dist/shader-graph/utils.js create mode 100644 extensions/shader-graph/i18n/en.js create mode 100644 extensions/shader-graph/i18n/zh.js create mode 100644 extensions/shader-graph/package.json create mode 100644 extensions/shader-graph/readme/使用属性节点.png create mode 100644 extensions/shader-graph/readme/使用普通节点.png create mode 100644 extensions/shader-graph/readme/右键创建资源.png create mode 100644 extensions/shader-graph/readme/导入扩展文件.png create mode 100644 extensions/shader-graph/readme/导入扩展文件夹.png create mode 100644 extensions/shader-graph/readme/属性检查器选择effect.png create mode 100644 extensions/shader-graph/readme/属性类型节点.png create mode 100644 extensions/shader-graph/readme/初始面板.png create mode 100644 extensions/shader-graph/readme/创建后的资源.png create mode 100644 extensions/shader-graph/readme/创建属性窗口.png create mode 100644 extensions/shader-graph/readme/创建节点菜单.png create mode 100644 extensions/shader-graph/readme/整体结构-EN.png create mode 100644 extensions/shader-graph/readme/整体结构.png create mode 100644 extensions/shader-graph/readme/效果图.png create mode 100644 extensions/shader-graph/readme/普通类型节点.png create mode 100644 extensions/shader-graph/readme/自定义节点.png create mode 100644 extensions/shader-graph/readme/自定义节点菜单.png create mode 100644 extensions/shader-graph/readme/预览窗口.png create mode 100644 extensions/shader-graph/shader-node/README.md create mode 100644 extensions/shader-graph/shader-node/README.zh-CN.md create mode 100644 extensions/shader-graph/shader-node/assets/graph.meta create mode 100644 extensions/shader-graph/shader-node/assets/graph/index.ts create mode 100644 extensions/shader-graph/shader-node/assets/graph/index.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/graph/register.ts create mode 100644 extensions/shader-graph/shader-node/assets/graph/register.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/base.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/base.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/context.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/context.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/index.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/index.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/artistic.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/channel.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/index.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/index.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/InputNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/basic.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/variable.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/math.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/procedural.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/subgraph.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/utility.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/manual/uv.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/advanced.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/basic.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/derivative.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/interpolation.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/range.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/round.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/trigonometry.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/vector.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/math/wave.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/procedural.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/procedural/noise.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/procedural/shape.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/subgraph.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/utility.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/nodes/uv.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/property.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/property.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/shadergraph.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/shadergraph.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/slot.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/slot.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/type.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/type.ts.meta create mode 100644 extensions/shader-graph/shader-node/assets/operation/utils.ts create mode 100644 extensions/shader-graph/shader-node/assets/operation/utils.ts.meta create mode 100644 extensions/shader-graph/shader-node/compile-shader/scripts/generate.js create mode 100644 extensions/shader-graph/shader-node/compile-shader/scripts/utils.js create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/common.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/input_basic.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/math.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/noise.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/range.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/shape.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/uv.chunk create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/master/SurfaceMasterNode.effect create mode 100644 extensions/shader-graph/shader-node/compile-shader/shader-templates/master/UnlitMasterNode.effect create mode 100644 extensions/shader-graph/shader-node/test create mode 100644 extensions/shader-graph/static/asset-icon.png create mode 100644 extensions/shader-graph/static/icon.png create mode 100644 extensions/shader-graph/static/shader-graph/create-node.less create mode 100644 extensions/shader-graph/static/shader-graph/float-window.less create mode 100644 extensions/shader-graph/static/shader-graph/graph-property.less create mode 100644 extensions/shader-graph/static/shader-graph/index.html create mode 100644 extensions/shader-graph/static/shader-graph/preview.less create mode 100644 extensions/shader-graph/static/shader-graph/style.css create mode 100644 extensions/shader-graph/static/shader-graph/style.less diff --git a/assets/cc-game/TA/Scene/effect.effect b/assets/cc-game/TA/Scene/effect.effect deleted file mode 100644 index a8a3258..0000000 --- a/assets/cc-game/TA/Scene/effect.effect +++ /dev/null @@ -1,45 +0,0 @@ -// Effect Syntax Guide: https://docs.cocos.com/creator/manual/zh/shader/index.html - -CCEffect %{ - techniques: - - name: opaque - passes: - - vert: legacy/main-functions/general-vs:vert # builtin header - frag: unlit-fs:frag - properties: &props - mainTexture: { value: white } - mainColor: { value: [1, 1, 1, 1], editor: { type: color } } - - name: transparent - passes: - - vert: general-vs:vert # builtin header - frag: unlit-fs:frag - blendState: - targets: - - blend: true - blendSrc: src_alpha - blendDst: one_minus_src_alpha - blendSrcAlpha: src_alpha - blendDstAlpha: one_minus_src_alpha - properties: *props -}% - -CCProgram unlit-fs %{ - precision highp float; - #include - #include - - in vec2 v_uv; - in vec3 v_position; - - uniform sampler2D mainTexture; - - uniform Constant { - vec4 mainColor; - }; - - vec4 frag () { - vec4 col = mainColor * texture(mainTexture, v_uv); - CC_APPLY_FOG(col, v_position); - return CCFragOutput(col); - } -}% diff --git a/assets/cc-game/TA/Scene/effect.effect.meta b/assets/cc-game/TA/Scene/effect.effect.meta deleted file mode 100644 index 30c9965..0000000 --- a/assets/cc-game/TA/Scene/effect.effect.meta +++ /dev/null @@ -1,11 +0,0 @@ -{ - "ver": "1.7.1", - "importer": "effect", - "imported": true, - "uuid": "01be914e-6648-4deb-b7de-5463cd4cc483", - "files": [ - ".json" - ], - "subMetas": {}, - "userData": {} -} diff --git a/assets/cc-game/TA/Scene/mainscene-TA.scene b/assets/cc-game/TA/Scene/mainscene-TA.scene index bd88ece..dba48e2 100644 --- a/assets/cc-game/TA/Scene/mainscene-TA.scene +++ b/assets/cc-game/TA/Scene/mainscene-TA.scene @@ -11,7 +11,7 @@ }, { "__type__": "cc.Scene", - "_name": "mainscene", + "_name": "mainscene-TA", "_objFlags": 0, "__editorExtras__": {}, "_parent": null, diff --git a/assets/cc-game/TA/Shader.meta b/assets/cc-game/TA/Shader.meta new file mode 100644 index 0000000..2ec7a9f --- /dev/null +++ b/assets/cc-game/TA/Shader.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "48a5f2a6-b7c5-493f-9cb8-5fadfa788d2d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/assets/cc-game/TA/Shader/New Shader Graph.shadergraph b/assets/cc-game/TA/Shader/New Shader Graph.shadergraph new file mode 100644 index 0000000..1b2af90 --- /dev/null +++ b/assets/cc-game/TA/Shader/New Shader Graph.shadergraph @@ -0,0 +1,132 @@ +type: Graph +name: New Shader Graph +nodes: + t_171626020706465055968: + type: UnlitMasterNode + position: + x: 347 + 'y': -280 + details: + inputPins: + - dataType: vec3 + value: + x: 0 + 'y': 0 + z: 0 + details: {} + - dataType: vec3 + value: + x: 0 + 'y': 0 + z: 0 + details: {} + - dataType: vec3 + value: + x: 0 + 'y': 0 + z: 0 + details: {} + - dataType: color + value: + x: 0.5 + 'y': 0.5 + z: 0.5 + w: 0.5 + details: {} + - dataType: float + value: 1 + details: {} + - dataType: float + value: 0 + details: {} + outputPins: [] + t_171626027742546958984: + type: PropertyNode + position: + x: -289 + 'y': -216.5 + details: + propertyID: p_1716260273865187457 + baseType: Texture2D + title: Texture2D + outputPins: + - dataType: texture2D + value: + uuid: '' + details: + connectType: texture2D + inputPins: [] + t_1716260283888778133485: + type: SampleTexture2D + position: + x: 20 + 'y': -122.5 + details: + outputPins: + - dataType: vec4 + value: + x: 0 + 'y': 0 + z: 0 + w: 0 + details: {} + - dataType: float + value: 0 + details: {} + - dataType: float + value: 0 + details: {} + - dataType: float + value: 0 + details: {} + - dataType: float + value: 0 + details: {} + inputPins: + - dataType: texture2D + value: + uuid: '' + details: {} + - dataType: vec2 + value: + x: 0 + 'y': 0 + details: {} + - dataType: enum + value: 0 + details: {} + - dataType: enum + value: 0 + details: {} +graphs: {} +lines: + t_171626028899633368342: + type: curve + details: {} + input: + node: t_171626027742546958984 + param: out_PropertyNode_any_Out + output: + node: t_1716260283888778133485 + param: input_SampleTexture2D_texture2D_Texture + t_171626029330409396527: + type: curve + details: {} + input: + node: t_1716260283888778133485 + param: out_SampleTexture2D_vec4_RGBA + output: + node: t_171626020706465055968 + param: input_UnlitMasterNode_color_BaseColor +details: + properties: + - id: p_1716260273865187457 + type: Texture2D + name: Texture2D + declareType: PropertyNode + outputPins: + - dataType: texture2D + value: + uuid: '' + details: + connectType: texture2D diff --git a/assets/cc-game/TA/Shader/New Shader Graph.shadergraph.meta b/assets/cc-game/TA/Shader/New Shader Graph.shadergraph.meta new file mode 100644 index 0000000..2c0d731 --- /dev/null +++ b/assets/cc-game/TA/Shader/New Shader Graph.shadergraph.meta @@ -0,0 +1,11 @@ +{ + "ver": "1.0.0", + "importer": "shader-graph", + "imported": true, + "uuid": "37481e4c-2fee-4314-a771-ca99f73a8766", + "files": [ + ".json" + ], + "subMetas": {}, + "userData": {} +} diff --git a/assets/cc-game/scene/mainscene.scene b/assets/cc-game/scene/mainscene.scene index 5e22fad..d9e434c 100644 --- a/assets/cc-game/scene/mainscene.scene +++ b/assets/cc-game/scene/mainscene.scene @@ -23,7 +23,7 @@ "_active": true, "_components": [], "_prefab": { - "__id__": 928 + "__id__": 754 }, "_lpos": { "__type__": "cc.Vec3", @@ -54,7 +54,7 @@ }, "autoReleaseAssets": false, "_globals": { - "__id__": 951 + "__id__": 777 }, "_id": "1271e3a3-5013-4a5b-98f3-2ac3b007353c" }, @@ -99,21 +99,18 @@ }, { "__id__": 746 - }, - { - "__id__": 751 } ], "_active": true, "_components": [ { - "__id__": 925 + "__id__": 751 }, { - "__id__": 926 + "__id__": 752 }, { - "__id__": 927 + "__id__": 753 } ], "_prefab": null, @@ -23001,2213 +22998,6 @@ }, "_id": "ddKmgAaBlBCbKajcSahEN8" }, - { - "__type__": "cc.Node", - "_name": "BarBloodHero", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 2 - }, - "_children": [ - { - "__id__": 752 - }, - { - "__id__": 812 - } - ], - "_active": true, - "_components": [ - { - "__id__": 871 - }, - { - "__id__": 923 - }, - { - "__id__": 924 - } - ], - "_prefab": null, - "_lpos": { - "__type__": "cc.Vec3", - "x": 34.619, - "y": -269.131, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 33554432, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "25MooP8qBMtaLhXl4/9Lx1" - }, - { - "__type__": "cc.Node", - "_name": "Spark", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 751 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 753 - }, - { - "__id__": 810 - }, - { - "__id__": 811 - } - ], - "_prefab": null, - "_lpos": { - "__type__": "cc.Vec3", - "x": 8.84, - "y": 0, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 30, - "y": 30, - "z": 30 - }, - "_mobility": 0, - "_layer": 33554432, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "2f5aFfvDhHIrAhSc0146Yz" - }, - { - "__type__": "cc.ParticleSystem", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 752 - }, - "_enabled": true, - "__prefab": null, - "_materials": [ - { - "__uuid__": "2904334c-3d13-4ca3-8547-9f4e7e3f6a44", - "__expectedType__": "cc.Material" - }, - null - ], - "_visFlags": 0, - "startColor": { - "__id__": 754 - }, - "scaleSpace": 1, - "startSize3D": false, - "startSizeX": { - "__id__": 755 - }, - "startSize": { - "__id__": 755 - }, - "startSizeY": { - "__id__": 756 - }, - "startSizeZ": { - "__id__": 757 - }, - "startSpeed": { - "__id__": 758 - }, - "startRotation3D": false, - "startRotationX": { - "__id__": 759 - }, - "startRotationY": { - "__id__": 760 - }, - "startRotationZ": { - "__id__": 761 - }, - "startRotation": { - "__id__": 761 - }, - "startDelay": { - "__id__": 762 - }, - "startLifetime": { - "__id__": 763 - }, - "duration": 1, - "loop": true, - "simulationSpeed": 1, - "playOnAwake": true, - "gravityModifier": { - "__id__": 764 - }, - "rateOverTime": { - "__id__": 765 - }, - "rateOverDistance": { - "__id__": 766 - }, - "bursts": [], - "_renderCulling": false, - "_cullingMode": 0, - "_aabbHalfX": 0, - "_aabbHalfY": 0, - "_aabbHalfZ": 0, - "_dataCulling": false, - "enableCulling": false, - "_colorOverLifetimeModule": { - "__id__": 767 - }, - "_shapeModule": { - "__id__": 774 - }, - "_sizeOvertimeModule": { - "__id__": 776 - }, - "_velocityOvertimeModule": { - "__id__": 781 - }, - "_forceOvertimeModule": { - "__id__": 786 - }, - "_limitVelocityOvertimeModule": { - "__id__": 790 - }, - "_rotationOvertimeModule": { - "__id__": 795 - }, - "_textureAnimationModule": { - "__id__": 799 - }, - "_noiseModule": { - "__id__": 803 - }, - "_trailModule": { - "__id__": 804 - }, - "renderer": { - "__id__": 809 - }, - "_prewarm": false, - "_capacity": 1000, - "_simulationSpace": 0, - "_id": "84M4Yds5hK+L+rrv47YnDI" - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 3, - "constantMin": 0.05, - "constantMax": 0.2, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 10, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0.5, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0.25, - "multiplier": 1 - }, - { - "__type__": "cc.ColorOvertimeModule", - "_enable": true, - "color": { - "__id__": 768 - } - }, - { - "__type__": "cc.GradientRange", - "_mode": 1, - "gradient": { - "__id__": 769 - } - }, - { - "__type__": "cc.Gradient", - "colorKeys": [ - { - "__id__": 770 - }, - { - "__id__": 771 - } - ], - "alphaKeys": [ - { - "__id__": 772 - }, - { - "__id__": 773 - } - ], - "mode": 0 - }, - { - "__type__": "cc.ColorKey", - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "time": 0.01643192488262911 - }, - { - "__type__": "cc.ColorKey", - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "time": 0.9812206572769953 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 255, - "time": 0 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 0, - "time": 1 - }, - { - "__type__": "cc.ShapeModule", - "_enable": true, - "_shapeType": 0, - "shapeType": 0, - "emitFrom": 3, - "alignToDirection": false, - "randomDirectionAmount": 0, - "sphericalDirectionAmount": 0, - "randomPositionAmount": 0, - "radius": 1, - "radiusThickness": 1, - "arcMode": 0, - "arcSpread": 0, - "arcSpeed": { - "__id__": 775 - }, - "length": 5, - "boxThickness": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_position": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_rotation": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_scale": { - "__type__": "cc.Vec3", - "x": 0.05, - "y": 0.4, - "z": 0 - }, - "_arc": 6.283185307179586, - "_angle": 0.4363323129985824 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.SizeOvertimeModule", - "_enable": false, - "separateAxes": false, - "size": { - "__id__": 777 - }, - "x": { - "__id__": 778 - }, - "y": { - "__id__": 779 - }, - "z": { - "__id__": 780 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.VelocityOvertimeModule", - "_enable": true, - "x": { - "__id__": 782 - }, - "y": { - "__id__": 783 - }, - "z": { - "__id__": 784 - }, - "speedModifier": { - "__id__": 785 - }, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.ForceOvertimeModule", - "_enable": false, - "x": { - "__id__": 787 - }, - "y": { - "__id__": 788 - }, - "z": { - "__id__": 789 - }, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.LimitVelocityOvertimeModule", - "_enable": false, - "limitX": { - "__id__": 791 - }, - "limitY": { - "__id__": 792 - }, - "limitZ": { - "__id__": 793 - }, - "limit": { - "__id__": 794 - }, - "dampen": 3, - "separateAxes": false, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.RotationOvertimeModule", - "_enable": false, - "_separateAxes": false, - "x": { - "__id__": 796 - }, - "y": { - "__id__": 797 - }, - "z": { - "__id__": 798 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.TextureAnimationModule", - "_enable": false, - "_numTilesX": 0, - "numTilesX": 0, - "_numTilesY": 0, - "numTilesY": 0, - "_mode": 0, - "animation": 0, - "frameOverTime": { - "__id__": 800 - }, - "startFrame": { - "__id__": 802 - }, - "cycleCount": 0, - "_flipU": 0, - "_flipV": 0, - "_uvChannelMask": -1, - "randomRow": false, - "rowIndex": 0 - }, - { - "__type__": "cc.CurveRange", - "mode": 1, - "spline": { - "__id__": 801 - }, - "multiplier": 1 - }, - { - "__type__": "cc.RealCurve", - "_times": [ - 0, - 1 - ], - "_values": [ - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, - "tangentWeightMode": 0, - "value": 1, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, - "easingMethod": 0, - "__editorExtras__": null - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, - "tangentWeightMode": 0, - "value": 1, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, - "easingMethod": 0, - "__editorExtras__": null - } - ], - "preExtrapolation": 1, - "postExtrapolation": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.NoiseModule", - "_enable": false, - "_strengthX": 10, - "_strengthY": 10, - "_strengthZ": 10, - "_noiseSpeedX": 0, - "_noiseSpeedY": 0, - "_noiseSpeedZ": 0, - "_noiseFrequency": 1, - "_remapX": 0, - "_remapY": 0, - "_remapZ": 0, - "_octaves": 1, - "_octaveMultiplier": 0.5, - "_octaveScale": 2 - }, - { - "__type__": "cc.TrailModule", - "_enable": false, - "mode": 0, - "lifeTime": { - "__id__": 805 - }, - "_minParticleDistance": 0.1, - "existWithParticles": true, - "textureMode": 0, - "widthFromParticle": true, - "widthRatio": { - "__id__": 806 - }, - "colorFromParticle": false, - "colorOverTrail": { - "__id__": 807 - }, - "colorOvertime": { - "__id__": 808 - }, - "_space": 0, - "_particleSystem": { - "__id__": 753 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.ParticleSystemRenderer", - "_renderMode": 0, - "_velocityScale": 1, - "_lengthScale": 1, - "_mesh": null, - "_cpuMaterial": { - "__uuid__": "2904334c-3d13-4ca3-8547-9f4e7e3f6a44", - "__expectedType__": "cc.Material" - }, - "_gpuMaterial": null, - "_mainTexture": { - "__uuid__": "63ad5861-547d-4ad1-ae2b-15195c2400a1@6c48a", - "__expectedType__": "cc.Texture2D" - }, - "_useGPU": false, - "_alignSpace": 2 - }, - { - "__type__": "cc.UIMeshRenderer", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 752 - }, - "_enabled": true, - "__prefab": null, - "_id": "47Qt7id9JCyIhBynDmGo9l" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 752 - }, - "_enabled": true, - "__prefab": null, - "_contentSize": { - "__type__": "cc.Size", - "width": 100, - "height": 100 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "9cwnaMNQdEYpBFxMzHDUTh" - }, - { - "__type__": "cc.Node", - "_name": "Cowl", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 751 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 813 - }, - { - "__id__": 869 - }, - { - "__id__": 870 - } - ], - "_prefab": null, - "_lpos": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 7, - "y": 13, - "z": 7 - }, - "_mobility": 0, - "_layer": 33554432, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "e6cMXuQ0lMUIJpdsnUzzXc" - }, - { - "__type__": "cc.ParticleSystem", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 812 - }, - "_enabled": true, - "__prefab": null, - "_materials": [ - { - "__uuid__": "b13b73f0-6f27-48e5-bfd5-cb5d0ccd2697", - "__expectedType__": "cc.Material" - }, - null - ], - "_visFlags": 0, - "startColor": { - "__id__": 814 - }, - "scaleSpace": 1, - "startSize3D": false, - "startSizeX": { - "__id__": 815 - }, - "startSize": { - "__id__": 815 - }, - "startSizeY": { - "__id__": 816 - }, - "startSizeZ": { - "__id__": 817 - }, - "startSpeed": { - "__id__": 818 - }, - "startRotation3D": false, - "startRotationX": { - "__id__": 819 - }, - "startRotationY": { - "__id__": 820 - }, - "startRotationZ": { - "__id__": 821 - }, - "startRotation": { - "__id__": 821 - }, - "startDelay": { - "__id__": 822 - }, - "startLifetime": { - "__id__": 823 - }, - "duration": 1, - "loop": true, - "simulationSpeed": 1, - "playOnAwake": false, - "gravityModifier": { - "__id__": 824 - }, - "rateOverTime": { - "__id__": 825 - }, - "rateOverDistance": { - "__id__": 826 - }, - "bursts": [], - "_renderCulling": false, - "_cullingMode": 0, - "_aabbHalfX": 0, - "_aabbHalfY": 0, - "_aabbHalfZ": 0, - "_dataCulling": false, - "enableCulling": false, - "_colorOverLifetimeModule": { - "__id__": 827 - }, - "_shapeModule": { - "__id__": 833 - }, - "_sizeOvertimeModule": { - "__id__": 835 - }, - "_velocityOvertimeModule": { - "__id__": 840 - }, - "_forceOvertimeModule": { - "__id__": 845 - }, - "_limitVelocityOvertimeModule": { - "__id__": 849 - }, - "_rotationOvertimeModule": { - "__id__": 854 - }, - "_textureAnimationModule": { - "__id__": 858 - }, - "_noiseModule": { - "__id__": 862 - }, - "_trailModule": { - "__id__": 863 - }, - "renderer": { - "__id__": 868 - }, - "_prewarm": false, - "_capacity": 1, - "_simulationSpace": 1, - "_id": "4ec+YbN2tFda3t5YLRbYHo" - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.ColorOvertimeModule", - "_enable": true, - "color": { - "__id__": 828 - } - }, - { - "__type__": "cc.GradientRange", - "_mode": 1, - "gradient": { - "__id__": 829 - } - }, - { - "__type__": "cc.Gradient", - "colorKeys": [], - "alphaKeys": [ - { - "__id__": 830 - }, - { - "__id__": 831 - }, - { - "__id__": 832 - } - ], - "mode": 0 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 0, - "time": 0 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 255, - "time": 0.5023474178403756 - }, - { - "__type__": "cc.AlphaKey", - "alpha": 0, - "time": 1 - }, - { - "__type__": "cc.ShapeModule", - "_enable": false, - "_shapeType": 2, - "shapeType": 2, - "emitFrom": 0, - "alignToDirection": false, - "randomDirectionAmount": 0, - "sphericalDirectionAmount": 0, - "randomPositionAmount": 0, - "radius": 1, - "radiusThickness": 1, - "arcMode": 0, - "arcSpread": 0, - "arcSpeed": { - "__id__": 834 - }, - "length": 5, - "boxThickness": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_position": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_rotation": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_scale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_arc": 6.283185307179586, - "_angle": 0.4363323129985824 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.SizeOvertimeModule", - "_enable": false, - "separateAxes": false, - "size": { - "__id__": 836 - }, - "x": { - "__id__": 837 - }, - "y": { - "__id__": 838 - }, - "z": { - "__id__": 839 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.VelocityOvertimeModule", - "_enable": false, - "x": { - "__id__": 841 - }, - "y": { - "__id__": 842 - }, - "z": { - "__id__": 843 - }, - "speedModifier": { - "__id__": 844 - }, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.ForceOvertimeModule", - "_enable": false, - "x": { - "__id__": 846 - }, - "y": { - "__id__": 847 - }, - "z": { - "__id__": 848 - }, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.LimitVelocityOvertimeModule", - "_enable": false, - "limitX": { - "__id__": 850 - }, - "limitY": { - "__id__": 851 - }, - "limitZ": { - "__id__": 852 - }, - "limit": { - "__id__": 853 - }, - "dampen": 3, - "separateAxes": false, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.RotationOvertimeModule", - "_enable": false, - "_separateAxes": false, - "x": { - "__id__": 855 - }, - "y": { - "__id__": 856 - }, - "z": { - "__id__": 857 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.TextureAnimationModule", - "_enable": false, - "_numTilesX": 0, - "numTilesX": 0, - "_numTilesY": 0, - "numTilesY": 0, - "_mode": 0, - "animation": 0, - "frameOverTime": { - "__id__": 859 - }, - "startFrame": { - "__id__": 861 - }, - "cycleCount": 0, - "_flipU": 0, - "_flipV": 0, - "_uvChannelMask": -1, - "randomRow": false, - "rowIndex": 0 - }, - { - "__type__": "cc.CurveRange", - "mode": 1, - "spline": { - "__id__": 860 - }, - "multiplier": 1 - }, - { - "__type__": "cc.RealCurve", - "_times": [ - 0, - 1 - ], - "_values": [ - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, - "tangentWeightMode": 0, - "value": 1, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, - "easingMethod": 0, - "__editorExtras__": null - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, - "tangentWeightMode": 0, - "value": 1, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, - "easingMethod": 0, - "__editorExtras__": null - } - ], - "preExtrapolation": 1, - "postExtrapolation": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.NoiseModule", - "_enable": false, - "_strengthX": 10, - "_strengthY": 10, - "_strengthZ": 10, - "_noiseSpeedX": 0, - "_noiseSpeedY": 0, - "_noiseSpeedZ": 0, - "_noiseFrequency": 1, - "_remapX": 0, - "_remapY": 0, - "_remapZ": 0, - "_octaves": 1, - "_octaveMultiplier": 0.5, - "_octaveScale": 2 - }, - { - "__type__": "cc.TrailModule", - "_enable": false, - "mode": 0, - "lifeTime": { - "__id__": 864 - }, - "_minParticleDistance": 0.1, - "existWithParticles": true, - "textureMode": 0, - "widthFromParticle": true, - "widthRatio": { - "__id__": 865 - }, - "colorFromParticle": false, - "colorOverTrail": { - "__id__": 866 - }, - "colorOvertime": { - "__id__": 867 - }, - "_space": 0, - "_particleSystem": { - "__id__": 813 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.ParticleSystemRenderer", - "_renderMode": 0, - "_velocityScale": 1, - "_lengthScale": 1, - "_mesh": null, - "_cpuMaterial": { - "__uuid__": "b13b73f0-6f27-48e5-bfd5-cb5d0ccd2697", - "__expectedType__": "cc.Material" - }, - "_gpuMaterial": null, - "_mainTexture": { - "__uuid__": "d78e9706-3f29-4e0e-9c56-10513fa44cbb@6c48a", - "__expectedType__": "cc.Texture2D" - }, - "_useGPU": false, - "_alignSpace": 2 - }, - { - "__type__": "cc.UIMeshRenderer", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 812 - }, - "_enabled": true, - "__prefab": null, - "_id": "beJncbTwpKCr+MqmmVl94q" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 812 - }, - "_enabled": true, - "__prefab": null, - "_contentSize": { - "__type__": "cc.Size", - "width": 100, - "height": 100 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "a8z9w31r9AsIXfUdEEXcQD" - }, - { - "__type__": "cc.ParticleSystem", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 751 - }, - "_enabled": true, - "__prefab": null, - "_materials": [ - { - "__uuid__": "ea7478b0-408d-4052-b703-f0d2355e095f", - "__expectedType__": "cc.Material" - }, - null - ], - "_visFlags": 0, - "startColor": { - "__id__": 872 - }, - "scaleSpace": 1, - "startSize3D": false, - "startSizeX": { - "__id__": 873 - }, - "startSize": { - "__id__": 873 - }, - "startSizeY": { - "__id__": 874 - }, - "startSizeZ": { - "__id__": 875 - }, - "startSpeed": { - "__id__": 876 - }, - "startRotation3D": false, - "startRotationX": { - "__id__": 877 - }, - "startRotationY": { - "__id__": 878 - }, - "startRotationZ": { - "__id__": 879 - }, - "startRotation": { - "__id__": 879 - }, - "startDelay": { - "__id__": 880 - }, - "startLifetime": { - "__id__": 881 - }, - "duration": 1, - "loop": false, - "simulationSpeed": 1, - "playOnAwake": false, - "gravityModifier": { - "__id__": 882 - }, - "rateOverTime": { - "__id__": 883 - }, - "rateOverDistance": { - "__id__": 884 - }, - "bursts": [], - "_renderCulling": false, - "_cullingMode": 0, - "_aabbHalfX": 0, - "_aabbHalfY": 0, - "_aabbHalfZ": 0, - "_dataCulling": false, - "enableCulling": false, - "_colorOverLifetimeModule": { - "__id__": 885 - }, - "_shapeModule": { - "__id__": 887 - }, - "_sizeOvertimeModule": { - "__id__": 889 - }, - "_velocityOvertimeModule": { - "__id__": 894 - }, - "_forceOvertimeModule": { - "__id__": 899 - }, - "_limitVelocityOvertimeModule": { - "__id__": 903 - }, - "_rotationOvertimeModule": { - "__id__": 908 - }, - "_textureAnimationModule": { - "__id__": 912 - }, - "_noiseModule": { - "__id__": 916 - }, - "_trailModule": { - "__id__": 917 - }, - "renderer": { - "__id__": 922 - }, - "_prewarm": false, - "_capacity": 100, - "_simulationSpace": 1, - "_id": "6bw0eOhNFPH72xNLo2VWNl" - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.ColorOvertimeModule", - "_enable": false, - "color": { - "__id__": 886 - } - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.ShapeModule", - "_enable": true, - "_shapeType": 1, - "shapeType": 1, - "emitFrom": 0, - "alignToDirection": false, - "randomDirectionAmount": 0, - "sphericalDirectionAmount": 0, - "randomPositionAmount": 0, - "radius": 1, - "radiusThickness": 1, - "arcMode": 0, - "arcSpread": 0, - "arcSpeed": { - "__id__": 888 - }, - "length": 5, - "boxThickness": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_position": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_rotation": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_scale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_arc": 6.283185307179586, - "_angle": 0.4363323129985824 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.SizeOvertimeModule", - "_enable": false, - "separateAxes": false, - "size": { - "__id__": 890 - }, - "x": { - "__id__": 891 - }, - "y": { - "__id__": 892 - }, - "z": { - "__id__": 893 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.VelocityOvertimeModule", - "_enable": false, - "x": { - "__id__": 895 - }, - "y": { - "__id__": 896 - }, - "z": { - "__id__": 897 - }, - "speedModifier": { - "__id__": 898 - }, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.ForceOvertimeModule", - "_enable": false, - "x": { - "__id__": 900 - }, - "y": { - "__id__": 901 - }, - "z": { - "__id__": 902 - }, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.LimitVelocityOvertimeModule", - "_enable": false, - "limitX": { - "__id__": 904 - }, - "limitY": { - "__id__": 905 - }, - "limitZ": { - "__id__": 906 - }, - "limit": { - "__id__": 907 - }, - "dampen": 3, - "separateAxes": false, - "space": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.RotationOvertimeModule", - "_enable": false, - "_separateAxes": false, - "x": { - "__id__": 909 - }, - "y": { - "__id__": 910 - }, - "z": { - "__id__": 911 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.TextureAnimationModule", - "_enable": false, - "_numTilesX": 0, - "numTilesX": 0, - "_numTilesY": 0, - "numTilesY": 0, - "_mode": 0, - "animation": 0, - "frameOverTime": { - "__id__": 913 - }, - "startFrame": { - "__id__": 915 - }, - "cycleCount": 0, - "_flipU": 0, - "_flipV": 0, - "_uvChannelMask": -1, - "randomRow": false, - "rowIndex": 0 - }, - { - "__type__": "cc.CurveRange", - "mode": 1, - "spline": { - "__id__": 914 - }, - "multiplier": 1 - }, - { - "__type__": "cc.RealCurve", - "_times": [ - 0, - 1 - ], - "_values": [ - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, - "tangentWeightMode": 0, - "value": 1, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, - "easingMethod": 0, - "__editorExtras__": null - }, - { - "__type__": "cc.RealKeyframeValue", - "interpolationMode": 2, - "tangentWeightMode": 0, - "value": 1, - "rightTangent": 0, - "rightTangentWeight": 0, - "leftTangent": 0, - "leftTangentWeight": 0, - "easingMethod": 0, - "__editorExtras__": null - } - ], - "preExtrapolation": 1, - "postExtrapolation": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.NoiseModule", - "_enable": false, - "_strengthX": 10, - "_strengthY": 10, - "_strengthZ": 10, - "_noiseSpeedX": 0, - "_noiseSpeedY": 0, - "_noiseSpeedZ": 0, - "_noiseFrequency": 1, - "_remapX": 0, - "_remapY": 0, - "_remapZ": 0, - "_octaves": 1, - "_octaveMultiplier": 0.5, - "_octaveScale": 2 - }, - { - "__type__": "cc.TrailModule", - "_enable": false, - "mode": 0, - "lifeTime": { - "__id__": 918 - }, - "_minParticleDistance": 0.1, - "existWithParticles": true, - "textureMode": 0, - "widthFromParticle": true, - "widthRatio": { - "__id__": 919 - }, - "colorFromParticle": false, - "colorOverTrail": { - "__id__": 920 - }, - "colorOvertime": { - "__id__": 921 - }, - "_space": 0, - "_particleSystem": { - "__id__": 871 - } - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 1, - "multiplier": 1 - }, - { - "__type__": "cc.CurveRange", - "mode": 0, - "constant": 0, - "multiplier": 1 - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.GradientRange", - "_mode": 0, - "color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - } - }, - { - "__type__": "cc.ParticleSystemRenderer", - "_renderMode": 0, - "_velocityScale": 1, - "_lengthScale": 1, - "_mesh": null, - "_cpuMaterial": { - "__uuid__": "ea7478b0-408d-4052-b703-f0d2355e095f", - "__expectedType__": "cc.Material" - }, - "_gpuMaterial": null, - "_mainTexture": { - "__uuid__": "b5b27ab1-e740-4398-b407-848fc2b2c897@6c48a", - "__expectedType__": "cc.Texture2D" - }, - "_useGPU": false, - "_alignSpace": 2 - }, - { - "__type__": "cc.UIMeshRenderer", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 751 - }, - "_enabled": true, - "__prefab": null, - "_id": "f5Dd2xtMFDI7UVwUIcYYJL" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 751 - }, - "_enabled": true, - "__prefab": null, - "_contentSize": { - "__type__": "cc.Size", - "width": 100, - "height": 100 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "b1QAe82edL/6njkWyvsaL+" - }, { "__type__": "cc.UITransform", "_name": "", @@ -25284,34 +23074,34 @@ "instance": null, "targetOverrides": [ { - "__id__": 929 + "__id__": 755 }, { - "__id__": 931 + "__id__": 757 }, { - "__id__": 934 + "__id__": 760 }, { - "__id__": 937 + "__id__": 763 }, { - "__id__": 939 + "__id__": 765 }, { - "__id__": 941 + "__id__": 767 }, { - "__id__": 943 + "__id__": 769 }, { - "__id__": 945 + "__id__": 771 }, { - "__id__": 947 + "__id__": 773 }, { - "__id__": 949 + "__id__": 775 } ], "nestedPrefabInstanceRoots": [ @@ -25378,7 +23168,7 @@ "__id__": 34 }, "targetInfo": { - "__id__": 930 + "__id__": 756 } }, { @@ -25393,7 +23183,7 @@ "__id__": 719 }, "sourceInfo": { - "__id__": 932 + "__id__": 758 }, "propertyPath": [ "_content" @@ -25402,7 +23192,7 @@ "__id__": 719 }, "targetInfo": { - "__id__": 933 + "__id__": 759 } }, { @@ -25423,7 +23213,7 @@ "__id__": 719 }, "sourceInfo": { - "__id__": 935 + "__id__": 761 }, "propertyPath": [ "_indicator" @@ -25432,7 +23222,7 @@ "__id__": 719 }, "targetInfo": { - "__id__": 936 + "__id__": 762 } }, { @@ -25460,7 +23250,7 @@ "__id__": 719 }, "targetInfo": { - "__id__": 938 + "__id__": 764 } }, { @@ -25482,7 +23272,7 @@ "__id__": 580 }, "targetInfo": { - "__id__": 940 + "__id__": 766 } }, { @@ -25504,7 +23294,7 @@ "__id__": 598 }, "targetInfo": { - "__id__": 942 + "__id__": 768 } }, { @@ -25526,7 +23316,7 @@ "__id__": 616 }, "targetInfo": { - "__id__": 944 + "__id__": 770 } }, { @@ -25548,7 +23338,7 @@ "__id__": 607 }, "targetInfo": { - "__id__": 946 + "__id__": 772 } }, { @@ -25570,7 +23360,7 @@ "__id__": 636 }, "targetInfo": { - "__id__": 948 + "__id__": 774 } }, { @@ -25592,7 +23382,7 @@ "__id__": 627 }, "targetInfo": { - "__id__": 950 + "__id__": 776 } }, { @@ -25604,28 +23394,28 @@ { "__type__": "cc.SceneGlobals", "ambient": { - "__id__": 952 + "__id__": 778 }, "shadows": { - "__id__": 953 + "__id__": 779 }, "_skybox": { - "__id__": 954 + "__id__": 780 }, "fog": { - "__id__": 955 + "__id__": 781 }, "octree": { - "__id__": 956 + "__id__": 782 }, "skin": { - "__id__": 957 + "__id__": 783 }, "lightProbeInfo": { - "__id__": 958 + "__id__": 784 }, "postSettings": { - "__id__": 959 + "__id__": 785 }, "bakedWithStationaryMainLight": false, "bakedWithHighpLightmap": false diff --git a/extensions/shader-graph/README.md b/extensions/shader-graph/README.md new file mode 100644 index 0000000..73be008 --- /dev/null +++ b/extensions/shader-graph/README.md @@ -0,0 +1,149 @@ +# Shader Graph + +## Background + +In order to lower the threshold for Shader development and expand the capabilities of procedural generation, and to encourage artists/technical artists to directly produce materials in Cocos Creator instead of third-party Digital Content Creation (DCC) tools, avoiding additional development work when importing materials, we have introduced a node-based material editor specifically designed for Cocos Creator. + +This plugin relies on Cocos Creator version 3.8.2 and is developed based on our in-house open-source [Graph component](https://github.com/itharbors/ui/tree/main/element/graph) from the Web UI library. + +To promote collaboration and innovation within the developer community, we have open-sourced the full set of source code for this plugin under the MIT license. This means developers are free to use, modify, and distribute this tool. We hope this project inspires more creativity within the community, and encourage everyone to contribute to the improvement of this tool by submitting pull requests. + +--- + +GitHub:[shader-graph](https://github.com/knoxHuang/cocos-creator-extensions/tree/main/extensions/shader-graph) + +--- + + + +### Basic Structure + + + +--- + +## Preparation Phase + +1. Download Cocos Creator 3.8.2 editor and the shader-graph.zip plugin. +2. Open Cocos Creator 3.8.2 editor, go to the main menu, select **Extensions/Extension Manager** to open the Extensions panel. +3. Click , choose the **shader-graph.zip** extension file, and import it. +4. Restart the editor (Currently, for version 3.8.2, a restart is required to ensure the registration of **.shadergraph** assets. In future versions >= 3.8.3, this process will be improved, and a restart may not be necessary). + +--- + +## Creating Asset + +1. Right-click in the **Assets** panel, select **Create/Shader Graph** to create a **.shadergraph** asset. + - Surface (Surface Shader) + - Unlit (Unlit Shader) +2. Double-click the asset to enter the editing panel. +3. + +--- + +## How to Apply to Your Project + +1. Create a new Material asset or select an existing one. +2. In the Inspector panel, locate the Effect property, and then click to choose the effect with the same name as the .shadergraph asset. + + + +3. Assign the Material to your 3D node. + +--- + +## Introduction to Panel Contents + +Initial Panel: + + + +#### Property Window + + + +1. Close window +2. Create variable entry + +The property window can create 8 types of variables: +- Float +- Boolean +- Vector2 +- Vector3 +- Vector4 +- Color +- Texture2D +- TextureCube + +#### Preview Window + + + +1. Close window +2. Switch lights (if Unlit, it has no effect) +3. Force refresh + - When rendering or rotating modes fail, try refreshing. +4. Long press the left mouse button to rotate the model. +5. Switch between built-in or custom models. + +#### Create Node Menu + + + +1. Close window +2. Enter the name of the node to create. +3. Press Enter to create the node directly (the initial position of the created node is where the mouse is pointing). + +--- + +Using regular nodes: + + + +Using property nodes: + + + +--- + +#### Node Library + +For detailed content, refer to [link](shader-node/README.md) + +--- + +### Keyboard Shortcuts + +1. space - Open the create node menu +2. cmd+s/ctrl+s - Save +3. backspace/delete - Delete +4. cmd+c/ctrl+c - Copy +5. cmd+x/ctrl+x - Cut +6. cmd+v/ctrl+v - Paste +7. cmd+d/ctrl+d - Duplicate +8. cmd+z/ctrl+z - Undo +9. cmd+shift+z/ctrl+shift+z - Redo + +---- + +### Command Line Compilation and Publishing + +```bash +npm install - Initialize +npm run build - Compile +npm run pack - Package into a zip file + +// If you want to see specific error messages, you can add --log to the end of the command line, e.g. npm run pack --log. +``` +### Known issues + +- Preview panel does not support dynamic preview + +### Development team + +- Devs: Knox、Youyou +- Framework:VisualSJ +- PM:AndyTian +- UI/UX:派大星 +- Director:Jare + diff --git a/extensions/shader-graph/README.zh-CN.md b/extensions/shader-graph/README.zh-CN.md new file mode 100644 index 0000000..77dd04b --- /dev/null +++ b/extensions/shader-graph/README.zh-CN.md @@ -0,0 +1,147 @@ +# Shader Graph + +## 背景 + +为了降低 Shader 编写的门槛以及拓展程序化生成的能力,鼓励美术/TA 直接在 Cocos Creator 而不是第三方 DCC 中生产材质,避免导入材质时的二次开发工作,我们提供了一个针对 Cocos Creator 的节点材质编辑器。 + +该插件依赖 Cocos Creator 3.8.2 版本,并基于自研的开源 [Web UI 库中的 Graph 组件](https://github.com/itharbors/ui/tree/main/element/graph) 进行开发。 + +为了促进开发者社区的合作和创新,我们以 MIT 协议开源该插件的全套源码,这意味着开发者可以自由使用、修改和分发这一工具。期待这一项目能激发社区更多的灵感和创造力,希望大家在完善这个工具的时候不要藏着掖着,多多给我们提 PR! + +### 源码 + +GitHub:[shader-graph](https://github.com/knoxHuang/cocos-creator-extensions/tree/main/extensions/shader-graph) + + + +### 基本结构 + + + +--- + +## 准备阶段 + +1. 下载 Cocos Creator 3.8.2 编辑器 与 shader-graph.zip 插件。 +2. 打开 Cocos Creator 3.8.2 编辑器,在主菜单中选择 **扩展/扩展管理器** 打开扩展面板。 +3. 点击 ,选择 **shader-graph.zip** 扩展文件,进行导入。、 +4. 需重启编辑器(**目前 3.8.2 需重启编辑器(为了确保 **.shadergraph** 资源注册生效),后续 >= 3.8.3 版本会完善该流程,可无需重启**) + +--- + +## 创建资源 + +1. 到 **Assets** 面板右键选择 **创建/Shader Graph** 菜单进行创建 **.shadergraph** 资源 + - Surface (表面着色器) + - Unlit (无光照着色器) +2. 双击资源,进入到编辑面板 +3. + +--- + +## 如何应用到项目中 + +1. 新建或者选中一个 Material 资源。 +2. 到属性检查器面板中找到 **Effect** 属性,然后点击选择 **.shadergraph** 资源同名的 effect。 + + + +3. 在把 Material 赋值给 3D 节点上即可。 + +--- + +## 面板内容介绍 + +初始面板: + + + +#### 属性窗口 + + + +1. 关闭窗口 +2. 创建属性入口 + +属性窗口可创建 8 种基础类型的属性节点分别是: + +- Float +- Boolean +- Vector2 +- Vector3 +- Vector4 +- Color +- Texture2D +- TextureCube + +#### 预览窗口 + + + +1. 关闭窗口 +2. 切换灯光(如果是 Unlit 无效果) +3. 强制刷新 + - 当遇到无法渲染或无法旋转模式可尝试刷新 +4. 按住鼠标左键滑动,可旋转模型 +5. 可切换内置或者自定义模型 + +#### 创建节点菜单 + + + +1. 关闭窗口 +2. 输入需要创建的节点名 +3. 回车可以直接创建节点(创建节点的初始位置是鼠标所指向的位置) + +--- + +使用普通节点: + + + +使用属性节点: + + + +--- + +#### 节点库 + +详细内容可查看 [传送门](shader-node/README.zh-CN.md) + +--- + +### 快捷键 + +1. space - 打开创建节点菜单 +2. cmd+s/ctrl+s - 保存 +3. backspace/delete - 删除 +4. cmd+c/ctrl+c - 拷贝 +5. cmd+x/ctrl+x - 剪切 +6. cmd+v/ctrl+v - 粘贴 +7. cmd+d/ctrl+d - 复制 +8. cmd+z/ctrl+z - 撤销 +9. cmd+shift+z/ctrl+shift+z - 重做 + +---- + +### 命令行编译与发布 + +``` +npm install - 初始化 +npm run build - 编译 +npm run pack - 打包成 zip 包 +// 如果要查看具体报错信息,可以在命令行后面加 --log 例如:npm run pack --log +``` + +### 已知问题 + +- 预览面板不支持动态预览 + +### 开发团队 + +- Devs: Knox、Youyou +- Framework:VisualSJ +- PM:AndyTian +- UI/UX:派大星 +- Director:Jare diff --git a/extensions/shader-graph/dist/block-forge/block.js b/extensions/shader-graph/dist/block-forge/block.js new file mode 100644 index 0000000..acf490a --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/block.js @@ -0,0 +1,419 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.replaceDeclareBlock = exports.unDeclareBlock = exports.declareBlock = exports.removeDeclareBlock = exports.getDeclareBlock = exports.hasDeclareBlock = exports.generateBlockOption = exports.blockMap = void 0; +const ui_graph_1 = require("@itharbors/ui-graph"); +const utils_1 = require("./utils"); +const pin_1 = require("./pin"); +// import { unregisterNode } from '@itharbors/ui-graph/dist/manager'; +exports.blockMap = new Map(); +/** + * Block 元素更新的一些工具方法 + * 一般是传入元素 + 数据,更新元素内的一些 HTML 对象 + */ +const BlockElementUtils = { + /** + * 更新 Block 元素的 title + * @param elem + * @param blockDesc + * @param details + */ + updateTitle(elem, blockDesc, details) { + const title = blockDesc.title || details.title || 'Unknown'; + elem.shadowRoot.querySelector(`.title ui-label`).innerHTML = title; + }, + /** + * 更新 Block 元素的 icon + * @param elem + * @param blockDesc + * @returns + */ + updateIcon(elem, blockDesc) { + const feature = blockDesc.feature || {}; + const icon = feature.icon; + if (!icon) { + return; + } + const $icon = elem.shadowRoot.querySelector(`.title ui-icon`); + $icon.removeAttribute('hidden'); + $icon.setAttribute('value', icon); + }, + /** + * 更新 Block 元素是否可进入的图标显示状态 + * @param elem + * @param blockDesc + */ + updateCollapsed(elem, blockDesc) { + const feature = blockDesc.feature || {}; + const isCollapsed = feature.isCollapsedBlock; + const $svg = elem.shadowRoot.querySelector(`.title svg`); + if (isCollapsed) { + $svg.removeAttribute('hidden'); + } + else { + $svg.setAttribute('hidden', ''); + } + }, + /** + * 更新元素展开折叠的状态 + * @param elem + * @param blockDesc + * @param details + */ + updateExpand(elem, blockDesc, details) { + if (blockDesc.inputPins.length > 0 || blockDesc.outputPins.length > 0) { + elem.setAttribute('expand', ''); + } + else { + elem.removeAttribute('expand'); + } + }, +}; +/** + * 创建一个专用的节点渲染对象 + * + * @returns + * @param blockDesc + */ +function generateBlockOption(blockDesc) { + blockDesc.style = blockDesc.style || {}; + blockDesc.feature = blockDesc.feature || {}; + const showQuickConnectPoint = !!blockDesc.feature.showQuickConnectPoint; + return { + template: /*html*/ ` +
+
+
+ + + +
+ ${showQuickConnectPoint ? '
+ `, + style: `${STYLE.host(blockDesc)}${STYLE.header(blockDesc)}${STYLE.pin(blockDesc)}`, + /** + * 初始化的时候设置一些事件和 HTML + * @param this + * @param details + */ + onInit(details) { + // 设置 title 可拖拽 + const $title = this.shadowRoot.querySelector('header.title'); + $title.addEventListener('mousedown', (event) => { + event.stopPropagation(); + event.preventDefault(); + if (!this.hasAttribute('selected')) { + if (!event.metaKey && !event.ctrlKey) { + this.clearOtherSelected(); + } + this.select({ + clearLines: false, + clearNodes: false, + }); + } + this.startMove(); + }); + // 绑定快速连接点的事件 + const $param = this.shadowRoot.querySelector(`.quick-connect`); + $param && $param.addEventListener('mousedown', () => { + this.startConnect('straight'); + }); + // 绑定元素点击开始连接的事件 + if (blockDesc.inputPins.length === 0 && blockDesc.outputPins.length === 0) { + this.addEventListener('mousedown', (event) => { + if (event.button === 0 && this.hasConnect()) { + event.stopPropagation(); + event.preventDefault(); + this.startConnect('straight'); + } + }, true); + } + this.addEventListener('dblclick', (event) => { + // event.stopPropagation(); + // event.preventDefault(); + const customEvent = new CustomEvent('block-dblclick', { + bubbles: true, + cancelable: true, + detail: { + pageX: event.pageX, + pageY: event.pageY, + offsetX: event.offsetX, + offsetY: event.offsetY, + }, + }); + this.dispatchEvent(customEvent); + }); + this.addEventListener('click', (event) => { + const custom = new CustomEvent('block-click', { + bubbles: true, + cancelable: true, + detail: {}, + }); + this.dispatchEvent(custom); + }); + this.addEventListener('mouseup', (event) => { + if (event.button !== 2) { + return; + } + const custom = new CustomEvent('block-right-click', { + bubbles: true, + cancelable: true, + detail: {}, + }); + this.dispatchEvent(custom); + }); + this.data.addPropertyListener('selected', (selected, legacySelected) => { + if (selected === legacySelected) { + return; + } + if (selected) { + const custom = new CustomEvent('block-selected', { + bubbles: true, + cancelable: true, + detail: {}, + }); + this.dispatchEvent(custom); + } + else { + const custom = new CustomEvent('block-unselected', { + bubbles: true, + cancelable: true, + detail: {}, + }); + this.dispatchEvent(custom); + } + }); + }, + onUpdate(details) { + // 更新 title + BlockElementUtils.updateTitle(this, blockDesc, details); + // 更新 icon + BlockElementUtils.updateIcon(this, blockDesc); + // 更新折叠图标 + BlockElementUtils.updateCollapsed(this, blockDesc); + // 更新折叠状态 + BlockElementUtils.updateExpand(this, blockDesc, details); + // 数据更新后,更新对应的资源 + // this.data.addPropertyListener('details', (details) => { + // updateHTML(details.label); + // }); + // 生成针脚 + const $content = this.shadowRoot.querySelector('.content'); + $content.innerHTML = ''; + if (blockDesc.createDynamicOutputPins) { + const outputList = blockDesc.createDynamicOutputPins(blockDesc, details); + outputList.forEach((pin, index) => { + return $content?.appendChild((0, pin_1.generateOutputPinHTML)(pin, details.outputPins[index])); + }); + } + else { + blockDesc.outputPins.forEach((pin, index) => { + return $content?.appendChild((0, pin_1.generateOutputPinHTML)(pin, details.outputPins[index])); + }); + } + const $graph = this.getRootNode().host; + const uuid = this.getAttribute('node-uuid'); + if (blockDesc.createDynamicInputPins) { + const inputList = blockDesc.createDynamicInputPins(blockDesc, details); + inputList.forEach((pin, index) => { + return $content?.appendChild((0, pin_1.generateInputPinHTML)(pin, details.inputPins, index, uuid, $graph.getProperty('lines'))); + }); + } + else { + blockDesc.inputPins.forEach((pin, index) => { + return $content?.appendChild((0, pin_1.generateInputPinHTML)(pin, details.inputPins, index, uuid, $graph.getProperty('lines'))); + }); + } + // 绑定参数连接点的事件 + const $paramList = this.shadowRoot.querySelectorAll(`v-graph-node-param`); + Array.prototype.forEach.call($paramList, ($param) => { + $param.addEventListener('mousedown', (event) => { + event.stopPropagation(); + event.preventDefault(); + const name = $param.getAttribute('name'); + if (!name) { + return; + } + const paramDirection = $param.getAttribute('direction'); + if (paramDirection !== 'input' && paramDirection !== 'output') { + return; + } + this.startConnect('curve', name, paramDirection); + }); + }); + }, + }; +} +exports.generateBlockOption = generateBlockOption; +const STYLE = { + host(block) { + const config = block.style || {}; + return /*css*/ ` +:host *[hidden] { + display: none; +} +:host { + --font-color: ${config.fontColor || '#ccc'}; + --font-color-hover: ${config.fontHoverColor || config.fontColor || '#ccc'}; + --border-color: ${config.borderColor || 'white'}; + --border-color-hover: ${config.borderHoverColor || config.borderColor || 'white'}; + --shadow-color: ${config.shadowColor || '#ccc'}; + --shadow-color-hover: ${config.shadowHoverColor || config.shadowColor || '#ccc'}; + --background-color: ${config.backgroundColor || '#2b2b2bcc'}; + --border-radius: 2px; + + --header-height: 24px; + --header-background: ${config.headerColor || '#2b2b2bcc'}; + + --pin-height: 24px; + + width: 200px; + + color: var(--font-color); + cursor: default; + +} +:host > section.wrapper { + margin: 10px; +} +:host(:hover) > section.wrapper, :host([selected]) > section.wrapper { + border-color: var(--border-color-hover); + color: var(--font-color-hover); + box-shadow: 0px 0px 7px 2px var(--shadow-color-hover); +} +section.wrapper { + position: relative; + border-radius: var(--border-radius); + background: var(--background-color); + box-shadow: 0px 0px 7px 2px none; +} +:host(:hover) > section.wrapper::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1; + border-radius: var(--border-radius); + box-shadow: 0px 0px 0px 1px var(--shadow-color-hover) inset; + pointer-events: none; +} +`; + }, + header(block) { + const config = block.style || {}; + return /*css*/ ` +header.title { + line-height: var(--header-height); + + text-align: center; + border-radius: var(--border-radius); + + ${config.secondaryColor ? `background: ${config.secondaryColor}; padding-left: 6px;` : ''} +} +header.title > div { + padding: 0 10px; + height: 24px; + border-radius: var(--border-radius); + display: flex; + background: var(--header-background); +} +:host([expand]) header.title > div { + border-radius: var(--border-radius) var(--border-radius) 0 0; +} +header.title > div > ui-label { + display: block; + padding: 0 10px; +} +header.title > div > ui-icon { + display: block; +} +header.title > div > svg { + fill: white; + display: block; + width: 10px; + transform: rotate(90deg); +} +header.title > .quick-connect { + display: block; + padding: 0; + width: 12px; + height: 12px; + border-radius: 6px; + background: white; + position: absolute; + right: -6px; + top: 50%; + margin-top: -6px; + opacity: 0; + transition: opacity 0.3s; +} +:host(:hover) header.title > .quick-connect { + display: block; + opacity: 1; +} + `; + }, + pin: pin_1.generateStyle, +}; +function hasDeclareBlock(type) { + return exports.blockMap.has(type); +} +exports.hasDeclareBlock = hasDeclareBlock; +function getDeclareBlock(type) { + return exports.blockMap.get(type); +} +exports.getDeclareBlock = getDeclareBlock; +function removeDeclareBlock(type) { + const graph = '*'; + const unknownOption = (0, ui_graph_1.queryNode)(graph, 'unknown'); + (0, ui_graph_1.registerNode)(graph, type, unknownOption); + exports.blockMap.delete(type); +} +exports.removeDeclareBlock = removeDeclareBlock; +// @ts-ignore +window.removeDeclareBlock = removeDeclareBlock; +/** + * 注册一个 block 类型 + * @param block + * @returns + */ +function declareBlock(block) { + const graph = '*'; + // if (blockMap.has(block.type)) { + // console.warn(`Cannot declare duplicate block types: ${block.type}`); + // return; + // } + // 合并 extend 数据 + if (block.extend) { + const extend = exports.blockMap.get(block.extend); + if (!extend) { + console.warn(`Inheritance data not found: ${block.extend}`); + } + else { + (0, utils_1.completeBlockTarget)(block, extend); + } + } + const options = generateBlockOption(block); + (0, ui_graph_1.registerNode)(graph, block.type, options); + exports.blockMap.set(block.type, block); +} +exports.declareBlock = declareBlock; +function unDeclareBlock(type) { + const graph = '*'; + // TODO 需要删除底层 block 节点 + // unregisterNode(graph, type); + exports.blockMap.delete(type); +} +exports.unDeclareBlock = unDeclareBlock; +function replaceDeclareBlock(searchType, block) { + if (exports.blockMap.has(searchType)) { + unDeclareBlock(searchType); + } + declareBlock(block); +} +exports.replaceDeclareBlock = replaceDeclareBlock; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2stZm9yZ2UvYmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFJYixrREFBOEQ7QUFFOUQsbUNBQThDO0FBRTlDLCtCQUF1RztBQUN2RyxxRUFBcUU7QUFFeEQsUUFBQSxRQUFRLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7QUFFbEU7OztHQUdHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRztJQUN0Qjs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxJQUFzQixFQUFFLFNBQTRCLEVBQUUsT0FBK0I7UUFDN0YsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLFNBQVMsQ0FBQztRQUM1RCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBRSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDeEUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsVUFBVSxDQUFDLElBQXNCLEVBQUUsU0FBNEI7UUFDM0QsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ1AsT0FBTztTQUNWO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUUsQ0FBQztRQUMvRCxLQUFLLENBQUMsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLElBQXNCLEVBQUUsU0FBNEI7UUFDaEUsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9B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IEdyYXBoTm9kZUVsZW1lbnQgfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoL2Rpc3QvZWxlbWVudC9ncmFwaC1ub2RlJztcbmltcG9ydCB0eXBlIHsgR3JhcGhFbGVtZW50IH0gZnJvbSAnQGl0aGFyYm9ycy91aS1ncmFwaC9kaXN0L2VsZW1lbnQvZ3JhcGgnO1xuaW1wb3J0IHsgcmVnaXN0ZXJOb2RlLCBxdWVyeU5vZGUgfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoJztcbmltcG9ydCB0eXBlIHsgSVBpbkRlc2NyaXB0aW9uLCBJQmxvY2tEZXNjcmlwdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IGNvbXBsZXRlQmxvY2tUYXJnZXQgfSBmcm9tICcuL3V0aWxzJztcblxuaW1wb3J0IHsgZ2VuZXJhdGVPdXRwdXRQaW5IVE1MLCBnZW5lcmF0ZUlucHV0UGluSFRNTCwgZ2VuZXJhdGVTdHlsZSBhcyBnZW5lcmF0ZVBpblN0eWxlIH0gZnJvbSAnLi9waW4nO1xuLy8gaW1wb3J0IHsgdW5yZWdpc3Rlck5vZGUgfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoL2Rpc3QvbWFuYWdlcic7XG5cbmV4cG9ydCBjb25zdCBibG9ja01hcDogTWFwPHN0cmluZywgSUJsb2NrRGVzY3JpcHRpb24+ID0gbmV3IE1hcCgpO1xuXG4vKipcbiAqIEJsb2NrIOWFg+e0oOabtOaWsOeahOS4gOS6m+W3peWFt+aWueazlVxuICog5LiA6Iis5piv5Lyg5YWl5YWD57SgICsg5pWw5o2u77yM5pu05paw5YWD57Sg5YaF55qE5LiA5LqbIEhUTUwg5a+56LGhXG4gKi9cbmNvbnN0IEJsb2NrRWxlbWVudFV0aWxzID0ge1xuICAgIC8qKlxuICAgICAqIOabtOaWsCBCbG9jayDlhYPntKDnmoQgdGl0bGVcbiAgICAgKiBAcGFyYW0gZWxlbVxuICAgICAqIEBwYXJhbSBibG9ja0Rlc2NcbiAgICAgKiBAcGFyYW0gZGV0YWlsc1xuICAgICAqL1xuICAgIHVwZGF0ZVRpdGxlKGVsZW06IEdyYXBoTm9kZUVsZW1lbnQsIGJsb2NrRGVzYzogSUJsb2NrRGVzY3JpcHRpb24sIGRldGFpbHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICAgICAgY29uc3QgdGl0bGUgPSBibG9ja0Rlc2MudGl0bGUgfHwgZGV0YWlscy50aXRsZSB8fCAnVW5rbm93bic7XG4gICAgICAgIGVsZW0uc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGAudGl0bGUgdWktbGFiZWxgKSEuaW5uZXJIVE1MID0gdGl0bGU7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOabtOaWsCBCbG9jayDlhYPntKDnmoQgaWNvblxuICAgICAqIEBwYXJhbSBlbGVtXG4gICAgICogQHBhcmFtIGJsb2NrRGVzY1xuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgdXBkYXRlSWNvbihlbGVtOiBHcmFwaE5vZGVFbGVtZW50LCBibG9ja0Rlc2M6IElCbG9ja0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSBibG9ja0Rlc2MuZmVhdHVyZSB8fCB7fTtcbiAgICAgICAgY29uc3QgaWNvbiA9IGZlYXR1cmUuaWNvbjtcbiAgICAgICAgaWYgKCFpY29uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgJGljb24gPSBlbGVtLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnRpdGxlIHVpLWljb25gKSE7XG4gICAgICAgICRpY29uLnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7XG4gICAgICAgICRpY29uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBpY29uKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog5pu05pawIEJsb2NrIOWFg+e0oOaYr+WQpuWPr+i/m+WFpeeahOWbvuagh+aYvuekuueKtuaAgVxuICAgICAqIEBwYXJhbSBlbGVtXG4gICAgICogQHBhcmFtIGJsb2NrRGVzY1xuICAgICAqL1xuICAgIHVwZGF0ZUNvbGxhcHNlZChlbGVtOiBHcmFwaE5vZGVFbGVtZW50LCBibG9ja0Rlc2M6IElCbG9ja0Rlc2NyaXB0aW9uKSB7XG4gICAgICAgIGNvbnN0IGZlYXR1cmUgPSBibG9ja0Rlc2MuZmVhdHVyZSB8fCB7fTtcbiAgICAgICAgY29uc3QgaXNDb2xsYXBzZWQgPSBmZWF0dXJlLmlzQ29sbGFwc2VkQmxvY2s7XG4gICAgICAgIGNvbnN0ICRzdmcgPSBlbGVtLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnRpdGxlIHN2Z2ApITtcbiAgICAgICAgaWYgKGlzQ29sbGFwc2VkKSB7XG4gICAgICAgICAgICAkc3ZnLnJlbW92ZUF0dHJpYnV0ZSgnaGlkZGVuJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkc3ZnLnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuICAgICAgICB9XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOabtOaWsOWFg+e0oOWxleW8gOaKmOWPoOeahOeKtuaAgVxuICAgICAqIEBwYXJhbSBlbGVtXG4gICAgICogQHBhcmFtIGJsb2NrRGVzY1xuICAgICAqIEBwYXJhbSBkZXRhaWxzXG4gICAgICovXG4gICAgdXBkYXRlRXhwYW5kKGVsZW06IEdyYXBoTm9kZUVsZW1lbnQsIGJsb2NrRGVzYzogSUJsb2NrRGVzY3JpcHRpb24sIGRldGFpbHM6IHsgW2tleTogc3RyaW5nXTogYW55IH0pIHtcbiAgICAgICAgaWYgKGJsb2NrRGVzYy5pbnB1dFBpbnMubGVuZ3RoID4gMCB8fCBibG9ja0Rlc2Mub3V0cHV0UGlucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgnZXhwYW5kJywgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZWxlbS5yZW1vdmVBdHRyaWJ1dGUoJ2V4cGFuZCcpO1xuICAgICAgICB9XG4gICAgfSxcbn07XG5cbi8qKlxuICog5Yib5bu65LiA5Liq5LiT55So55qE6IqC54K55riy5p+T5a+56LGhXG4gKlxuICogQHJldHVybnNcbiAqIEBwYXJhbSBibG9ja0Rlc2NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQmxvY2tPcHRpb24oYmxvY2tEZXNjOiBJQmxvY2tEZXNjcmlwdGlvbikge1xuICAgIGJsb2NrRGVzYy5zdHlsZSA9IGJsb2NrRGVzYy5zdHlsZSB8fCB7fTtcbiAgICBibG9ja0Rlc2MuZmVhdHVyZSA9IGJsb2NrRGVzYy5mZWF0dXJlIHx8IHt9O1xuXG4gICAgY29uc3Qgc2hvd1F1aWNrQ29ubmVjdFBvaW50ID0gISFibG9ja0Rlc2MuZmVhdHVyZS5zaG93UXVpY2tDb25uZWN0UG9pbnQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0ZW1wbGF0ZTogLypodG1sKi9gXG48c2VjdGlvbiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICA8aGVhZGVyIGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDx1aS1pY29uIGhpZGRlbj48L3VpLWljb24+XG4gICAgICAgICAgICA8dWktbGFiZWw+PC91aS1sYWJlbD5cbiAgICAgICAgICAgIDxzdmcgaGlkZGVuIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+PHBhdGggZD1cIk0xIDEzTDggM0wxNSAxM0gxWlwiPjwvcGF0aD48L3N2Zz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICR7c2hvd1F1aWNrQ29ubmVjdFBvaW50ID8gJzxkaXYgaGlkZGVuIGNsYXNzPVwicXVpY2stY29ubmVjdFwiIG5hbWU9XCJ0XCI+PC9kaXYnIDogJyd9XG4gICAgPC9oZWFkZXI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjb250ZW50XCI+PC9zZWN0aW9uPlxuPC9zZWN0aW9uPlxuICAgICAgICBgLFxuXG4gICAgICAgIHN0eWxlOiBgJHtTVFlMRS5ob3N0KGJsb2NrRGVzYyl9JHtTVFlMRS5oZWFkZXIoYmxvY2tEZXNjKX0ke1NUWUxFLnBpbihibG9ja0Rlc2MpfWAsXG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIOWIneWni+WMlueahOaXtuWAmeiuvue9ruS4gOS6m+S6i+S7tuWSjCBIVE1MXG4gICAgICAgICAqIEBwYXJhbSB0aGlzXG4gICAgICAgICAqIEBwYXJhbSBkZXRhaWxzXG4gICAgICAgICAqL1xuICAgICAgICBvbkluaXQodGhpczogR3JhcGhOb2RlRWxlbWVudCwgZGV0YWlsczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgICAgICAgICAgLy8g6K6+572uIHRpdGxlIOWPr+aLluaLvVxuICAgICAgICAgICAgY29uc3QgJHRpdGxlID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlci50aXRsZScpISBhcyBIVE1MRWxlbWVudDtcbiAgICAgICAgICAgICR0aXRsZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNBdHRyaWJ1dGUoJ3NlbGVjdGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEoZXZlbnQgYXMgTW91c2VFdmVudCkubWV0YUtleSAmJiAhKGV2ZW50IGFzIE1vdXNlRXZlbnQpLmN0cmxLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xlYXJPdGhlclNlbGVjdGVkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Qoe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJMaW5lczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhck5vZGVzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRNb3ZlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8g57uR5a6a5b+r6YCf6L+e5o6l54K555qE5LqL5Lu2XG4gICAgICAgICAgICBjb25zdCAkcGFyYW0gPSB0aGlzLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcihgLnF1aWNrLWNvbm5lY3RgKSE7XG4gICAgICAgICAgICAkcGFyYW0gJiYgJHBhcmFtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsICgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0Q29ubmVjdCgnc3RyYWlnaHQnKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyDnu5HlrprlhYPntKDngrnlh7vlvIDlp4vov57mjqXnmoTkuovku7ZcbiAgICAgICAgICAgIGlmIChibG9ja0Rlc2MuaW5wdXRQaW5zLmxlbmd0aCA9PT0gMCAmJiBibG9ja0Rlc2Mub3V0cHV0UGlucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAwICYmIHRoaXMuaGFzQ29ubmVjdCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0Q29ubmVjdCgnc3RyYWlnaHQnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0sIHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2RibGNsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgLy8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgLy8gZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdibG9jay1kYmxjbGljaycsIHtcbiAgICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlWDogZXZlbnQucGFnZVgsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlWTogZXZlbnQucGFnZVksXG4gICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRYOiBldmVudC5vZmZzZXRYLFxuICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0WTogZXZlbnQub2Zmc2V0WSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgY3VzdG9tID0gbmV3IEN1c3RvbUV2ZW50KCdibG9jay1jbGljaycsIHtcbiAgICAgICAgICAgICAgICAgICAgYnViYmxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgZGV0YWlsOiB7fSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoY3VzdG9tKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbSA9IG5ldyBDdXN0b21FdmVudCgnYmxvY2stcmlnaHQtY2xpY2snLCB7XG4gICAgICAgICAgICAgICAgICAgIGJ1YmJsZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGNhbmNlbGFibGU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudChjdXN0b20pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHRoaXMuZGF0YS5hZGRQcm9wZXJ0eUxpc3RlbmVyKCdzZWxlY3RlZCcsIChzZWxlY3RlZCwgbGVnYWN5U2VsZWN0ZWQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IGxlZ2FjeVNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbSA9IG5ldyBDdXN0b21FdmVudCgnYmxvY2stc2VsZWN0ZWQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge30sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoY3VzdG9tKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXN0b20gPSBuZXcgQ3VzdG9tRXZlbnQoJ2Jsb2NrLXVuc2VsZWN0ZWQnLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbDoge30sXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnQoY3VzdG9tKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBvblVwZGF0ZSh0aGlzOiBHcmFwaE5vZGVFbGVtZW50LCBkZXRhaWxzOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgICAgICAgICAvLyDmm7TmlrAgdGl0bGVcbiAgICAgICAgICAgIEJsb2NrRWxlbWVudFV0aWxzLnVwZGF0ZVRpdGxlKHRoaXMsIGJsb2NrRGVzYywgZGV0YWlscyk7XG5cbiAgICAgICAgICAgIC8vIOabtOaWsCBpY29uXG4gICAgICAgICAgICBCbG9ja0VsZW1lbnRVdGlscy51cGRhdGVJY29uKHRoaXMsIGJsb2NrRGVzYyk7XG5cbiAgICAgICAgICAgIC8vIOabtOaWsOaKmOWPoOWbvuagh1xuICAgICAgICAgICAgQmxvY2tFbGVtZW50VXRpbHMudXBkYXRlQ29sbGFwc2VkKHRoaXMsIGJsb2NrRGVzYyk7XG5cbiAgICAgICAgICAgIC8vIOabtOaWsOaKmOWPoOeKtuaAgVxuICAgICAgICAgICAgQmxvY2tFbGVtZW50VXRpbHMudXBkYXRlRXhwYW5kKHRoaXMsIGJsb2NrRGVzYywgZGV0YWlscyk7XG5cbiAgICAgICAgICAgIC8vIOaVsOaNruabtOaWsOWQju+8jOabtOaWsOWvueW6lOeahOi1hOa6kFxuICAgICAgICAgICAgLy8gdGhpcy5kYXRhLmFkZFByb3BlcnR5TGlzdGVuZXIoJ2RldGFpbHMnLCAoZGV0YWlscykgPT4ge1xuICAgICAgICAgICAgLy8gICAgIHVwZGF0ZUhUTUwoZGV0YWlscy5sYWJlbCk7XG4gICAgICAgICAgICAvLyB9KTtcblxuICAgICAgICAgICAgLy8g55Sf5oiQ6ZKI6ISaXG4gICAgICAgICAgICBjb25zdCAkY29udGVudCA9IHRoaXMuc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKCcuY29udGVudCcpITtcbiAgICAgICAgICAgICRjb250ZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgICAgICAgaWYgKGJsb2NrRGVzYy5jcmVhdGVEeW5hbWljT3V0cHV0UGlucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dExpc3QgPSBibG9ja0Rlc2MuY3JlYXRlRHluYW1pY091dHB1dFBpbnMoYmxvY2tEZXNjLCBkZXRhaWxzKTtcbiAgICAgICAgICAgICAgICBvdXRwdXRMaXN0LmZvckVhY2goKHBpbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjb250ZW50Py5hcHBlbmRDaGlsZChnZW5lcmF0ZU91dHB1dFBpbkhUTUwocGluLCBkZXRhaWxzLm91dHB1dFBpbnNbaW5kZXhdKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJsb2NrRGVzYy5vdXRwdXRQaW5zLmZvckVhY2goKHBpbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjb250ZW50Py5hcHBlbmRDaGlsZChnZW5lcmF0ZU91dHB1dFBpbkhUTUwocGluLCBkZXRhaWxzLm91dHB1dFBpbnNbaW5kZXhdKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZ3JhcGggPSAodGhpcy5nZXRSb290Tm9kZSgpIGFzIGFueSkuaG9zdCBhcyBHcmFwaEVsZW1lbnQ7XG4gICAgICAgICAgICBjb25zdCB1dWlkID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ25vZGUtdXVpZCcpITtcbiAgICAgICAgICAgIGlmIChibG9ja0Rlc2MuY3JlYXRlRHluYW1pY0lucHV0UGlucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0TGlzdCA9IGJsb2NrRGVzYy5jcmVhdGVEeW5hbWljSW5wdXRQaW5zKGJsb2NrRGVzYywgZGV0YWlscyk7XG4gICAgICAgICAgICAgICAgaW5wdXRMaXN0LmZvckVhY2goKHBpbiwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRjb250ZW50Py5hcHBlbmRDaGlsZChnZW5lcmF0ZUlucHV0UGluSFRNTChwaW4sIGRldGFpbHMuaW5wdXRQaW5zLCBpbmRleCwgdXVpZCwgJGdyYXBoLmdldFByb3BlcnR5KCdsaW5lcycpKSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJsb2NrRGVzYy5pbnB1dFBpbnMuZm9yRWFjaCgocGluLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGNvbnRlbnQ/LmFwcGVuZENoaWxkKGdlbmVyYXRlSW5wdXRQaW5IVE1MKHBpbiwgZGV0YWlscy5pbnB1dFBpbnMsIGluZGV4LCB1dWlkLCAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g57uR5a6a5Y+C5pWw6L+e5o6l54K555qE5LqL5Lu2XG4gICAgICAgICAgICBjb25zdCAkcGFyYW1MaXN0ID0gdGhpcy5zaGFkb3dSb290LnF1ZXJ5U2VsZWN0b3JBbGwoYHYtZ3JhcGgtbm9kZS1wYXJhbWApO1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCgkcGFyYW1MaXN0LCAoJHBhcmFtKSA9PiB7XG4gICAgICAgICAgICAgICAgJHBhcmFtLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gJHBhcmFtLmdldEF0dHJpYnV0ZSgnbmFtZScpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbURpcmVjdGlvbiA9ICRwYXJhbS5nZXRBdHRyaWJ1dGUoJ2RpcmVjdGlvbicpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW1EaXJlY3Rpb24gIT09ICdpbnB1dCcgJiYgcGFyYW1EaXJlY3Rpb24gIT09ICdvdXRwdXQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGFydENvbm5lY3QoJ2N1cnZlJywgbmFtZSwgcGFyYW1EaXJlY3Rpb24pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgfTtcbn1cblxuY29uc3QgU1RZTEUgPSB7XG4gICAgaG9zdChibG9jazogSUJsb2NrRGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYmxvY2suc3R5bGUgfHwge307XG4gICAgICAgIHJldHVybiAvKmNzcyovYFxuOmhvc3QgKltoaWRkZW5dIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuOmhvc3Qge1xuICAgIC0tZm9udC1jb2xvcjogJHtjb25maWcuZm9udENvbG9yIHx8ICcjY2NjJ307XG4gICAgLS1mb250LWNvbG9yLWhvdmVyOiAke2NvbmZpZy5mb250SG92ZXJDb2xvciB8fCBjb25maWcuZm9udENvbG9yIHx8ICcjY2NjJ307XG4gICAgLS1ib3JkZXItY29sb3I6ICR7Y29uZmlnLmJvcmRlckNvbG9yIHx8ICd3aGl0ZSd9O1xuICAgIC0tYm9yZGVyLWNvbG9yLWhvdmVyOiAke2NvbmZpZy5ib3JkZXJIb3ZlckNvbG9yIHx8IGNvbmZpZy5ib3JkZXJDb2xvciB8fCAnd2hpdGUnfTtcbiAgICAtLXNoYWRvdy1jb2xvcjogJHtjb25maWcuc2hhZG93Q29sb3IgfHwgJyNjY2MnfTtcbiAgICAtLXNoYWRvdy1jb2xvci1ob3ZlcjogJHtjb25maWcuc2hhZG93SG92ZXJDb2xvciB8fCBjb25maWcuc2hhZG93Q29sb3IgfHwgJyNjY2MnfTtcbiAgICAtLWJhY2tncm91bmQtY29sb3I6ICR7Y29uZmlnLmJhY2tncm91bmRDb2xvciB8fCAnIzJiMmIyYmNjJ307XG4gICAgLS1ib3JkZXItcmFkaXVzOiAycHg7XG5cbiAgICAtLWhlYWRlci1oZWlnaHQ6IDI0cHg7XG4gICAgLS1oZWFkZXItYmFja2dyb3VuZDogJHtjb25maWcuaGVhZGVyQ29sb3IgfHwgJyMyYjJiMmJjYyd9O1xuXG4gICAgLS1waW4taGVpZ2h0OiAyNHB4O1xuXG4gICAgd2lkdGg6IDIwMHB4O1xuXG4gICAgY29sb3I6IHZhcigtLWZvbnQtY29sb3IpO1xuICAgIGN1cnNvcjogZGVmYXVsdDtcblxufVxuOmhvc3QgPiBzZWN0aW9uLndyYXBwZXIge1xuICAgIG1hcmdpbjogMTBweDtcbn1cbjpob3N0KDpob3ZlcikgPiBzZWN0aW9uLndyYXBwZXIsIDpob3N0KFtzZWxlY3RlZF0pID4gc2VjdGlvbi53cmFwcGVyIHtcbiAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvci1ob3Zlcik7XG4gICAgY29sb3I6IHZhcigtLWZvbnQtY29sb3ItaG92ZXIpO1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggN3B4IDJweCB2YXIoLS1zaGFkb3ctY29sb3ItaG92ZXIpO1xufVxuc2VjdGlvbi53cmFwcGVyIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7IFxuICAgIGJhY2tncm91bmQ6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IDBweCAwcHggN3B4IDJweCBub25lO1xufVxuOmhvc3QoOmhvdmVyKSA+IHNlY3Rpb24ud3JhcHBlcjo6YmVmb3JlIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIHotaW5kZXg6IDE7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7IFxuICAgIGJveC1zaGFkb3c6IDBweCAwcHggMHB4IDFweCB2YXIoLS1zaGFkb3ctY29sb3ItaG92ZXIpIGluc2V0O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuYDtcbiAgICB9LFxuICAgIGhlYWRlcihibG9jazogSUJsb2NrRGVzY3JpcHRpb24pIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gYmxvY2suc3R5bGUgfHwge307XG4gICAgICAgIHJldHVybiAvKmNzcyovYFxuaGVhZGVyLnRpdGxlIHtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0taGVhZGVyLWhlaWdodCk7XG5cbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cyk7XG5cbiAgICAke2NvbmZpZy5zZWNvbmRhcnlDb2xvciA/IGBiYWNrZ3JvdW5kOiAke2NvbmZpZy5zZWNvbmRhcnlDb2xvcn07IHBhZGRpbmctbGVmdDogNnB4O2AgOiAnJ31cbn1cbmhlYWRlci50aXRsZSA+IGRpdiB7XG4gICAgcGFkZGluZzogMCAxMHB4O1xuICAgIGhlaWdodDogMjRweDtcbiAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGJhY2tncm91bmQ6IHZhcigtLWhlYWRlci1iYWNrZ3JvdW5kKTtcbn1cbjpob3N0KFtleHBhbmRdKSBoZWFkZXIudGl0bGUgPiBkaXYge1xuICAgIGJvcmRlci1yYWRpdXM6IHZhcigtLWJvcmRlci1yYWRpdXMpIHZhcigtLWJvcmRlci1yYWRpdXMpIDAgMDtcbn1cbmhlYWRlci50aXRsZSA+IGRpdiA+IHVpLWxhYmVsIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIDEwcHg7XG59XG5oZWFkZXIudGl0bGUgPiBkaXYgPiB1aS1pY29uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbmhlYWRlci50aXRsZSA+IGRpdiA+IHN2ZyB7XG4gICAgZmlsbDogd2hpdGU7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IDEwcHg7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoOTBkZWcpO1xufVxuaGVhZGVyLnRpdGxlID4gLnF1aWNrLWNvbm5lY3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgd2lkdGg6IDEycHg7XG4gICAgaGVpZ2h0OiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IC02cHg7XG4gICAgdG9wOiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLTZweDtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4zcztcbn1cbjpob3N0KDpob3ZlcikgaGVhZGVyLnRpdGxlID4gLnF1aWNrLWNvbm5lY3Qge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIG9wYWNpdHk6IDE7XG59XG4gICAgICAgIGA7XG4gICAgfSxcbiAgICBwaW46IGdlbmVyYXRlUGluU3R5bGUsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaGFzRGVjbGFyZUJsb2NrKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBibG9ja01hcC5oYXModHlwZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWNsYXJlQmxvY2sodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGJsb2NrTWFwLmdldCh0eXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZURlY2xhcmVCbG9jayh0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBncmFwaCA9ICcqJztcbiAgICBjb25zdCB1bmtub3duT3B0aW9uID0gcXVlcnlOb2RlKGdyYXBoLCAndW5rbm93bicpO1xuICAgIHJlZ2lzdGVyTm9kZShncmFwaCwgdHlwZSwgdW5rbm93bk9wdGlvbik7XG4gICAgYmxvY2tNYXAuZGVsZXRlKHR5cGUpO1xufVxuXG4vLyBAdHMtaWdub3JlXG53aW5kb3cucmVtb3ZlRGVjbGFyZUJsb2NrID0gcmVtb3ZlRGVjbGFyZUJsb2NrO1xuXG4vKipcbiAqIOazqOWGjOS4gOS4qiBibG9jayDnsbvlnotcbiAqIEBwYXJhbSBibG9ja1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVCbG9jayhibG9jazogSUJsb2NrRGVzY3JpcHRpb24pIHtcbiAgICBjb25zdCBncmFwaCA9ICcqJztcbiAgICAvLyBpZiAoYmxvY2tNYXAuaGFzKGJsb2NrLnR5cGUpKSB7XG4gICAgLy8gICAgIGNvbnNvbGUud2FybihgQ2Fubm90IGRlY2xhcmUgZHVwbGljYXRlIGJsb2NrIHR5cGVzOiAke2Jsb2NrLnR5cGV9YCk7XG4gICAgLy8gICAgIHJldHVybjtcbiAgICAvLyB9XG5cbiAgICAvLyDlkIjlubYgZXh0ZW5kIOaVsOaNrlxuICAgIGlmIChibG9jay5leHRlbmQpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5kID0gYmxvY2tNYXAuZ2V0KGJsb2NrLmV4dGVuZCk7XG4gICAgICAgIGlmICghZXh0ZW5kKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYEluaGVyaXRhbmNlIGRhdGEgbm90IGZvdW5kOiAke2Jsb2NrLmV4dGVuZH1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbXBsZXRlQmxvY2tUYXJnZXQoYmxvY2ssIGV4dGVuZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb25zID0gZ2VuZXJhdGVCbG9ja09wdGlvbihibG9jayk7XG4gICAgcmVnaXN0ZXJOb2RlKGdyYXBoLCBibG9jay50eXBlLCBvcHRpb25zKTtcbiAgICBibG9ja01hcC5zZXQoYmxvY2sudHlwZSwgYmxvY2spO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5EZWNsYXJlQmxvY2sodHlwZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZ3JhcGggPSAnKic7XG4gICAgLy8gVE9ETyDpnIDopoHliKDpmaTlupXlsYIgYmxvY2sg6IqC54K5XG4gICAgLy8gdW5yZWdpc3Rlck5vZGUoZ3JhcGgsIHR5cGUpO1xuICAgIGJsb2NrTWFwLmRlbGV0ZSh0eXBlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VEZWNsYXJlQmxvY2soc2VhcmNoVHlwZTogc3RyaW5nLCBibG9jazogSUJsb2NrRGVzY3JpcHRpb24pIHtcbiAgICBpZiAoYmxvY2tNYXAuaGFzKHNlYXJjaFR5cGUpKSB7XG4gICAgICAgIHVuRGVjbGFyZUJsb2NrKHNlYXJjaFR5cGUpO1xuICAgIH1cbiAgICBkZWNsYXJlQmxvY2soYmxvY2spO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/enum.js b/extensions/shader-graph/dist/block-forge/enum.js new file mode 100644 index 0000000..e22cae0 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/enum.js @@ -0,0 +1,100 @@ +"use strict"; +/** + * 存储 enum 管理 + */ +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeEnumObserver = exports.addEnumObserver = exports.clearDynamicEnum = exports.clearEnum = exports.declareEnum = exports.removeDynamicEnumToType = exports.changeDynamicEnumValue = exports.declareDynamicEnumToType = exports.getDynamicEnumByType = exports.getEnumByType = void 0; +const enumMap = new Map(); +const dynamicEnumMap = new Map(); +const enumEventMap = new Map(); +function getEnumByType(type) { + return enumMap.get(type) || []; +} +exports.getEnumByType = getEnumByType; +function getDynamicEnumByType(type) { + return dynamicEnumMap.get(type) || []; +} +exports.getDynamicEnumByType = getDynamicEnumByType; +function emitEventByType(type) { + const eventList = enumEventMap.get(type) || []; + eventList.forEach((event) => event()); +} +/** + * 用于动态声明枚举 + * @param options + */ +function declareDynamicEnumToType(options) { + const enumList = dynamicEnumMap.get(options.type) || []; + if (!enumList.find((item) => item.name === options.name)) { + enumList.push({ + name: options.name, + value: enumList.length, + }); + updateDynamicEnumMap(options.type, enumList); + return true; + } + return false; +} +exports.declareDynamicEnumToType = declareDynamicEnumToType; +function changeDynamicEnumValue(type, newValue, oldValue) { + const enumList = dynamicEnumMap.get(type) || []; + const index = enumList.findIndex((item) => item.name === oldValue); + if (index !== -1) { + enumList[index].name = newValue; + updateDynamicEnumMap(type, enumList); + } +} +exports.changeDynamicEnumValue = changeDynamicEnumValue; +function removeDynamicEnumToType(type, singleEnum) { + const enumList = dynamicEnumMap.get(type) || []; + const index = enumList.findIndex((item) => item.name === singleEnum); + if (index !== -1) { + enumList.splice(index, 1); + updateDynamicEnumMap(type, enumList); + } +} +exports.removeDynamicEnumToType = removeDynamicEnumToType; +function declareEnum(type, ccEnum) { + updateEnumMap(type, ccEnumToList(ccEnum)); +} +exports.declareEnum = declareEnum; +function clearEnum() { + enumMap.clear(); + enumMap.forEach((value, type) => removeEnumObserver(type)); +} +exports.clearEnum = clearEnum; +function clearDynamicEnum() { + dynamicEnumMap.clear(); + dynamicEnumMap.forEach((value, type) => removeEnumObserver(type)); +} +exports.clearDynamicEnum = clearDynamicEnum; +function addEnumObserver(type, func) { + const eventList = enumEventMap.get(type) || []; + eventList.push(func); + enumEventMap.set(type, eventList); +} +exports.addEnumObserver = addEnumObserver; +function removeEnumObserver(type) { + enumEventMap.delete(type); +} +exports.removeEnumObserver = removeEnumObserver; +function ccEnumToList(ccEnum) { + const enums = []; + for (const name in ccEnum) { + const v = ccEnum[name]; + if (Number.isInteger(v)) { + enums.push({ name, value: v }); + } + } + enums.sort((a, b) => a.value - b.value); + return enums; +} +function updateEnumMap(type, enumList) { + enumMap.set(type, enumList); + emitEventByType(type); +} +function updateDynamicEnumMap(type, enumList) { + dynamicEnumMap.set(type, enumList); + emitEventByType(type); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibG9jay1mb3JnZS9lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBWUgsTUFBTSxPQUFPLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7QUFDbkQsTUFBTSxjQUFjLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7QUFDMUQsTUFBTSxZQUFZLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7QUFFeEQsU0FBZ0IsYUFBYSxDQUFDLElBQVk7SUFDdEMsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBRkQsc0NBRUM7QUFFRCxTQUFnQixvQkFBb0IsQ0FBQyxJQUFZO0lBQzdDLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDMUMsQ0FBQztBQUZELG9EQUVDO0FBRUQsU0FBUyxlQUFlLENBQUMsSUFBWTtJQUNqQyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUE0QjtJQUNqRSxNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3RELFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDVixJQUFJLEVBQUUs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QUM7UUFDdkIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3JCLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDbEM7S0FDSjtJQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFVLEVBQUUsQ0FBRSxDQUFDLENBQUMsS0FBZ0IsR0FBSSxDQUFDLENBQUMsS0FBZ0IsQ0FBQyxDQUFDO0lBQ3hFLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxTQUFTLGFBQWEsQ0FBQyxJQUFZLEVBQUUsUUFBb0I7SUFDckQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDNUIsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxTQUFTLG9CQUFvQixDQUFDLElBQVksRUFBRSxRQUFvQjtJQUM1RCxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUNuQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5a2Y5YKoIGVudW0g566h55CGXG4gKi9cblxuZXhwb3J0IHR5cGUgRW51bVR5cGUgPSB7XG4gICAgbmFtZTogc3RyaW5nLFxuICAgIHZhbHVlOiBudW1iZXIsXG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIERlY2xhcmVSZWdpc3RlckVudW0ge1xuICAgIHR5cGU6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbmNvbnN0IGVudW1NYXA6IE1hcDxzdHJpbmcsIEVudW1UeXBlW10+ID0gbmV3IE1hcCgpO1xuY29uc3QgZHluYW1pY0VudW1NYXA6IE1hcDxzdHJpbmcsIEVudW1UeXBlW10+ID0gbmV3IE1hcCgpO1xuY29uc3QgZW51bUV2ZW50TWFwOiBNYXA8c3RyaW5nLCBGdW5jdGlvbltdPiA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEVudW1CeVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGVudW1NYXAuZ2V0KHR5cGUpIHx8IFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHluYW1pY0VudW1CeVR5cGUodHlwZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGR5bmFtaWNFbnVtTWFwLmdldCh0eXBlKSB8fCBbXTtcbn1cblxuZnVuY3Rpb24gZW1pdEV2ZW50QnlUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IGV2ZW50TGlzdCA9IGVudW1FdmVudE1hcC5nZXQodHlwZSkgfHwgW107XG4gICAgZXZlbnRMaXN0LmZvckVhY2goKGV2ZW50KSA9PiBldmVudCgpKTtcbn1cblxuLyoqXG4gKiDnlKjkuo7liqjmgIHlo7DmmI7mnprkuL5cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlRHluYW1pY0VudW1Ub1R5cGUob3B0aW9uczogRGVjbGFyZVJlZ2lzdGVyRW51bSkge1xuICAgIGNvbnN0IGVudW1MaXN0ID0gZHluYW1pY0VudW1NYXAuZ2V0KG9wdGlvbnMudHlwZSkgfHwgW107XG4gICAgaWYgKCFlbnVtTGlzdC5maW5kKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG9wdGlvbnMubmFtZSkpIHtcbiAgICAgICAgZW51bUxpc3QucHVzaCh7XG4gICAgICAgICAgICBuYW1lOiBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogZW51bUxpc3QubGVuZ3RoLFxuICAgICAgICB9KTtcbiAgICAgICAgdXBkYXRlRHluYW1pY0VudW1NYXAob3B0aW9ucy50eXBlLCBlbnVtTGlzdCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFuZ2VEeW5hbWljRW51bVZhbHVlKHR5cGU6IHN0cmluZywgbmV3VmFsdWU6IHN0cmluZywgb2xkVmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IGVudW1MaXN0ID0gZHluYW1pY0VudW1NYXAuZ2V0KHR5cGUpIHx8IFtdO1xuICAgIGNvbnN0IGluZGV4ID0gZW51bUxpc3QuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IG9sZFZhbHVlKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgIGVudW1MaXN0W2luZGV4XS5uYW1lID0gbmV3VmFsdWU7XG4gICAgICAgIHVwZGF0ZUR5bmFtaWNFbnVtTWFwKHR5cGUsIGVudW1MaXN0KTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVEeW5hbWljRW51bVRvVHlwZSh0eXBlOiBzdHJpbmcsIHNpbmdsZUVudW06IHN0cmluZykge1xuICAgIGNvbnN0IGVudW1MaXN0ID0gZHluYW1pY0VudW1NYXAuZ2V0KHR5cGUpIHx8IFtdO1xuICAgIGNvbnN0IGluZGV4ID0gZW51bUxpc3QuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IHNpbmdsZUVudW0pO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgZW51bUxpc3Quc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgdXBkYXRlRHluYW1pY0VudW1NYXAodHlwZSwgZW51bUxpc3QpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlY2xhcmVFbnVtKHR5cGU6IHN0cmluZywgY2NFbnVtOiB7IFtrZXk6IHN0cmluZ106IGFueSB9KSB7XG4gICAgdXBkYXRlRW51bU1hcCh0eXBlLCBjY0VudW1Ub0xpc3QoY2NFbnVtKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckVudW0oKSB7XG4gICAgZW51bU1hcC5jbGVhcigpO1xuICAgIGVudW1NYXAuZm9yRWFjaCgodmFsdWUsIHR5cGUpID0+IHJlbW92ZUVudW1PYnNlcnZlcih0eXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckR5bmFtaWNFbnVtKCkge1xuICAgIGR5bmFtaWNFbnVtTWFwLmNsZWFyKCk7XG4gICAgZHluYW1pY0VudW1NYXAuZm9yRWFjaCgodmFsdWUsIHR5cGUpID0+IHJlbW92ZUVudW1PYnNlcnZlcih0eXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhZGRFbnVtT2JzZXJ2ZXIodHlwZTogc3RyaW5nLCBmdW5jOiBhbnkpIHtcbiAgICBjb25zdCBldmVudExpc3QgPSBlbnVtRXZlbnRNYXAuZ2V0KHR5cGUpIHx8IFtdO1xuICAgIGV2ZW50TGlzdC5wdXNoKGZ1bmMpO1xuICAgIGVudW1FdmVudE1hcC5zZXQodHlwZSwgZXZlbnRMaXN0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZUVudW1PYnNlcnZlcih0eXBlOiBzdHJpbmcpIHtcbiAgICBlbnVtRXZlbnRNYXAuZGVsZXRlKHR5cGUpO1xufVxuXG5mdW5jdGlvbiBjY0VudW1Ub0xpc3QoY2NFbnVtOiBhbnkpIHtcbiAgICBjb25zdCBlbnVtcyA9IFtdO1xuICAgIGZvciAoY29uc3QgbmFtZSBpbiBjY0VudW0pIHtcbiAgICAgICAgY29uc3QgdiA9IGNjRW51bVtuYW1lXTtcbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIodikpIHtcbiAgICAgICAgICAgIGVudW1zLnB1c2goeyBuYW1lLCB2YWx1ZTogdiB9KTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbnVtcy5zb3J0KChhLCBiKTogbnVtYmVyID0+IChhLnZhbHVlIGFzIG51bWJlcikgLSAoYi52YWx1ZSBhcyBudW1iZXIpKTtcbiAgICByZXR1cm4gZW51bXM7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUVudW1NYXAodHlwZTogc3RyaW5nLCBlbnVtTGlzdDogRW51bVR5cGVbXSkge1xuICAgIGVudW1NYXAuc2V0KHR5cGUsIGVudW1MaXN0KTtcbiAgICBlbWl0RXZlbnRCeVR5cGUodHlwZSk7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZUR5bmFtaWNFbnVtTWFwKHR5cGU6IHN0cmluZywgZW51bUxpc3Q6IEVudW1UeXBlW10pIHtcbiAgICBkeW5hbWljRW51bU1hcC5zZXQodHlwZSwgZW51bUxpc3QpO1xuICAgIGVtaXRFdmVudEJ5VHlwZSh0eXBlKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/event.js b/extensions/shader-graph/dist/block-forge/event.js new file mode 100644 index 0000000..16d353e --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/event.js @@ -0,0 +1,69 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LineEvent = exports.BlockEvent = exports.LineMouseEvent = exports.BlockMouseEvent = exports.GraphMouseEvent = void 0; +class CustomEvent { + constructor(blocks, lines) { + this.blocks = blocks; + this.lines = lines; + } +} +class MouseEvent extends CustomEvent { + constructor(blocks, lines) { + super(blocks, lines); + // 点击点在页面的坐标 + this.pageX = 0; + this.pageY = 0; + // 点击点在 Graph 里的坐标 + this.graphX = 0; + this.graphY = 0; + } + initPagePosition(x, y) { + this.pageX = x; + this.pageY = y; + } + initGraphPosition(x, y) { + this.graphX = x; + this.graphY = y; + } +} +class GraphMouseEvent extends MouseEvent { + constructor(blocks, lines, target, forge) { + super(blocks, lines); + this.target = target; + this.forge = forge; + } +} +exports.GraphMouseEvent = GraphMouseEvent; +class BlockMouseEvent extends MouseEvent { + constructor(blocks, lines, target, block) { + super(blocks, lines); + this.block = block; + this.target = target; + } +} +exports.BlockMouseEvent = BlockMouseEvent; +class LineMouseEvent extends MouseEvent { + constructor(blocks, lines, target, line) { + super(blocks, lines); + this.line = line; + this.target = target; + } +} +exports.LineMouseEvent = LineMouseEvent; +class BlockEvent extends CustomEvent { + constructor(blocks, lines, target, block) { + super(blocks, lines); + this.block = block; + this.target = target; + } +} +exports.BlockEvent = BlockEvent; +class LineEvent extends CustomEvent { + constructor(blocks, lines, target, line) { + super(blocks, lines); + this.line = line; + this.target = target; + } +} +exports.LineEvent = LineEvent; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2stZm9yZ2UvZXZlbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFlYixNQUFNLFdBQVc7SUFLYixZQUFZLE1BQWdCLEVBQUUsS0FBZTtRQUN6QyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUN2QixDQUFDO0NBQ0o7QUFFRCxNQUFNLFVBQVcsU0FBUSxXQUFXO0lBU2hDLFlBQ0ksTUFBZ0IsRUFDaEIsS0FBZTtRQUVmLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFaekIsWUFBWTtRQUNaLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBRVYsa0JBQWtCO1FBQ2xCLFdBQU0sR0FBRyxDQUFDLENBQUM7UUFDWCxXQUFNLEdBQUcsQ0FBQyxDQUFDO0lBT1gsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ2pDLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbkIsQ0FBQztJQUVELGlCQUFpQixDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQUVELE1BQWEsZUFBZ0IsU0FBUSxVQUFVO0lBSTNDLFlBQ0ksTUFBZ0IsRUFDaEIsS0FBZSxFQUNmLE1BQW9CLEVBQ3BCLEtBQTRCO1FBRTVCLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDdkIsQ0FBQztDQUNKO0FBZEQsMENBY0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsVUFBVTtJQUczQyxZQUNJLE1BQWdCLEVBQ2hCLEtBQWUsRUFDZixNQUF3QixFQUN4QixLQUFnQjtRQUVoQixLQUFLLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3pCLENBQUM7Q0FDSjtBQWJELDBDQWFDO0FBRUQsTUFBYSxjQUFlLFNBQVEsVUFBVTtJQUcxQyxZQUNJLE1BQWdCLEVBQ2hCLEtBQWUsRUFDZixNQUFtQixFQUNuQixJQUFjO1FBRWQsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFiRCx3Q0FhQztBQUVELE1BQWEsVUFBVyxTQUFRLFdBQVc7SUFHdkMsWUFDSSxNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBd0IsRUFDeEIsS0FBZ0I7UUFFaEIsS0FBSyxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN6QixDQUFDO0NBQ0o7QUFiRCxnQ0FhQztBQUVELE1BQWEsU0FBVSxTQUFRLFdBQVc7SUFHdEMsWUFDSSxNQUFnQixFQUNoQixLQUFlLEVBQ2YsTUFBbUIsRUFDbkIsSUFBYztRQUVkLEtBQUssQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDekIsQ0FBQztDQUNKO0FBYkQsOEJBYUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRWxlbWVudCB9IGZyb20gJ0BpdGhhcmJvcnMvdWktZ3JhcGgvZGlzdC9lbGVtZW50L2dyYXBoLW5vZGUnO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEVsZW1lbnQgfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoL2Rpc3QvZWxlbWVudC9ncmFwaCc7XG5pbXBvcnQgdHlwZSB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4vZm9yZ2UnO1xuaW1wb3J0IHR5cGUgeyBHcmFwaERhdGEsIEJsb2NrRGF0YSwgTGluZURhdGEgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbnR5cGUgVE5vZGVNYXAgPSB7XG4gICAgW2tleTogc3RyaW5nXTogQmxvY2tEYXRhO1xufTtcblxudHlwZSBUTGluZU1hcCA9IHtcbiAgICBba2V5OiBzdHJpbmddOiBMaW5lRGF0YTtcbn07XG5cbmNsYXNzIEN1c3RvbUV2ZW50IHtcblxuICAgIGJsb2NrczogVE5vZGVNYXA7XG4gICAgbGluZXM6IFRMaW5lTWFwO1xuXG4gICAgY29uc3RydWN0b3IoYmxvY2tzOiBUTm9kZU1hcCwgbGluZXM6IFRMaW5lTWFwKSB7XG4gICAgICAgIHRoaXMuYmxvY2tzID0gYmxvY2tzO1xuICAgICAgICB0aGlzLmxpbmVzID0gbGluZXM7XG4gICAgfVxufVxuXG5jbGFzcyBNb3VzZUV2ZW50IGV4dGVuZHMgQ3VzdG9tRXZlbnQge1xuICAgIC8vIOeCueWHu+eCueWcqOmhtemdoueahOWdkOagh1xuICAgIHBhZ2VYID0gMDtcbiAgICBwYWdlWSA9IDA7XG5cbiAgICAvLyDngrnlh7vngrnlnKggR3JhcGgg6YeM55qE5Z2Q5qCHXG4gICAgZ3JhcGhYID0gMDtcbiAgICBncmFwaFkgPSAwO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIGJsb2NrczogVE5vZGVNYXAsXG4gICAgICAgIGxpbmVzOiBUTGluZU1hcCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoYmxvY2tzLCBsaW5lcyk7XG4gICAgfVxuXG4gICAgaW5pdFBhZ2VQb3NpdGlvbih4OiBudW1iZXIsIHk6IG51bWJlcikge1xuICAgICAgICB0aGlzLnBhZ2VYID0geDtcbiAgICAgICAgdGhpcy5wYWdlWSA9IHk7XG4gICAgfVxuXG4gICAgaW5pdEdyYXBoUG9zaXRpb24oeDogbnVtYmVyLCB5OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5ncmFwaFggPSB4O1xuICAgICAgICB0aGlzLmdyYXBoWSA9IHk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3JhcGhNb3VzZUV2ZW50IGV4dGVuZHMgTW91c2VFdmVudCB7XG4gICAgdGFyZ2V0OiBHcmFwaEVsZW1lbnQ7XG4gICAgZm9yZ2U6IEhUTUxHcmFwaEZvcmdlRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBibG9ja3M6IFROb2RlTWFwLFxuICAgICAgICBsaW5lczogVExpbmVNYXAsXG4gICAgICAgIHRhcmdldDogR3JhcGhFbGVtZW50LFxuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50LFxuICAgICkge1xuICAgICAgICBzdXBlcihibG9ja3MsIGxpbmVzKTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgICAgIHRoaXMuZm9yZ2UgPSBmb3JnZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBCbG9ja01vdXNlRXZlbnQgZXh0ZW5kcyBNb3VzZUV2ZW50IHtcbiAgICBibG9jazogQmxvY2tEYXRhO1xuICAgIHRhcmdldDogR3JhcGhOb2RlRWxlbWVudDtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgYmxvY2tzOiBUTm9kZU1hcCxcbiAgICAgICAgbGluZXM6IFRMaW5lTWFwLFxuICAgICAgICB0YXJnZXQ6IEdyYXBoTm9kZUVsZW1lbnQsXG4gICAgICAgIGJsb2NrOiBCbG9ja0RhdGEsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGJsb2NrcywgbGluZXMpO1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmVNb3VzZUV2ZW50IGV4dGVuZHMgTW91c2VFdmVudCB7XG4gICAgdGFyZ2V0OiBTVkdHRWxlbWVudDtcbiAgICBsaW5lOiBMaW5lRGF0YTtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgYmxvY2tzOiBUTm9kZU1hcCxcbiAgICAgICAgbGluZXM6IFRMaW5lTWFwLFxuICAgICAgICB0YXJnZXQ6IFNWR0dFbGVtZW50LFxuICAgICAgICBsaW5lOiBMaW5lRGF0YSxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoYmxvY2tzLCBsaW5lcyk7XG4gICAgICAgIHRoaXMubGluZSA9IGxpbmU7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrRXZlbnQgZXh0ZW5kcyBDdXN0b21FdmVudHtcbiAgICBibG9jazogQmxvY2tEYXRhO1xuICAgIHRhcmdldDogR3JhcGhOb2RlRWxlbWVudDtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgYmxvY2tzOiBUTm9kZU1hcCxcbiAgICAgICAgbGluZXM6IFRMaW5lTWFwLFxuICAgICAgICB0YXJnZXQ6IEdyYXBoTm9kZUVsZW1lbnQsXG4gICAgICAgIGJsb2NrOiBCbG9ja0RhdGEsXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKGJsb2NrcywgbGluZXMpO1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0O1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpbmVFdmVudCBleHRlbmRzIEN1c3RvbUV2ZW50IHtcbiAgICBsaW5lOiBMaW5lRGF0YTtcbiAgICB0YXJnZXQ6IFNWR0dFbGVtZW50O1xuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBibG9ja3M6IFROb2RlTWFwLFxuICAgICAgICBsaW5lczogVExpbmVNYXAsXG4gICAgICAgIHRhcmdldDogU1ZHR0VsZW1lbnQsXG4gICAgICAgIGxpbmU6IExpbmVEYXRhLFxuICAgICkge1xuICAgICAgICBzdXBlcihibG9ja3MsIGxpbmVzKTtcbiAgICAgICAgdGhpcy5saW5lID0gbGluZTtcbiAgICAgICAgdGhpcy50YXJnZXQgPSB0YXJnZXQ7XG4gICAgfVxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/forge.js b/extensions/shader-graph/dist/block-forge/forge.js new file mode 100644 index 0000000..363c2cf --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/forge.js @@ -0,0 +1,616 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.HTMLGraphForgeElement = void 0; +const tslib_1 = require("tslib"); +const graph_1 = require("./graph"); +const utils_1 = require("./utils"); +const event_1 = require("./event"); +const structures_1 = require("@itharbors/structures"); +const undo_1 = require("./undo"); +const js_yaml_1 = tslib_1.__importDefault(require("js-yaml")); +const enum_1 = require("./enum"); +const STYLE = /*css*/ ` +:host { display: flex; flex-direction: column; } +:host > header { padding: 4px 10px; display: flex; } +:host > header > div { flex: 1; } +:host > header > div > span { cursor: pointer; } +:host > header > slot { display: block; } +:host > header > i { margin: 0 4px; } +:host > section { flex: 1; display: flex; } +:host > section > v-graph { flex: 1; } +`; +const HTML = /*html*/ ` + +
+
+ +
+
+ +
+`; +class HTMLGraphForgeElement extends HTMLElement { + constructor() { + super(); + this.actionQueue = new structures_1.ActionQueue({ + forge: this, + }); + this.paths = []; + this.attachShadow({ + mode: 'open', + }); + this.shadowRoot.innerHTML = HTML; + this.$graph = this.shadowRoot.querySelector('v-graph'); + this._initHeader(); + this._initSection(); + } + _initHeader() { + this._updateHeader(); + this.shadowRoot.querySelector('header > div').addEventListener('click', (event) => { + const $span = event.target; + if (!$span.hasAttribute('path-index')) { + return; + } + let index = parseInt($span.getAttribute('path-index') || '0'); + if (index < 0) { + index = 0; + } + this.paths.splice(index + 1); + this._updateGraph(); + const graph = this.paths[this.paths.length - 1]; + (0, utils_1.dispatch)(this, 'enter-graph', { + detail: { + id: graph.name, + }, + }); + }); + } + _updateHeader() { + const paths = this.paths.map((info, index) => `${info.name || info.type}`).join('/'); + this.shadowRoot.querySelector('header > div').innerHTML = paths; + } + _initSection() { + const $graph = this.shadowRoot.querySelector('v-graph'); + $graph.shadowRoot.addEventListener('block-click', (event) => { + const customEvent = event; + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $node = customEvent.target; + if (info.graph.event && info.graph.event.onBlockClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $node.getAttribute('node-uuid') || ''; + const block = $graph.getProperty('nodes')[uuid]; + const blockEvent = new event_1.BlockMouseEvent(nodes, lines, $node, block); + info.graph.event.onBlockClick(blockEvent); + } + }); + $graph.shadowRoot.addEventListener('block-dblclick', (event) => { + const customEvent = event; + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $node = customEvent.target; + if ($node.tagName === 'V-GRAPH-NODE') { + const details = $node.getProperty('details'); + if (details.subGraph) { + this.enterSubGraph(details.subGraph); + return; + } + } + if (info.graph.event && info.graph.event.onBlockDblClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $node.getAttribute('node-uuid') || ''; + const block = $graph.getProperty('nodes')[uuid]; + const blockEvent = new event_1.BlockMouseEvent(nodes, lines, $node, block); + blockEvent.initPagePosition(customEvent.detail.pageX, customEvent.detail.pageY); + const graphPosition = $graph.convertCoordinate(customEvent.detail.offsetX, customEvent.detail.offsetY); + blockEvent.initGraphPosition(graphPosition.x, graphPosition.y); + info.graph.event.onBlockDblClick(blockEvent); + } + }); + $graph.shadowRoot.addEventListener('block-right-click', (event) => { + const customEvent = event; + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $node = customEvent.target; + if (info.graph.event && info.graph.event.onBlockRightClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $node.getAttribute('node-uuid') || ''; + const block = $graph.getProperty('nodes')[uuid]; + const blockEvent = new event_1.BlockMouseEvent(nodes, lines, $node, block); + info.graph.event.onBlockRightClick(blockEvent); + } + }); + $graph.addEventListener('node-selected', (event) => { + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $node = event.target; + if (info.graph.event && info.graph.event.onBlockSelected) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $node.getAttribute('node-uuid') || ''; + const block = $graph.getProperty('nodes')[uuid]; + const event = new event_1.BlockEvent(nodes, lines, $node, block); + info.graph.event.onBlockSelected(event); + } + }); + $graph.addEventListener('node-unselected', (event) => { + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $node = event.target; + if (info.graph.event && info.graph.event.onBlockUnselected) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $node.getAttribute('node-uuid') || ''; + const block = $graph.getProperty('nodes')[uuid]; + const event = new event_1.BlockEvent(nodes, lines, $node, block); + info.graph.event.onBlockUnselected(event); + } + }); + $graph.addEventListener('line-selected', (event) => { + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $g = event.target; + if (info.graph.event && info.graph.event.onLineSelected) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $g.getAttribute('line-uuid') || ''; + const line = lines[uuid]; + const event = new event_1.LineEvent(nodes, lines, $g, line); + info.graph.event.onLineSelected(event); + } + }); + $graph.addEventListener('line-unselected', (event) => { + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + const $g = event.target; + if (info.graph.event && info.graph.event.onLineUnselected) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $g.getAttribute('line-uuid') || ''; + const line = lines[uuid]; + const event = new event_1.LineEvent(nodes, lines, $g, line); + info.graph.event.onLineUnselected(event); + } + }); + $graph.addEventListener('node-added', (event) => { + const cEvent = event; + (0, utils_1.dispatch)(this, 'node-added', { + detail: cEvent.detail, + }); + (0, utils_1.dispatch)(this, 'dirty'); + }); + $graph.addEventListener('node-removed', (event) => { + const cEvent = event; + (0, utils_1.dispatch)(this, 'node-removed', { + detail: cEvent.detail, + }); + (0, utils_1.dispatch)(this, 'dirty'); + }); + $graph.addEventListener('node-changed', (event) => { + const cEvent = event; + (0, utils_1.dispatch)(this, 'node-changed', { + detail: cEvent.detail, + }); + (0, utils_1.dispatch)(this, 'dirty'); + }); + $graph.addEventListener('node-position-changed', (event) => { + const cEvent = event; + const queue = cEvent.detail.moveList.map((item) => { + return new undo_1.BlockPositionAction({ + blockName: item.id, + target: item.target, + source: item.source, + }); + }); + if (queue.length === 1) { + this.actionQueue.exec(queue[0]); + } + else if (queue.length > 1) { + this.actionQueue.exec(new structures_1.ActionList({ + queue, + })); + } + (0, utils_1.dispatch)(this, 'dirty', { + detail: { + dirtyType: 'position-changed', + }, + }); + }); + // //// //// + $graph.shadowRoot.addEventListener('dirty', (event) => { + const cEvent = event; + if (cEvent.detail && cEvent.detail.action) { + this.actionQueue.exec(cEvent.detail.action); + } + (0, utils_1.dispatch)(this, 'dirty', { + detail: cEvent.detail, + }); + }); + $graph.addEventListener('mouseup', (event) => { + const info = graph_1.graphMap.get(this.rootGraph.type); + if (!info) { + return; + } + if (event.button === 2 && info.graph.event?.onGraphRightClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const graphPosition = $graph.convertCoordinate(event.offsetX, event.offsetY); + const customEvent = new event_1.GraphMouseEvent(nodes, lines, $graph, this); + customEvent.initPagePosition(event.pageX, event.pageY); + customEvent.initGraphPosition(graphPosition.x, graphPosition.y); + info.graph.event.onGraphRightClick(customEvent); + } + }); + $graph.addEventListener('line-added', (event) => { + const customEment = event; + const $node = $graph.queryNodeElement(customEment.detail.line.output.node); + if ($node) { + // @ts-ignore + $node.onUpdate && $node.onUpdate(); + } + (0, utils_1.dispatch)(this, 'line-added', { + detail: customEment.detail, + }); + (0, utils_1.dispatch)(this, 'dirty'); + }); + $graph.addEventListener('line-removed', (event) => { + const customEment = event; + const $node = $graph.queryNodeElement(customEment.detail.line.output.node); + if ($node) { + // @ts-ignore + $node.onUpdate && $node.onUpdate(); + } + (0, utils_1.dispatch)(this, 'line-removed', { + detail: customEment.detail, + }); + (0, utils_1.dispatch)(this, 'dirty'); + }); + $graph.addEventListener('line-changed', (event) => { + const customElement = event; + (0, utils_1.dispatch)(this, 'line-changed', { + detail: customElement.detail, + }); + (0, utils_1.dispatch)(this, 'dirty'); + }); + $graph.addEventListener('node-connected', (event) => { + const customElement = event; + this.startRecording(); + this.addLine(customElement.detail.line); + setTimeout(() => { + this.stopRecording(); + }, 200); + }); + const $svg = $graph.shadowRoot.querySelector('#lines'); + function searchG(htmlArray) { + const length = Math.min(htmlArray.length, 4); + for (let i = 0; i < length; i++) { + const $elem = htmlArray[i]; + // 如果找到顶部的 document 元素的话,是没有 tagName 的 + if ($elem.tagName && $elem.tagName.toLocaleLowerCase() === 'g') { + return $elem; + } + } + } + $svg.addEventListener('dblclick', (event) => { + // @ts-ignore + const $g = searchG(event.path); + if (!$g || !$g.hasAttribute('line-uuid')) { + return; + } + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + if (info.graph.event && info.graph.event.onLineDblClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $g.getAttribute('line-uuid') || ''; + const line = lines[uuid]; + const event = new event_1.LineMouseEvent(nodes, lines, $g, line); + info.graph.event.onLineDblClick(event); + } + }); + $svg.addEventListener('click', (event) => { + // @ts-ignore + const $g = searchG(event.path); + if (!$g || !$g.hasAttribute('line-uuid')) { + return; + } + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + if (info.graph.event && info.graph.event.onLineClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $g.getAttribute('line-uuid') || ''; + const line = lines[uuid]; + const event = new event_1.LineMouseEvent(nodes, lines, $g, line); + info.graph.event.onLineClick(event); + } + }); + $svg.addEventListener('mouseup', (event) => { + // @ts-ignore + const $g = searchG(event.path); + if (!$g || !$g.hasAttribute('line-uuid')) { + return; + } + if (event.button !== 2) { + return; + } + const type = this.paths[this.paths.length - 1].type; + const info = graph_1.graphMap.get(type); + if (!info) { + return; + } + if (info.graph.event && info.graph.event.onLineRightClick) { + const nodes = $graph.getProperty('nodes'); + const lines = $graph.getProperty('lines'); + const uuid = $g.getAttribute('line-uuid') || ''; + const line = lines[uuid]; + const event = new event_1.LineMouseEvent(nodes, lines, $g, line); + info.graph.event.onLineRightClick(event); + } + }); + } + _updateGraph() { + (0, enum_1.clearDynamicEnum)(); + const graph = this.paths[this.paths.length - 1]; + const $graph = this.shadowRoot.querySelector('v-graph'); + $graph.clear(); + requestAnimationFrame(() => { + $graph.setAttribute('type', graph.type); + $graph.setProperty('lines', graph.lines); + $graph.setProperty('nodes', graph.nodes); + this._updateHeader(); + }); + } + undo() { + this.actionQueue.undo(); + (0, utils_1.dispatch)(this, 'undo'); + } + redo() { + this.actionQueue.redo(); + (0, utils_1.dispatch)(this, 'redo'); + } + startRecording() { + this.actionQueue.startRecording(); + } + stopRecording() { + this.actionQueue.stopRecording(); + } + getPinElement(blockName, type, index) { + const $block = this.$graph.shadowRoot.querySelector(`v-graph-node[node-uuid=${blockName}]`); + if (!$block) { + return; + } + const $pinList = $block.shadowRoot.querySelectorAll(`.pin.in`); + const $pin = $pinList[index]; + return $pin; + } + getBlockElement(blockName) { + return this.$graph.shadowRoot.querySelector(`v-graph-node[node-uuid=${blockName}]`); + } + /// ---- 操作整个图 + /** + * 将屏幕坐标转换成 Graph 内的坐标 + * @param point + * @returns + */ + convertCoordinate(point) { + point = this.$graph.convertCoordinate(point.x, point.y); + return point; + } + /** + * 设置编辑的根图 + * @param graph + */ + setRootGraph(graph) { + this.rootGraph = graph; + this.paths = [graph]; + this._updateGraph(); + } + /** + * 获取正在编辑的根图 + * @returns + */ + getRootGraph() { + return this.paths[0]; + } + /** + * 传入一个字符串,反序列化成图数据 + * @param content + * @returns + */ + deserialize(content) { + const graphData = js_yaml_1.default.load(content); + return graphData; + } + /** + * 传入一个图数据,序列化成 yaml 字符串 + * @param data + * @returns + */ + serialize(data) { + const str = js_yaml_1.default.dump(data || this.paths[0]); + // return JSON.stringify(this.paths[0]); + // outputFileSync('/Users/wangsijie/Project/Creator/cocos-editor/extension-repos/shader-graph/test.yaml', str); + return str; + } + /** + * 获取整个图现在的一些基础数据 + * @returns + */ + getGraphInfo() { + const offset = this.$graph.getProperty('offset'); + const scale = this.$graph.getProperty('scale'); + return { + offset, scale, + }; + } + /** + * 设置整个图的一些基础数据 + * @param info + */ + setGraphInfo(info) { + this.$graph.setProperty('offset', info.offset); + this.$graph.setProperty('scale', info.scale); + } + /** + * 恢复缩放比例 + */ + zoomToFit() { + this.$graph.data.setProperty('scale', 1); + } + /// ---- 操作当前图 + /** + * 获取选中的 Block 列表 + * @returns + */ + getSelectedBlockList() { + return this.$graph.getSelectedNodeList(); + } + /** + * 获取选中的 Line 列表 + * @returns + */ + getSelectedLineList() { + return this.$graph.getSelectedLineList(); + } + /** + * 设置当前正在编辑的图数据 + * @param graph + * @returns + */ + setCurrentGraph(graph) { + if (this.paths.length <= 1) { + this.setRootGraph(graph); + return; + } + this.paths[this.paths.length - 1] = graph; + this._updateGraph(); + } + /** + * 获取正在编辑的图数据 + * @returns + */ + getCurrentGraph() { + return this.paths[this.paths.length - 1]; + } + /** + * 在当前正在操作的图数据里增加一个 Block + * @param block + * @param id + */ + addBlock(block, id) { + this.actionQueue.exec(new undo_1.AddBlockAction({ block, id })); + } + /** + * 在当前正在操作的图数据里删除一个节点 + * @param id + */ + removeBlock(id) { + const queue = []; + // remove line + const lines = this.$graph.getProperty('lines'); + for (const key in lines) { + const line = lines[key]; + if (line.input.node === id || line.output.node === id) { + queue.push(new undo_1.RemoveLineAction({ id: key })); + } + } + queue.push(new undo_1.RemoveBlockAction({ id })); + this.actionQueue.exec(new structures_1.ActionList({ + queue, + })); + } + /** + * 在当前正在操作的图数据里增加一个连线 + * @param line + * @param id + */ + addLine(line, id) { + this.actionQueue.exec(new undo_1.AddLineAction({ line, id })); + } + /** + * 在当前正在操作的图数据里删除一个连线 + * @param id + */ + removeLine(id) { + this.actionQueue.exec(new undo_1.RemoveLineAction({ id })); + } + /** + * 进入当前图的子图 + * @param id + */ + enterSubGraph(id) { + const graph = this.paths[this.paths.length - 1]; + const subGraph = graph.graphs[id]; + if (subGraph) { + this.paths.push(subGraph); + this._updateGraph(); + } + (0, utils_1.dispatch)(this, 'enter-graph', { + detail: { + id: id, + }, + }); + } + /** + * 在当前编辑的图里增加一个子图 + * @param type + * @param id + * @returns + */ + addSubGraph(type, id) { + const info = this.paths[this.paths.length - 1]; + // const uuid = generateUUID(); + info.graphs[id] = { + type, + name: type, + nodes: {}, + lines: {}, + graphs: {}, + }; + return info.graphs[id]; + } + /** + * 在当前编辑的图里,删除一个子图 + * @param id + */ + removeSubGraph(id) { + const info = this.paths[this.paths.length - 1]; + delete info.graphs[id]; + } +} +exports.HTMLGraphForgeElement = HTMLGraphForgeElement; +if (!window.customElements.get('ui-graph-forge')) { + window.customElements.define('ui-graph-forge', HTMLGraphForgeElement); +} +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2stZm9yZ2UvZm9yZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7O0FBVWIsbUNBQW1DO0FBQ25DLG1DQUFpRDtBQUNqRCxtQ0FBa0c7QUFFbEcsc0RBSStCO0FBRS9CLGlDQU1nQjtBQUloQiw4REFBMkI7QUFDM0IsaUNBQTBDO0FBRTFDLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQTs7Ozs7Ozs7O0NBU3BCLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxRQUFRLENBQUE7U0FDWixLQUFLOzs7Ozs7OztDQVFiLENBQUM7QUFFRixNQUFhLHFCQUFzQixTQUFRLFdBQVc7SUFRbEQ7UUFDSSxLQUFLLEVBQUUsQ0FBQztRQVBKLGdCQUFXLEdBQUcsSUFBSSx3QkFBVyxDQUFDO1lBQ2xDLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBbUJILFVBQUssR0FBZ0IsRUFBRSxDQUFDO1FBYnBCLElBQUksQ0FBQyxZQUFZLENBQUM7WUFDZCxJQUFJLEVBQUUsTUFBTTtTQUNmLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxVQUFXLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUVsQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBa0IsQ0FBQztRQUV6RSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFLTyxXQUFXO1FBQ2YsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxVQUFXLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBRSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ2hGLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFxQixD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SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILGNBQWMsQ0FBQyxFQUFVO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNCLENBQUM7Q0FDSjtBQXhuQkQsc0RBd25CQztBQUVELElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO0lBQzlDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDLENBQUM7Q0FDekUiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgICBHcmFwaEVsZW1lbnQsXG4gICAgTm9kZUNoYW5nZWREZXRhaWwsXG4gICAgTm9kZVBvc2l0aW9uQ2hhbmdlZERldGFpbCxcbiAgICBHcmFwaE5vZGVFbGVtZW50LFxufSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoJztcblxuaW1wb3J0IHR5cGUgeyBEaXJ0eURldGFpbCB9IGZyb20gJy4vcGluJztcbmltcG9ydCB7IGdyYXBoTWFwIH0gZnJvbSAnLi9ncmFwaCc7XG5pbXBvcnQgeyBnZW5lcmF0ZVVVSUQsIGRpc3BhdGNoIH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBHcmFwaE1vdXNlRXZlbnQsIEJsb2NrTW91c2VFdmVudCwgQmxvY2tFdmVudCwgTGluZUV2ZW50LCBMaW5lTW91c2VFdmVudCB9IGZyb20gJy4vZXZlbnQnO1xuXG5pbXBvcnQge1xuICAgIEFjdGlvbixcbiAgICBBY3Rpb25MaXN0LFxuICAgIEFjdGlvblF1ZXVlLFxufSBmcm9tICdAaXRoYXJib3JzL3N0cnVjdHVyZXMnO1xuXG5pbXBvcnQge1xuICAgIEFkZEJsb2NrQWN0aW9uLFxuICAgIFJlbW92ZUJsb2NrQWN0aW9uLFxuICAgIEFkZExpbmVBY3Rpb24sXG4gICAgUmVtb3ZlTGluZUFjdGlvbixcbiAgICBCbG9ja1Bvc2l0aW9uQWN0aW9uLFxufSBmcm9tICcuL3VuZG8nO1xuXG5pbXBvcnQgdHlwZSB7IEdyYXBoRGF0YSwgQmxvY2tEYXRhLCBMaW5lRGF0YSwgSUdyYXBoRGVmaW5lRXZlbnQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmltcG9ydCB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgY2xlYXJEeW5hbWljRW51bSB9IGZyb20gJy4vZW51bSc7XG5cbmNvbnN0IFNUWUxFID0gLypjc3MqL2Bcbjpob3N0IHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfVxuOmhvc3QgPiBoZWFkZXIgeyBwYWRkaW5nOiA0cHggMTBweDsgZGlzcGxheTogZmxleDsgfVxuOmhvc3QgPiBoZWFkZXIgPiBkaXYgeyBmbGV4OiAxOyB9XG46aG9zdCA+IGhlYWRlciA+IGRpdiA+IHNwYW4geyBjdXJzb3I6IHBvaW50ZXI7IH1cbjpob3N0ID4gaGVhZGVyID4gc2xvdCB7IGRpc3BsYXk6IGJsb2NrOyB9XG46aG9zdCA+IGhlYWRlciA+IGkgeyBtYXJnaW46IDAgNHB4OyB9XG46aG9zdCA+IHNlY3Rpb24geyBmbGV4OiAxOyBkaXNwbGF5OiBmbGV4OyB9XG46aG9zdCA+IHNlY3Rpb24gPiB2LWdyYXBoIHsgZmxleDogMTsgfVxuYDtcblxuY29uc3QgSFRNTCA9IC8qaHRtbCovYFxuPHN0eWxlPiR7U1RZTEV9PC9zdHlsZT5cbjxoZWFkZXI+XG4gICAgPGRpdj48L2Rpdj5cbiAgICA8c2xvdD48L3Nsb3Q+XG48L2hlYWRlcj5cbjxzZWN0aW9uPlxuICAgIDx2LWdyYXBoIHR5cGU9XCJcIj48di1ncmFwaD5cbjwvc2VjdGlvbj5cbmA7XG5cbmV4cG9ydCBjbGFzcyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgZXh0ZW5kcyBIVE1MRWxlbWVudCB7XG5cbiAgICBwcml2YXRlIGFjdGlvblF1ZXVlID0gbmV3IEFjdGlvblF1ZXVlKHtcbiAgICAgICAgZm9yZ2U6IHRoaXMsXG4gICAgfSk7XG5cbiAgICAkZ3JhcGg6IEdyYXBoRWxlbWVudDtcblxuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmF0dGFjaFNoYWRvdyh7XG4gICAgICAgICAgICBtb2RlOiAnb3BlbicsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuc2hhZG93Um9vdCEuaW5uZXJIVE1MID0gSFRNTDtcblxuICAgICAgICB0aGlzLiRncmFwaCA9IHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcigndi1ncmFwaCcpISBhcyBHcmFwaEVsZW1lbnQ7XG5cbiAgICAgICAgdGhpcy5faW5pdEhlYWRlcigpO1xuICAgICAgICB0aGlzLl9pbml0U2VjdGlvbigpO1xuICAgIH1cblxuICAgIHJvb3RHcmFwaD86IEdyYXBoRGF0YTtcbiAgICBwYXRoczogR3JhcGhEYXRhW10gPSBbXTtcblxuICAgIHByaXZhdGUgX2luaXRIZWFkZXIoKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUhlYWRlcigpO1xuICAgICAgICB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ2hlYWRlciA+IGRpdicpIS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJHNwYW4gPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAgICAgICBpZiAoISRzcGFuLmhhc0F0dHJpYnV0ZSgncGF0aC1pbmRleCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGluZGV4ID0gcGFyc2VJbnQoJHNwYW4uZ2V0QXR0cmlidXRlKCdwYXRoLWluZGV4JykgfHwgJzAnKTtcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICBpbmRleCA9IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhdGhzLnNwbGljZShpbmRleCArIDEpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlR3JhcGgoKTtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoID0gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgZGlzcGF0Y2godGhpcywgJ2VudGVyLWdyYXBoJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgICAgICBpZDogZ3JhcGgubmFtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUhlYWRlcigpIHtcbiAgICAgICAgY29uc3QgcGF0aHMgPSB0aGlzLnBhdGhzLm1hcCgoaW5mbywgaW5kZXgpID0+IGA8c3BhbiBwYXRoLWluZGV4PVwiJHtpbmRleH1cIj4ke2luZm8ubmFtZSB8fCBpbmZvLnR5cGV9PC9zcGFuPmApLmpvaW4oJzxpPi88L2k+Jyk7XG4gICAgICAgIHRoaXMuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignaGVhZGVyID4gZGl2JykhLmlubmVySFRNTCA9IHBhdGhzO1xuICAgIH1cblxuICAgIHByaXZhdGUgX2luaXRTZWN0aW9uKCkge1xuICAgICAgICBjb25zdCAkZ3JhcGggPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ3YtZ3JhcGgnKSBhcyBHcmFwaEVsZW1lbnQ7XG4gICAgICAgICRncmFwaC5zaGFkb3dSb290IS5hZGRFdmVudExpc3RlbmVyKCdibG9jay1jbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgICAgICB9PjtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhdGhzW3RoaXMucGF0aHMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSBncmFwaE1hcC5nZXQodHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkbm9kZSA9IGN1c3RvbUV2ZW50LnRhcmdldCBhcyBHcmFwaE5vZGVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGluZm8uZ3JhcGguZXZlbnQgJiYgaW5mby5ncmFwaC5ldmVudC5vbkJsb2NrQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBCbG9ja0RhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9ICRub2RlLmdldEF0dHJpYnV0ZSgnbm9kZS11dWlkJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ25vZGVzJylbdXVpZF0gYXMgQmxvY2tEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRXZlbnQgPSBuZXcgQmxvY2tNb3VzZUV2ZW50KG5vZGVzLCBsaW5lcywgJG5vZGUsIGJsb2NrKTtcbiAgICAgICAgICAgICAgICBpbmZvLmdyYXBoLmV2ZW50Lm9uQmxvY2tDbGljayhibG9ja0V2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5zaGFkb3dSb290IS5hZGRFdmVudExpc3RlbmVyKCdibG9jay1kYmxjbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgICAgICAgICAgcGFnZVg6IG51bWJlcjtcbiAgICAgICAgICAgICAgICBwYWdlWTogbnVtYmVyO1xuICAgICAgICAgICAgICAgIG9mZnNldFg6IG51bWJlcjtcbiAgICAgICAgICAgICAgICBvZmZzZXRZOiBudW1iZXI7XG4gICAgICAgICAgICB9PjtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhdGhzW3RoaXMucGF0aHMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSBncmFwaE1hcC5nZXQodHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkbm9kZSA9IGN1c3RvbUV2ZW50LnRhcmdldCBhcyBHcmFwaE5vZGVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKCRub2RlLnRhZ05hbWUgPT09ICdWLUdSQVBILU5PREUnKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGV0YWlscyA9ICRub2RlLmdldFByb3BlcnR5KCdkZXRhaWxzJyk7XG4gICAgICAgICAgICAgICAgaWYgKGRldGFpbHMuc3ViR3JhcGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRlclN1YkdyYXBoKGRldGFpbHMuc3ViR3JhcGgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZm8uZ3JhcGguZXZlbnQgJiYgaW5mby5ncmFwaC5ldmVudC5vbkJsb2NrRGJsQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBCbG9ja0RhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9ICRub2RlLmdldEF0dHJpYnV0ZSgnbm9kZS11dWlkJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ25vZGVzJylbdXVpZF0gYXMgQmxvY2tEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrRXZlbnQgPSBuZXcgQmxvY2tNb3VzZUV2ZW50KG5vZGVzLCBsaW5lcywgJG5vZGUsIGJsb2NrKTtcbiAgICAgICAgICAgICAgICBibG9ja0V2ZW50LmluaXRQYWdlUG9zaXRpb24oY3VzdG9tRXZlbnQuZGV0YWlsLnBhZ2VYLCBjdXN0b21FdmVudC5kZXRhaWwucGFnZVkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGdyYXBoUG9zaXRpb24gPSAkZ3JhcGguY29udmVydENvb3JkaW5hdGUoY3VzdG9tRXZlbnQuZGV0YWlsLm9mZnNldFgsIGN1c3RvbUV2ZW50LmRldGFpbC5vZmZzZXRZKTtcbiAgICAgICAgICAgICAgICBibG9ja0V2ZW50LmluaXRHcmFwaFBvc2l0aW9uKGdyYXBoUG9zaXRpb24ueCwgZ3JhcGhQb3NpdGlvbi55KTtcbiAgICAgICAgICAgICAgICBpbmZvLmdyYXBoLmV2ZW50Lm9uQmxvY2tEYmxDbGljayhibG9ja0V2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5zaGFkb3dSb290IS5hZGRFdmVudExpc3RlbmVyKCdibG9jay1yaWdodC1jbGljaycsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBldmVudCBhcyBDdXN0b21FdmVudDx7XG4gICAgICAgICAgICB9PjtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhdGhzW3RoaXMucGF0aHMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSBncmFwaE1hcC5nZXQodHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkbm9kZSA9IGN1c3RvbUV2ZW50LnRhcmdldCBhcyBHcmFwaE5vZGVFbGVtZW50O1xuICAgICAgICAgICAgaWYgKGluZm8uZ3JhcGguZXZlbnQgJiYgaW5mby5ncmFwaC5ldmVudC5vbkJsb2NrUmlnaHRDbGljaykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gJGdyYXBoLmdldFByb3BlcnR5KCdub2RlcycpIGFzIHsgW3V1aWQ6IHN0cmluZ106IEJsb2NrRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbGluZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBMaW5lRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gJG5vZGUuZ2V0QXR0cmlidXRlKCdub2RlLXV1aWQnKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBibG9jayA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKVt1dWlkXSBhcyBCbG9ja0RhdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2tFdmVudCA9IG5ldyBCbG9ja01vdXNlRXZlbnQobm9kZXMsIGxpbmVzLCAkbm9kZSwgYmxvY2spO1xuICAgICAgICAgICAgICAgIGluZm8uZ3JhcGguZXZlbnQub25CbG9ja1JpZ2h0Q2xpY2soYmxvY2tFdmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdub2RlLXNlbGVjdGVkJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdLnR5cGU7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gZ3JhcGhNYXAuZ2V0KHR5cGUpO1xuICAgICAgICAgICAgaWYgKCFpbmZvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJG5vZGUgPSBldmVudC50YXJnZXQgYXMgR3JhcGhOb2RlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpbmZvLmdyYXBoLmV2ZW50ICYmIGluZm8uZ3JhcGguZXZlbnQub25CbG9ja1NlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgbm9kZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ25vZGVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogQmxvY2tEYXRhOyB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpbmVzID0gJGdyYXBoLmdldFByb3BlcnR5KCdsaW5lcycpIGFzIHsgW3V1aWQ6IHN0cmluZ106IExpbmVEYXRhOyB9O1xuICAgICAgICAgICAgICAgIGNvbnN0IHV1aWQgPSAkbm9kZS5nZXRBdHRyaWJ1dGUoJ25vZGUtdXVpZCcpIHx8ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJsb2NrID0gJGdyYXBoLmdldFByb3BlcnR5KCdub2RlcycpW3V1aWRdIGFzIEJsb2NrRGF0YTtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudCA9IG5ldyBCbG9ja0V2ZW50KG5vZGVzLCBsaW5lcywgJG5vZGUsIGJsb2NrKTtcbiAgICAgICAgICAgICAgICBpbmZvLmdyYXBoLmV2ZW50Lm9uQmxvY2tTZWxlY3RlZChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAkZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcignbm9kZS11bnNlbGVjdGVkJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdLnR5cGU7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gZ3JhcGhNYXAuZ2V0KHR5cGUpO1xuICAgICAgICAgICAgaWYgKCFpbmZvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJG5vZGUgPSBldmVudC50YXJnZXQgYXMgR3JhcGhOb2RlRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpbmZvLmdyYXBoLmV2ZW50ICYmIGluZm8uZ3JhcGguZXZlbnQub25CbG9ja1Vuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBCbG9ja0RhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9ICRub2RlLmdldEF0dHJpYnV0ZSgnbm9kZS11dWlkJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgYmxvY2sgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ25vZGVzJylbdXVpZF0gYXMgQmxvY2tEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEJsb2NrRXZlbnQobm9kZXMsIGxpbmVzLCAkbm9kZSwgYmxvY2spO1xuICAgICAgICAgICAgICAgIGluZm8uZ3JhcGguZXZlbnQub25CbG9ja1Vuc2VsZWN0ZWQoZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgJGdyYXBoLmFkZEV2ZW50TGlzdGVuZXIoJ2xpbmUtc2VsZWN0ZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhdGhzW3RoaXMucGF0aHMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSBncmFwaE1hcC5nZXQodHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZyA9IGV2ZW50LnRhcmdldCBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpbmZvLmdyYXBoLmV2ZW50ICYmIGluZm8uZ3JhcGguZXZlbnQub25MaW5lU2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBCbG9ja0RhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9ICRnLmdldEF0dHJpYnV0ZSgnbGluZS11dWlkJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW3V1aWRdIGFzIExpbmVEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IExpbmVFdmVudChub2RlcywgbGluZXMsICRnLCBsaW5lKTtcbiAgICAgICAgICAgICAgICBpbmZvLmdyYXBoLmV2ZW50Lm9uTGluZVNlbGVjdGVkKGV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdsaW5lLXVuc2VsZWN0ZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhdGhzW3RoaXMucGF0aHMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSBncmFwaE1hcC5nZXQodHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZyA9IGV2ZW50LnRhcmdldCBhcyBTVkdHRWxlbWVudDtcbiAgICAgICAgICAgIGlmIChpbmZvLmdyYXBoLmV2ZW50ICYmIGluZm8uZ3JhcGguZXZlbnQub25MaW5lVW5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gJGdyYXBoLmdldFByb3BlcnR5KCdub2RlcycpIGFzIHsgW3V1aWQ6IHN0cmluZ106IEJsb2NrRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbGluZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBMaW5lRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gJGcuZ2V0QXR0cmlidXRlKCdsaW5lLXV1aWQnKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbdXVpZF0gYXMgTGluZURhdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTGluZUV2ZW50KG5vZGVzLCBsaW5lcywgJGcsIGxpbmUpO1xuICAgICAgICAgICAgICAgIGluZm8uZ3JhcGguZXZlbnQub25MaW5lVW5zZWxlY3RlZChldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAkZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcignbm9kZS1hZGRlZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY0V2ZW50ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8Tm9kZUNoYW5nZWREZXRhaWw+O1xuICAgICAgICAgICAgZGlzcGF0Y2godGhpcywgJ25vZGUtYWRkZWQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiBjRXZlbnQuZGV0YWlsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXNwYXRjaCh0aGlzLCAnZGlydHknKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdub2RlLXJlbW92ZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNFdmVudCA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PE5vZGVDaGFuZ2VkRGV0YWlsPjtcbiAgICAgICAgICAgIGRpc3BhdGNoKHRoaXMsICdub2RlLXJlbW92ZWQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiBjRXZlbnQuZGV0YWlsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXNwYXRjaCh0aGlzLCAnZGlydHknKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdub2RlLWNoYW5nZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNFdmVudCA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PE5vZGVDaGFuZ2VkRGV0YWlsPjtcbiAgICAgICAgICAgIGRpc3BhdGNoKHRoaXMsICdub2RlLWNoYW5nZWQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiBjRXZlbnQuZGV0YWlsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXNwYXRjaCh0aGlzLCAnZGlydHknKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdub2RlLXBvc2l0aW9uLWNoYW5nZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNFdmVudCA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PE5vZGVQb3NpdGlvbkNoYW5nZWREZXRhaWw+O1xuICAgICAgICAgICAgY29uc3QgcXVldWUgPSBjRXZlbnQuZGV0YWlsLm1vdmVMaXN0Lm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQmxvY2tQb3NpdGlvbkFjdGlvbih7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrTmFtZTogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBpdGVtLnRhcmdldCxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiBpdGVtLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWN0aW9uUXVldWUuZXhlYyhxdWV1ZVswXSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHF1ZXVlLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLmV4ZWMobmV3IEFjdGlvbkxpc3Qoe1xuICAgICAgICAgICAgICAgICAgICBxdWV1ZSxcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXNwYXRjaCh0aGlzLCAnZGlydHknLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiB7XG4gICAgICAgICAgICAgICAgICAgIGRpcnR5VHlwZTogJ3Bvc2l0aW9uLWNoYW5nZWQnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIC8vLy8gLy8vL1xuICAgICAgICAkZ3JhcGguc2hhZG93Um9vdC5hZGRFdmVudExpc3RlbmVyKCdkaXJ0eScsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY0V2ZW50ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8RGlydHlEZXRhaWw+O1xuICAgICAgICAgICAgaWYgKGNFdmVudC5kZXRhaWwgJiYgY0V2ZW50LmRldGFpbC5hY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLmV4ZWMoY0V2ZW50LmRldGFpbC5hY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzcGF0Y2godGhpcywgJ2RpcnR5Jywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogY0V2ZW50LmRldGFpbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAkZ3JhcGguYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgaW5mbyA9IGdyYXBoTWFwLmdldCh0aGlzLnJvb3RHcmFwaCEudHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoKGV2ZW50IGFzIE1vdXNlRXZlbnQpLmJ1dHRvbiA9PT0gMiAmJiBpbmZvLmdyYXBoLmV2ZW50Py5vbkdyYXBoUmlnaHRDbGljaykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gJGdyYXBoLmdldFByb3BlcnR5KCdub2RlcycpIGFzIHsgW3V1aWQ6IHN0cmluZ106IEJsb2NrRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbGluZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBMaW5lRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBncmFwaFBvc2l0aW9uID0gJGdyYXBoLmNvbnZlcnRDb29yZGluYXRlKGV2ZW50Lm9mZnNldFgsIGV2ZW50Lm9mZnNldFkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEdyYXBoTW91c2VFdmVudChub2RlcywgbGluZXMsICRncmFwaCwgdGhpcyk7XG4gICAgICAgICAgICAgICAgY3VzdG9tRXZlbnQuaW5pdFBhZ2VQb3NpdGlvbihldmVudC5wYWdlWCwgZXZlbnQucGFnZVkpO1xuICAgICAgICAgICAgICAgIGN1c3RvbUV2ZW50LmluaXRHcmFwaFBvc2l0aW9uKGdyYXBoUG9zaXRpb24ueCwgZ3JhcGhQb3NpdGlvbi55KTtcbiAgICAgICAgICAgICAgICBpbmZvLmdyYXBoLmV2ZW50Lm9uR3JhcGhSaWdodENsaWNrKGN1c3RvbUV2ZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJGdyYXBoLmFkZEV2ZW50TGlzdGVuZXIoJ2xpbmUtYWRkZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUVtZW50ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e2xpbmU6IExpbmVEYXRhfT47XG4gICAgICAgICAgICBjb25zdCAkbm9kZSA9ICRncmFwaC5xdWVyeU5vZGVFbGVtZW50KGN1c3RvbUVtZW50LmRldGFpbC5saW5lLm91dHB1dC5ub2RlKTtcbiAgICAgICAgICAgIGlmICgkbm9kZSkge1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAkbm9kZS5vblVwZGF0ZSAmJiAkbm9kZS5vblVwZGF0ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGlzcGF0Y2godGhpcywgJ2xpbmUtYWRkZWQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiBjdXN0b21FbWVudC5kZXRhaWwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGRpc3BhdGNoKHRoaXMsICdkaXJ0eScpO1xuICAgICAgICB9KTtcbiAgICAgICAgJGdyYXBoLmFkZEV2ZW50TGlzdGVuZXIoJ2xpbmUtcmVtb3ZlZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRW1lbnQgPSBldmVudCBhcyBDdXN0b21FdmVudDx7bGluZTogTGluZURhdGF9PjtcbiAgICAgICAgICAgIGNvbnN0ICRub2RlID0gJGdyYXBoLnF1ZXJ5Tm9kZUVsZW1lbnQoY3VzdG9tRW1lbnQuZGV0YWlsLmxpbmUub3V0cHV0Lm5vZGUpO1xuICAgICAgICAgICAgaWYgKCRub2RlKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICRub2RlLm9uVXBkYXRlICYmICRub2RlLm9uVXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXNwYXRjaCh0aGlzLCAnbGluZS1yZW1vdmVkJywge1xuICAgICAgICAgICAgICAgIGRldGFpbDogY3VzdG9tRW1lbnQuZGV0YWlsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBkaXNwYXRjaCh0aGlzLCAnZGlydHknKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdsaW5lLWNoYW5nZWQnLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUVsZW1lbnQgPSBldmVudCBhcyBDdXN0b21FdmVudDx7bGluZTogTGluZURhdGF9PjtcbiAgICAgICAgICAgIGRpc3BhdGNoKHRoaXMsICdsaW5lLWNoYW5nZWQnLCB7XG4gICAgICAgICAgICAgICAgZGV0YWlsOiBjdXN0b21FbGVtZW50LmRldGFpbCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgZGlzcGF0Y2godGhpcywgJ2RpcnR5Jyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICRncmFwaC5hZGRFdmVudExpc3RlbmVyKCdub2RlLWNvbm5lY3RlZCcsIChldmVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VzdG9tRWxlbWVudCA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PHtsaW5lOiBMaW5lRGF0YX0+O1xuICAgICAgICAgICAgdGhpcy5zdGFydFJlY29yZGluZygpO1xuICAgICAgICAgICAgdGhpcy5hZGRMaW5lKGN1c3RvbUVsZW1lbnQuZGV0YWlsLmxpbmUpO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdG9wUmVjb3JkaW5nKCk7XG4gICAgICAgICAgICB9LCAyMDApO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCAkc3ZnID0gJGdyYXBoLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3RvcignI2xpbmVzJykhO1xuICAgICAgICBmdW5jdGlvbiBzZWFyY2hHKGh0bWxBcnJheTogKEhUTUxFbGVtZW50IHwgU1ZHR0VsZW1lbnQpW10pIHtcbiAgICAgICAgICAgIGNvbnN0IGxlbmd0aCA9IE1hdGgubWluKGh0bWxBcnJheS5sZW5ndGgsIDQpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGNvbnN0ICRlbGVtID0gaHRtbEFycmF5W2ldO1xuICAgICAgICAgICAgICAgIC8vIOWmguaenOaJvuWIsOmhtumDqOeahCBkb2N1bWVudCDlhYPntKDnmoTor53vvIzmmK/msqHmnIkgdGFnTmFtZSDnmoRcbiAgICAgICAgICAgICAgICBpZiAoJGVsZW0udGFnTmFtZSAmJiAkZWxlbS50YWdOYW1lLnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09ICdnJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGVsZW0gYXMgU1ZHR0VsZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgICRzdmcuYWRkRXZlbnRMaXN0ZW5lcignZGJsY2xpY2snLCAoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0ICRnID0gc2VhcmNoRyhldmVudC5wYXRoKTtcbiAgICAgICAgICAgIGlmICghJGcgfHwgISRnLmhhc0F0dHJpYnV0ZSgnbGluZS11dWlkJykpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdLnR5cGU7XG4gICAgICAgICAgICBjb25zdCBpbmZvID0gZ3JhcGhNYXAuZ2V0KHR5cGUpO1xuICAgICAgICAgICAgaWYgKCFpbmZvKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGluZm8uZ3JhcGguZXZlbnQgJiYgaW5mby5ncmFwaC5ldmVudC5vbkxpbmVEYmxDbGljaykge1xuICAgICAgICAgICAgICAgIGNvbnN0IG5vZGVzID0gJGdyYXBoLmdldFByb3BlcnR5KCdub2RlcycpIGFzIHsgW3V1aWQ6IHN0cmluZ106IEJsb2NrRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbGluZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBMaW5lRGF0YTsgfTtcbiAgICAgICAgICAgICAgICBjb25zdCB1dWlkID0gJGcuZ2V0QXR0cmlidXRlKCdsaW5lLXV1aWQnKSB8fCAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNbdXVpZF0gYXMgTGluZURhdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgTGluZU1vdXNlRXZlbnQobm9kZXMsIGxpbmVzLCAkZywgbGluZSk7XG4gICAgICAgICAgICAgICAgaW5mby5ncmFwaC5ldmVudC5vbkxpbmVEYmxDbGljayhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICAkc3ZnLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCAkZyA9IHNlYXJjaEcoZXZlbnQucGF0aCk7XG4gICAgICAgICAgICBpZiAoISRnIHx8ICEkZy5oYXNBdHRyaWJ1dGUoJ2xpbmUtdXVpZCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgdHlwZSA9IHRoaXMucGF0aHNbdGhpcy5wYXRocy5sZW5ndGggLSAxXS50eXBlO1xuICAgICAgICAgICAgY29uc3QgaW5mbyA9IGdyYXBoTWFwLmdldCh0eXBlKTtcbiAgICAgICAgICAgIGlmICghaW5mbykge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbmZvLmdyYXBoLmV2ZW50ICYmIGluZm8uZ3JhcGguZXZlbnQub25MaW5lQ2xpY2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBCbG9ja0RhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9ICRnLmdldEF0dHJpYnV0ZSgnbGluZS11dWlkJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW3V1aWRdIGFzIExpbmVEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IExpbmVNb3VzZUV2ZW50KG5vZGVzLCBsaW5lcywgJGcsIGxpbmUpO1xuICAgICAgICAgICAgICAgIGluZm8uZ3JhcGguZXZlbnQub25MaW5lQ2xpY2soZXZlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgJHN2Zy5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCAkZyA9IHNlYXJjaEcoZXZlbnQucGF0aCk7XG4gICAgICAgICAgICBpZiAoISRnIHx8ICEkZy5oYXNBdHRyaWJ1dGUoJ2xpbmUtdXVpZCcpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKChldmVudCBhcyBNb3VzZUV2ZW50KS5idXR0b24gIT09IDIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB0aGlzLnBhdGhzW3RoaXMucGF0aHMubGVuZ3RoIC0gMV0udHlwZTtcbiAgICAgICAgICAgIGNvbnN0IGluZm8gPSBncmFwaE1hcC5nZXQodHlwZSk7XG4gICAgICAgICAgICBpZiAoIWluZm8pIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaW5mby5ncmFwaC5ldmVudCAmJiBpbmZvLmdyYXBoLmV2ZW50Lm9uTGluZVJpZ2h0Q2xpY2spIHtcbiAgICAgICAgICAgICAgICBjb25zdCBub2RlcyA9ICRncmFwaC5nZXRQcm9wZXJ0eSgnbm9kZXMnKSBhcyB7IFt1dWlkOiBzdHJpbmddOiBCbG9ja0RhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZXMgPSAkZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgICAgICAgICAgY29uc3QgdXVpZCA9ICRnLmdldEF0dHJpYnV0ZSgnbGluZS11dWlkJykgfHwgJyc7XG4gICAgICAgICAgICAgICAgY29uc3QgbGluZSA9IGxpbmVzW3V1aWRdIGFzIExpbmVEYXRhO1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IExpbmVNb3VzZUV2ZW50KG5vZGVzLCBsaW5lcywgJGcsIGxpbmUpO1xuICAgICAgICAgICAgICAgIGluZm8uZ3JhcGguZXZlbnQub25MaW5lUmlnaHRDbGljayhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgX3VwZGF0ZUdyYXBoKCkge1xuICAgICAgICBjbGVhckR5bmFtaWNFbnVtKCk7XG4gICAgICAgIGNvbnN0IGdyYXBoID0gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdO1xuICAgICAgICBjb25zdCAkZ3JhcGggPSB0aGlzLnNoYWRvd1Jvb3QhLnF1ZXJ5U2VsZWN0b3IoJ3YtZ3JhcGgnKSEgYXMgR3JhcGhFbGVtZW50O1xuICAgICAgICAkZ3JhcGguY2xlYXIoKTtcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICRncmFwaC5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCBncmFwaC50eXBlKTtcbiAgICAgICAgICAgICRncmFwaC5zZXRQcm9wZXJ0eSgnbGluZXMnLCBncmFwaC5saW5lcyk7XG4gICAgICAgICAgICAkZ3JhcGguc2V0UHJvcGVydHkoJ25vZGVzJywgZ3JhcGgubm9kZXMpO1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlSGVhZGVyKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyB1bmRvKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLnVuZG8oKTtcbiAgICAgICAgZGlzcGF0Y2godGhpcywgJ3VuZG8nKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVkbygpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5yZWRvKCk7XG4gICAgICAgIGRpc3BhdGNoKHRoaXMsICdyZWRvJyk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXJ0UmVjb3JkaW5nKCkge1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLnN0YXJ0UmVjb3JkaW5nKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0b3BSZWNvcmRpbmcoKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUXVldWUuc3RvcFJlY29yZGluZygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRQaW5FbGVtZW50KGJsb2NrTmFtZTogc3RyaW5nLCB0eXBlOiAnaW5wdXQnIHwgJ291dHB1dCcsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgJGJsb2NrID0gdGhpcy4kZ3JhcGguc2hhZG93Um9vdC5xdWVyeVNlbGVjdG9yKGB2LWdyYXBoLW5vZGVbbm9kZS11dWlkPSR7YmxvY2tOYW1lfV1gKTtcbiAgICAgICAgaWYgKCEkYmxvY2spIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCAkcGluTGlzdCA9ICRibG9jay5zaGFkb3dSb290IS5xdWVyeVNlbGVjdG9yQWxsKGAucGluLmluYCk7XG4gICAgICAgIGNvbnN0ICRwaW4gPSAkcGluTGlzdFtpbmRleF07XG4gICAgICAgIHJldHVybiAkcGluO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRCbG9ja0VsZW1lbnQoYmxvY2tOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGdyYXBoLnNoYWRvd1Jvb3QucXVlcnlTZWxlY3Rvcihgdi1ncmFwaC1ub2RlW25vZGUtdXVpZD0ke2Jsb2NrTmFtZX1dYCkgYXMgR3JhcGhOb2RlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvLy8gLS0tLSDmk43kvZzmlbTkuKrlm75cblxuICAgIC8qKlxuICAgICAqIOWwhuWxj+W5leWdkOagh+i9rOaNouaIkCBHcmFwaCDlhoXnmoTlnZDmoIdcbiAgICAgKiBAcGFyYW0gcG9pbnRcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGNvbnZlcnRDb29yZGluYXRlKHBvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pIHtcbiAgICAgICAgcG9pbnQgPSB0aGlzLiRncmFwaC5jb252ZXJ0Q29vcmRpbmF0ZShwb2ludC54LCBwb2ludC55KTtcbiAgICAgICAgcmV0dXJuIHBvaW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9rue8lui+keeahOagueWbvlxuICAgICAqIEBwYXJhbSBncmFwaFxuICAgICAqL1xuICAgIHNldFJvb3RHcmFwaChncmFwaDogR3JhcGhEYXRhKSB7XG4gICAgICAgIHRoaXMucm9vdEdyYXBoID0gZ3JhcGg7XG4gICAgICAgIHRoaXMucGF0aHMgPSBbZ3JhcGhdO1xuICAgICAgICB0aGlzLl91cGRhdGVHcmFwaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluato+WcqOe8lui+keeahOagueWbvlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZ2V0Um9vdEdyYXBoKCk6IEdyYXBoRGF0YSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhdGhzWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS8oOWFpeS4gOS4quWtl+espuS4su+8jOWPjeW6j+WIl+WMluaIkOWbvuaVsOaNrlxuICAgICAqIEBwYXJhbSBjb250ZW50XG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBkZXNlcmlhbGl6ZShjb250ZW50OiBzdHJpbmcpOiBHcmFwaERhdGEge1xuICAgICAgICBjb25zdCBncmFwaERhdGEgPSB5YW1sLmxvYWQoY29udGVudCkgYXMgR3JhcGhEYXRhO1xuICAgICAgICByZXR1cm4gZ3JhcGhEYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOS8oOWFpeS4gOS4quWbvuaVsOaNru+8jOW6j+WIl+WMluaIkCB5YW1sIOWtl+espuS4slxuICAgICAqIEBwYXJhbSBkYXRhXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBzZXJpYWxpemUoZGF0YT86IEdyYXBoRGF0YSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHN0ciA9IHlhbWwuZHVtcChkYXRhIHx8IHRoaXMucGF0aHNbMF0pO1xuICAgICAgICAvLyByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy5wYXRoc1swXSk7XG4gICAgICAgIC8vIG91dHB1dEZpbGVTeW5jKCcvVXNlcnMvd2FuZ3NpamllL1Byb2plY3QvQ3JlYXRvci9jb2Nvcy1lZGl0b3IvZXh0ZW5zaW9uLXJlcG9zL3NoYWRlci1ncmFwaC90ZXN0LnlhbWwnLCBzdHIpO1xuICAgICAgICByZXR1cm4gc3RyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluaVtOS4quWbvueOsOWcqOeahOS4gOS6m+WfuuehgOaVsOaNrlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZ2V0R3JhcGhJbmZvKCkge1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLiRncmFwaC5nZXRQcm9wZXJ0eSgnb2Zmc2V0Jyk7XG4gICAgICAgIGNvbnN0IHNjYWxlID0gdGhpcy4kZ3JhcGguZ2V0UHJvcGVydHkoJ3NjYWxlJyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBvZmZzZXQsIHNjYWxlLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiuvue9ruaVtOS4quWbvueahOS4gOS6m+WfuuehgOaVsOaNrlxuICAgICAqIEBwYXJhbSBpbmZvXG4gICAgICovXG4gICAgc2V0R3JhcGhJbmZvKGluZm86IHsgb2Zmc2V0OiB7IHg6IG51bWJlciwgeTogbnVtYmVyLCB9LCBzY2FsZTogbnVtYmVyfSkge1xuICAgICAgICB0aGlzLiRncmFwaC5zZXRQcm9wZXJ0eSgnb2Zmc2V0JywgaW5mby5vZmZzZXQpO1xuICAgICAgICB0aGlzLiRncmFwaC5zZXRQcm9wZXJ0eSgnc2NhbGUnLCBpbmZvLnNjYWxlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmgaLlpI3nvKnmlL7mr5TkvotcbiAgICAgKi9cbiAgICB6b29tVG9GaXQoKSB7XG4gICAgICAgIHRoaXMuJGdyYXBoLmRhdGEuc2V0UHJvcGVydHkoJ3NjYWxlJywgMSk7XG4gICAgfVxuXG4gICAgLy8vIC0tLS0g5pON5L2c5b2T5YmN5Zu+XG5cbiAgICAvKipcbiAgICAgKiDojrflj5bpgInkuK3nmoQgQmxvY2sg5YiX6KGoXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBnZXRTZWxlY3RlZEJsb2NrTGlzdCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJGdyYXBoLmdldFNlbGVjdGVkTm9kZUxpc3QoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5bpgInkuK3nmoQgTGluZSDliJfooahcbiAgICAgKiBAcmV0dXJuc1xuICAgICAqL1xuICAgIGdldFNlbGVjdGVkTGluZUxpc3QoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRncmFwaC5nZXRTZWxlY3RlZExpbmVMaXN0KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6K6+572u5b2T5YmN5q2j5Zyo57yW6L6R55qE5Zu+5pWw5o2uXG4gICAgICogQHBhcmFtIGdyYXBoXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBzZXRDdXJyZW50R3JhcGgoZ3JhcGg6IEdyYXBoRGF0YSkge1xuICAgICAgICBpZiAodGhpcy5wYXRocy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXRSb290R3JhcGgoZ3JhcGgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGF0aHNbdGhpcy5wYXRocy5sZW5ndGggLSAxXSA9IGdyYXBoO1xuICAgICAgICB0aGlzLl91cGRhdGVHcmFwaCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOiOt+WPluato+WcqOe8lui+keeahOWbvuaVsOaNrlxuICAgICAqIEByZXR1cm5zXG4gICAgICovXG4gICAgZ2V0Q3VycmVudEdyYXBoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWcqOW9k+WJjeato+WcqOaTjeS9nOeahOWbvuaVsOaNrumHjOWinuWKoOS4gOS4qiBCbG9ja1xuICAgICAqIEBwYXJhbSBibG9ja1xuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGFkZEJsb2NrKGJsb2NrOiBCbG9ja0RhdGEsIGlkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUXVldWUuZXhlYyhuZXcgQWRkQmxvY2tBY3Rpb24oeyBibG9jaywgaWQgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWcqOW9k+WJjeato+WcqOaTjeS9nOeahOWbvuaVsOaNrumHjOWIoOmZpOS4gOS4quiKgueCuVxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIHJlbW92ZUJsb2NrKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcXVldWU6IEFjdGlvbltdID0gW107XG4gICAgICAgIC8vIHJlbW92ZSBsaW5lXG4gICAgICAgIGNvbnN0IGxpbmVzID0gdGhpcy4kZ3JhcGguZ2V0UHJvcGVydHkoJ2xpbmVzJykgYXMgeyBbdXVpZDogc3RyaW5nXTogTGluZURhdGE7IH07XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIGxpbmVzKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZXNba2V5XSBhcyBMaW5lRGF0YTtcbiAgICAgICAgICAgIGlmIChsaW5lLmlucHV0Lm5vZGUgPT09IGlkIHx8IGxpbmUub3V0cHV0Lm5vZGUgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgcXVldWUucHVzaChuZXcgUmVtb3ZlTGluZUFjdGlvbih7IGlkOiBrZXkgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlLnB1c2gobmV3IFJlbW92ZUJsb2NrQWN0aW9uKHsgaWQgfSkpO1xuICAgICAgICB0aGlzLmFjdGlvblF1ZXVlLmV4ZWMobmV3IEFjdGlvbkxpc3Qoe1xuICAgICAgICAgICAgcXVldWUsXG4gICAgICAgIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlnKjlvZPliY3mraPlnKjmk43kvZznmoTlm77mlbDmja7ph4zlop7liqDkuIDkuKrov57nur9cbiAgICAgKiBAcGFyYW0gbGluZVxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGFkZExpbmUobGluZTogTGluZURhdGEsIGlkPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuYWN0aW9uUXVldWUuZXhlYyhuZXcgQWRkTGluZUFjdGlvbih7IGxpbmUsIGlkIH0pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlnKjlvZPliY3mraPlnKjmk43kvZznmoTlm77mlbDmja7ph4zliKDpmaTkuIDkuKrov57nur9cbiAgICAgKiBAcGFyYW0gaWRcbiAgICAgKi9cbiAgICByZW1vdmVMaW5lKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25RdWV1ZS5leGVjKG5ldyBSZW1vdmVMaW5lQWN0aW9uKHsgaWQgfSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOi/m+WFpeW9k+WJjeWbvueahOWtkOWbvlxuICAgICAqIEBwYXJhbSBpZFxuICAgICAqL1xuICAgIGVudGVyU3ViR3JhcGgoaWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBncmFwaCA9IHRoaXMucGF0aHNbdGhpcy5wYXRocy5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3Qgc3ViR3JhcGggPSBncmFwaC5ncmFwaHNbaWRdO1xuICAgICAgICBpZiAoc3ViR3JhcGgpIHtcbiAgICAgICAgICAgIHRoaXMucGF0aHMucHVzaChzdWJHcmFwaCk7XG4gICAgICAgICAgICB0aGlzLl91cGRhdGVHcmFwaCgpO1xuICAgICAgICB9XG4gICAgICAgIGRpc3BhdGNoKHRoaXMsICdlbnRlci1ncmFwaCcsIHtcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGlkOiBpZCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWcqOW9k+WJjee8lui+keeahOWbvumHjOWinuWKoOS4gOS4quWtkOWbvlxuICAgICAqIEBwYXJhbSB0eXBlXG4gICAgICogQHBhcmFtIGlkXG4gICAgICogQHJldHVybnNcbiAgICAgKi9cbiAgICBhZGRTdWJHcmFwaCh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaW5mbyA9IHRoaXMucGF0aHNbdGhpcy5wYXRocy5sZW5ndGggLSAxXTtcbiAgICAgICAgLy8gY29uc3QgdXVpZCA9IGdlbmVyYXRlVVVJRCgpO1xuICAgICAgICBpbmZvLmdyYXBoc1tpZF0gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgbmFtZTogdHlwZSxcbiAgICAgICAgICAgIG5vZGVzOiB7fSxcbiAgICAgICAgICAgIGxpbmVzOiB7fSxcbiAgICAgICAgICAgIGdyYXBoczoge30sXG4gICAgICAgIH0gYXMgR3JhcGhEYXRhO1xuXG4gICAgICAgIHJldHVybiBpbmZvLmdyYXBoc1tpZF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5Zyo5b2T5YmN57yW6L6R55qE5Zu+6YeM77yM5Yig6Zmk5LiA5Liq5a2Q5Zu+XG4gICAgICogQHBhcmFtIGlkXG4gICAgICovXG4gICAgcmVtb3ZlU3ViR3JhcGgoaWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCBpbmZvID0gdGhpcy5wYXRoc1t0aGlzLnBhdGhzLmxlbmd0aCAtIDFdO1xuICAgICAgICBkZWxldGUgaW5mby5ncmFwaHNbaWRdO1xuICAgIH1cbn1cblxuaWYgKCF3aW5kb3cuY3VzdG9tRWxlbWVudHMuZ2V0KCd1aS1ncmFwaC1mb3JnZScpKSB7XG4gICAgd2luZG93LmN1c3RvbUVsZW1lbnRzLmRlZmluZSgndWktZ3JhcGgtZm9yZ2UnLCBIVE1MR3JhcGhGb3JnZUVsZW1lbnQpO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/graph.js b/extensions/shader-graph/dist/block-forge/graph.js new file mode 100644 index 0000000..47dc257 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/graph.js @@ -0,0 +1,37 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.declareGraph = exports.getDeclareGraph = exports.hasDeclareGraph = exports.graphMap = void 0; +const ui_graph_1 = require("@itharbors/ui-graph"); +const manager_1 = require("@itharbors/ui-graph/dist/manager"); +exports.graphMap = new Map(); +class GraphObject { +} +const hasDeclareGraph = function (type) { + return exports.graphMap.has(type); +}; +exports.hasDeclareGraph = hasDeclareGraph; +const getDeclareGraph = function (type) { + return exports.graphMap.get(type); +}; +exports.getDeclareGraph = getDeclareGraph; +/** + * 注册一个 graph 类型 + * @param graph + */ +function declareGraph(graph) { + if ((0, exports.hasDeclareGraph)(graph.type)) { + console.warn(`Cannot declare duplicate graph types: ${graph.type}`); + return; + } + // 在底层注册一个渲染图类型 + const config = Object.assign({}, graph.style, graph.feature); + (0, ui_graph_1.registerGraphOption)(graph.type, config); + (0, manager_1.registerGraphFilter)(graph.type, { + lineFilter: graph.validator?.dataLink, + }); + exports.graphMap.set(graph.type, { + graph: graph, + }); +} +exports.declareGraph = declareGraph; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2stZm9yZ2UvZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFHYixrREFBMEQ7QUFDMUQsOERBQXVFO0FBSzFELFFBQUEsUUFBUSxHQUEyQixJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRTFELE1BQU0sV0FBVztDQUVoQjtBQUVNLE1BQU0sZUFBZSxHQUFHLFVBQVMsSUFBWTtJQUNoRCxPQUFPLGdCQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUZXLFFBQUEsZUFBZSxtQkFFMUI7QUFFSyxNQUFNLGVBQWUsR0FBRyxVQUFTLElBQVk7SUFDaEQsT0FBTyxnQkFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QixDQUFDLENBQUM7QUFGVyxRQUFBLGVBQWUsbUJBRTFCO0FBRUY7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLEtBQXdCO0lBQ2pELElBQUksSUFBQSx1QkFBZSxFQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNwRSxPQUFPO0tBQ1Y7SUFFRCxlQUFlO0lBQ2YsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0QsSUFBQSw4QkFBbUIsRUFBQyxLQUFLLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLElBQUEsNkJBQW1CLEVBQUMsS0FBSyxDQUFDLElBQUksRUFBRTtRQUM1QixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFBRSxRQUFRO0tBQ3hDLENBQUMsQ0FBQztJQUVILGdCQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDckIsS0FBSyxFQUFFLEtBQUs7S0FDZixDQUFDLENBQUM7QUFDUCxDQUFDO0FBaEJELG9DQWdCQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBJR3JhcGhEZXNjcmlwdGlvbiB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IHJlZ2lzdGVyR3JhcGhPcHRpb24gfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoJztcbmltcG9ydCB7IHJlZ2lzdGVyR3JhcGhGaWx0ZXIgfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoL2Rpc3QvbWFuYWdlcic7XG5cbmludGVyZmFjZSBHcmFwaEluZm8ge1xuICAgIGdyYXBoOiBJR3JhcGhEZXNjcmlwdGlvbjtcbn1cbmV4cG9ydCBjb25zdCBncmFwaE1hcDogTWFwPHN0cmluZywgR3JhcGhJbmZvPiA9IG5ldyBNYXAoKTtcblxuY2xhc3MgR3JhcGhPYmplY3Qge1xuXG59XG5cbmV4cG9ydCBjb25zdCBoYXNEZWNsYXJlR3JhcGggPSBmdW5jdGlvbih0eXBlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gZ3JhcGhNYXAuaGFzKHR5cGUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERlY2xhcmVHcmFwaCA9IGZ1bmN0aW9uKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBncmFwaE1hcC5nZXQodHlwZSk7XG59O1xuXG4vKipcbiAqIOazqOWGjOS4gOS4qiBncmFwaCDnsbvlnotcbiAqIEBwYXJhbSBncmFwaFxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZUdyYXBoKGdyYXBoOiBJR3JhcGhEZXNjcmlwdGlvbikge1xuICAgIGlmIChoYXNEZWNsYXJlR3JhcGgoZ3JhcGgudHlwZSkpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBDYW5ub3QgZGVjbGFyZSBkdXBsaWNhdGUgZ3JhcGggdHlwZXM6ICR7Z3JhcGgudHlwZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIOWcqOW6leWxguazqOWGjOS4gOS4qua4suafk+Wbvuexu+Wei1xuICAgIGNvbnN0IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIGdyYXBoLnN0eWxlLCBncmFwaC5mZWF0dXJlKTtcbiAgICByZWdpc3RlckdyYXBoT3B0aW9uKGdyYXBoLnR5cGUsIGNvbmZpZyk7XG4gICAgcmVnaXN0ZXJHcmFwaEZpbHRlcihncmFwaC50eXBlLCB7XG4gICAgICAgIGxpbmVGaWx0ZXI6IGdyYXBoLnZhbGlkYXRvcj8uZGF0YUxpbmssXG4gICAgfSk7XG5cbiAgICBncmFwaE1hcC5zZXQoZ3JhcGgudHlwZSwge1xuICAgICAgICBncmFwaDogZ3JhcGgsXG4gICAgfSk7XG59XG5cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/index.js b/extensions/shader-graph/dist/block-forge/index.js new file mode 100644 index 0000000..50873b5 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/index.js @@ -0,0 +1,37 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDynamicEnumByType = exports.getEnumByType = exports.removeEnumObserver = exports.addEnumObserver = exports.removeDynamicEnumToType = exports.declareDynamicEnumToType = exports.clearDynamicEnum = exports.declareEnum = exports.Pin = exports.Block = exports.Forge = exports.createPin = exports.createBlock = exports.createGraph = exports.generateUUID = exports.declarePin = exports.removeDeclareBlock = exports.getDeclareBlock = exports.hasDeclareBlock = exports.declareBlock = exports.getDeclareGraph = exports.hasDeclareGraph = exports.declareGraph = exports.HTMLGraphForgeElement = void 0; +require("./internal"); +require("./forge"); +var forge_1 = require("./forge"); +Object.defineProperty(exports, "HTMLGraphForgeElement", { enumerable: true, get: function () { return forge_1.HTMLGraphForgeElement; } }); +var graph_1 = require("./graph"); +Object.defineProperty(exports, "declareGraph", { enumerable: true, get: function () { return graph_1.declareGraph; } }); +Object.defineProperty(exports, "hasDeclareGraph", { enumerable: true, get: function () { return graph_1.hasDeclareGraph; } }); +Object.defineProperty(exports, "getDeclareGraph", { enumerable: true, get: function () { return graph_1.getDeclareGraph; } }); +var block_1 = require("./block"); +Object.defineProperty(exports, "declareBlock", { enumerable: true, get: function () { return block_1.declareBlock; } }); +Object.defineProperty(exports, "hasDeclareBlock", { enumerable: true, get: function () { return block_1.hasDeclareBlock; } }); +Object.defineProperty(exports, "getDeclareBlock", { enumerable: true, get: function () { return block_1.getDeclareBlock; } }); +Object.defineProperty(exports, "removeDeclareBlock", { enumerable: true, get: function () { return block_1.removeDeclareBlock; } }); +var pin_1 = require("./pin"); +Object.defineProperty(exports, "declarePin", { enumerable: true, get: function () { return pin_1.declarePin; } }); +var utils_1 = require("./utils"); +Object.defineProperty(exports, "generateUUID", { enumerable: true, get: function () { return utils_1.generateUUID; } }); +Object.defineProperty(exports, "createGraph", { enumerable: true, get: function () { return utils_1.createGraph; } }); +Object.defineProperty(exports, "createBlock", { enumerable: true, get: function () { return utils_1.createBlock; } }); +Object.defineProperty(exports, "createPin", { enumerable: true, get: function () { return utils_1.createPin; } }); +var forge_2 = require("./module/forge"); +Object.defineProperty(exports, "Forge", { enumerable: true, get: function () { return forge_2.Forge; } }); +Object.defineProperty(exports, "Block", { enumerable: true, get: function () { return forge_2.Block; } }); +Object.defineProperty(exports, "Pin", { enumerable: true, get: function () { return forge_2.Pin; } }); +var enum_1 = require("./enum"); +Object.defineProperty(exports, "declareEnum", { enumerable: true, get: function () { return enum_1.declareEnum; } }); +Object.defineProperty(exports, "clearDynamicEnum", { enumerable: true, get: function () { return enum_1.clearDynamicEnum; } }); +Object.defineProperty(exports, "declareDynamicEnumToType", { enumerable: true, get: function () { return enum_1.declareDynamicEnumToType; } }); +Object.defineProperty(exports, "removeDynamicEnumToType", { enumerable: true, get: function () { return enum_1.removeDynamicEnumToType; } }); +Object.defineProperty(exports, "addEnumObserver", { enumerable: true, get: function () { return enum_1.addEnumObserver; } }); +Object.defineProperty(exports, "removeEnumObserver", { enumerable: true, get: function () { return enum_1.removeEnumObserver; } }); +Object.defineProperty(exports, "getEnumByType", { enumerable: true, get: function () { return enum_1.getEnumByType; } }); +Object.defineProperty(exports, "getDynamicEnumByType", { enumerable: true, get: function () { return enum_1.getDynamicEnumByType; } }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFFYixzQkFBb0I7QUFDcEIsbUJBQWlCO0FBRWpCLGlDQUVpQjtBQURiLDhHQUFBLHFCQUFxQixPQUFBO0FBR3pCLGlDQUlpQjtBQUhiLHFHQUFBLFlBQVksT0FBQTtBQUNaLHdHQUFBLGVBQWUsT0FBQTtBQUNmLHdHQUFBLGVBQWUsT0FBQTtBQUduQixpQ0FLaUI7QUFKYixxR0FBQSxZQUFZLE9BQUE7QUFDWix3R0FBQSxlQUFlLE9BQUE7QUFDZix3R0FBQSxlQUFlLE9BQUE7QUFDZiwyR0FBQSxrQkFBa0IsT0FBQTtBQUd0Qiw2QkFFZTtBQURYLGlHQUFBLFVBQVUsT0FBQTtBQUdkLGlDQUtpQjtBQUpiLHFHQUFBLFlBQVksT0FBQTtBQUNaLG9HQUFBLFdBQVcsT0FBQTtBQUNYLG9HQUFBLFdBQVcsT0FBQTtBQUNYLGtHQUFBLFNBQVMsT0FBQTtBQUdiLHdDQUl3QjtBQUhwQiw4RkFBQSxLQUFLLE9BQUE7QUFDTCw4RkFBQSxLQUFLLE9BQUE7QUFDTCw0RkFBQSxHQUFHLE9BQUE7QUFHUCwrQkFTZ0I7QUFSWixtR0FBQSxXQUFXLE9BQUE7QUFDWCx3R0FBQSxnQkFBZ0IsT0FBQTtBQUNoQixnSEFBQSx3QkFBd0IsT0FBQTtBQUN4QiwrR0FBQSx1QkFBdUIsT0FBQTtBQUN2Qix1R0FBQSxlQUFlLE9BQUE7QUFDZiwwR0FBQSxrQkFBa0IsT0FBQTtBQUNsQixxR0FBQSxhQUFhLE9BQUE7QUFDYiw0R0FBQSxvQkFBb0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0ICcuL2ludGVybmFsJztcbmltcG9ydCAnLi9mb3JnZSc7XG5cbmV4cG9ydCB7XG4gICAgSFRNTEdyYXBoRm9yZ2VFbGVtZW50LFxufSBmcm9tICcuL2ZvcmdlJztcblxuZXhwb3J0IHtcbiAgICBkZWNsYXJlR3JhcGgsXG4gICAgaGFzRGVjbGFyZUdyYXBoLFxuICAgIGdldERlY2xhcmVHcmFwaCxcbn0gZnJvbSAnLi9ncmFwaCc7XG5cbmV4cG9ydCB7XG4gICAgZGVjbGFyZUJsb2NrLFxuICAgIGhhc0RlY2xhcmVCbG9jayxcbiAgICBnZXREZWNsYXJlQmxvY2ssXG4gICAgcmVtb3ZlRGVjbGFyZUJsb2NrLFxufSBmcm9tICcuL2Jsb2NrJztcblxuZXhwb3J0IHtcbiAgICBkZWNsYXJlUGluLFxufSBmcm9tICcuL3Bpbic7XG5cbmV4cG9ydCB7XG4gICAgZ2VuZXJhdGVVVUlELFxuICAgIGNyZWF0ZUdyYXBoLFxuICAgIGNyZWF0ZUJsb2NrLFxuICAgIGNyZWF0ZVBpbixcbn0gZnJvbSAnLi91dGlscyc7XG5cbmV4cG9ydCB7XG4gICAgRm9yZ2UsXG4gICAgQmxvY2ssXG4gICAgUGluLFxufSBmcm9tICcuL21vZHVsZS9mb3JnZSc7XG5cbmV4cG9ydCB7XG4gICAgZGVjbGFyZUVudW0sXG4gICAgY2xlYXJEeW5hbWljRW51bSxcbiAgICBkZWNsYXJlRHluYW1pY0VudW1Ub1R5cGUsXG4gICAgcmVtb3ZlRHluYW1pY0VudW1Ub1R5cGUsXG4gICAgYWRkRW51bU9ic2VydmVyLFxuICAgIHJlbW92ZUVudW1PYnNlcnZlcixcbiAgICBnZXRFbnVtQnlUeXBlLFxuICAgIGdldER5bmFtaWNFbnVtQnlUeXBlLFxufSBmcm9tICcuL2VudW0nO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/interface/block.js b/extensions/shader-graph/dist/block-forge/interface/block.js new file mode 100644 index 0000000..254429d --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/interface/block.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJmYWNlL2Jsb2NrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBpbkRhdGEsIElQaW5EZXNjcmlwdGlvbiB9IGZyb20gJy4vcGluJztcblxuLypcbiAqIOW6j+WIl+WMlumcgOimgeeahOaVsOaNrlxuICovXG5cbi8vIEJsb2NrIOeahOW6j+WIl+WMluaVsOaNrlxuZXhwb3J0IGludGVyZmFjZSBCbG9ja0RhdGE8XG4gICAgRCBleHRlbmRzIE9iamVjdCA9IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICBpbnB1dERlc2NyaXB0aW9uPzogSVBpbkRlc2NyaXB0aW9uW107XG4gICAgICAgIGlucHV0UGlucz86IFBpbkRhdGFbXTtcbiAgICAgICAgb3V0cHV0RGVzY3JpcHRpb24/OiBJUGluRGVzY3JpcHRpb25bXTtcbiAgICAgICAgb3V0cHV0UGlucz86IFBpbkRhdGFbXTtcbiAgICB9XG4+IHtcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgcG9zaXRpb246IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfTtcbiAgICBkZXRhaWxzOiBEO1xufVxuXG4vKipcbiAqIOazqOWGjOaXtueahOWumuS5iVxuICovXG5cbi8vIEJsb2NrIOaVsOaNruagvOW8j1xuZXhwb3J0IGludGVyZmFjZSBJQmxvY2tEZXNjcmlwdGlvbiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIC8vIOWQjeensFxuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgZXh0ZW5kPzogc3RyaW5nO1xuICAgIGZlYXR1cmU/OiBJQmxvY2tGZWF0dXJlO1xuICAgIHN0eWxlPzogSUJsb2NrU3R5bGU7XG5cbiAgICBpbnB1dFBpbnM6IChJUGluRGVzY3JpcHRpb24pW107XG4gICAgY3JlYXRlRHluYW1pY0lucHV0UGlucz8oYmxvY2tEZXNjOiBJQmxvY2tEZXNjcmlwdGlvbiwgZGV0YWlsczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IChJUGluRGVzY3JpcHRpb24pW107XG4gICAgb3V0cHV0UGluczogKElQaW5EZXNjcmlwdGlvbilbXTtcbiAgICBjcmVhdGVEeW5hbWljT3V0cHV0UGlucz8oYmxvY2tEZXNjOiBJQmxvY2tEZXNjcmlwdGlvbiwgZGV0YWlsczogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IChJUGluRGVzY3JpcHRpb24pW107XG59XG5cbi8vIEJsb2NrIOS4iuWPr+mFjee9rueahOaVsOaNrlxuZXhwb3J0IGludGVyZmFjZSBJQmxvY2tGZWF0dXJlIHtcblxuICAgIC8vLy8gLS0g6IqC54K55Yqf6IO95byA5YWzIC0tXG4gICAgLy8g5piv5ZCm5oqY5Y+gXG4gICAgaXNDb2xsYXBzZWRCbG9jaz86IGJvb2xlYW47XG4gICAgLy8g5pi+56S65b+r6YCf6L+e5o6l54K5XG4gICAgc2hvd1F1aWNrQ29ubmVjdFBvaW50PzogYm9vbGVhbjtcbiAgICAvLyDmmL7npLrlm77moIdcbiAgICBpY29uPzogc3RyaW5nO1xuICAgIC8vIOagh+mimOaMiemSriAtLVxuICAgIHRpdGxlQnRuPzogc3RyaW5nO1xuICAgIC8vIOW3sue7j+azqOWGjOS6i+S7tiAtLVxuICAgIGV2ZW50SGFuZGxlckNvdW50PzogbnVtYmVyO1xuICAgIC8vIOW8leiEmuaYr+WQpuWPr+ingSAtLVxuICAgIHBpblZpc2liaWxpdHk/OiBib29sZWFuO1xuXG4gICAgLy8g5YWz6IGU5Y+Y6YeP77yf77yfIC0tXG4gICAgdmFyaWFibGU/OiBib29sZWFuO1xuICAgIC8vIOaUr+aMgemHjeWRveWQjSAtLVxuICAgIHN1cHBvcnRzUmVuYW1lPzogYm9vbGVhbjtcbiAgICAvLyDmmK/lkKblj6/liKDpmaQgLS1cbiAgICBkZWxldGFibGU/OiBib29sZWFuO1xuICAgIC8vIOaYr+WQpuWPr+S7peacgOWwj+WMliAtLVxuICAgIHN1cHBvcnRzTWluaW1pemF0aW9uPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmxvY2tTdHlsZSB7XG4gICAgLy8vLyAtLSDoioLngrnmoLflvI/mjqfliLYgLS1cblxuICAgIC8vIOiDjOaZr+minOiJslxuICAgIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgICBiYWNrZ3JvdW5kSG92ZXJDb2xvcj86IHN0cmluZztcbiAgICBiYWNrZ3JvdW5kQWN0aXZlQ29sb3I/OiBzdHJpbmc7XG4gICAgLy8gaGVhZGVyIOminOiJslxuICAgIGhlYWRlckNvbG9yPzogc3RyaW5nO1xuICAgIGhlYWRlckhvdmVyQ29sb3I/OiBzdHJpbmc7XG4gICAgaGVhZGVyQWN0aXZlQ29sb3I/OiBzdHJpbmc7XG4gICAgLy8g6L655qGG6aKc6ImyXG4gICAgYm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gICAgYm9yZGVySG92ZXJDb2xvcj86IHN0cmluZztcbiAgICBib3JkZXJBY3RpdmVDb2xvcj86IHN0cmluZztcbiAgICAvLyDmloflrZfpopzoibJcbiAgICBmb250Q29sb3I/OiBzdHJpbmc7XG4gICAgZm9udEhvdmVyQ29sb3I/OiBzdHJpbmc7XG4gICAgLy8g6Zi05b2x6aKc6ImyXG4gICAgc2hhZG93Q29sb3I/OiBzdHJpbmc7XG4gICAgc2hhZG93SG92ZXJDb2xvcj86IHN0cmluZztcbiAgICBzaGFkb3dBY3RpdmVDb2xvcj86IHN0cmluZztcbiAgICAvLyDovoXliqnoibJcbiAgICBzZWNvbmRhcnlDb2xvcj86IHN0cmluZztcbiAgICBzZWNvbmRhcnlIb3ZlckNvbG9yPzogc3RyaW5nO1xuICAgIHNlY29uZGFyeUFjdGl2ZUNvbG9yPzogc3RyaW5nO1xuICAgIC8vIOWbvuagh+minOiJslxuICAgIGljb25Db2xvcj86IHN0cmluZztcbiAgICBpY29uSG92ZXJDb2xvcj86IHN0cmluZztcbiAgICBpY29uQWN0aXZlQ29sb3I/OiBzdHJpbmc7XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/interface/forge.js b/extensions/shader-graph/dist/block-forge/interface/forge.js new file mode 100644 index 0000000..c3b3e33 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/interface/forge.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +/** + * 注册时的定义 + */ +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJmYWNlL2ZvcmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBY0E7O0dBRUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEdyYXBoRGF0YSB9IGZyb20gJy4vZ3JhcGgnO1xuXG4vKlxuICog5bqP5YiX5YyW6ZyA6KaB55qE5pWw5o2uXG4gKi9cblxuLy8gRm9yZ2Ug55qE5bqP5YiX5YyW5pWw5o2uXG5leHBvcnQgaW50ZXJmYWNlIEZvcmdlRGF0YTxEIGV4dGVuZHMgT2JqZWN0ID0ge1trZXk6IHN0cmluZ106IGFueTt9PiB7XG4gICAgZ3JhcGg6IHtcbiAgICAgICAgW3V1aWQ6IHN0cmluZ106IEdyYXBoRGF0YTtcbiAgICB9O1xuICAgIGRldGFpbHM6IEQ7XG59XG5cbi8qKlxuICog5rOo5YaM5pe255qE5a6a5LmJXG4gKi9cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/interface/graph.js b/extensions/shader-graph/dist/block-forge/interface/graph.js new file mode 100644 index 0000000..6409b43 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/interface/graph.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJmYWNlL2dyYXBoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IExpbmVJbmZvIH0gZnJvbSAnQGl0aGFyYm9ycy91aS1ncmFwaCc7XG5pbXBvcnQgdHlwZSB7IEJsb2NrRGF0YSB9IGZyb20gJy4vYmxvY2snO1xuXG5pbXBvcnQgdHlwZSB7IEdyYXBoTW91c2VFdmVudCwgQmxvY2tNb3VzZUV2ZW50LCBMaW5lTW91c2VFdmVudCwgQmxvY2tFdmVudCwgTGluZUV2ZW50IH0gZnJvbSAnLi4vZXZlbnQnO1xuXG4vKlxuICog5bqP5YiX5YyW6ZyA6KaB55qE5pWw5o2uXG4gKi9cblxuLy8gR3JhcGgg55qE5bqP5YiX5YyW5pWw5o2uXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRGF0YTxEIGV4dGVuZHMgT2JqZWN0ID0ge1trZXk6IHN0cmluZ106IGFueTt9PiB7XG4gICAgdHlwZTogc3RyaW5nLFxuICAgIG5hbWU/OiBzdHJpbmcsXG4gICAgbm9kZXM6IHtcbiAgICAgICAgW3V1aWQ6IHN0cmluZ106IEJsb2NrRGF0YTtcbiAgICB9O1xuICAgIGxpbmVzOiB7XG4gICAgICAgIFt1dWlkOiBzdHJpbmddOiBMaW5lRGF0YTtcbiAgICB9O1xuICAgIGdyYXBoczoge1xuICAgICAgICBbdXVpZDogc3RyaW5nXTogR3JhcGhEYXRhO1xuICAgIH07XG4gICAgZGV0YWlsczogRDtcbn1cblxuLy8gTGluZSDnmoTluo/liJfljJbmlbDmja5cbi8vIOWboOS4uiBsaW5lIOayoeacieWNleeLrOeahOexu+Wei+WSjOaWh+S7tu+8jOaaguaUvui/memHjFxuZXhwb3J0IGludGVyZmFjZSBMaW5lRGF0YTxEIGV4dGVuZHMgT2JqZWN0ID0ge1trZXk6IHN0cmluZ106IGFueTt9PiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGRldGFpbHM6IEQ7XG4gICAgb3V0cHV0OiB7XG4gICAgICAgIG5vZGU6IHN0cmluZztcbiAgICAgICAgcGFyYW06IHN0cmluZztcbiAgICB9O1xuICAgIGlucHV0OiB7XG4gICAgICAgIG5vZGU6IHN0cmluZztcbiAgICAgICAgcGFyYW06IHN0cmluZztcbiAgICB9O1xufVxuXG4vKipcbiAqIOazqOWGjOaXtueahOWumuS5iVxuICovXG5cbi8vIEdyYXBoIOaVsOaNruagvOW8j1xuZXhwb3J0IGludGVyZmFjZSBJR3JhcGhEZXNjcmlwdGlvbiB7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIGZlYXR1cmU/OiBJR3JhcGhGZWF0dXJlO1xuICAgIHN0eWxlPzogSUdyYXBoU3R5bGU7XG4gICAgdmFsaWRhdG9yPzogSUdyYXBoRGVmaW5lVmFsaWRhdG9yO1xuICAgIGV2ZW50PzogSUdyYXBoRGVmaW5lRXZlbnQ7XG59XG5cbi8vIEdyYXBoIOS4iuWPr+S7peWumuS5ieeahOagoemqjOWHveaVsFxuaW50ZXJmYWNlIElHcmFwaERlZmluZVZhbGlkYXRvciB7XG4gICAgLy8g6L+e57q/XG4gICAgZGF0YUxpbms/KG5vZGVzOiBhbnksIGxpbmVzOiBhbnksIGxpbmU6IGFueSwgaW5wdXQ6IGFueSwgb3V0cHV0OiBhbnkpOiBib29sZWFuO1xuICAgIGV4ZWNMaW5rPyhub2RlczogYW55LCBsaW5lczogYW55LCBsaW5lOiBhbnksIGlucHV0OiBhbnksIG91dHB1dDogYW55KTogYm9vbGVhbjtcbiAgICBkZWxldGVMaW5lPyguLi5hcmdzOiBhbnlbXSk6IGJvb2xlYW47XG5cbiAgICAvLyDoioLngrlcbiAgICBjcmVhdGVOb2RlPyguLi5hcmdzOiBhbnlbXSk6IGJvb2xlYW47XG4gICAgZGVsZXRlTm9kZT8oLi4uYXJnczogYW55W10pOiBib29sZWFuO1xufVxuXG4vLyBHcmFwaCDkuIrlj6/ku6XlrprkuYnnmoTkuovku7bpkqnlrZBcbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBoRGVmaW5lRXZlbnQge1xuICAgIC8vIEJsb2NrIOmAieS4reS6i+S7tlxuICAgIG9uQmxvY2tTZWxlY3RlZD8oZXZlbnQ6IEJsb2NrRXZlbnQpOiBib29sZWFuO1xuICAgIG9uQmxvY2tVbnNlbGVjdGVkPyhldmVudDogQmxvY2tFdmVudCk6IGJvb2xlYW47XG5cbiAgICAvLyBMaW5lIOmAieS4reS6i+S7tlxuICAgIG9uTGluZVNlbGVjdGVkPyhldmVudDogTGluZUV2ZW50KTogYm9vbGVhbjtcbiAgICBvbkxpbmVVbnNlbGVjdGVkPyhldmVudDogTGluZUV2ZW50KTogYm9vbGVhbjtcblxuICAgIC8vIEJsb2NrIOeCueWHu+S6i+S7tlxuICAgIG9uQmxvY2tDbGljaz8oZXZlbnQ6IEJsb2NrTW91c2VFdmVudCk6IGJvb2xlYW47XG4gICAgb25CbG9ja1JpZ2h0Q2xpY2s/KGV2ZW50OiBCbG9ja01vdXNlRXZlbnQpOiBib29sZWFuO1xuICAgIG9uQmxvY2tEYmxDbGljaz8oZXZlbnQ6IEJsb2NrTW91c2VFdmVudCk6IGJvb2xlYW47XG5cbiAgICAvLyBMaW5lIOeCueWHu+S6i+S7tlxuICAgIG9uTGluZUNsaWNrPyhldmVudDogTGluZU1vdXNlRXZlbnQpOiBib29sZWFuO1xuICAgIG9uTGluZVJpZ2h0Q2xpY2s/KGV2ZW50OiBMaW5lTW91c2VFdmVudCk6IGJvb2xlYW47XG4gICAgb25MaW5lRGJsQ2xpY2s/KGV2ZW50OiBMaW5lTW91c2VFdmVudCk6IGJvb2xlYW47XG5cbiAgICAvLyBHcmFwaCDngrnlh7vkuovku7ZcbiAgICBvbkdyYXBoUmlnaHRDbGljaz8oZXZlbnQ6IEdyYXBoTW91c2VFdmVudCk6IHVua25vd247XG5cbiAgICAvLyDov57nur9cbiAgICBvbkxpbmVDcmVhdGVkPyhldmVudDogTGluZUV2ZW50KTogYm9vbGVhbjtcbiAgICBvbkxpbmVEZWxldGVkPyhldmVudDogTGluZUV2ZW50KTogYm9vbGVhbjtcblxuICAgIC8vIOiKgueCuVxuICAgIG9uQmxvY2tDcmVhdGVkPyhldmVudDogQmxvY2tFdmVudCk6IGJvb2xlYW47XG4gICAgb25CbG9ja0RlbGV0ZWQ/KGV2ZW50OiBCbG9ja0V2ZW50KTogYm9vbGVhbjtcbn1cblxuLy8gR3JhcGgg5LiK5Y+v6YWN572u55qE5pWw5o2uXG5pbnRlcmZhY2UgSUdyYXBoRmVhdHVyZSB7XG59XG5cbmludGVyZmFjZSBJR3JhcGhTdHlsZSB7XG4gICAgLy8g6IOM5pmv6aKc6ImyXG4gICAgYmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICAgIC8vIOe9keagvOWwuuWvuFxuICAgIGdyaWRTaXplPzogbnVtYmVyO1xuICAgIC8vIG1lc2gg6aKc6ImyXG4gICAgZ3JpZENvbG9yPzogc3RyaW5nO1xuICAgIC8vIOWOn+eCueWdkOagh+aYr+WQpuaYvuekulxuICAgIHNob3dPcmlnaW5Qb2ludD86IGJvb2xlYW47XG4gICAgLy8gb3JpZ2luIOminOiJslxuICAgIG9yaWdpblBvaW50Q29sb3I/OiBzdHJpbmc7XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/interface/index.js b/extensions/shader-graph/dist/block-forge/interface/index.js new file mode 100644 index 0000000..9898e87 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/interface/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./forge"), exports); +tslib_1.__exportStar(require("./graph"), exports); +tslib_1.__exportStar(require("./block"), exports); +tslib_1.__exportStar(require("./pin"), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJmYWNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtEQUF3QjtBQUN4QixrREFBd0I7QUFDeEIsa0RBQXdCO0FBQ3hCLGdEQUFzQiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9yZ2UnO1xuZXhwb3J0ICogZnJvbSAnLi9ncmFwaCc7XG5leHBvcnQgKiBmcm9tICcuL2Jsb2NrJztcbmV4cG9ydCAqIGZyb20gJy4vcGluJztcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/interface/pin.js b/extensions/shader-graph/dist/block-forge/interface/pin.js new file mode 100644 index 0000000..2c102a7 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/interface/pin.js @@ -0,0 +1,6 @@ +"use strict"; +/* + * 序列化需要的数据 + */ +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jsb2NrLWZvcmdlL2ludGVyZmFjZS9waW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUNBOztHQUVHIiwic291cmNlc0NvbnRlbnQiOlsiXG4vKlxuICog5bqP5YiX5YyW6ZyA6KaB55qE5pWw5o2uXG4gKi9cblxuLy8gUGluIOeahOW6j+WIl+WMluaVsOaNrlxuZXhwb3J0IGludGVyZmFjZSBQaW5EYXRhPFYgPSBhbnksIEQgZXh0ZW5kcyBPYmplY3QgPSB7W2tleTogc3RyaW5nXTogYW55O30+IHtcbiAgICBkYXRhVHlwZTogc3RyaW5nO1xuICAgIHZhbHVlOiBWO1xuICAgIGRldGFpbHM6IEQ7XG59XG5cbi8qKlxuICog6L+Q6KGM5pe25pWw5o2uXG4gKi9cblxuLyoqXG4gKiDms6jlhozml7bnmoTlrprkuYlcbiAqL1xuXG4vLyDlnKjms6jlhowgQmxvY2sg5a6a5LmJ55qE5pe25YCZ5o+P6L+w55qEIFBpbiDmlbDmja5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpbkRlc2NyaXB0aW9uPFYgPSBhbnksIEQgZXh0ZW5kcyBPYmplY3QgPSB7W2tleTogc3RyaW5nXTogYW55O30+IHtcbiAgICAvLyDlj4LmlbDlkI3vvIzlv4XpobvllK/kuIBcbiAgICB0YWc6IHN0cmluZztcbiAgICAvLyDmlbDmja7nsbvlnotcbiAgICBkYXRhVHlwZTogc3RyaW5nO1xuICAgIC8vIOaYvuekuuWcqOeVjOmdouS4iueahCB0aXRsZVxuICAgIG5hbWU/OiBzdHJpbmc7XG4gICAgLy8g6byg5qCH56e75Yqo5Yiw55WM6Z2i5LiK5by55Ye655qE5o+Q56S6XG4gICAgdG9vbHRpcD86IHN0cmluZztcbiAgICAvLyDmlbDmja7nmoTlgLxcbiAgICB2YWx1ZT86IFY7XG4gICAgLy8g5pi+56S655qE5Zu+5qCHXG4gICAgaWNvbj86IHN0cmluZztcbiAgICAvLyDpmpDol4/ovpPlhaXovpPlh7rnmoTpkojohJpcbiAgICBoaWRlUGluPzogYm9vbGVhbjtcbiAgICBkZXRhaWxzOiBEO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/index.js b/extensions/shader-graph/dist/block-forge/internal/index.js new file mode 100644 index 0000000..ec18cd2 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/index.js @@ -0,0 +1,18 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +require("./pin-unknown"); +require("./pin-float"); +require("./pin-int"); +require("./pin-string"); +require("./pin-boolean"); +require("./pin-vec2"); +require("./pin-vec3"); +require("./pin-vec4"); +require("./pin-mat3"); +require("./pin-mat4"); +require("./pin-color"); +require("./pin-texture2D"); +require("./pin-textureCube"); +require("./pin-enum"); +require("./pin-dynamic-enum"); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLHlCQUF1QjtBQUN2Qix1QkFBcUI7QUFDckIscUJBQW1CO0FBQ25CLHdCQUFzQjtBQUN0Qix5QkFBdUI7QUFDdkIsc0JBQW9CO0FBQ3BCLHNCQUFvQjtBQUNwQixzQkFBb0I7QUFDcEIsc0JBQW9CO0FBQ3BCLHNCQUFvQjtBQUNwQix1QkFBcUI7QUFDckIsMkJBQXlCO0FBQ3pCLDZCQUEyQjtBQUMzQixzQkFBb0I7QUFDcEIsOEJBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgJy4vcGluLXVua25vd24nO1xuaW1wb3J0ICcuL3Bpbi1mbG9hdCc7XG5pbXBvcnQgJy4vcGluLWludCc7XG5pbXBvcnQgJy4vcGluLXN0cmluZyc7XG5pbXBvcnQgJy4vcGluLWJvb2xlYW4nO1xuaW1wb3J0ICcuL3Bpbi12ZWMyJztcbmltcG9ydCAnLi9waW4tdmVjMyc7XG5pbXBvcnQgJy4vcGluLXZlYzQnO1xuaW1wb3J0ICcuL3Bpbi1tYXQzJztcbmltcG9ydCAnLi9waW4tbWF0NCc7XG5pbXBvcnQgJy4vcGluLWNvbG9yJztcbmltcG9ydCAnLi9waW4tdGV4dHVyZTJEJztcbmltcG9ydCAnLi9waW4tdGV4dHVyZUN1YmUnO1xuaW1wb3J0ICcuL3Bpbi1lbnVtJztcbmltcG9ydCAnLi9waW4tZHluYW1pYy1lbnVtJztcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-boolean.js b/extensions/shader-graph/dist/block-forge/internal/pin-boolean.js new file mode 100644 index 0000000..737bc0d --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-boolean.js @@ -0,0 +1,59 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class BooleanPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new BooleanPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Boolean + * 布尔类型的引脚 + */ +class BooleanPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#227f9b'; + this.line = 'normal'; + this.details = { + value: false, + }; + this.contentSlot = ``; + this.childrenSlot = []; + } + onInit() { + const $checkbox = this.refs.checkbox; + $checkbox.addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: !!$checkbox.value, + }; + } + const action = new BooleanPinAction(this, { + source: this.details.value, + target: !!$checkbox.value, + }); + this.exec(action); + }); + } + onUpdate() { + const $checkbox = this.refs.checkbox; + // @ts-ignore UICheckbox 类型没有暴露出来 + $checkbox.value = this.details.value; + } +} +BooleanPin.type = 'boolean'; +(0, pin_1.declarePin)(BooleanPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWJvb2xlYW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLWJvb2xlYW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLGdDQUFvRDtBQU1wRCxNQUFNLGdCQUFpQixTQUFRLGVBRzdCO0lBRUUsSUFBSSxDQUFDLE1BRUo7UUFDRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixJQUFJLElBQUksRUFBRTtZQUNOLGFBQWE7WUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztZQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVcsU0FBUSxTQUFrQjtJQUEzQzs7UUFHSSxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsWUFBTyxHQUFHO1lBQ04sS0FBSyxFQUFFLEtBQUs7U0FDZixDQUFDO1FBRUYsZ0JBQVcsR0FBVyw0Q0FBNEMsQ0FBQztRQUNuRSxpQkFBWSxHQUFHLEVBQUUsQ0FBQztJQXVCdEIsQ0FBQztJQXJCRyxNQUFNO1FBQ0YsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUE0QixDQUFDO1FBQ3pELFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO2dCQUNmLElBQUksQ0FBQyxPQUFPLEdBQUc7b0JBQ1gsS0FBSyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSztpQkFDM0IsQ0FBQzthQUNMO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQ3RDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7Z0JBQzFCLE1BQU0sRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEtBQUs7YUFDNUIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUE0QixDQUFDO1FBQ3pELGlDQUFpQztRQUNqQyxTQUFTLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQ3pDLENBQUM7O0FBL0JNLGVBQUksR0FBRyxTQUFTLENBQUM7QUFpQzVCLElBQUEsZ0JBQVUsRUFBQyxVQUFVLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgeyBQaW4sIGRlY2xhcmVQaW4sIFBpbkFjdGlvbiB9IGZyb20gJy4uL3Bpbic7XG5cbnR5cGUgQm9vbGVhbkRldGFpbCA9IHtcbiAgICB2YWx1ZTogYm9vbGVhbjtcbn07XG5cbmNsYXNzIEJvb2xlYW5QaW5BY3Rpb24gZXh0ZW5kcyBQaW5BY3Rpb248e1xuICAgIHNvdXJjZTogYm9vbGVhbixcbiAgICB0YXJnZXQ6IGJvb2xlYW4sXG59PiB7XG5cbiAgICBleGVjKHBhcmFtczoge1xuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50XG4gICAgfSkge1xuICAgICAgICBjb25zdCAkcGluID0gcGFyYW1zLmZvcmdlLmdldFBpbkVsZW1lbnQodGhpcy5kZXRhaWwuYmxvY2tOYW1lLCAnaW5wdXQnLCB0aGlzLmRldGFpbC5pbmRleCk7XG4gICAgICAgIGlmICgkcGluKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBwaW4gPSAkcGluLl9fcGluIGFzIEZsb2F0UGluO1xuICAgICAgICAgICAgcGluLmRldGFpbHMudmFsdWUgPSB0aGlzLmRldGFpbC50YXJnZXQ7XG4gICAgICAgICAgICBwaW4ub25VcGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldmVydEFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBCb29sZWFuUGluQWN0aW9uKHRoaXMucGluLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlsLnRhcmdldCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5kZXRhaWwuc291cmNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogQm9vbGVhblxuICog5biD5bCU57G75Z6L55qE5byV6ISaXG4gKi9cbmNsYXNzIEJvb2xlYW5QaW4gZXh0ZW5kcyBQaW48Qm9vbGVhbkRldGFpbD4ge1xuICAgIHN0YXRpYyB0eXBlID0gJ2Jvb2xlYW4nO1xuXG4gICAgY29sb3IgPSAnIzIyN2Y5Yic7XG4gICAgbGluZSA9ICdub3JtYWwnO1xuICAgIGRldGFpbHMgPSB7XG4gICAgICAgIHZhbHVlOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2A8dWktY2hlY2tib3ggcmVmPVwiY2hlY2tib3hcIj48L3VpLWNoZWNrYm94PmA7XG4gICAgY2hpbGRyZW5TbG90ID0gW107XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIGNvbnN0ICRjaGVja2JveCA9IHRoaXMucmVmcy5jaGVja2JveCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAkY2hlY2tib3guYWRkRXZlbnRMaXN0ZW5lcignY29uZmlybScsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogISEkY2hlY2tib3gudmFsdWUsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBCb29sZWFuUGluQWN0aW9uKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlscy52YWx1ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6ICEhJGNoZWNrYm94LnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmV4ZWMoYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25VcGRhdGUoKSB7XG4gICAgICAgIGNvbnN0ICRjaGVja2JveCA9IHRoaXMucmVmcy5jaGVja2JveCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAvLyBAdHMtaWdub3JlIFVJQ2hlY2tib3gg57G75Z6L5rKh5pyJ5pq06Zyy5Ye65p2lXG4gICAgICAgICRjaGVja2JveC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZTtcbiAgICB9XG59XG5kZWNsYXJlUGluKEJvb2xlYW5QaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-color.js b/extensions/shader-graph/dist/block-forge/internal/pin-color.js new file mode 100644 index 0000000..b39dd03 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-color.js @@ -0,0 +1,65 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class ColorPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new ColorPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Float + * 浮点类型的引脚 + */ +class ColorPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#8471cf'; + this.line = 'normal'; + this.details = { + value: { + x: 0, y: 0, z: 0, w: 1, + }, + }; + this.contentSlot = ``; + this.childrenSlot = []; + } + onInit() { + const $color = this.refs.color; + $color.addEventListener('confirm', () => { + const x = parseFloat($color.value[0]) / 255; + const y = parseFloat($color.value[1]) / 255; + const z = parseFloat($color.value[2]) / 255; + const w = parseFloat($color.value[3]) / 255; + if (!this.details) { + this.details = { + value: { x, y, z, w }, + }; + } + const action = new ColorPinAction(this, { + source: this.details.value, + target: { x, y, z, w }, + }); + this.exec(action); + }); + } + onUpdate() { + const $color = this.refs.color; + const color = this.details.value; + $color.value = JSON.stringify([color.x * 255, color.y * 255, color.z * 255, color.w * 255]); + } +} +ColorPin.type = 'color'; +(0, pin_1.declarePin)(ColorPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWNvbG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jsb2NrLWZvcmdlL2ludGVybmFsL3Bpbi1jb2xvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsZ0NBQW9EO0FBV3BELE1BQU0sY0FBZSxTQUFRLGVBRzNCO0lBRUUsSUFBSSxDQUFDLE1BRUo7UUFDRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixJQUFJLElBQUksRUFBRTtZQUNOLGFBQWE7WUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztZQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxRQUFTLFNBQVEsU0FBZ0I7SUFBdkM7O1FBR0ksVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFlBQU8sR0FBRztZQUNOLEtBQUssRUFBRTtnQkFDSCxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUN6QjtTQUNKLENBQUM7UUFFRixnQkFBVyxHQUFXLG1DQUFtQyxDQUFDO1FBQzFELGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBNEJ0QixDQUFDO0lBMUJHLE1BQU07UUFDRixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQXlCLENBQUM7UUFDbkQsTUFBTSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDcEMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRztvQkFDWCxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUU7aUJBQ3hCLENBQUM7YUFDTDtZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksY0FBYyxDQUFDLElBQUksRUFBRTtnQkFDcEMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFDMUIsTUFBTSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO2FBQ3pCLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBeUIsQ0FBQztRQUNuRCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUNqQyxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEcsQ0FBQzs7QUF0Q00sYUFBSSxHQUFHLE9BQU8sQ0FBQztBQXdDMUIsSUFBQSxnQkFBVSxFQUFDLFFBQVEsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4uL2ZvcmdlJztcbmltcG9ydCB7IFBpbiwgZGVjbGFyZVBpbiwgUGluQWN0aW9uIH0gZnJvbSAnLi4vcGluJztcblxudHlwZSBDb2xvckRldGFpbCA9IHtcbiAgICB2YWx1ZToge1xuICAgICAgICB4OiBudW1iZXI7XG4gICAgICAgIHk6IG51bWJlcjtcbiAgICAgICAgejogbnVtYmVyO1xuICAgICAgICB3OiBudW1iZXI7XG4gICAgfTtcbn07XG5cbmNsYXNzIENvbG9yUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IENvbG9yRGV0YWlsWyd2YWx1ZSddLFxuICAgIHRhcmdldDogQ29sb3JEZXRhaWxbJ3ZhbHVlJ10sXG59PiB7XG5cbiAgICBleGVjKHBhcmFtczoge1xuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50XG4gICAgfSkge1xuICAgICAgICBjb25zdCAkcGluID0gcGFyYW1zLmZvcmdlLmdldFBpbkVsZW1lbnQodGhpcy5kZXRhaWwuYmxvY2tOYW1lLCAnaW5wdXQnLCB0aGlzLmRldGFpbC5pbmRleCk7XG4gICAgICAgIGlmICgkcGluKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBwaW4gPSAkcGluLl9fcGluIGFzIENvbG9yUGluO1xuICAgICAgICAgICAgcGluLmRldGFpbHMudmFsdWUgPSB0aGlzLmRldGFpbC50YXJnZXQ7XG4gICAgICAgICAgICBwaW4ub25VcGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldmVydEFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb2xvclBpbkFjdGlvbih0aGlzLnBpbiwge1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZGV0YWlsLnNvdXJjZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEZsb2F0XG4gKiDmta7ngrnnsbvlnovnmoTlvJXohJpcbiAqL1xuY2xhc3MgQ29sb3JQaW4gZXh0ZW5kcyBQaW48Q29sb3JEZXRhaWw+IHtcbiAgICBzdGF0aWMgdHlwZSA9ICdjb2xvcic7XG5cbiAgICBjb2xvciA9ICcjODQ3MWNmJztcbiAgICBsaW5lID0gJ25vcm1hbCc7XG4gICAgZGV0YWlscyA9IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHg6IDAsIHk6IDAsIHo6IDAsIHc6IDEsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnRlbnRTbG90ID0gLypodG1sKi9gPHVpLWNvbG9yIHJlZj1cImNvbG9yXCI+PC91aS1jb2xvcj5gO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtdO1xuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBjb25zdCAkY29sb3IgPSB0aGlzLnJlZnMuY29sb3IgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJGNvbG9yLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbmZpcm0nLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB4ID0gcGFyc2VGbG9hdCgkY29sb3IudmFsdWVbMF0pIC8gMjU1O1xuICAgICAgICAgICAgY29uc3QgeSA9IHBhcnNlRmxvYXQoJGNvbG9yLnZhbHVlWzFdKSAvIDI1NTtcbiAgICAgICAgICAgIGNvbnN0IHogPSBwYXJzZUZsb2F0KCRjb2xvci52YWx1ZVsyXSkgLyAyNTU7XG4gICAgICAgICAgICBjb25zdCB3ID0gcGFyc2VGbG9hdCgkY29sb3IudmFsdWVbM10pIC8gMjU1O1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRldGFpbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7IHgsIHksIHosIHcgfSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgQ29sb3JQaW5BY3Rpb24odGhpcywge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWxzLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRhcmdldDogeyB4LCB5LCB6LCB3IH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgJGNvbG9yID0gdGhpcy5yZWZzLmNvbG9yIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGNvbG9yID0gdGhpcy5kZXRhaWxzLnZhbHVlO1xuICAgICAgICAkY29sb3IudmFsdWUgPSBKU09OLnN0cmluZ2lmeShbY29sb3IueCAqIDI1NSwgY29sb3IueSAqIDI1NSwgY29sb3IueiAqIDI1NSwgY29sb3IudyAqIDI1NV0pO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oQ29sb3JQaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-dynamic-enum.js b/extensions/shader-graph/dist/block-forge/internal/pin-dynamic-enum.js new file mode 100644 index 0000000..2457be4 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-dynamic-enum.js @@ -0,0 +1,112 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +const enum_1 = require("../enum"); +class DynamicEnumPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new DynamicEnumPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Enum + * 枚举类型的引脚 + */ +class DynamicEnumPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#451359'; + this.line = 'normal'; + this.details = { + type: '', + value: undefined, + }; + this.style = ` + .pin-dynamic-enum { + flex: 1; + } + .jump { + margin-left: 2px; + } + .jump:hover { + color: white; + } + `; + this.contentSlot = ``; + // contentSlot = /*html*/``; + this.childrenSlot = []; + this.index = -1; + this.enumList = []; + this.optionList = []; + } + onInit() { + if (this.desc.details?.type) { + (0, enum_1.removeEnumObserver)(this.desc.details?.type); + (0, enum_1.addEnumObserver)(this.desc.details?.type, () => { + this.sync(); + }); + } + const $enum = this.refs.enum; + $enum.addEventListener('confirm', () => { + this.index = parseInt($enum.value); + const item = this.enumList[this.index]; + const action = new DynamicEnumPinAction(this, { + source: this.details.value, + target: item.name, + }); + this.exec(action); + }); + } + sync() { + this.enumList = (0, enum_1.getDynamicEnumByType)(this.details.type); + const $enum = this.refs.enum; + this.optionList.forEach(option => $enum.removeChild(option)); + this.optionList.length = 0; + for (let i = 0; i < this.enumList.length; i++) { + const item = this.enumList[i]; + const option = document.createElement('option'); + option.innerText = item.name; + option.setAttribute('value', item.value + ''); + $enum.appendChild(option); + this.optionList.push(option); + if (this.details.value && item.name === this.details.value) { + this.index = i; + $enum.value = this.index + ''; + } + if (this.index === i && this.details.value !== item.value) { + this.details.value = item.name; + } + } + if (this.index === -1 && !this.details.value && this.desc) { + for (let i = 0; i < this.enumList.length; i++) { + const item = this.enumList[i]; + if (item.name === this.desc.details?.defaultValue) { + this.index = i; + this.details.value = item.name; + break; + } + } + const $enum = this.refs.enum; + $enum.value = this.index + ''; + } + } + onUpdate() { + const $enum = this.refs.enum; + this.details.type = this.desc.details?.type; + this.sync(); + } +} +DynamicEnumPin.type = 'dynamicEnum'; +(0, pin_1.declarePin)(DynamicEnumPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWR5bmFtaWMtZW51bS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9jay1mb3JnZS9pbnRlcm5hbC9waW4tZHluYW1pYy1lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFHYixnQ0FBb0Q7QUFDcEQsa0NBQThGO0FBUTlGLE1BQU0sb0JBQXFCLFNBQVEsZUFHakM7SUFFRSxJQUFJLENBQUMsTUFFSjtRQUNHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxFQUFFO1lBQ04sYUFBYTtZQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUF1QixDQUFDO1lBQ3pDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVEOzs7R0FHRztBQUNILE1BQU0sY0FBZSxTQUFRLFNBQXlCO0lBQXREOztRQUdJLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixZQUFPLEdBQXlCO1lBQzVCLElBQUksRUFBRSxFQUFFO1lBQ1IsS0FBSyxFQUFFLFNBQVM7U0FDbkIsQ0FBQztRQUVGLFVBQUssR0FBRzs7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QUFDLGNBQWMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4uL2ZvcmdlJztcbmltcG9ydCB7IFBpbiwgZGVjbGFyZVBpbiwgUGluQWN0aW9uIH0gZnJvbSAnLi4vcGluJztcbmltcG9ydCB7IGdldER5bmFtaWNFbnVtQnlUeXBlLCBhZGRFbnVtT2JzZXJ2ZXIsIEVudW1UeXBlLCByZW1vdmVFbnVtT2JzZXJ2ZXIgfSBmcm9tICcuLi9lbnVtJztcbmltcG9ydCB7IElQaW5EZXNjcmlwdGlvbiwgUGluRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5cbnR5cGUgRHluYW1pY0VudW1QaW5EZXRhaWwgPSB7XG4gICAgdmFsdWU6IGFueTtcbiAgICB0eXBlOiBzdHJpbmc7XG59XG5cbmNsYXNzIER5bmFtaWNFbnVtUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICB0YXJnZXQ6IHN0cmluZyxcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgRHluYW1pY0VudW1QaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IER5bmFtaWNFbnVtUGluQWN0aW9uKHRoaXMucGluLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlsLnRhcmdldCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5kZXRhaWwuc291cmNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogRW51bVxuICog5p6a5Li+57G75Z6L55qE5byV6ISaXG4gKi9cbmNsYXNzIER5bmFtaWNFbnVtUGluIGV4dGVuZHMgUGluPER5bmFtaWNFbnVtUGluRGV0YWlsPiB7XG4gICAgc3RhdGljIHR5cGUgPSAnZHluYW1pY0VudW0nO1xuXG4gICAgY29sb3IgPSAnIzQ1MTM1OSc7XG4gICAgbGluZSA9ICdub3JtYWwnO1xuICAgIGRldGFpbHM6IER5bmFtaWNFbnVtUGluRGV0YWlsID0ge1xuICAgICAgICB0eXBlOiAnJyxcbiAgICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICB9O1xuXG4gICAgc3R5bGUgPSBgXG4gICAgICAgIC5waW4tZHluYW1pYy1lbnVtIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cbiAgICAgICAgLmp1bXAge1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDJweDtcbiAgICAgICAgfVxuICAgICAgICAuanVtcDpob3ZlciB7XG4gICAgICAgICAgICBjb2xvcjogd2hpdGU7XG4gICAgICAgIH1cbiAgICBgO1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2A8dWktc2VsZWN0IGNsYXNzPVwicGluLWR5bmFtaWMtZW51bVwiIHJlZj1cImVudW1cIj48L3VpLXNlbGVjdD5gO1xuICAgIC8vIGNvbnRlbnRTbG90ID0gLypodG1sKi9gPHVpLXNlbGVjdCBjbGFzcz1cInBpbi1keW5hbWljLWVudW1cIiByZWY9XCJlbnVtXCI+PC91aS1zZWxlY3Q+PHVpLWljb24gY2xhc3M9XCJqdW1wXCIgcmVmPVwianVtcFwiIHZhbHVlPVwibGlua1wiPjwvdWktaWNvbj5gO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtdO1xuXG4gICAgcHJpdmF0ZSBpbmRleCA9IC0xO1xuICAgIHByaXZhdGUgZW51bUxpc3Q6IEVudW1UeXBlW10gPSBbXTtcbiAgICBwcml2YXRlIG9wdGlvbkxpc3Q6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICAgIG9uSW5pdCgpIHtcbiAgICAgICAgaWYgKHRoaXMuZGVzYy5kZXRhaWxzPy50eXBlKSB7XG4gICAgICAgICAgICByZW1vdmVFbnVtT2JzZXJ2ZXIodGhpcy5kZXNjLmRldGFpbHM/LnR5cGUpO1xuICAgICAgICAgICAgYWRkRW51bU9ic2VydmVyKHRoaXMuZGVzYy5kZXRhaWxzPy50eXBlLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zeW5jKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCAkZW51bSA9IHRoaXMucmVmcy5lbnVtIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICRlbnVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbmZpcm0nLCAoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmluZGV4ID0gcGFyc2VJbnQoJGVudW0udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuZW51bUxpc3RbdGhpcy5pbmRleF07XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBEeW5hbWljRW51bVBpbkFjdGlvbih0aGlzLCB7XG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbHMudmFsdWUsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiBpdGVtLm5hbWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN5bmMoKSB7XG4gICAgICAgIHRoaXMuZW51bUxpc3QgPSBnZXREeW5hbWljRW51bUJ5VHlwZSh0aGlzLmRldGFpbHMudHlwZSk7XG4gICAgICAgIGNvbnN0ICRlbnVtID0gdGhpcy5yZWZzLmVudW0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgdGhpcy5vcHRpb25MaXN0LmZvckVhY2gob3B0aW9uID0+ICRlbnVtLnJlbW92ZUNoaWxkKG9wdGlvbikpO1xuICAgICAgICB0aGlzLm9wdGlvbkxpc3QubGVuZ3RoID0gMDtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZW51bUxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmVudW1MaXN0W2ldO1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgICAgICBvcHRpb24uaW5uZXJUZXh0ID0gaXRlbS5uYW1lO1xuICAgICAgICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBpdGVtLnZhbHVlICsgJycpO1xuICAgICAgICAgICAgJGVudW0uYXBwZW5kQ2hpbGQob3B0aW9uKTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uTGlzdC5wdXNoKG9wdGlvbik7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmRldGFpbHMudmFsdWUgJiYgaXRlbS5uYW1lID09PSB0aGlzLmRldGFpbHMudmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAkZW51bS52YWx1ZSA9IHRoaXMuaW5kZXggKyAnJztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaW5kZXggPT09IGkgJiYgdGhpcy5kZXRhaWxzLnZhbHVlICE9PSBpdGVtLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzLnZhbHVlID0gaXRlbS5uYW1lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmluZGV4ID09PSAtMSAmJiAhdGhpcy5kZXRhaWxzLnZhbHVlICYmIHRoaXMuZGVzYykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVudW1MaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXRlbTogRW51bVR5cGUgPSB0aGlzLmVudW1MaXN0W2ldO1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLm5hbWUgPT09IHRoaXMuZGVzYy5kZXRhaWxzPy5kZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlscy52YWx1ZSA9IGl0ZW0ubmFtZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgJGVudW0gPSB0aGlzLnJlZnMuZW51bSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgJGVudW0udmFsdWUgPSB0aGlzLmluZGV4ICsgJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgJGVudW0gPSB0aGlzLnJlZnMuZW51bSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICB0aGlzLmRldGFpbHMudHlwZSA9IHRoaXMuZGVzYy5kZXRhaWxzPy50eXBlO1xuXG4gICAgICAgIHRoaXMuc3luYygpO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oRHluYW1pY0VudW1QaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-enum.js b/extensions/shader-graph/dist/block-forge/internal/pin-enum.js new file mode 100644 index 0000000..50f9018 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-enum.js @@ -0,0 +1,71 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +const enum_1 = require("../enum"); +class EnumPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new EnumPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Enum + * 枚举类型的引脚 + */ +class EnumPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#451359'; + this.line = 'normal'; + this.details = { + value: 0, + }; + this.style = ` + .pin-enum { + flex: 1; + } + `; + this.contentSlot = ``; + this.childrenSlot = []; + } + onInit() { + const $enum = this.refs.enum; + $enum.addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: 0, + }; + } + const action = new EnumPinAction(this, { + source: this.details.value, + target: parseInt($enum.value), + }); + this.exec(action); + }); + } + onUpdate() { + const $enum = this.refs.enum; + $enum.innerHTML = ''; + (0, enum_1.getEnumByType)(this.desc.details?.type).forEach((data) => { + const option = document.createElement('option'); + option.innerText = data.name; + option.setAttribute('value', data.value + ''); + $enum.appendChild(option); + }); + $enum.value = this.details.value + ''; + } +} +EnumPin.type = 'enum'; +(0, pin_1.declarePin)(EnumPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLWVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUliLGdDQUFvRDtBQUNwRCxrQ0FBd0M7QUFPeEMsTUFBTSxhQUFjLFNBQVEsZUFHMUI7SUFFRSxJQUFJLENBQUMsTUFFSjtRQUNHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxFQUFFO1lBQ04sYUFBYTtZQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFpQixDQUFDO1lBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQy9CLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQVEsU0FBUSxTQUFrQjtJQUF4Qzs7UUFHSSxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsWUFBTyxHQUFHO1lBQ04sS0FBSyxFQUFFLENBQUM7U0FDWCxDQUFDO1FBRUYsVUFBSyxHQUFHOzs7O0tBSVAsQ0FBQztRQUVGLGdCQUFXLEdBQVcscURBQXFELENBQUM7UUFDNUUsaUJBQVksR0FBRyxFQUFFLENBQUM7SUErQnRCLENBQUM7SUE3QkcsTUFBTTtRQUNGLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBd0IsQ0FBQztRQUNqRCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHO29CQUNYLEtBQUssRUFBRSxDQUFDO2lCQUNYLENBQUM7YUFDTDtZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRTtnQkFDbkMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFDMUIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ2hDLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBd0IsQ0FBQztRQUVqRCxLQUFLLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBcUMsRUFBRSxFQUFFO1lBQ3JGLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDOUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QixDQUFDLENBQUMsQ0FBQztRQUNILEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQzFDLENBQUM7O0FBN0NNLFlBQUksR0FBRyxNQUFNLENBQUM7QUErQ3pCLElBQUEsZ0JBQVUsRUFBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgdHlwZSB7IEJhc2VFbGVtZW50IH0gZnJvbSAnQGl0aGFyYm9ycy91aS1jb3JlJztcbmltcG9ydCB7IFBpbiwgZGVjbGFyZVBpbiwgUGluQWN0aW9uIH0gZnJvbSAnLi4vcGluJztcbmltcG9ydCB7IGdldEVudW1CeVR5cGUgfSBmcm9tICcuLi9lbnVtJztcbmltcG9ydCB7IElQaW5EZXNjcmlwdGlvbiwgUGluRGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5cbnR5cGUgRW51bVBpbkRldGFpbCA9IHtcbiAgICB2YWx1ZTogbnVtYmVyO1xufVxuXG5jbGFzcyBFbnVtUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IG51bWJlcixcbiAgICB0YXJnZXQ6IG51bWJlcixcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgRmxvYXRQaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IEVudW1QaW5BY3Rpb24odGhpcy5waW4sIHtcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWwudGFyZ2V0LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmRldGFpbC5zb3VyY2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBFbnVtXG4gKiDmnprkuL7nsbvlnovnmoTlvJXohJpcbiAqL1xuY2xhc3MgRW51bVBpbiBleHRlbmRzIFBpbjxFbnVtUGluRGV0YWlsPiB7XG4gICAgc3RhdGljIHR5cGUgPSAnZW51bSc7XG5cbiAgICBjb2xvciA9ICcjNDUxMzU5JztcbiAgICBsaW5lID0gJ25vcm1hbCc7XG4gICAgZGV0YWlscyA9IHtcbiAgICAgICAgdmFsdWU6IDAsXG4gICAgfTtcblxuICAgIHN0eWxlID0gYFxuICAgICAgICAucGluLWVudW0ge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIGA7XG5cbiAgICBjb250ZW50U2xvdCA9IC8qaHRtbCovYDx1aS1zZWxlY3QgY2xhc3M9XCJwaW4tZW51bVwiIHJlZj1cImVudW1cIj48L3VpLXNlbGVjdD5gO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtdO1xuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBjb25zdCAkZW51bSA9IHRoaXMucmVmcy5lbnVtIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICRlbnVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbmZpcm0nLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGV0YWlscykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlscyA9IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IDAsXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEVudW1QaW5BY3Rpb24odGhpcywge1xuICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWxzLnZhbHVlLFxuICAgICAgICAgICAgICAgIHRhcmdldDogcGFyc2VJbnQoJGVudW0udmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmV4ZWMoYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25VcGRhdGUoKSB7XG4gICAgICAgIGNvbnN0ICRlbnVtID0gdGhpcy5yZWZzLmVudW0gYXMgSFRNTElucHV0RWxlbWVudDtcblxuICAgICAgICAkZW51bS5pbm5lckhUTUwgPSAnJztcbiAgICAgICAgZ2V0RW51bUJ5VHlwZSh0aGlzLmRlc2MuZGV0YWlscz8udHlwZSkuZm9yRWFjaCgoZGF0YTogeyBuYW1lOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnb3B0aW9uJyk7XG4gICAgICAgICAgICBvcHRpb24uaW5uZXJUZXh0ID0gZGF0YS5uYW1lO1xuICAgICAgICAgICAgb3B0aW9uLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBkYXRhLnZhbHVlICsgJycpO1xuICAgICAgICAgICAgJGVudW0uYXBwZW5kQ2hpbGQob3B0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgICRlbnVtLnZhbHVlID0gdGhpcy5kZXRhaWxzLnZhbHVlICsgJyc7XG4gICAgfVxufVxuZGVjbGFyZVBpbihFbnVtUGluKTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-float.js b/extensions/shader-graph/dist/block-forge/internal/pin-float.js new file mode 100644 index 0000000..ec4454c --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-float.js @@ -0,0 +1,58 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class FloatPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new FloatPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Float + * 浮点类型的引脚 + */ +class FloatPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#c171cf'; + this.line = 'normal'; + this.details = { + value: 0, + }; + this.contentSlot = ``; + this.childrenSlot = []; + } + onInit() { + const $num = this.refs.num; + $num.addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: parseFloat($num.value), + }; + } + const action = new FloatPinAction(this, { + source: this.details.value, + target: parseFloat($num.value), + }); + this.exec(action); + }); + } + onUpdate() { + const $num = this.refs.num; + $num.value = this.details.value + ''; + } +} +FloatPin.type = 'float'; +(0, pin_1.declarePin)(FloatPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWZsb2F0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jsb2NrLWZvcmdlL2ludGVybmFsL3Bpbi1mbG9hdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsZ0NBQW9EO0FBTXBELE1BQU0sY0FBZSxTQUFRLGVBRzNCO0lBRUUsSUFBSSxDQUFDLE1BRUo7UUFDRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixJQUFJLElBQUksRUFBRTtZQUNOLGFBQWE7WUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBaUIsQ0FBQztZQUNuQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN2QyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNoQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxRQUFTLFNBQVEsU0FBZ0I7SUFBdkM7O1FBR0ksVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFlBQU8sR0FBRztZQUNOLEtBQUssRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQUVGLGdCQUFXLEdBQVcseUNBQXlDLENBQUM7UUFDaEUsaUJBQVksR0FBRyxFQUFFLENBQUM7SUFzQnRCLENBQUM7SUFwQkcsTUFBTTtRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBdUIsQ0FBQztRQUMvQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHO29CQUNYLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztpQkFDaEMsQ0FBQzthQUNMO1lBQ0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQUMsSUFBSSxFQUFFO2dCQUNwQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUMxQixNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDakMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUF1QixDQUFDO1FBQy9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ3pDLENBQUM7O0FBOUJNLGFBQUksR0FBRyxPQUFPLENBQUM7QUFnQzFCLElBQUEsZ0JBQVUsRUFBQyxRQUFRLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgeyBQaW4sIGRlY2xhcmVQaW4sIFBpbkFjdGlvbiB9IGZyb20gJy4uL3Bpbic7XG5cbnR5cGUgRmxvYXREZXRhaWwgPSB7XG4gICAgdmFsdWU6IG51bWJlcjtcbn07XG5cbmNsYXNzIEZsb2F0UGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IG51bWJlcixcbiAgICB0YXJnZXQ6IG51bWJlcixcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgRmxvYXRQaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IEZsb2F0UGluQWN0aW9uKHRoaXMucGluLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlsLnRhcmdldCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5kZXRhaWwuc291cmNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogRmxvYXRcbiAqIOa1rueCueexu+Wei+eahOW8leiEmlxuICovXG5jbGFzcyBGbG9hdFBpbiBleHRlbmRzIFBpbjxGbG9hdERldGFpbD4ge1xuICAgIHN0YXRpYyB0eXBlID0gJ2Zsb2F0JztcblxuICAgIGNvbG9yID0gJyNjMTcxY2YnO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzID0ge1xuICAgICAgICB2YWx1ZTogMCxcbiAgICB9O1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cIm51bVwiPjwvdWktbnVtLWlucHV0PmA7XG4gICAgY2hpbGRyZW5TbG90ID0gW107XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIGNvbnN0ICRudW0gPSB0aGlzLnJlZnMubnVtIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICRudW0uYWRkRXZlbnRMaXN0ZW5lcignY29uZmlybScsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdCgkbnVtLnZhbHVlKSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IEZsb2F0UGluQWN0aW9uKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlscy52YWx1ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHBhcnNlRmxvYXQoJG51bS52YWx1ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgJG51bSA9IHRoaXMucmVmcy5udW0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJG51bS52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZSArICcnO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oRmxvYXRQaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-int.js b/extensions/shader-graph/dist/block-forge/internal/pin-int.js new file mode 100644 index 0000000..d93008c --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-int.js @@ -0,0 +1,58 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class IntPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new IntPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Float + * 浮点类型的引脚 + */ +class IntPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#cf71a0'; + this.line = 'normal'; + this.details = { + value: 0, + }; + this.contentSlot = ``; + this.childrenSlot = []; + } + onInit() { + const $num = this.refs.num; + $num.addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: 0, + }; + } + const action = new IntPinAction(this, { + source: this.details.value, + target: parseFloat($num.value), + }); + this.exec(action); + }); + } + onUpdate() { + const $num = this.refs.num; + $num.value = this.details.value + ''; + } +} +IntPin.type = 'int'; +(0, pin_1.declarePin)(IntPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLWludC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9jay1mb3JnZS9pbnRlcm5hbC9waW4taW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFJYixnQ0FBb0Q7QUFNcEQsTUFBTSxZQUFhLFNBQVEsZUFHekI7SUFFRSxJQUFJLENBQUMsTUFFSjtRQUNHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxFQUFFO1lBQ04sYUFBYTtZQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFpQixDQUFDO1lBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQzlCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE1BQU8sU0FBUSxTQUFjO0lBQW5DOztRQUdJLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixZQUFPLEdBQUc7WUFDTixLQUFLLEVBQUUsQ0FBQztTQUNYLENBQUM7UUFFRixnQkFBVyxHQUFXLGtEQUFrRCxDQUFDO1FBQ3pFLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBdUJ0QixDQUFDO0lBckJHLE1BQU07UUFDRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQXVCLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRztvQkFDWCxLQUFLLEVBQUUsQ0FBQztpQkFDWCxDQUFDO2FBQ0w7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLFlBQVksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUs7Z0JBQzFCLE1BQU0sRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUNqQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQXVCLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDekMsQ0FBQzs7QUEvQk0sV0FBSSxHQUFHLEtBQUssQ0FBQztBQWlDeEIsSUFBQSxnQkFBVSxFQUFDLE1BQU0sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4uL2ZvcmdlJztcbmltcG9ydCB0eXBlIHsgQmFzZUVsZW1lbnQgfSBmcm9tICdAaXRoYXJib3JzL3VpLWNvcmUnO1xuaW1wb3J0IHsgUGluLCBkZWNsYXJlUGluLCBQaW5BY3Rpb24gfSBmcm9tICcuLi9waW4nO1xuXG50eXBlIEludERldGFpbCA9IHtcbiAgICB2YWx1ZTogbnVtYmVyO1xufTtcblxuY2xhc3MgSW50UGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IEludERldGFpbFsndmFsdWUnXSxcbiAgICB0YXJnZXQ6IEludERldGFpbFsndmFsdWUnXSxcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgRmxvYXRQaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IEludFBpbkFjdGlvbih0aGlzLnBpbiwge1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZGV0YWlsLnNvdXJjZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIEZsb2F0XG4gKiDmta7ngrnnsbvlnovnmoTlvJXohJpcbiAqL1xuY2xhc3MgSW50UGluIGV4dGVuZHMgUGluPEludERldGFpbD4ge1xuICAgIHN0YXRpYyB0eXBlID0gJ2ludCc7XG5cbiAgICBjb2xvciA9ICcjY2Y3MWEwJztcbiAgICBsaW5lID0gJ25vcm1hbCc7XG4gICAgZGV0YWlscyA9IHtcbiAgICAgICAgdmFsdWU6IDAsXG4gICAgfTtcblxuICAgIGNvbnRlbnRTbG90ID0gLypodG1sKi9gPHVpLW51bS1pbnB1dCBzdGVwPVwiMVwiIHJlZj1cIm51bVwiPjwvdWktbnVtLWlucHV0PmA7XG4gICAgY2hpbGRyZW5TbG90ID0gW107XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIGNvbnN0ICRudW0gPSB0aGlzLnJlZnMubnVtIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICRudW0uYWRkRXZlbnRMaXN0ZW5lcignY29uZmlybScsICgpID0+IHtcbiAgICAgICAgICAgIGlmICghdGhpcy5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogMCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgSW50UGluQWN0aW9uKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlscy52YWx1ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHBhcnNlRmxvYXQoJG51bS52YWx1ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgJG51bSA9IHRoaXMucmVmcy5udW0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJG51bS52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZSArICcnO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oSW50UGluKTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-mat3.js b/extensions/shader-graph/dist/block-forge/internal/pin-mat3.js new file mode 100644 index 0000000..377252f --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-mat3.js @@ -0,0 +1,83 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +const mat3KeyList = [ + 'm00', 'm01', 'm02', + 'm03', 'm04', 'm05', + 'm06', 'm07', 'm08', +]; +class Mat3PinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value[this.detail.key] = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new Mat3PinAction(this.pin, { + key: this.detail.key, + source: this.detail.target, + target: this.detail.source, + }); + } +} +class Mat3Pin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#c56c37'; + this.line = 'normal'; + this.details = { + value: { + m00: 0, m01: 0, m02: 0, + m03: 0, m04: 0, m05: 0, + m06: 0, m07: 0, m08: 0, + }, + }; + this.contentSlot = ``; + this.childrenSlot = [ + /*html*/ ``, + /*html*/ ``, + /*html*/ ``, + ]; + this.style = ` +.mat3 .slot-children { display: flex; } +.mat3 .slot-children > * { padding: 0 2px;} +.mat3 .slot-children ui-num-input { flex: 1; width: 0; color: white; } + `; + } + onInit() { + mat3KeyList.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + this.refs[key].addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: { + m00: 0, m01: 0, m02: 0, + m03: 0, m04: 0, m05: 0, + m06: 0, m07: 0, m08: 0, + }, + }; + } + const action = new Mat3PinAction(this, { + key, + source: this.details.value[key], + target: parseFloat($el.value), + }); + this.exec(action); + }); + }); + } + onUpdate() { + mat3KeyList.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + }); + } +} +Mat3Pin.type = 'mat3'; +(0, pin_1.declarePin)(Mat3Pin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLW1hdDMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLW1hdDMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLGdDQUFvRDtBQVdwRCxNQUFNLFdBQVcsR0FBZ0I7SUFDN0IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQ25CLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztJQUNuQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7Q0FDdEIsQ0FBQztBQVVGLE1BQU0sYUFBYyxTQUFRLGVBSTFCO0lBRUUsSUFBSSxDQUFDLE1BRUo7UUFDRyxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRixJQUFJLElBQUksRUFBRTtZQUNOLGFBQWE7WUFDYixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBZ0IsQ0FBQztZQUNsQyxHQUFHLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3hELEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQy9CLEdBQUcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUc7WUFDcEIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVELE1BQU0sT0FBUSxTQUFRLFNBQWU7SUFBckM7O1FBR0ksVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFlBQU8sR0FBRztZQUNOLEtBQUssRUFBRTtnQkFDSCxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7Z0JBQ3RCLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ3pCO1NBQ0osQ0FBQztRQUVGLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUc7WUFDWCxRQUFRLENBQUEsdUhBQXVIO1lBQy9ILFFBQVEsQ0FBQSx1SEFBdUg7WUFDL0gsUUFBUSxDQUFBLHVIQUF1SDtTQUNsSSxDQUFDO1FBRUYsVUFBSyxHQUFHOzs7O0tBSVAsQ0FBQztJQWtDTixDQUFDO0lBaENHLE1BQU07UUFDRixXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCLENBQUM7WUFDL0MsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHO3dCQUNYLEtBQUssRUFBRTs0QkFDSCxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUM7NEJBQ3RCLEdBQUcsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQzs0QkFDdEIsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO3lCQUN6QjtxQkFDSixDQUFDO2lCQUNMO2dCQUVELE1BQU0sTUFBTSxHQUFHLElBQUksYUFBYSxDQUFDLElBQUksRUFBRTtvQkFDbkMsR0FBRztvQkFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUMvQixNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUN4QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQztZQUMvQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBeERNLFlBQUksR0FBRyxNQUFNLENBQUM7QUEwRHpCLElBQUEsZ0JBQVUsRUFBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgeyBQaW4sIGRlY2xhcmVQaW4sIFBpbkFjdGlvbiB9IGZyb20gJy4uL3Bpbic7XG5cbi8qKlxuICogVmVjNFxuICog5biD5bCU57G75Z6L55qE5byV6ISaXG4gKi9cbnR5cGUgTWF0M0tleUxpc3QgPSBbXG4gICAgJ20wMCcsICdtMDEnLCAnbTAyJyxcbiAgICAnbTAzJywgJ20wNCcsICdtMDUnLFxuICAgICdtMDYnLCAnbTA3JywgJ20wOCcsXG5dO1xuY29uc3QgbWF0M0tleUxpc3Q6IE1hdDNLZXlMaXN0ID0gW1xuICAgICdtMDAnLCAnbTAxJywgJ20wMicsXG4gICAgJ20wMycsICdtMDQnLCAnbTA1JyxcbiAgICAnbTA2JywgJ20wNycsICdtMDgnLFxuXTtcblxudHlwZSBNYXQzRGV0YWlsID0ge1xuICAgIHZhbHVlOiB7XG4gICAgICAgIG0wMDogbnVtYmVyLCBtMDE6IG51bWJlciwgbTAyOiBudW1iZXIsXG4gICAgICAgIG0wMzogbnVtYmVyLCBtMDQ6IG51bWJlciwgbTA1OiBudW1iZXIsXG4gICAgICAgIG0wNjogbnVtYmVyLCBtMDc6IG51bWJlciwgbTA4OiBudW1iZXIsXG4gICAgfTtcbn1cblxuY2xhc3MgTWF0M1BpbkFjdGlvbiBleHRlbmRzIFBpbkFjdGlvbjx7XG4gICAga2V5OiBrZXlvZiBNYXQzRGV0YWlsWyd2YWx1ZSddLFxuICAgIHNvdXJjZTogbnVtYmVyLFxuICAgIHRhcmdldDogbnVtYmVyLFxufT4ge1xuXG4gICAgZXhlYyhwYXJhbXM6IHtcbiAgICAgICAgZm9yZ2U6IEhUTUxHcmFwaEZvcmdlRWxlbWVudFxuICAgIH0pIHtcbiAgICAgICAgY29uc3QgJHBpbiA9IHBhcmFtcy5mb3JnZS5nZXRQaW5FbGVtZW50KHRoaXMuZGV0YWlsLmJsb2NrTmFtZSwgJ2lucHV0JywgdGhpcy5kZXRhaWwuaW5kZXgpO1xuICAgICAgICBpZiAoJHBpbikge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgcGluID0gJHBpbi5fX3BpbiBhcyBNYXQyUGluO1xuICAgICAgICAgICAgcGluLmRldGFpbHMudmFsdWVbdGhpcy5kZXRhaWwua2V5XSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IE1hdDNQaW5BY3Rpb24odGhpcy5waW4sIHtcbiAgICAgICAgICAgIGtleTogdGhpcy5kZXRhaWwua2V5LFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZGV0YWlsLnNvdXJjZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5jbGFzcyBNYXQzUGluIGV4dGVuZHMgUGluPE1hdDNEZXRhaWw+IHtcbiAgICBzdGF0aWMgdHlwZSA9ICdtYXQzJztcblxuICAgIGNvbG9yID0gJyNjNTZjMzcnO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzID0ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgbTAwOiAwLCBtMDE6IDAsIG0wMjogMCxcbiAgICAgICAgICAgIG0wMzogMCwgbTA0OiAwLCBtMDU6IDAsXG4gICAgICAgICAgICBtMDY6IDAsIG0wNzogMCwgbTA4OiAwLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBjb250ZW50U2xvdCA9IC8qaHRtbCovYGA7XG4gICAgY2hpbGRyZW5TbG90ID0gW1xuICAgICAgICAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cIm0wMFwiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTAxXCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMDJcIj48L3VpLW51bS1pbnB1dD5gLFxuICAgICAgICAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cIm0wM1wiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTA0XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMDVcIj48L3VpLW51bS1pbnB1dD5gLFxuICAgICAgICAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cIm0wNlwiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTA3XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMDhcIj48L3VpLW51bS1pbnB1dD5gLFxuICAgIF07XG5cbiAgICBzdHlsZSA9IGBcbi5tYXQzIC5zbG90LWNoaWxkcmVuIHsgZGlzcGxheTogZmxleDsgfVxuLm1hdDMgLnNsb3QtY2hpbGRyZW4gPiAqIHsgcGFkZGluZzogMCAycHg7fVxuLm1hdDMgLnNsb3QtY2hpbGRyZW4gdWktbnVtLWlucHV0IHsgZmxleDogMTsgd2lkdGg6IDA7IGNvbG9yOiB3aGl0ZTsgfVxuICAgIGA7XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIG1hdDNLZXlMaXN0LmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGVsID0gdGhpcy5yZWZzW2tleV0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgICRlbC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZVtrZXldICsgJyc7XG5cbiAgICAgICAgICAgIHRoaXMucmVmc1trZXldLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbmZpcm0nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRldGFpbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMDA6IDAsIG0wMTogMCwgbTAyOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0wMzogMCwgbTA0OiAwLCBtMDU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbTA2OiAwLCBtMDc6IDAsIG0wODogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IE1hdDNQaW5BY3Rpb24odGhpcywge1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0sXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogcGFyc2VGbG9hdCgkZWwudmFsdWUpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uVXBkYXRlKCkge1xuICAgICAgICBtYXQzS2V5TGlzdC5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICRlbCA9IHRoaXMucmVmc1trZXldIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAkZWwudmFsdWUgPSB0aGlzLmRldGFpbHMudmFsdWVba2V5XSArICcnO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5kZWNsYXJlUGluKE1hdDNQaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-mat4.js b/extensions/shader-graph/dist/block-forge/internal/pin-mat4.js new file mode 100644 index 0000000..b6d95b4 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-mat4.js @@ -0,0 +1,87 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +const mat4KeyList = [ + 'm00', 'm01', 'm02', 'm03', + 'm04', 'm05', 'm06', 'm07', + 'm08', 'm09', 'm10', 'm11', + 'm12', 'm13', 'm14', 'm15', +]; +class Mat4PinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value[this.detail.key] = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new Mat4PinAction(this.pin, { + key: this.detail.key, + source: this.detail.target, + target: this.detail.source, + }); + } +} +class Mat4Pin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#c5ae37'; + this.line = 'normal'; + this.details = { + value: { + m00: 0, m01: 0, m02: 0, m03: 0, + m04: 0, m05: 0, m06: 0, m07: 0, + m08: 0, m09: 0, m10: 0, m11: 0, + m12: 0, m13: 0, m14: 0, m15: 0, + }, + }; + this.contentSlot = ``; + this.childrenSlot = [ + /*html*/ ``, + /*html*/ ``, + /*html*/ ``, + /*html*/ ``, + ]; + this.style = ` +.mat4 .slot-children { display: flex; } +.mat4 .slot-children > * { padding: 0 2px;} +.mat4 .slot-children ui-num-input { flex: 1; width: 0; color: white; } + `; + } + onInit() { + mat4KeyList.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + this.refs[key].addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: { + m00: 0, m01: 0, m02: 0, m03: 0, + m04: 0, m05: 0, m06: 0, m07: 0, + m08: 0, m09: 0, m10: 0, m11: 0, + m12: 0, m13: 0, m14: 0, m15: 0, + }, + }; + } + const action = new Mat4PinAction(this, { + key, + source: this.details.value[key], + target: parseFloat($el.value), + }); + this.exec(action); + }); + }); + } + onUpdate() { + mat4KeyList.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + }); + } +} +Mat4Pin.type = 'mat4'; +(0, pin_1.declarePin)(Mat4Pin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLW1hdDQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLW1hdDQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLGdDQUFvRDtBQVlwRCxNQUFNLFdBQVcsR0FBZ0I7SUFDN0IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztJQUMxQixLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO0lBQzFCLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUs7SUFDMUIsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztDQUM3QixDQUFDO0FBV0YsTUFBTSxhQUFjLFNBQVEsZUFJMUI7SUFFRSxJQUFJLENBQUMsTUFFSjtRQUNHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxFQUFFO1lBQ04sYUFBYTtZQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFnQixDQUFDO1lBQ2xDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDeEQsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDL0IsR0FBRyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRztZQUNwQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQzFCLE1BQU0sRUFB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QUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBMURNLFlBQUksR0FBRyxNQUFNLENBQUM7QUE0RHpCLElBQUEsZ0JBQVUsRUFBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgeyBQaW4sIGRlY2xhcmVQaW4sIFBpbkFjdGlvbiB9IGZyb20gJy4uL3Bpbic7XG5cbi8qKlxuICogVmVjNFxuICog5biD5bCU57G75Z6L55qE5byV6ISaXG4gKi9cbnR5cGUgTWF0NEtleUxpc3QgPSBbXG4gICAgJ20wMCcsICdtMDEnLCAnbTAyJywgJ20wMycsXG4gICAgJ20wNCcsICdtMDUnLCAnbTA2JywgJ20wNycsXG4gICAgJ20wOCcsICdtMDknLCAnbTEwJywgJ20xMScsXG4gICAgJ20xMicsICdtMTMnLCAnbTE0JywgJ20xNScsXG5dO1xuY29uc3QgbWF0NEtleUxpc3Q6IE1hdDRLZXlMaXN0ID0gW1xuICAgICdtMDAnLCAnbTAxJywgJ20wMicsICdtMDMnLFxuICAgICdtMDQnLCAnbTA1JywgJ20wNicsICdtMDcnLFxuICAgICdtMDgnLCAnbTA5JywgJ20xMCcsICdtMTEnLFxuICAgICdtMTInLCAnbTEzJywgJ20xNCcsICdtMTUnLFxuXTtcblxudHlwZSBNYXQ0RGV0YWlsID0ge1xuICAgIHZhbHVlOiB7XG4gICAgICAgIG0wMDogbnVtYmVyLCBtMDE6IG51bWJlciwgbTAyOiBudW1iZXIsIG0wMzogbnVtYmVyLFxuICAgICAgICBtMDQ6IG51bWJlciwgbTA1OiBudW1iZXIsIG0wNjogbnVtYmVyLCBtMDc6IG51bWJlcixcbiAgICAgICAgbTA4OiBudW1iZXIsIG0wOTogbnVtYmVyLCBtMTA6IG51bWJlciwgbTExOiBudW1iZXIsXG4gICAgICAgIG0xMjogbnVtYmVyLCBtMTM6IG51bWJlciwgbTE0OiBudW1iZXIsIG0xNTogbnVtYmVyLFxuICAgIH07XG59XG5cbmNsYXNzIE1hdDRQaW5BY3Rpb24gZXh0ZW5kcyBQaW5BY3Rpb248e1xuICAgIGtleToga2V5b2YgTWF0NERldGFpbFsndmFsdWUnXSxcbiAgICBzb3VyY2U6IG51bWJlcixcbiAgICB0YXJnZXQ6IG51bWJlcixcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgTWF0MlBpbjtcbiAgICAgICAgICAgIHBpbi5kZXRhaWxzLnZhbHVlW3RoaXMuZGV0YWlsLmtleV0gPSB0aGlzLmRldGFpbC50YXJnZXQ7XG4gICAgICAgICAgICBwaW4ub25VcGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldmVydEFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBNYXQ0UGluQWN0aW9uKHRoaXMucGluLCB7XG4gICAgICAgICAgICBrZXk6IHRoaXMuZGV0YWlsLmtleSxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWwudGFyZ2V0LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmRldGFpbC5zb3VyY2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuY2xhc3MgTWF0NFBpbiBleHRlbmRzIFBpbjxNYXQ0RGV0YWlsPiB7XG4gICAgc3RhdGljIHR5cGUgPSAnbWF0NCc7XG5cbiAgICBjb2xvciA9ICcjYzVhZTM3JztcbiAgICBsaW5lID0gJ25vcm1hbCc7XG4gICAgZGV0YWlscyA9IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIG0wMDogMCwgbTAxOiAwLCBtMDI6IDAsIG0wMzogMCxcbiAgICAgICAgICAgIG0wNDogMCwgbTA1OiAwLCBtMDY6IDAsIG0wNzogMCxcbiAgICAgICAgICAgIG0wODogMCwgbTA5OiAwLCBtMTA6IDAsIG0xMTogMCxcbiAgICAgICAgICAgIG0xMjogMCwgbTEzOiAwLCBtMTQ6IDAsIG0xNTogMCxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2BgO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtcbiAgICAgICAgLypodG1sKi9gPHVpLW51bS1pbnB1dCByZWY9XCJtMDBcIj48L3VpLW51bS1pbnB1dD48dWktbnVtLWlucHV0IHJlZj1cIm0wMVwiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTAyXCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMDNcIj48L3VpLW51bS1pbnB1dD5gLFxuICAgICAgICAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cIm0wNFwiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTA1XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMDZcIj48L3VpLW51bS1pbnB1dD48dWktbnVtLWlucHV0IHJlZj1cIm0wN1wiPjwvdWktbnVtLWlucHV0PmAsXG4gICAgICAgIC8qaHRtbCovYDx1aS1udW0taW5wdXQgcmVmPVwibTA4XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMDlcIj48L3VpLW51bS1pbnB1dD48dWktbnVtLWlucHV0IHJlZj1cIm0xMFwiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTExXCI+PC91aS1udW0taW5wdXQ+YCxcbiAgICAgICAgLypodG1sKi9gPHVpLW51bS1pbnB1dCByZWY9XCJtMTJcIj48L3VpLW51bS1pbnB1dD48dWktbnVtLWlucHV0IHJlZj1cIm0xM1wiPjwvdWktbnVtLWlucHV0Pjx1aS1udW0taW5wdXQgcmVmPVwibTE0XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJtMTVcIj48L3VpLW51bS1pbnB1dD5gLFxuICAgIF07XG5cbiAgICBzdHlsZSA9IGBcbi5tYXQ0IC5zbG90LWNoaWxkcmVuIHsgZGlzcGxheTogZmxleDsgfVxuLm1hdDQgLnNsb3QtY2hpbGRyZW4gPiAqIHsgcGFkZGluZzogMCAycHg7fVxuLm1hdDQgLnNsb3QtY2hpbGRyZW4gdWktbnVtLWlucHV0IHsgZmxleDogMTsgd2lkdGg6IDA7IGNvbG9yOiB3aGl0ZTsgfVxuICAgIGA7XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIG1hdDRLZXlMaXN0LmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGVsID0gdGhpcy5yZWZzW2tleV0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgICRlbC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZVtrZXldICsgJyc7XG5cbiAgICAgICAgICAgIHRoaXMucmVmc1trZXldLmFkZEV2ZW50TGlzdGVuZXIoJ2NvbmZpcm0nLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRldGFpbHMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXRhaWxzID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMDA6IDAsIG0wMTogMCwgbTAyOiAwLCBtMDM6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbTA0OiAwLCBtMDU6IDAsIG0wNjogMCwgbTA3OiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0wODogMCwgbTA5OiAwLCBtMTA6IDAsIG0xMTogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtMTI6IDAsIG0xMzogMCwgbTE0OiAwLCBtMTU6IDAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBhY3Rpb24gPSBuZXcgTWF0NFBpbkFjdGlvbih0aGlzLCB7XG4gICAgICAgICAgICAgICAgICAgIGtleSxcbiAgICAgICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbHMudmFsdWVba2V5XSxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBwYXJzZUZsb2F0KCRlbC52YWx1ZSksXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5leGVjKGFjdGlvbik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25VcGRhdGUoKSB7XG4gICAgICAgIG1hdDRLZXlMaXN0LmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGVsID0gdGhpcy5yZWZzW2tleV0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgICRlbC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZVtrZXldICsgJyc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oTWF0NFBpbik7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-string.js b/extensions/shader-graph/dist/block-forge/internal/pin-string.js new file mode 100644 index 0000000..109e21f --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-string.js @@ -0,0 +1,60 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +const enum_1 = require("../enum"); +class StringPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new StringPinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * String + * 字符串类型的引脚 + */ +class StringPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#aec537'; + this.line = 'normal'; + this.details = { + value: '', + }; + this.contentSlot = ``; + this.childrenSlot = []; + this.style = ` +.string .slot-content ui-input { color: white; } + `; + } + onInit() { + const $input = this.refs.input; + $input.addEventListener('confirm', () => { + if (this.details.details?.registerEnumType) { + (0, enum_1.changeDynamicEnumValue)(this.details.details.registerEnumType, $input.value, this.details.value); + } + const action = new StringPinAction(this, { + source: this.details.value, + target: $input.value, + }); + this.exec(action); + }); + } + onUpdate() { + const $input = this.refs.input; + $input.value = this.details.value; + } +} +StringPin.type = 'string'; +(0, pin_1.declarePin)(StringPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXN0cmluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9jay1mb3JnZS9pbnRlcm5hbC9waW4tc3RyaW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFHYixnQ0FBb0Q7QUFDcEQsa0NBQWlEO0FBU2pELE1BQU0sZUFBZ0IsU0FBUSxlQUc1QjtJQUVFLElBQUksQ0FBQyxNQUVKO1FBQ0csTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxJQUFJLEVBQUU7WUFDTixhQUFhO1lBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQWlCLENBQUM7WUFDbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDdkMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDakMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVEOzs7R0FHRztBQUNILE1BQU0sU0FBVSxTQUFRLFNBQXFCO0lBQTdDOztRQUdJLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixZQUFPLEdBQXFCO1lBQ3hCLEtBQUssRUFBRSxFQUFFO1NBQ1osQ0FBQztRQUVGLGdCQUFXLEdBQVcsbUNBQW1DLENBQUM7UUFDMUQsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsVUFBSyxHQUFHOztLQUVQLENBQUM7SUFxQk4sQ0FBQztJQW5CRyxNQUFNO1FBQ0YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUF5QixDQUFDO1FBQ25ELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ3hDLElBQUEsNkJBQXNCLEVBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ25HO1lBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsSUFBSSxFQUFFO2dCQUNyQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUMxQixNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUs7YUFDdkIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUF5QixDQUFDO1FBQ25ELE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDdEMsQ0FBQzs7QUFqQ00sY0FBSSxHQUFHLFFBQVEsQ0FBQztBQW1DM0IsSUFBQSxnQkFBVSxFQUFDLFNBQVMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4uL2ZvcmdlJztcbmltcG9ydCB7IFBpbiwgZGVjbGFyZVBpbiwgUGluQWN0aW9uIH0gZnJvbSAnLi4vcGluJztcbmltcG9ydCB7IGNoYW5nZUR5bmFtaWNFbnVtVmFsdWUgfSBmcm9tICcuLi9lbnVtJztcblxudHlwZSBTdHJpbmdQaW50RGV0YWlsID0ge1xuICAgIHZhbHVlOiBzdHJpbmc7XG4gICAgZGV0YWlscz86IHtcbiAgICAgICAgcmVnaXN0ZXJFbnVtVHlwZTogc3RyaW5nO1xuICAgIH1cbn1cblxuY2xhc3MgU3RyaW5nUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IHN0cmluZyxcbiAgICB0YXJnZXQ6IHN0cmluZyxcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgRmxvYXRQaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmluZ1BpbkFjdGlvbih0aGlzLnBpbiwge1xuICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZGV0YWlsLnNvdXJjZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFN0cmluZ1xuICog5a2X56ym5Liy57G75Z6L55qE5byV6ISaXG4gKi9cbmNsYXNzIFN0cmluZ1BpbiBleHRlbmRzIFBpbjxTdHJpbmdQaW50RGV0YWlsPiB7XG4gICAgc3RhdGljIHR5cGUgPSAnc3RyaW5nJztcblxuICAgIGNvbG9yID0gJyNhZWM1MzcnO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzOiBTdHJpbmdQaW50RGV0YWlsID0ge1xuICAgICAgICB2YWx1ZTogJycsXG4gICAgfTtcblxuICAgIGNvbnRlbnRTbG90ID0gLypodG1sKi9gPHVpLWlucHV0IHJlZj1cImlucHV0XCI+PC91aS1pbnB1dD5gO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtdO1xuXG4gICAgc3R5bGUgPSBgXG4uc3RyaW5nIC5zbG90LWNvbnRlbnQgdWktaW5wdXQgeyBjb2xvcjogd2hpdGU7IH1cbiAgICBgO1xuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBjb25zdCAkaW5wdXQgPSB0aGlzLnJlZnMuaW5wdXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbmZpcm0nLCAoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kZXRhaWxzLmRldGFpbHM/LnJlZ2lzdGVyRW51bVR5cGUpIHtcbiAgICAgICAgICAgICAgICBjaGFuZ2VEeW5hbWljRW51bVZhbHVlKHRoaXMuZGV0YWlscy5kZXRhaWxzLnJlZ2lzdGVyRW51bVR5cGUsICRpbnB1dC52YWx1ZSwgdGhpcy5kZXRhaWxzLnZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IFN0cmluZ1BpbkFjdGlvbih0aGlzLCB7XG4gICAgICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbHMudmFsdWUsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiAkaW5wdXQudmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvblVwZGF0ZSgpIHtcbiAgICAgICAgY29uc3QgJGlucHV0ID0gdGhpcy5yZWZzLmlucHV0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICRpbnB1dC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZTtcbiAgICB9XG59XG5kZWNsYXJlUGluKFN0cmluZ1Bpbik7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-texture2D.js b/extensions/shader-graph/dist/block-forge/internal/pin-texture2D.js new file mode 100644 index 0000000..0973338 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-texture2D.js @@ -0,0 +1,88 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class TexturePinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new TexturePinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Float + * 浮点类型的引脚 + */ +class Texture2DPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#9691b2'; + this.line = 'normal'; + this.details = { + value: { + uuid: '', + }, + }; + this.style = ` + .image-preview { + width: 100%; + height: 100px; + background-color: black; + } + `; + this.contentSlot = ``; + this.childrenSlot = [ + ` + + + +`, + ]; + } + onInit() { + const $texture2D = this.refs.texture2D; + $texture2D.addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: { + uuid: $texture2D.value, + }, + }; + } + const action = new TexturePinAction(this, { + source: this.details.value, + target: { uuid: $texture2D.value }, + }); + this.exec(action); + }); + } + changeImagePreview(uuid) { + const $imagePreview = this.refs.imagePreview; + // @ts-ignore + $imagePreview.value = uuid; + if (uuid) { + this.refs.section.style.display = ''; + this.refs.section.setAttribute('expand', ''); + } + else { + this.refs.section.style.display = 'none'; + } + } + onUpdate() { + const $texture2D = this.refs.texture2D; + $texture2D.value = this.details.value.uuid; + this.changeImagePreview(this.details.value.uuid); + } +} +Texture2DPin.type = 'texture2D'; +(0, pin_1.declarePin)(Texture2DPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXRleHR1cmUyRC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ibG9jay1mb3JnZS9pbnRlcm5hbC9waW4tdGV4dHVyZTJELnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7QUFHYixnQ0FBb0Q7QUFRcEQsTUFBTSxnQkFBaUIsU0FBUSxlQUc3QjtJQUVFLElBQUksQ0FBQyxNQUVKO1FBQ0csTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxJQUFJLEVBQUU7WUFDTixhQUFhO1lBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQWlCLENBQUM7WUFDbkMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDdkMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDO1NBQ2xCO0lBQ0wsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUNsQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1lBQzFCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07U0FDN0IsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxZQUFhLFNBQVEsU0FBb0I7SUFBL0M7O1FBR0ksVUFBSyxHQUFHLFNBQVMsQ0FBQztRQUNsQixTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFlBQU8sR0FBRztZQUNOLEtBQUssRUFBRTtnQkFDSCxJQUFJLEVBQUUsRUFBRTthQUNYO1NBQ0osQ0FBQztRQUVGLFVBQUssR0FBRzs7Ozs7O0tBTVAsQ0FBQztRQUVGLGdCQUFXLEdBQVcsaUZBQWlGLENBQUM7UUFDeEcsaUJBQVksR0FBRztZQUNYOzs7O0NBSVA7U0FDSSxDQUFDO0lBdUNOLENBQUM7SUFyQ0csTUFBTTtRQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBNkIsQ0FBQztRQUMzRCxVQUFVLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtZQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHO29CQUNYLEtBQUssRUFBRTt3QkFDSCxJQUFJLEVBQUUsVUFBVSxDQUFDLEtBQUs7cUJBQ3pCO2lCQUNKLENBQUM7YUFDTDtZQUVELE1BQU0sTUFBTSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxFQUFFO2dCQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLO2dCQUMxQixNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxDQUFDLEtBQUssRUFBRTthQUNyQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGtCQUFrQixDQUFDLElBQVk7UUFDM0IsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0MsYUFBYTtRQUNiLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQzNCLElBQUksSUFBSSxFQUFFO1lBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDckMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNoRDthQUFNO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBNkIsQ0FBQztRQUMzRCxVQUFVLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztRQUUzQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckQsQ0FBQzs7QUEvRE0saUJBQUksR0FBRyxXQUFXLENBQUM7QUFpRTlCLElBQUEsZ0JBQVUsRUFBQyxZQUFZLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgeyBQaW4sIGRlY2xhcmVQaW4sIFBpbkFjdGlvbiB9IGZyb20gJy4uL3Bpbic7XG5cbnR5cGUgVGV4dHVyZTJERGV0YWlsID0ge1xuICAgIHZhbHVlOiB7XG4gICAgICAgIHV1aWQ6IHN0cmluZ1xuICAgIH07XG59O1xuXG5jbGFzcyBUZXh0dXJlUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IFRleHR1cmUyRERldGFpbFsndmFsdWUnXSxcbiAgICB0YXJnZXQ6IFRleHR1cmUyRERldGFpbFsndmFsdWUnXSxcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgRmxvYXRQaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IFRleHR1cmVQaW5BY3Rpb24odGhpcy5waW4sIHtcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWwudGFyZ2V0LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmRldGFpbC5zb3VyY2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBGbG9hdFxuICog5rWu54K557G75Z6L55qE5byV6ISaXG4gKi9cbmNsYXNzIFRleHR1cmUyRFBpbiBleHRlbmRzIFBpbjxUZXh0dXJlMkREZXRhaWw+IHtcbiAgICBzdGF0aWMgdHlwZSA9ICd0ZXh0dXJlMkQnO1xuXG4gICAgY29sb3IgPSAnIzk2OTFiMic7XG4gICAgbGluZSA9ICdub3JtYWwnO1xuICAgIGRldGFpbHMgPSB7XG4gICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICB1dWlkOiAnJyxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgc3R5bGUgPSBgXG4gICAgICAgIC5pbWFnZS1wcmV2aWV3IHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICAgICAgICB9XG4gICAgYDtcblxuICAgIGNvbnRlbnRTbG90ID0gLypodG1sKi9gPHVpLWFzc2V0IHN0eWxlPVwiZmxleDogMTtcIiByZWY9XCJ0ZXh0dXJlMkRcIiBkcm9wcGFibGU9XCJjYy5UZXh0dXJlMkRcIj48L3VpLWFzc2V0PmA7XG4gICAgY2hpbGRyZW5TbG90ID0gW1xuICAgICAgICBgXG48dWktc2VjdGlvbiByZWY9XCJzZWN0aW9uXCIgY2xhc3M9XCJjb25maWdcIj5cbiAgICA8dWktaW1hZ2UgY2xhc3M9XCJpbWFnZS1wcmV2aWV3XCIgcmVmPVwiaW1hZ2VQcmV2aWV3XCI+PC91aS1pbWFnZT5cbjwvdWktc2VjdGlvbj5cbmAsXG4gICAgXTtcblxuICAgIG9uSW5pdCgpIHtcbiAgICAgICAgY29uc3QgJHRleHR1cmUyRCA9IHRoaXMucmVmcy50ZXh0dXJlMkQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJHRleHR1cmUyRC5hZGRFdmVudExpc3RlbmVyKCdjb25maXJtJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRldGFpbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiAkdGV4dHVyZTJELnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBUZXh0dXJlUGluQWN0aW9uKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlscy52YWx1ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHsgdXVpZDogJHRleHR1cmUyRC52YWx1ZSB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmV4ZWMoYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2hhbmdlSW1hZ2VQcmV2aWV3KHV1aWQ6IHN0cmluZykge1xuICAgICAgICBjb25zdCAkaW1hZ2VQcmV2aWV3ID0gdGhpcy5yZWZzLmltYWdlUHJldmlldztcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAkaW1hZ2VQcmV2aWV3LnZhbHVlID0gdXVpZDtcbiAgICAgICAgaWYgKHV1aWQpIHtcbiAgICAgICAgICAgIHRoaXMucmVmcy5zZWN0aW9uLnN0eWxlLmRpc3BsYXkgPSAnJztcbiAgICAgICAgICAgIHRoaXMucmVmcy5zZWN0aW9uLnNldEF0dHJpYnV0ZSgnZXhwYW5kJywgJycpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5yZWZzLnNlY3Rpb24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uVXBkYXRlKCkge1xuICAgICAgICBjb25zdCAkdGV4dHVyZTJEID0gdGhpcy5yZWZzLnRleHR1cmUyRCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAkdGV4dHVyZTJELnZhbHVlID0gdGhpcy5kZXRhaWxzLnZhbHVlLnV1aWQ7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VJbWFnZVByZXZpZXcodGhpcy5kZXRhaWxzLnZhbHVlLnV1aWQpO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oVGV4dHVyZTJEUGluKTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-textureCube.js b/extensions/shader-graph/dist/block-forge/internal/pin-textureCube.js new file mode 100644 index 0000000..f20e8b2 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-textureCube.js @@ -0,0 +1,62 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class TexturePinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new TexturePinAction(this.pin, { + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Float + * 浮点类型的引脚 + */ +class TextureCubePin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#9691b2'; + this.line = 'normal'; + this.details = { + value: { + uuid: '', + }, + }; + this.contentSlot = ``; + this.childrenSlot = []; + } + onInit() { + const $texture2D = this.refs.textureCube; + $texture2D.addEventListener('confirm', () => { + if (!this.details) { + this.details = { + value: { + uuid: $texture2D.value, + }, + }; + } + const action = new TexturePinAction(this, { + source: this.details.value, + target: { uuid: $texture2D.value }, + }); + this.exec(action); + }); + } + onUpdate() { + const $texture2D = this.refs.textureCube; + $texture2D.value = this.details.value.uuid; + } +} +TextureCubePin.type = 'textureCube'; +(0, pin_1.declarePin)(TextureCubePin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXRleHR1cmVDdWJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Jsb2NrLWZvcmdlL2ludGVybmFsL3Bpbi10ZXh0dXJlQ3ViZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7O0FBR2IsZ0NBQW9EO0FBUXBELE1BQU0sZ0JBQWlCLFNBQVEsZUFHN0I7SUFFRSxJQUFJLENBQUMsTUFFSjtRQUNHLE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNGLElBQUksSUFBSSxFQUFFO1lBQ04sYUFBYTtZQUNiLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxLQUFpQixDQUFDO1lBQ25DLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1lBQ3ZDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztTQUNsQjtJQUNMLENBQUM7SUFFRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDbEMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtZQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1NBQzdCLENBQUMsQ0FBQztJQUNQLENBQUM7Q0FDSjtBQUVEOzs7R0FHRztBQUNILE1BQU0sY0FBZSxTQUFRLFNBQXNCO0lBQW5EOztRQUdJLFVBQUssR0FBRyxTQUFTLENBQUM7UUFDbEIsU0FBSSxHQUFHLFFBQVEsQ0FBQztRQUNoQixZQUFPLEdBQUc7WUFDTixLQUFLLEVBQUU7Z0JBQ0gsSUFBSSxFQUFFLEVBQUU7YUFDWDtTQUNKLENBQUM7UUFFRixnQkFBVyxHQUFXLG9FQUFvRSxDQUFDO1FBQzNGLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBeUJ0QixDQUFDO0lBdkJHLE1BQU07UUFDRixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQStCLENBQUM7UUFDN0QsVUFBVSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7WUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRztvQkFDWCxLQUFLLEVBQUU7d0JBQ0gsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLO3FCQUN6QjtpQkFDSixDQUFDO2FBQ0w7WUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksRUFBRTtnQkFDdEMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztnQkFDMUIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFVBQVUsQ0FBQyxLQUFLLEVBQUU7YUFDckMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUErQixDQUFDO1FBQzdELFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO0lBQy9DLENBQUM7O0FBbkNNLG1CQUFJLEdBQUcsYUFBYSxDQUFDO0FBcUNoQyxJQUFBLGdCQUFVLEVBQUMsY0FBYyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHsgSFRNTEdyYXBoRm9yZ2VFbGVtZW50IH0gZnJvbSAnLi4vZm9yZ2UnO1xuaW1wb3J0IHsgUGluLCBkZWNsYXJlUGluLCBQaW5BY3Rpb24gfSBmcm9tICcuLi9waW4nO1xuXG50eXBlIFRleHR1cmVDdWJlRGV0YWlsID0ge1xuICAgIHZhbHVlOiB7XG4gICAgICAgIHV1aWQ6IHN0cmluZ1xuICAgIH07XG59O1xuXG5jbGFzcyBUZXh0dXJlUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBzb3VyY2U6IFRleHR1cmVDdWJlRGV0YWlsWyd2YWx1ZSddLFxuICAgIHRhcmdldDogVGV4dHVyZUN1YmVEZXRhaWxbJ3ZhbHVlJ10sXG59PiB7XG5cbiAgICBleGVjKHBhcmFtczoge1xuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50XG4gICAgfSkge1xuICAgICAgICBjb25zdCAkcGluID0gcGFyYW1zLmZvcmdlLmdldFBpbkVsZW1lbnQodGhpcy5kZXRhaWwuYmxvY2tOYW1lLCAnaW5wdXQnLCB0aGlzLmRldGFpbC5pbmRleCk7XG4gICAgICAgIGlmICgkcGluKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBwaW4gPSAkcGluLl9fcGluIGFzIEZsb2F0UGluO1xuICAgICAgICAgICAgcGluLmRldGFpbHMudmFsdWUgPSB0aGlzLmRldGFpbC50YXJnZXQ7XG4gICAgICAgICAgICBwaW4ub25VcGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldmVydEFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0dXJlUGluQWN0aW9uKHRoaXMucGluLCB7XG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlsLnRhcmdldCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5kZXRhaWwuc291cmNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbi8qKlxuICogRmxvYXRcbiAqIOa1rueCueexu+Wei+eahOW8leiEmlxuICovXG5jbGFzcyBUZXh0dXJlQ3ViZVBpbiBleHRlbmRzIFBpbjxUZXh0dXJlQ3ViZURldGFpbD4ge1xuICAgIHN0YXRpYyB0eXBlID0gJ3RleHR1cmVDdWJlJztcblxuICAgIGNvbG9yID0gJyM5NjkxYjInO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzID0ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgdXVpZDogJycsXG4gICAgICAgIH0sXG4gICAgfTtcblxuICAgIGNvbnRlbnRTbG90ID0gLypodG1sKi9gPHVpLWFzc2V0IHJlZj1cInRleHR1cmVDdWJlXCIgZHJvcHBhYmxlPVwiY2MuVGV4dHVyZUN1YmVcIj48L3VpLWFzc2V0PmA7XG4gICAgY2hpbGRyZW5TbG90ID0gW107XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIGNvbnN0ICR0ZXh0dXJlMkQgPSB0aGlzLnJlZnMudGV4dHVyZUN1YmUgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJHRleHR1cmUyRC5hZGRFdmVudExpc3RlbmVyKCdjb25maXJtJywgKCkgPT4ge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRldGFpbHMpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmRldGFpbHMgPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB1dWlkOiAkdGV4dHVyZTJELnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBUZXh0dXJlUGluQWN0aW9uKHRoaXMsIHtcbiAgICAgICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlscy52YWx1ZSxcbiAgICAgICAgICAgICAgICB0YXJnZXQ6IHsgdXVpZDogJHRleHR1cmUyRC52YWx1ZSB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmV4ZWMoYWN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25VcGRhdGUoKSB7XG4gICAgICAgIGNvbnN0ICR0ZXh0dXJlMkQgPSB0aGlzLnJlZnMudGV4dHVyZUN1YmUgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgJHRleHR1cmUyRC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZS51dWlkO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oVGV4dHVyZUN1YmVQaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-unknown.js b/extensions/shader-graph/dist/block-forge/internal/pin-unknown.js new file mode 100644 index 0000000..1cb0994 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-unknown.js @@ -0,0 +1,22 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +/** + * Unknown + * 未知类型的引脚 + */ +class UnknownPin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = ''; + this.line = 'normal'; + this.details = { + value: null, + }; + this.contentSlot = ``; + this.childrenSlot = []; + } +} +UnknownPin.type = 'unknown'; +(0, pin_1.declarePin)(UnknownPin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXVua25vd24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLXVua25vd24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLGdDQUFvRDtBQUVwRDs7O0dBR0c7QUFDSCxNQUFNLFVBQVcsU0FBUSxTQUl4QjtJQUpEOztRQU9JLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxTQUFJLEdBQUcsUUFBUSxDQUFDO1FBQ2hCLFlBQU8sR0FBRztZQUNOLEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQztRQUVGLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO0lBQ3RCLENBQUM7O0FBVlUsZUFBSSxHQUFHLFNBQVMsQ0FBQztBQVc1QixJQUFBLGdCQUFVLEVBQUMsVUFBVSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB7IFBpbiwgZGVjbGFyZVBpbiwgUGluQWN0aW9uIH0gZnJvbSAnLi4vcGluJztcblxuLyoqXG4gKiBVbmtub3duXG4gKiDmnKrnn6XnsbvlnovnmoTlvJXohJpcbiAqL1xuY2xhc3MgVW5rbm93blBpbiBleHRlbmRzIFBpbjxcbntcbiAgICB2YWx1ZTogYW55O1xufVxuPiB7XG4gICAgc3RhdGljIHR5cGUgPSAndW5rbm93bic7XG5cbiAgICBjb2xvciA9ICcnO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzID0ge1xuICAgICAgICB2YWx1ZTogbnVsbCxcbiAgICB9O1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2BgO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtdO1xufVxuZGVjbGFyZVBpbihVbmtub3duUGluKTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-vec2.js b/extensions/shader-graph/dist/block-forge/internal/pin-vec2.js new file mode 100644 index 0000000..bdae1d4 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-vec2.js @@ -0,0 +1,75 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class Vec2PinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value[this.detail.key] = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new Vec2PinAction(this.pin, { + key: this.detail.key, + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Vec4 + * 布尔类型的引脚 + */ +class Vec2Pin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#D07979'; + this.line = 'normal'; + this.details = { + value: { + x: 0, y: 0, + }, + }; + this.contentSlot = ``; + this.childrenSlot = [ + /*html*/ ``, + ]; + this.style = ` +.vec2 .slot-children { display: flex; } +.vec2 .slot-children > * { padding: 0 2px;} +.vec2 .slot-children ui-num-input { flex: 1; width: 0; color: white; } + `; + } + onInit() { + const keys = ['x', 'y']; + keys.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + this.refs[key].addEventListener('confirm', () => { + if (!this.details) { + this.details = { value: { x: 0, y: 0 } }; + } + // this.details.value[key] = parseFloat($el.value); + const action = new Vec2PinAction(this, { + key, + source: this.details.value[key], + target: parseFloat($el.value), + }); + this.exec(action); + }); + }); + } + onUpdate() { + const keys = ['x', 'y']; + keys.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + }); + } +} +Vec2Pin.type = 'vec2'; +(0, pin_1.declarePin)(Vec2Pin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXZlYzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLXZlYzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLGdDQUFvRDtBQVNwRCxNQUFNLGFBQWMsU0FBUSxlQUkxQjtJQUVFLElBQUksQ0FBQyxNQUVKO1FBQ0csTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxJQUFJLEVBQUU7WUFDTixhQUFhO1lBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQWdCLENBQUM7WUFDbEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN4RCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUMvQixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQVEsU0FBUSxTQUFrQjtJQUF4Qzs7UUFHSSxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsWUFBTyxHQUFHO1lBQ04sS0FBSyxFQUFFO2dCQUNILENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7YUFDYjtTQUNKLENBQUM7UUFFRixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFHO1lBQ1gsUUFBUSxDQUFBLGdHQUFnRztTQUMzRyxDQUFDO1FBRUYsVUFBSyxHQUFHOzs7O0tBSVAsQ0FBQztJQStCTixDQUFDO0lBN0JHLE1BQU07UUFDRixNQUFNLElBQUksR0FBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCLENBQUM7WUFDL0MsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7WUFFekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUM1QyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztpQkFDNUM7Z0JBQ0QsbURBQW1EO2dCQUVuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUU7b0JBQ25DLEdBQUc7b0JBQ0gsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztvQkFDL0IsTUFBTSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO2lCQUNoQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLElBQUksR0FBZSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCLENBQUM7WUFDL0MsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQWpETSxZQUFJLEdBQUcsTUFBTSxDQUFDO0FBbUR6QixJQUFBLGdCQUFVLEVBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHsgSFRNTEdyYXBoRm9yZ2VFbGVtZW50IH0gZnJvbSAnLi4vZm9yZ2UnO1xuaW1wb3J0IHsgUGluLCBkZWNsYXJlUGluLCBQaW5BY3Rpb24gfSBmcm9tICcuLi9waW4nO1xuXG50eXBlIFZlYzJQaW5EZXRhaWwgPSB7XG4gICAgdmFsdWU6IHtcbiAgICAgICAgeDogbnVtYmVyLFxuICAgICAgICB5OiBudW1iZXIsXG4gICAgfTtcbn1cblxuY2xhc3MgVmVjMlBpbkFjdGlvbiBleHRlbmRzIFBpbkFjdGlvbjx7XG4gICAga2V5OiBrZXlvZiBWZWMyUGluRGV0YWlsWyd2YWx1ZSddLFxuICAgIHNvdXJjZTogbnVtYmVyLFxuICAgIHRhcmdldDogbnVtYmVyLFxufT4ge1xuXG4gICAgZXhlYyhwYXJhbXM6IHtcbiAgICAgICAgZm9yZ2U6IEhUTUxHcmFwaEZvcmdlRWxlbWVudFxuICAgIH0pIHtcbiAgICAgICAgY29uc3QgJHBpbiA9IHBhcmFtcy5mb3JnZS5nZXRQaW5FbGVtZW50KHRoaXMuZGV0YWlsLmJsb2NrTmFtZSwgJ2lucHV0JywgdGhpcy5kZXRhaWwuaW5kZXgpO1xuICAgICAgICBpZiAoJHBpbikge1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgcGluID0gJHBpbi5fX3BpbiBhcyBNYXQyUGluO1xuICAgICAgICAgICAgcGluLmRldGFpbHMudmFsdWVbdGhpcy5kZXRhaWwua2V5XSA9IHRoaXMuZGV0YWlsLnRhcmdldDtcbiAgICAgICAgICAgIHBpbi5vblVwZGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IFZlYzJQaW5BY3Rpb24odGhpcy5waW4sIHtcbiAgICAgICAgICAgIGtleTogdGhpcy5kZXRhaWwua2V5LFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZGV0YWlsLnNvdXJjZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFZlYzRcbiAqIOW4g+WwlOexu+Wei+eahOW8leiEmlxuICovXG5jbGFzcyBWZWMyUGluIGV4dGVuZHMgUGluPFZlYzJQaW5EZXRhaWw+IHtcbiAgICBzdGF0aWMgdHlwZSA9ICd2ZWMyJztcblxuICAgIGNvbG9yID0gJyNEMDc5NzknO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzID0ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgeDogMCwgeTogMCxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2BgO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtcbiAgICAgICAgLypodG1sKi9gPHVpLW51bS1pbnB1dCByZWY9XCJ4XCIgbGFiZWw9XCJ4XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJ5XCIgbGFiZWw9XCJ5XCI+PC91aS1udW0taW5wdXQ+YCxcbiAgICBdO1xuXG4gICAgc3R5bGUgPSBgXG4udmVjMiAuc2xvdC1jaGlsZHJlbiB7IGRpc3BsYXk6IGZsZXg7IH1cbi52ZWMyIC5zbG90LWNoaWxkcmVuID4gKiB7IHBhZGRpbmc6IDAgMnB4O31cbi52ZWMyIC5zbG90LWNoaWxkcmVuIHVpLW51bS1pbnB1dCB7IGZsZXg6IDE7IHdpZHRoOiAwOyBjb2xvcjogd2hpdGU7IH1cbiAgICBgO1xuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBjb25zdCBrZXlzOiBbJ3gnLCAneSddID0gWyd4JywgJ3knXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICRlbCA9IHRoaXMucmVmc1trZXldIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAkZWwudmFsdWUgPSB0aGlzLmRldGFpbHMudmFsdWVba2V5XSArICcnO1xuXG4gICAgICAgICAgICB0aGlzLnJlZnNba2V5XS5hZGRFdmVudExpc3RlbmVyKCdjb25maXJtJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGV0YWlscyA9IHsgdmFsdWU6IHsgeDogMCwgeTogMCB9IH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIHRoaXMuZGV0YWlscy52YWx1ZVtrZXldID0gcGFyc2VGbG9hdCgkZWwudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aW9uID0gbmV3IFZlYzJQaW5BY3Rpb24odGhpcywge1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0sXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogcGFyc2VGbG9hdCgkZWwudmFsdWUpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uVXBkYXRlKCkge1xuICAgICAgICBjb25zdCBrZXlzOiBbJ3gnLCAneSddID0gWyd4JywgJ3knXTtcbiAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICRlbCA9IHRoaXMucmVmc1trZXldIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgICAgICAkZWwudmFsdWUgPSB0aGlzLmRldGFpbHMudmFsdWVba2V5XSArICcnO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5kZWNsYXJlUGluKFZlYzJQaW4pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-vec3.js b/extensions/shader-graph/dist/block-forge/internal/pin-vec3.js new file mode 100644 index 0000000..cfa5d81 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-vec3.js @@ -0,0 +1,75 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class VecPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value[this.detail.key] = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new VecPinAction(this.pin, { + key: this.detail.key, + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Vec3 + * 布尔类型的引脚 + */ +class Vec3Pin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#d0a279'; + this.line = 'normal'; + this.details = { + value: { + x: 0, y: 0, z: 0, + }, + }; + this.contentSlot = ``; + this.childrenSlot = [ + /*html*/ ``, + ]; + this.style = ` +.vec3 .slot-children { display: flex; } +.vec3 .slot-children > * { padding: 0 2px;} +.vec3 .slot-children ui-num-input { flex: 1; width: 0; color: white; } + `; + } + onInit() { + const keys = ['x', 'y', 'z']; + keys.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + this.refs[key].addEventListener('confirm', () => { + if (!this.details) { + this.details = { value: { x: 0, y: 0, z: 0 } }; + } + // this.details.value[key] = parseFloat($el.value); + const action = new VecPinAction(this, { + key, + source: this.details.value[key], + target: parseFloat($el.value), + }); + this.exec(action); + }); + }); + } + onUpdate() { + const keys = ['x', 'y', 'z']; + keys.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + }); + } +} +Vec3Pin.type = 'vec3'; +(0, pin_1.declarePin)(Vec3Pin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXZlYzMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLXZlYzMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLGdDQUFvRDtBQVVwRCxNQUFNLFlBQWEsU0FBUSxlQUl6QjtJQUVFLElBQUksQ0FBQyxNQUVKO1FBQ0csTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0YsSUFBSSxJQUFJLEVBQUU7WUFDTixhQUFhO1lBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQWdCLENBQUM7WUFDbEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN4RCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQVEsU0FBUSxTQUFrQjtJQUF4Qzs7UUFHSSxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsWUFBTyxHQUFHO1lBQ04sS0FBSyxFQUFFO2dCQUNILENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNuQjtTQUNKLENBQUM7UUFFRixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixpQkFBWSxHQUFHO1lBQ1gsUUFBUSxDQUFBLCtJQUErSTtTQUMxSixDQUFDO1FBRUYsVUFBSyxHQUFHOzs7O0tBSVAsQ0FBQztJQStCTixDQUFDO0lBN0JHLE1BQU07UUFDRixNQUFNLElBQUksR0FBb0IsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQztZQUMvQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUV6QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO29CQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7aUJBQ2xEO2dCQUNELG1EQUFtRDtnQkFFbkQsTUFBTSxNQUFNLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxFQUFFO29CQUNsQyxHQUFHO29CQUNILE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUM7b0JBQy9CLE1BQU0sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztpQkFDaEMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxRQUFRO1FBQ0osTUFBTSxJQUFJLEdBQW9CLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQXFCLENBQUM7WUFDL0MsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQWpETSxZQUFJLEdBQUcsTUFBTSxDQUFDO0FBbUR6QixJQUFBLGdCQUFVLEVBQUMsT0FBTyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHsgSFRNTEdyYXBoRm9yZ2VFbGVtZW50IH0gZnJvbSAnLi4vZm9yZ2UnO1xuaW1wb3J0IHsgUGluLCBkZWNsYXJlUGluLCBQaW5BY3Rpb24gfSBmcm9tICcuLi9waW4nO1xuXG50eXBlIFZlYzNQaW5EZXRhaWwgPSB7XG4gICAgdmFsdWU6IHtcbiAgICAgICAgeDogbnVtYmVyLFxuICAgICAgICB5OiBudW1iZXIsXG4gICAgICAgIHo6IG51bWJlcixcbiAgICB9O1xufVxuXG5jbGFzcyBWZWNQaW5BY3Rpb24gZXh0ZW5kcyBQaW5BY3Rpb248e1xuICAgIGtleToga2V5b2YgVmVjM1BpbkRldGFpbFsndmFsdWUnXSxcbiAgICBzb3VyY2U6IG51bWJlcixcbiAgICB0YXJnZXQ6IG51bWJlcixcbn0+IHtcblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRwaW4gPSBwYXJhbXMuZm9yZ2UuZ2V0UGluRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUsICdpbnB1dCcsIHRoaXMuZGV0YWlsLmluZGV4KTtcbiAgICAgICAgaWYgKCRwaW4pIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9ICRwaW4uX19waW4gYXMgVmVjM1BpbjtcbiAgICAgICAgICAgIHBpbi5kZXRhaWxzLnZhbHVlW3RoaXMuZGV0YWlsLmtleV0gPSB0aGlzLmRldGFpbC50YXJnZXQ7XG4gICAgICAgICAgICBwaW4ub25VcGRhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldmVydEFjdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBWZWNQaW5BY3Rpb24odGhpcy5waW4sIHtcbiAgICAgICAgICAgIGtleTogdGhpcy5kZXRhaWwua2V5LFxuICAgICAgICAgICAgc291cmNlOiB0aGlzLmRldGFpbC50YXJnZXQsXG4gICAgICAgICAgICB0YXJnZXQ6IHRoaXMuZGV0YWlsLnNvdXJjZSxcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG4vKipcbiAqIFZlYzNcbiAqIOW4g+WwlOexu+Wei+eahOW8leiEmlxuICovXG5jbGFzcyBWZWMzUGluIGV4dGVuZHMgUGluPFZlYzNQaW5EZXRhaWw+IHtcbiAgICBzdGF0aWMgdHlwZSA9ICd2ZWMzJztcblxuICAgIGNvbG9yID0gJyNkMGEyNzknO1xuICAgIGxpbmUgPSAnbm9ybWFsJztcbiAgICBkZXRhaWxzID0ge1xuICAgICAgICB2YWx1ZToge1xuICAgICAgICAgICAgeDogMCwgeTogMCwgejogMCxcbiAgICAgICAgfSxcbiAgICB9O1xuXG4gICAgY29udGVudFNsb3QgPSAvKmh0bWwqL2BgO1xuICAgIGNoaWxkcmVuU2xvdCA9IFtcbiAgICAgICAgLypodG1sKi9gPHVpLW51bS1pbnB1dCByZWY9XCJ4XCIgbGFiZWw9XCJ4XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJ5XCIgbGFiZWw9XCJ5XCI+PC91aS1udW0taW5wdXQ+PHVpLW51bS1pbnB1dCByZWY9XCJ6XCIgbGFiZWw9XCJ6XCI+PC91aS1udW0taW5wdXQ+YCxcbiAgICBdO1xuXG4gICAgc3R5bGUgPSBgXG4udmVjMyAuc2xvdC1jaGlsZHJlbiB7IGRpc3BsYXk6IGZsZXg7IH1cbi52ZWMzIC5zbG90LWNoaWxkcmVuID4gKiB7IHBhZGRpbmc6IDAgMnB4O31cbi52ZWMzIC5zbG90LWNoaWxkcmVuIHVpLW51bS1pbnB1dCB7IGZsZXg6IDE7IHdpZHRoOiAwOyBjb2xvcjogd2hpdGU7IH1cbiAgICBgO1xuXG4gICAgb25Jbml0KCkge1xuICAgICAgICBjb25zdCBrZXlzOiBbJ3gnLCAneScsICd6J10gPSBbJ3gnLCAneScsICd6J107XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCAkZWwgPSB0aGlzLnJlZnNba2V5XSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgJGVsLnZhbHVlID0gdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0gKyAnJztcblxuICAgICAgICAgICAgdGhpcy5yZWZzW2tleV0uYWRkRXZlbnRMaXN0ZW5lcignY29uZmlybScsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGV0YWlscykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbHMgPSB7IHZhbHVlOiB7IHg6IDAsIHk6IDAsIHo6IDAgfSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB0aGlzLmRldGFpbHMudmFsdWVba2V5XSA9IHBhcnNlRmxvYXQoJGVsLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBWZWNQaW5BY3Rpb24odGhpcywge1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0sXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogcGFyc2VGbG9hdCgkZWwudmFsdWUpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uVXBkYXRlKCkge1xuICAgICAgICBjb25zdCBrZXlzOiBbJ3gnLCAneScsICd6J10gPSBbJ3gnLCAneScsICd6J107XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCAkZWwgPSB0aGlzLnJlZnNba2V5XSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgJGVsLnZhbHVlID0gdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0gKyAnJztcbiAgICAgICAgfSk7XG4gICAgfVxufVxuZGVjbGFyZVBpbihWZWMzUGluKTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/internal/pin-vec4.js b/extensions/shader-graph/dist/block-forge/internal/pin-vec4.js new file mode 100644 index 0000000..3465e9f --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/internal/pin-vec4.js @@ -0,0 +1,77 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const pin_1 = require("../pin"); +class VecPinAction extends pin_1.PinAction { + exec(params) { + const $pin = params.forge.getPinElement(this.detail.blockName, 'input', this.detail.index); + if ($pin) { + // @ts-ignore + const pin = $pin.__pin; + pin.details.value[this.detail.key] = this.detail.target; + pin.onUpdate(); + } + } + revertAction() { + return new VecPinAction(this.pin, { + key: this.detail.key, + source: this.detail.target, + target: this.detail.source, + }); + } +} +/** + * Vec4 + * 布尔类型的引脚 + */ +class Vec4Pin extends pin_1.Pin { + constructor() { + super(...arguments); + this.color = '#d0c679'; + this.line = 'normal'; + this.details = { + value: { + x: 0, y: 0, + z: 0, w: 0, + }, + }; + this.contentSlot = ``; + this.childrenSlot = [ + /*html*/ ``, + /*html*/ ``, + ]; + this.style = ` +.vec4 .slot-children { display: flex; } +.vec4 .slot-children > * { padding: 0 2px;} +.vec4 .slot-children ui-num-input { flex: 1; width: 0; color: white; } + `; + } + onInit() { + const keys = ['x', 'y', 'z', 'w']; + keys.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + this.refs[key].addEventListener('confirm', () => { + if (!this.details) { + this.details = { value: { x: 0, y: 0, z: 0, w: 0 } }; + } + // this.details.value[key] = parseFloat($el.value); + const action = new VecPinAction(this, { + key, + source: this.details.value[key], + target: parseFloat($el.value), + }); + this.exec(action); + }); + }); + } + onUpdate() { + const keys = ['x', 'y', 'z', 'w']; + keys.forEach((key) => { + const $el = this.refs[key]; + $el.value = this.details.value[key] + ''; + }); + } +} +Vec4Pin.type = 'vec4'; +(0, pin_1.declarePin)(Vec4Pin); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLXZlYzQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvaW50ZXJuYWwvcGluLXZlYzQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUdiLGdDQUFvRDtBQVdwRCxNQUFNLFlBQWEsU0FBUSxlQUl6QjtJQUVFLElBQUksQ0FBQyxNQUVKO1FBQ0csTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0YsSUFBSSxJQUFJLEVBQUU7WUFDTixhQUFhO1lBQ2IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEtBQWdCLENBQUM7WUFDbEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN4RCxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbEI7SUFDTCxDQUFDO0lBRUQsWUFBWTtRQUNSLE9BQU8sSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM5QixHQUFHLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQVEsU0FBUSxTQUFrQjtJQUF4Qzs7UUFHSSxVQUFLLEdBQUcsU0FBUyxDQUFDO1FBQ2xCLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsWUFBTyxHQUFHO1lBQ04sS0FBSyxFQUFFO2dCQUNILENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQ1YsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQzthQUNiO1NBQ0osQ0FBQztRQUVGLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBQ3pCLGlCQUFZLEdBQUc7WUFDWCxRQUFRLENBQUEsaUZBQWlGO1lBQ3pGLFFBQVEsQ0FBQSxpRkFBaUY7U0FDNUYsQ0FBQztRQUVGLFVBQUssR0FBRzs7OztLQUlQLENBQUM7SUErQk4sQ0FBQztJQTdCRyxNQUFNO1FBQ0YsTUFBTSxJQUFJLEdBQXlCLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFO1lBQ2pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixDQUFDO1lBQy9DLEdBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBRXpDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLE9BQU8sR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2lCQUN4RDtnQkFDRCxtREFBbUQ7Z0JBRW5ELE1BQU0sTUFBTSxHQUFHLElBQUksWUFBWSxDQUFDLElBQUksRUFBRTtvQkFDbEMsR0FBRztvQkFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO29CQUMvQixNQUFNLEVBQUUsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7aUJBQ2hDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3RCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUTtRQUNKLE1BQU0sSUFBSSxHQUF5QixDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBcUIsQ0FBQztZQUMvQyxHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBbkRNLFlBQUksR0FBRyxNQUFNLENBQUM7QUFxRHpCLElBQUEsZ0JBQVUsRUFBQyxPQUFPLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHR5cGUgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi9mb3JnZSc7XG5pbXBvcnQgeyBQaW4sIGRlY2xhcmVQaW4sIFBpbkFjdGlvbiB9IGZyb20gJy4uL3Bpbic7XG5cbnR5cGUgVmVjNFBpbkRldGFpbCA9IHtcbiAgICB2YWx1ZToge1xuICAgICAgICB4OiBudW1iZXIsXG4gICAgICAgIHk6IG51bWJlcixcbiAgICAgICAgejogbnVtYmVyLFxuICAgICAgICB3OiBudW1iZXIsXG4gICAgfTtcbn1cblxuY2xhc3MgVmVjUGluQWN0aW9uIGV4dGVuZHMgUGluQWN0aW9uPHtcbiAgICBrZXk6IGtleW9mIFZlYzRQaW5EZXRhaWxbJ3ZhbHVlJ10sXG4gICAgc291cmNlOiBudW1iZXIsXG4gICAgdGFyZ2V0OiBudW1iZXIsXG59PiB7XG5cbiAgICBleGVjKHBhcmFtczoge1xuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50XG4gICAgfSkge1xuICAgICAgICBjb25zdCAkcGluID0gcGFyYW1zLmZvcmdlLmdldFBpbkVsZW1lbnQodGhpcy5kZXRhaWwuYmxvY2tOYW1lLCAnaW5wdXQnLCB0aGlzLmRldGFpbC5pbmRleCk7XG4gICAgXG4gICAgICAgIGlmICgkcGluKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBjb25zdCBwaW4gPSAkcGluLl9fcGluIGFzIFZlYzRQaW47XG4gICAgICAgICAgICBwaW4uZGV0YWlscy52YWx1ZVt0aGlzLmRldGFpbC5rZXldID0gdGhpcy5kZXRhaWwudGFyZ2V0O1xuICAgICAgICAgICAgcGluLm9uVXBkYXRlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXZlcnRBY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgVmVjUGluQWN0aW9uKHRoaXMucGluLCB7XG4gICAgICAgICAgICBrZXk6IHRoaXMuZGV0YWlsLmtleSxcbiAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWwudGFyZ2V0LFxuICAgICAgICAgICAgdGFyZ2V0OiB0aGlzLmRldGFpbC5zb3VyY2UsXG4gICAgICAgIH0pO1xuICAgIH1cbn1cblxuLyoqXG4gKiBWZWM0XG4gKiDluIPlsJTnsbvlnovnmoTlvJXohJpcbiAqL1xuY2xhc3MgVmVjNFBpbiBleHRlbmRzIFBpbjxWZWM0UGluRGV0YWlsPiB7XG4gICAgc3RhdGljIHR5cGUgPSAndmVjNCc7XG5cbiAgICBjb2xvciA9ICcjZDBjNjc5JztcbiAgICBsaW5lID0gJ25vcm1hbCc7XG4gICAgZGV0YWlscyA9IHtcbiAgICAgICAgdmFsdWU6IHtcbiAgICAgICAgICAgIHg6IDAsIHk6IDAsXG4gICAgICAgICAgICB6OiAwLCB3OiAwLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBjb250ZW50U2xvdCA9IC8qaHRtbCovYGA7XG4gICAgY2hpbGRyZW5TbG90ID0gW1xuICAgICAgICAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cInhcIiBsYWJlbD1cInhcIj48L3VpLW51bS1pbnB1dD48dWktbnVtLWlucHV0IHJlZj1cInlcIiBsYWJlbD1cInlcIj5gLFxuICAgICAgICAvKmh0bWwqL2A8dWktbnVtLWlucHV0IHJlZj1cInpcIiBsYWJlbD1cInpcIj48L3VpLW51bS1pbnB1dD48dWktbnVtLWlucHV0IHJlZj1cIndcIiBsYWJlbD1cIndcIj5gLFxuICAgIF07XG5cbiAgICBzdHlsZSA9IGBcbi52ZWM0IC5zbG90LWNoaWxkcmVuIHsgZGlzcGxheTogZmxleDsgfVxuLnZlYzQgLnNsb3QtY2hpbGRyZW4gPiAqIHsgcGFkZGluZzogMCAycHg7fVxuLnZlYzQgLnNsb3QtY2hpbGRyZW4gdWktbnVtLWlucHV0IHsgZmxleDogMTsgd2lkdGg6IDA7IGNvbG9yOiB3aGl0ZTsgfVxuICAgIGA7XG5cbiAgICBvbkluaXQoKSB7XG4gICAgICAgIGNvbnN0IGtleXM6IFsneCcsICd5JywgJ3onLCAndyddID0gWyd4JywgJ3knLCAneicsICd3J107XG4gICAgICAgIGtleXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCAkZWwgPSB0aGlzLnJlZnNba2V5XSBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgICAgICAgICAgJGVsLnZhbHVlID0gdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0gKyAnJztcblxuICAgICAgICAgICAgdGhpcy5yZWZzW2tleV0uYWRkRXZlbnRMaXN0ZW5lcignY29uZmlybScsICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGV0YWlscykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRldGFpbHMgPSB7IHZhbHVlOiB7IHg6IDAsIHk6IDAsIHo6IDAsIHc6IDAgfSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyB0aGlzLmRldGFpbHMudmFsdWVba2V5XSA9IHBhcnNlRmxvYXQoJGVsLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGlvbiA9IG5ldyBWZWNQaW5BY3Rpb24odGhpcywge1xuICAgICAgICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICAgICAgICAgIHNvdXJjZTogdGhpcy5kZXRhaWxzLnZhbHVlW2tleV0sXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldDogcGFyc2VGbG9hdCgkZWwudmFsdWUpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZXhlYyhhY3Rpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9uVXBkYXRlKCkge1xuICAgICAgICBjb25zdCBrZXlzOiBbJ3gnLCAneScsICd6JywgJ3cnXSA9IFsneCcsICd5JywgJ3onLCAndyddO1xuICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgJGVsID0gdGhpcy5yZWZzW2tleV0gYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgICRlbC52YWx1ZSA9IHRoaXMuZGV0YWlscy52YWx1ZVtrZXldICsgJyc7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmRlY2xhcmVQaW4oVmVjNFBpbik7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/module/forge.js b/extensions/shader-graph/dist/block-forge/module/forge.js new file mode 100644 index 0000000..92a4c7d --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/module/forge.js @@ -0,0 +1,148 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Pin = exports.PinD = exports.Block = exports.Graph = exports.Forge = void 0; +const block_1 = require("../block"); +const graphWeakMap = new WeakMap(); +const blockWeakMap = new WeakMap(); +const pinWeakMap = new WeakMap(); +class Forge { + constructor(graph) { + this.rootGraphData = graph; + } + get details() { + return this.rootGraphData.details; + } + getGraph() { + const graphData = this.rootGraphData; + if (!graphWeakMap.has(graphData)) { + graphWeakMap.set(graphData, new Graph(graphData)); + } + return graphWeakMap.get(graphData); + } +} +exports.Forge = Forge; +class Graph { + constructor(graph) { + this.graph = graph; + // 生成数据 + this.getBlockMap(); + // 整理 line 数据 + const nodeMap = this.graph.nodes; + const lineMap = this.graph.lines; + for (const uuid in lineMap) { + const line = lineMap[uuid]; + const inputNode = nodeMap[line.input.node]; + const outputNode = nodeMap[line.output.node]; + const inputBlock = blockWeakMap.get(inputNode); + const outputBlock = blockWeakMap.get(outputNode); + inputBlock?.getOutputPinsList(); + outputBlock?.getInputPinsList(); + const inputPin = inputBlock?.getOutputPin(line.input.param); + const outPin = outputBlock?.getInputPin(line.output.param); + if (outPin) { + inputPin.connectPins.push(outPin); + } + if (inputPin) { + outPin.connectPins.push(inputPin); + } + } + } + get details() { + return this.graph.details; + } + getSubGraphMap() { + const data = {}; + for (const uuid in this.graph.graphs) { + const graphData = this.graph.graphs[uuid]; + if (!graphWeakMap.has(graphData)) { + graphWeakMap.set(graphData, new Graph(graphData)); + } + const graph = graphWeakMap.get(graphData); + data[uuid] = graph; + } + return data; + } + getBlockMap() { + const data = {}; + for (const uuid in this.graph.nodes) { + const blockData = this.graph.nodes[uuid]; + if (!blockWeakMap.has(blockData)) { + blockWeakMap.set(blockData, new Block(this, uuid, blockData)); + } + const block = blockWeakMap.get(blockData); + data[uuid] = block; + } + return data; + } +} +exports.Graph = Graph; +class Block { + constructor(graph, uuid, block) { + this.graph = graph; + this.uuid = uuid; + this.block = block; + this.desc = block_1.blockMap.get(this.block.type); + this.getInputPinsList(); + this.getOutputPinsList(); + } + get details() { + return this.block.details; + } + getInputPin(tag) { + const inputPins = this.desc?.inputPins || []; + for (let index = 0; index < inputPins.length; index++) { + const pinDesc = inputPins[index]; + if (pinDesc.tag === tag) { + const pin = this.block.details.inputPins[index]; + return pinWeakMap.get(pin); + } + } + } + getOutputPin(tag) { + const outputPins = this.desc?.outputPins || []; + for (let index = 0; index < outputPins.length; index++) { + const pin = outputPins[index]; + if (pin.tag === tag) { + const pin = this.block.details.outputPins[index]; + return pinWeakMap.get(pin); + } + } + } + getInputPinsList() { + const inputPins = this.block.details.inputPins || []; + const blockDesc = this.desc || { inputPins: [] }; + return inputPins.map((pinData, index) => { + if (!pinWeakMap.has(pinData)) { + pinWeakMap.set(pinData, new Pin(PinD.input, this, pinData, blockDesc.inputPins[index])); + } + return pinWeakMap.get(pinData); + }); + } + getOutputPinsList() { + const outputPins = this.block.details.outputPins || []; + const blockDesc = this.desc || { outputPins: [] }; + return outputPins.map((pinData, index) => { + if (!pinWeakMap.has(pinData)) { + pinWeakMap.set(pinData, new Pin(PinD.output, this, pinData, blockDesc.outputPins[index])); + } + return pinWeakMap.get(pinData); + }); + } +} +exports.Block = Block; +var PinD; +(function (PinD) { + PinD[PinD["input"] = 0] = "input"; + PinD[PinD["output"] = 1] = "output"; +})(PinD = exports.PinD || (exports.PinD = {})); +class Pin { + constructor(dir, block, pin, desc) { + this.connectPins = []; + this.type = dir; + this.block = block; + this.desc = desc; + this.value = pin; + } +} +exports.Pin = Pin; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmxvY2stZm9yZ2UvbW9kdWxlL2ZvcmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBSWIsb0NBQW9DO0FBRXBDLE1BQU0sWUFBWSxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzlELE1BQU0sWUFBWSxHQUE4QixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBQzlELE1BQU0sVUFBVSxHQUEwQixJQUFJLE9BQU8sRUFBRSxDQUFDO0FBRXhELE1BQWEsS0FBSztJQUdkLFlBQVksS0FBZ0I7UUFDeEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7SUFDdEMsQ0FBQztJQUVELFFBQVE7UUFDSixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3JDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFO1lBQzlCLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDckQ7UUFDRCxPQUFPLFlBQVksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFFLENBQUM7SUFDeEMsQ0FBQztDQUNKO0FBbEJELHNCQWtCQztBQUVELE1BQWEsS0FBSztJQUdkLFlBQVksS0FBZ0I7UUFDeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsT0FBTztRQUNQLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVuQixhQUFhO1FBQ2IsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFDakMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7UUFD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QUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsU0FBUyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDN0Y7WUFDRCxPQUFPLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFFLENBQUM7UUFDcEMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFsRUQsc0JBa0VDO0FBRUQsSUFBWSxJQUdYO0FBSEQsV0FBWSxJQUFJO0lBQ1osaUNBQU8sQ0FBQTtJQUNQLG1DQUFRLENBQUE7QUFDWixDQUFDLEVBSFcsSUFBSSxHQUFKLFlBQUksS0FBSixZQUFJLFFBR2Y7QUFFRCxNQUFhLEdBQUc7SUFTWixZQUFZLEdBQVMsRUFBRSxLQUFZLEVBQUUsR0FBWSxFQUFFLElBQXFCO1FBRnhFLGdCQUFXLEdBQVUsRUFBRSxDQUFDO1FBR3BCLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQWZELGtCQWVDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEJsb2NrRGF0YSwgR3JhcGhEYXRhLCBQaW5EYXRhLCBJUGluRGVzY3JpcHRpb24sIElCbG9ja0Rlc2NyaXB0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgYmxvY2tNYXAgfSBmcm9tICcuLi9ibG9jayc7XG5cbmNvbnN0IGdyYXBoV2Vha01hcDogV2Vha01hcDxHcmFwaERhdGEsIEdyYXBoPiA9IG5ldyBXZWFrTWFwKCk7XG5jb25zdCBibG9ja1dlYWtNYXA6IFdlYWtNYXA8QmxvY2tEYXRhLCBCbG9jaz4gPSBuZXcgV2Vha01hcCgpO1xuY29uc3QgcGluV2Vha01hcDogV2Vha01hcDxQaW5EYXRhLCBQaW4+ID0gbmV3IFdlYWtNYXAoKTtcblxuZXhwb3J0IGNsYXNzIEZvcmdlIHtcbiAgICByb290R3JhcGhEYXRhOiBHcmFwaERhdGE7XG5cbiAgICBjb25zdHJ1Y3RvcihncmFwaDogR3JhcGhEYXRhKSB7XG4gICAgICAgIHRoaXMucm9vdEdyYXBoRGF0YSA9IGdyYXBoO1xuICAgIH1cblxuICAgIGdldCBkZXRhaWxzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yb290R3JhcGhEYXRhLmRldGFpbHM7XG4gICAgfVxuXG4gICAgZ2V0R3JhcGgoKSB7XG4gICAgICAgIGNvbnN0IGdyYXBoRGF0YSA9IHRoaXMucm9vdEdyYXBoRGF0YTtcbiAgICAgICAgaWYgKCFncmFwaFdlYWtNYXAuaGFzKGdyYXBoRGF0YSkpIHtcbiAgICAgICAgICAgIGdyYXBoV2Vha01hcC5zZXQoZ3JhcGhEYXRhLCBuZXcgR3JhcGgoZ3JhcGhEYXRhKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGdyYXBoV2Vha01hcC5nZXQoZ3JhcGhEYXRhKSE7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR3JhcGgge1xuICAgIGdyYXBoOiBHcmFwaERhdGE7XG5cbiAgICBjb25zdHJ1Y3RvcihncmFwaDogR3JhcGhEYXRhKSB7XG4gICAgICAgIHRoaXMuZ3JhcGggPSBncmFwaDtcblxuICAgICAgICAvLyDnlJ/miJDmlbDmja5cbiAgICAgICAgdGhpcy5nZXRCbG9ja01hcCgpO1xuXG4gICAgICAgIC8vIOaVtOeQhiBsaW5lIOaVsOaNrlxuICAgICAgICBjb25zdCBub2RlTWFwID0gdGhpcy5ncmFwaC5ub2RlcztcbiAgICAgICAgY29uc3QgbGluZU1hcCA9IHRoaXMuZ3JhcGgubGluZXM7XG4gICAgICAgIGZvciAoY29uc3QgdXVpZCBpbiBsaW5lTWFwKSB7XG4gICAgICAgICAgICBjb25zdCBsaW5lID0gbGluZU1hcFt1dWlkXTtcblxuICAgICAgICAgICAgY29uc3QgaW5wdXROb2RlID0gbm9kZU1hcFtsaW5lLmlucHV0Lm5vZGVdO1xuICAgICAgICAgICAgY29uc3Qgb3V0cHV0Tm9kZSA9IG5vZGVNYXBbbGluZS5vdXRwdXQubm9kZV07XG5cbiAgICAgICAgICAgIGNvbnN0IGlucHV0QmxvY2sgPSBibG9ja1dlYWtNYXAuZ2V0KGlucHV0Tm9kZSk7XG4gICAgICAgICAgICBjb25zdCBvdXRwdXRCbG9jayA9IGJsb2NrV2Vha01hcC5nZXQob3V0cHV0Tm9kZSk7XG5cbiAgICAgICAgICAgIGlucHV0QmxvY2s/LmdldE91dHB1dFBpbnNMaXN0KCk7XG4gICAgICAgICAgICBvdXRwdXRCbG9jaz8uZ2V0SW5wdXRQaW5zTGlzdCgpO1xuICAgICAgICAgICAgY29uc3QgaW5wdXRQaW4gPSBpbnB1dEJsb2NrPy5nZXRPdXRwdXRQaW4obGluZS5pbnB1dC5wYXJhbSk7XG4gICAgICAgICAgICBjb25zdCBvdXRQaW4gPSBvdXRwdXRCbG9jaz8uZ2V0SW5wdXRQaW4obGluZS5vdXRwdXQucGFyYW0pO1xuXG4gICAgICAgICAgICBpZiAob3V0UGluKSB7XG4gICAgICAgICAgICAgICAgaW5wdXRQaW4hLmNvbm5lY3RQaW5zLnB1c2gob3V0UGluKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpbnB1dFBpbikge1xuICAgICAgICAgICAgICAgIG91dFBpbiEuY29ubmVjdFBpbnMucHVzaChpbnB1dFBpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXQgZGV0YWlscygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGguZGV0YWlscztcbiAgICB9XG5cbiAgICBnZXRTdWJHcmFwaE1hcCgpIHtcbiAgICAgICAgY29uc3QgZGF0YTogeyBbdXVpZDogc3RyaW5nXTogR3JhcGggfSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IHV1aWQgaW4gdGhpcy5ncmFwaC5ncmFwaHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGdyYXBoRGF0YSA9IHRoaXMuZ3JhcGguZ3JhcGhzW3V1aWRdO1xuICAgICAgICAgICAgaWYgKCFncmFwaFdlYWtNYXAuaGFzKGdyYXBoRGF0YSkpIHtcbiAgICAgICAgICAgICAgICBncmFwaFdlYWtNYXAuc2V0KGdyYXBoRGF0YSwgbmV3IEdyYXBoKGdyYXBoRGF0YSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZ3JhcGggPSBncmFwaFdlYWtNYXAuZ2V0KGdyYXBoRGF0YSkhO1xuICAgICAgICAgICAgZGF0YVt1dWlkXSA9IGdyYXBoO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cblxuICAgIGdldEJsb2NrTWFwKCkge1xuICAgICAgICBjb25zdCBkYXRhOiB7IFt1dWlkOiBzdHJpbmddOiBCbG9jayB9ID0ge307XG4gICAgICAgIGZvciAoY29uc3QgdXVpZCBpbiB0aGlzLmdyYXBoLm5vZGVzKSB7XG4gICAgICAgICAgICBjb25zdCBibG9ja0RhdGEgPSB0aGlzLmdyYXBoLm5vZGVzW3V1aWRdO1xuICAgICAgICAgICAgaWYgKCFibG9ja1dlYWtNYXAuaGFzKGJsb2NrRGF0YSkpIHtcbiAgICAgICAgICAgICAgICBibG9ja1dlYWtNYXAuc2V0KGJsb2NrRGF0YSwgbmV3IEJsb2NrKHRoaXMsIHV1aWQsIGJsb2NrRGF0YSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBibG9ja1dlYWtNYXAuZ2V0KGJsb2NrRGF0YSkhO1xuICAgICAgICAgICAgZGF0YVt1dWlkXSA9IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEJsb2NrIHtcbiAgICB1dWlkOiBzdHJpbmc7XG4gICAgZ3JhcGg6IEdyYXBoO1xuICAgIGJsb2NrOiBCbG9ja0RhdGE7XG4gICAgZGVzYz86IElCbG9ja0Rlc2NyaXB0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoZ3JhcGg6IEdyYXBoLCB1dWlkOiBzdHJpbmcsIGJsb2NrOiBCbG9ja0RhdGEpIHtcbiAgICAgICAgdGhpcy5ncmFwaCA9IGdyYXBoO1xuICAgICAgICB0aGlzLnV1aWQgPSB1dWlkO1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIHRoaXMuZGVzYyA9IGJsb2NrTWFwLmdldCh0aGlzLmJsb2NrLnR5cGUpO1xuXG4gICAgICAgIHRoaXMuZ2V0SW5wdXRQaW5zTGlzdCgpO1xuICAgICAgICB0aGlzLmdldE91dHB1dFBpbnNMaXN0KCk7XG4gICAgfVxuXG4gICAgZ2V0IGRldGFpbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2NrLmRldGFpbHM7XG4gICAgfVxuXG4gICAgZ2V0SW5wdXRQaW4odGFnOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgaW5wdXRQaW5zID0gdGhpcy5kZXNjPy5pbnB1dFBpbnMgfHwgW107XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGlucHV0UGlucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBpbkRlc2MgPSBpbnB1dFBpbnNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHBpbkRlc2MudGFnID09PSB0YWcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwaW4gPSB0aGlzLmJsb2NrLmRldGFpbHMuaW5wdXRQaW5zIVtpbmRleF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpbldlYWtNYXAuZ2V0KHBpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRPdXRwdXRQaW4odGFnOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3Qgb3V0cHV0UGlucyA9IHRoaXMuZGVzYz8ub3V0cHV0UGlucyB8fCBbXTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgb3V0cHV0UGlucy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9IG91dHB1dFBpbnNbaW5kZXhdO1xuICAgICAgICAgICAgaWYgKHBpbi50YWcgPT09IHRhZykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHBpbiA9IHRoaXMuYmxvY2suZGV0YWlscy5vdXRwdXRQaW5zIVtpbmRleF07XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBpbldlYWtNYXAuZ2V0KHBpbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRJbnB1dFBpbnNMaXN0KCkge1xuICAgICAgICBjb25zdCBpbnB1dFBpbnMgPSB0aGlzLmJsb2NrLmRldGFpbHMuaW5wdXRQaW5zIHx8IFtdO1xuICAgICAgICBjb25zdCBibG9ja0Rlc2MgPSB0aGlzLmRlc2MgfHwge2lucHV0UGluczogW119O1xuXG4gICAgICAgIHJldHVybiBpbnB1dFBpbnMubWFwKChwaW5EYXRhLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgaWYgKCFwaW5XZWFrTWFwLmhhcyhwaW5EYXRhKSkge1xuICAgICAgICAgICAgICAgIHBpbldlYWtNYXAuc2V0KHBpbkRhdGEsIG5ldyBQaW4oUGluRC5pbnB1dCwgdGhpcywgcGluRGF0YSwgYmxvY2tEZXNjLmlucHV0UGluc1tpbmRleF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBwaW5XZWFrTWFwLmdldChwaW5EYXRhKSE7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldE91dHB1dFBpbnNMaXN0KCkge1xuICAgICAgICBjb25zdCBvdXRwdXRQaW5zID0gdGhpcy5ibG9jay5kZXRhaWxzLm91dHB1dFBpbnMgfHwgW107XG4gICAgICAgIGNvbnN0IGJsb2NrRGVzYyA9IHRoaXMuZGVzYyB8fCB7b3V0cHV0UGluczogW119O1xuICAgICAgICByZXR1cm4gb3V0cHV0UGlucy5tYXAoKHBpbkRhdGEsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBpZiAoIXBpbldlYWtNYXAuaGFzKHBpbkRhdGEpKSB7XG4gICAgICAgICAgICAgICAgcGluV2Vha01hcC5zZXQocGluRGF0YSwgbmV3IFBpbihQaW5ELm91dHB1dCwgdGhpcywgcGluRGF0YSwgYmxvY2tEZXNjLm91dHB1dFBpbnNbaW5kZXhdKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcGluV2Vha01hcC5nZXQocGluRGF0YSkhO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBlbnVtIFBpbkQge1xuICAgICdpbnB1dCcsXG4gICAgJ291dHB1dCcsXG59XG5cbmV4cG9ydCBjbGFzcyBQaW4ge1xuICAgIGJsb2NrOiBCbG9jaztcbiAgICB2YWx1ZTogUGluRGF0YTtcbiAgICBkZXNjOiBJUGluRGVzY3JpcHRpb247XG5cbiAgICB0eXBlOiBQaW5EO1xuXG4gICAgY29ubmVjdFBpbnM6IFBpbltdID0gW107XG5cbiAgICBjb25zdHJ1Y3RvcihkaXI6IFBpbkQsIGJsb2NrOiBCbG9jaywgcGluOiBQaW5EYXRhLCBkZXNjOiBJUGluRGVzY3JpcHRpb24pIHtcbiAgICAgICAgdGhpcy50eXBlID0gZGlyO1xuICAgICAgICB0aGlzLmJsb2NrID0gYmxvY2s7XG4gICAgICAgIHRoaXMuZGVzYyA9IGRlc2M7XG4gICAgICAgIHRoaXMudmFsdWUgPSBwaW47XG4gICAgfVxufVxuXG4vLyBzZXRUaW1lb3V0KCgpID0+IHtcblxuLy8gICAgIGNvbnN0IGZvcmdlID0gbmV3IEZvcmdlKGpzb24pO1xuXG4vLyAgICAgY29uc3QgaWdyYXBoID0gZm9yZ2UuZ2V0R3JhcGgoKTtcbi8vICAgICBjb25zdCBpYmxvY2tNYXAgPSBpZ3JhcGguZ2V0QmxvY2tNYXAoKTtcbi8vICAgICBjb25zdCBpaW5wdXRMaXN0ID0gaWJsb2NrTWFwW09iamVjdC5rZXlzKGlibG9ja01hcClbMF1dLmdldElucHV0UGluc0xpc3QoKTtcbi8vICAgICBpaW5wdXRMaXN0O1xuXG4vLyAgICAgY29uc3QgY29ubmVjdFBpbiA9IGlpbnB1dExpc3RbMF0uY29ubmVjdFBpbjtcblxuLy8gfSwgMjAwMCk7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/pin.js b/extensions/shader-graph/dist/block-forge/pin.js new file mode 100644 index 0000000..6cc585b --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/pin.js @@ -0,0 +1,256 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.declarePin = exports.generateStyle = exports.generateInputPinHTML = exports.generateOutputPinHTML = exports.Pin = exports.PinAction = void 0; +const structures_1 = require("@itharbors/structures"); +const TYPE = {}; +class PinAction extends structures_1.Action { + // details: D & PinActionDetail; + constructor(pin, details) { + const cDetails = details; + cDetails.blockName = pin.pathData.blockName; + cDetails.index = pin.pathData.index; + super(cDetails); + // this.details = cDetails; + this.pin = pin; + } + exec(params) { + } + revertAction() { + return new PinAction(this.pin, {}); + } +} +exports.PinAction = PinAction; +class Pin { + constructor() { + this.color = 'white'; + this.line = ''; + this.style = ''; + this.pathData = { + blockName: '', + index: 0, + }; + this.refs = {}; + } + init(details, desc, blockName, index) { + this.details = details; + this.pathData.blockName = blockName; + this.pathData.index = index; + this.desc = desc; + } + exec(action) { + if (!this.$root) { + return; + } + const nodeRoot = this.$root.getRootNode(); + if (nodeRoot) { + nodeRoot.host.dispatch('dirty', { + detail: { + action, + }, + }); + } + } + onInit() { + } + onUpdate() { + } +} +exports.Pin = Pin; +Pin.type = 'unknown'; +// todo 考虑数据冲突 +function generateIcon(pin) { + if (pin.icon) { + return /*html*/ ``; + } + return ''; +} +function generateTitle(pin) { + if (pin.name) { + return /*html*/ `${pin.name}`; + } + return ''; +} +/** + * 生成 output pin 的 HTML + * @param pin + * @param details + * @returns + */ +function generateOutputPinHTML(pin, details) { + const type = pin.dataType; + const define = TYPE[type] || TYPE['unknown']; + const pinI = new define(); + const color = pinI.color ? `--param-color: ${pinI.color};` : ''; + const $pin = document.createElement('div'); + $pin.classList.add('pin'); + $pin.classList.add('out'); + $pin.classList.add(type + ''); + // @ts-ignore + $pin.__pin = pinI; + $pin.innerHTML = /*html*/ `${pinI.style ? `` : ''} +
+
+ ${generateTitle(pin)} + ${generateIcon(pin)} +
+
+ + `; + const $refList = $pin.querySelectorAll('[ref]'); + Array.prototype.forEach.call($refList, ($ref) => { + const ref = $ref.getAttribute('ref'); + if (ref) { + pinI.refs[ref] = $ref; + } + }); + pinI.details = details; + // pinI.onInit(); + // pinI.onUpdate(details); + return $pin; +} +exports.generateOutputPinHTML = generateOutputPinHTML; +/** + * 生成 input pin 的 HTML + * @param pin + * @param pinData + * @param blockName + * @param lineMap + * @returns + */ +function generateInputPinHTML(pin, pinDataList, index, blockName, lineMap) { + const type = pin.dataType; + const define = TYPE[type] || TYPE['unknown']; + const pinI = new define(); + const color = pinI.color ? `--param-color: ${pinI.color};` : ''; + let connected = false; + for (const id in lineMap) { + const line = lineMap[id]; + if (line && + line.output.node === blockName && + line.output.param === pin.tag) { + connected = true; + } + } + const $pin = document.createElement('div'); + $pin.classList.add('pin'); + $pin.classList.add('in'); + $pin.classList.add(type + ''); + // @ts-ignore + $pin.__pin = pinI; + $pin.innerHTML = /*html*/ `${pinI.style ? `` : ''} +
+
+ ${generateIcon(pin)} + ${generateTitle(pin)} +
+ ${pinI.contentSlot ? `
${pinI.contentSlot}
` : ''} +
+ + ${pinI.childrenSlot ? `
${pinI.childrenSlot.map(child => '
' + child + '
').join('')}
` : ''} + `; + const $refList = $pin.querySelectorAll('[ref]'); + Array.prototype.forEach.call($refList, ($ref) => { + const ref = $ref.getAttribute('ref'); + if (ref) { + pinI.refs[ref] = $ref; + } + }); + const pinData = pinDataList[index]; + pinI.init(pinData, pin, blockName, index); + pinI.$root = $pin; + pinI.onInit(); + pinI.onUpdate(); + return $pin; +} +exports.generateInputPinHTML = generateInputPinHTML; +/** + * 生成 pin 的样式代码 + * @param config + * @returns + */ +function generateStyle(blockDesc) { + return /*css*/ ` +.pin { + --param-color: #fff; + --line—margin: 6px; + + line-height: calc(var(--header-height) - 4px); + margin: var(--line—margin) 10px 0 10px; + position: relative; +} +.pin:last-child { + padding-bottom: var(--line—margin); +} +.pin.in { + +} +.pin.out { + text-align: right; +} +.pin.in > .point[hidden], .pin.out > .point[hidden] { + display: none; +} + +.pin.in > .point, .pin.out > .point { + display: block; + border: 1px solid var(--param-color); + transform: rotate(45deg); + width: 7px; + height: 7px; + position: absolute; + top: 6px; + transition: all 0.2s; + background: var(--background-color); + z-index: 1; + cursor: pointer; +} +.pin.in > .point { + left: -14px; +} +.pin.out > .point { + right: -14px; +} +.pin.in > .point:hover, +.pin.in > .point[active], +.pin.out > .point:hover, +.pin.out > .point[active] +{ + background: var(--param-color); +} + +.pin > .body { + display: flex; +} +.pin > .body > .name { + flex: 1; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.pin > .body > .name > .name { + padding: 0 6px; +} + +.pin > .body > .slot-content { + flex: 1; + display: flex; + width: 120px; +} + +.pin > .children, .pin > .children > div { + margin-top: calc(var(--line—margin) * 0.5); +} + +.pin > .body > .slot-content[hidden], .pin > .children[hidden] { + display: none; +} + `; +} +exports.generateStyle = generateStyle; +function declarePin(define) { + const type = define.type; + TYPE[type] = define; +} +exports.declarePin = declarePin; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jsb2NrLWZvcmdlL3Bpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZLENBQUM7OztBQWFiLHNEQUcrQjtBQU0vQixNQUFNLElBQUksR0FFTixFQUFFLENBQUM7QUFPUCxNQUFhLFNBQXdCLFNBQVEsbUJBQTJCO0lBSXBFLGdDQUFnQztJQUVoQyxZQUFZLEdBQVEsRUFBRSxPQUFVO1FBQzVCLE1BQU0sUUFBUSxHQUFHLE9BQThCLENBQUM7UUFDaEQsUUFBUSxDQUFDLFNBQVMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztRQUM1QyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ3BDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQiwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUVKO0lBRUQsQ0FBQztJQUVELFlBQVk7UUFDUixPQUFPLElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNKO0FBeEJELDhCQXdCQztBQUVELE1BQWEsR0FBRztJQUFoQjtRQUdJLFVBQUssR0FBRyxPQUFPLENBQUM7UUFDaEIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLFVBQUssR0FBRyxFQUFFLENBQUM7UUFHWCxhQUFRLEdBQUc7WUFDUCxTQUFTLEVBQUUsRUFBRTtZQUNiLEtBQUssRUFBRSxDQUFDO1NBQ1gsQ0FBQztRQU9GLFNBQUksR0FBbUMsRUFBRSxDQUFDO0lBK0I5QyxDQUFDO0lBNUJHLElBQUksQ0FBQyxPQUFVLEVBQUUsSUFBcUIsRUFBRSxTQUFpQixFQUFFLEtBQWE7UUFDcEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFB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QixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUM1QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JDLElBQUksR0FBRyxFQUFFO1lBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUVuQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUNkLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQixPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBckRELG9EQXFEQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixhQUFhLENBQUMsU0FBNEI7SUFDdEQsT0FBTyxPQUFPLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7S0E0RWIsQ0FBQztBQUNOLENBQUM7QUE5RUQsc0NBOEVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLE1BQWtDO0lBQ3pELE1BQU0sSUFBSSxHQUFJLE1BQWdDLENBQUMsSUFBSSxDQUFDO0lBQ3BELElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDeEIsQ0FBQztBQUhELGdDQUdDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFBpbiDlvJXohJrlhoXnva7nmoTnsbvlnotcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IExpbmVJbmZvIH0gZnJvbSAnQGl0aGFyYm9ycy91aS1ncmFwaCc7XG5pbXBvcnQgdHlwZSB7IEJhc2VFbGVtZW50IH0gZnJvbSAnQGl0aGFyYm9ycy91aS1jb3JlJztcbmltcG9ydCB0eXBlIHsgSVBpbkRlc2NyaXB0aW9uLCBJQmxvY2tEZXNjcmlwdGlvbiwgUGluRGF0YSB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHtcbiAgICBIVE1MR3JhcGhGb3JnZUVsZW1lbnQsXG59IGZyb20gJy4vZm9yZ2UnO1xuXG5pbXBvcnQge1xuICAgIEFjdGlvbixcbiAgICBBY3Rpb25MaXN0LFxufSBmcm9tICdAaXRoYXJib3JzL3N0cnVjdHVyZXMnO1xuXG5leHBvcnQgdHlwZSBEaXJ0eURldGFpbCA9IHtcbiAgICBhY3Rpb24/OiBBY3Rpb247XG59O1xuXG5jb25zdCBUWVBFOiB7XG4gICAgW2tleTogc3RyaW5nXTogbmV3KC4uLmFyZ3M6IGFueVtdKSA9PiBQaW5cbn0gPSB7fTtcblxudHlwZSBQaW5BY3Rpb25EZXRhaWwgPSB7XG4gICAgYmxvY2tOYW1lOiBzdHJpbmc7XG4gICAgaW5kZXg6IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjbGFzcyBQaW5BY3Rpb248RCBleHRlbmRzIHt9PiBleHRlbmRzIEFjdGlvbjxEICYgUGluQWN0aW9uRGV0YWlsPiB7XG5cbiAgICBwaW46IFBpbjtcblxuICAgIC8vIGRldGFpbHM6IEQgJiBQaW5BY3Rpb25EZXRhaWw7XG5cbiAgICBjb25zdHJ1Y3RvcihwaW46IFBpbiwgZGV0YWlsczogRCkge1xuICAgICAgICBjb25zdCBjRGV0YWlscyA9IGRldGFpbHMgYXMgRCAmIFBpbkFjdGlvbkRldGFpbDtcbiAgICAgICAgY0RldGFpbHMuYmxvY2tOYW1lID0gcGluLnBhdGhEYXRhLmJsb2NrTmFtZTtcbiAgICAgICAgY0RldGFpbHMuaW5kZXggPSBwaW4ucGF0aERhdGEuaW5kZXg7XG4gICAgICAgIHN1cGVyKGNEZXRhaWxzKTtcbiAgICAgICAgLy8gdGhpcy5kZXRhaWxzID0gY0RldGFpbHM7XG4gICAgICAgIHRoaXMucGluID0gcGluO1xuICAgIH1cblxuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG5cbiAgICB9XG5cbiAgICByZXZlcnRBY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBuZXcgUGluQWN0aW9uKHRoaXMucGluLCB7fSk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGluPEQgPSB7IFtrZXk6IHN0cmluZ106IGFueSB9PiB7XG4gICAgc3RhdGljIHR5cGUgPSAndW5rbm93bic7XG5cbiAgICBjb2xvciA9ICd3aGl0ZSc7XG4gICAgbGluZSA9ICcnO1xuICAgIHN0eWxlID0gJyc7XG4gICAgZGV0YWlscz86IEQ7XG5cbiAgICBwYXRoRGF0YSA9IHtcbiAgICAgICAgYmxvY2tOYW1lOiAnJyxcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgfTtcblxuICAgIGRlc2MhOiBJUGluRGVzY3JpcHRpb247XG5cbiAgICBjb250ZW50U2xvdD86IHN0cmluZztcbiAgICBjaGlsZHJlblNsb3Q/OiBzdHJpbmdbXTtcblxuICAgIHJlZnM6IHsgW2tleTogc3RyaW5nXTogSFRNTEVsZW1lbnQgfSA9IHt9O1xuICAgICRyb290PzogSFRNTEVsZW1lbnQ7XG5cbiAgICBpbml0KGRldGFpbHM6IEQsIGRlc2M6IElQaW5EZXNjcmlwdGlvbiwgYmxvY2tOYW1lOiBzdHJpbmcsIGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5kZXRhaWxzID0gZGV0YWlscztcbiAgICAgICAgdGhpcy5wYXRoRGF0YS5ibG9ja05hbWUgPSBibG9ja05hbWU7XG4gICAgICAgIHRoaXMucGF0aERhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5kZXNjID0gZGVzYztcbiAgICB9XG5cbiAgICBleGVjKGFjdGlvbjogQWN0aW9uKSB7XG4gICAgICAgIGlmICghdGhpcy4kcm9vdCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGVSb290ID0gdGhpcy4kcm9vdC5nZXRSb290Tm9kZSgpIGFzIFNoYWRvd1Jvb3Q7XG4gICAgICAgIGlmIChub2RlUm9vdCkge1xuICAgICAgICAgICAgKG5vZGVSb290Lmhvc3QgYXMgQmFzZUVsZW1lbnQpLmRpc3BhdGNoKCdkaXJ0eScsIHtcbiAgICAgICAgICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uSW5pdCgpIHtcblxuICAgIH1cblxuICAgIG9uVXBkYXRlKCkge1xuXG4gICAgfVxufVxuXG4vLyB0b2RvIOiAg+iZkeaVsOaNruWGsueqgVxuXG5mdW5jdGlvbiBnZW5lcmF0ZUljb24ocGluOiBJUGluRGVzY3JpcHRpb24pIHtcbiAgICBpZiAocGluLmljb24pIHtcbiAgICAgICAgcmV0dXJuIC8qaHRtbCovYDx1aS1pY29uIHZhbHVlPVwiJHtwaW4uaWNvbn1cIj48L3VpLWljb24+YDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBnZW5lcmF0ZVRpdGxlKHBpbjogSVBpbkRlc2NyaXB0aW9uKSB7XG4gICAgaWYgKHBpbi5uYW1lKSB7XG4gICAgICAgIHJldHVybiAvKmh0bWwqL2A8c3BhbiBjbGFzcz1cIm5hbWVcIiB0aXRsZT1cIiR7cGluLm5hbWV9XCI+JHtwaW4ubmFtZX08L3NwYW4+YDtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIOeUn+aIkCBvdXRwdXQgcGluIOeahCBIVE1MXG4gKiBAcGFyYW0gcGluXG4gKiBAcGFyYW0gZGV0YWlsc1xuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlT3V0cHV0UGluSFRNTChwaW46IElQaW5EZXNjcmlwdGlvbiwgZGV0YWlsczogeyB2YWx1ZTogYW55IH0pIHtcbiAgICBjb25zdCB0eXBlID0gcGluLmRhdGFUeXBlIGFzIGtleW9mIHR5cGVvZiBUWVBFO1xuICAgIGNvbnN0IGRlZmluZSA9IFRZUEVbdHlwZV0gfHwgVFlQRVsndW5rbm93biddO1xuICAgIGNvbnN0IHBpbkkgPSBuZXcgZGVmaW5lKCk7XG4gICAgY29uc3QgY29sb3IgPSBwaW5JLmNvbG9yID8gYC0tcGFyYW0tY29sb3I6ICR7cGluSS5jb2xvcn07YCA6ICcnO1xuXG4gICAgY29uc3QgJHBpbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICRwaW4uY2xhc3NMaXN0LmFkZCgncGluJyk7XG4gICAgJHBpbi5jbGFzc0xpc3QuYWRkKCdvdXQnKTtcbiAgICAkcGluLmNsYXNzTGlzdC5hZGQodHlwZSArICcnKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAkcGluLl9fcGluID0gcGluSTtcblxuICAgICRwaW4uaW5uZXJIVE1MID0gLypodG1sKi9gJHtwaW5JLnN0eWxlID8gYDxzdHlsZT4ke3Bpbkkuc3R5bGV9PC9zdHlsZT5gIDogJyd9XG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgICAgICR7Z2VuZXJhdGVUaXRsZShwaW4pfVxuICAgICAgICAgICAgJHtnZW5lcmF0ZUljb24ocGluKX1cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8di1ncmFwaC1ub2RlLXBhcmFtICR7cGluLmhpZGVQaW4gPyAnaGlkZGVuJyA6ICcnfSBzdHlsZT1cIiR7Y29sb3J9XCIgY2xhc3M9XCJwb2ludFwiIGRpcmVjdGlvbj1cIm91dHB1dFwiIG5hbWU9XCIke3Bpbi50YWd9XCIgdHlwZT1cIiR7dHlwZX1cIiByb2xlPVwicmlnaHRcIj48L3YtZ3JhcGgtbm9kZS1wYXJhbT5gO1xuXG4gICAgY29uc3QgJHJlZkxpc3QgPSAkcGluLnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyZWZdJyk7XG4gICAgQXJyYXkucHJvdG90eXBlLmZvckVhY2guY2FsbCgkcmVmTGlzdCwgKCRyZWYpID0+IHtcbiAgICAgICAgY29uc3QgcmVmID0gJHJlZi5nZXRBdHRyaWJ1dGUoJ3JlZicpO1xuICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICBwaW5JLnJlZnNbcmVmXSA9ICRyZWY7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHBpbkkuZGV0YWlscyA9IGRldGFpbHM7XG4gICAgLy8gcGluSS5vbkluaXQoKTtcbiAgICAvLyBwaW5JLm9uVXBkYXRlKGRldGFpbHMpO1xuICAgIHJldHVybiAkcGluO1xufVxuXG4vKipcbiAqIOeUn+aIkCBpbnB1dCBwaW4g55qEIEhUTUxcbiAqIEBwYXJhbSBwaW5cbiAqIEBwYXJhbSBwaW5EYXRhXG4gKiBAcGFyYW0gYmxvY2tOYW1lXG4gKiBAcGFyYW0gbGluZU1hcFxuICogQHJldHVybnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlSW5wdXRQaW5IVE1MKHBpbjogSVBpbkRlc2NyaXB0aW9uLCBwaW5EYXRhTGlzdDogUGluRGF0YVtdLCBpbmRleDogbnVtYmVyLCBibG9ja05hbWU6IHN0cmluZywgbGluZU1hcDogeyBba2V5OiBzdHJpbmddOiBMaW5lSW5mbyB8IHVuZGVmaW5lZCB9KSB7XG4gICAgY29uc3QgdHlwZSA9IHBpbi5kYXRhVHlwZSBhcyBrZXlvZiB0eXBlb2YgVFlQRTtcbiAgICBjb25zdCBkZWZpbmUgPSBUWVBFW3R5cGVdIHx8IFRZUEVbJ3Vua25vd24nXTtcbiAgICBjb25zdCBwaW5JID0gbmV3IGRlZmluZSgpO1xuICAgIGNvbnN0IGNvbG9yID0gcGluSS5jb2xvciA/IGAtLXBhcmFtLWNvbG9yOiAke3BpbkkuY29sb3J9O2AgOiAnJztcblxuICAgIGxldCBjb25uZWN0ZWQgPSBmYWxzZTtcbiAgICBmb3IgKGNvbnN0IGlkIGluIGxpbmVNYXApIHtcbiAgICAgICAgY29uc3QgbGluZSA9IGxpbmVNYXBbaWRdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBsaW5lICYmXG4gICAgICAgICAgICBsaW5lLm91dHB1dC5ub2RlID09PSBibG9ja05hbWUgJiZcbiAgICAgICAgICAgIGxpbmUub3V0cHV0LnBhcmFtID09PSBwaW4udGFnXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29ubmVjdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0ICRwaW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAkcGluLmNsYXNzTGlzdC5hZGQoJ3BpbicpO1xuICAgICRwaW4uY2xhc3NMaXN0LmFkZCgnaW4nKTtcbiAgICAkcGluLmNsYXNzTGlzdC5hZGQodHlwZSArICcnKTtcblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICAkcGluLl9fcGluID0gcGluSTtcblxuICAgICRwaW4uaW5uZXJIVE1MID0gLypodG1sKi9gJHtwaW5JLnN0eWxlID8gYDxzdHlsZT4ke3Bpbkkuc3R5bGV9PC9zdHlsZT5gIDogJyd9XG4gICAgPGRpdiBjbGFzcz1cImJvZHlcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm5hbWVcIj5cbiAgICAgICAgICAgICR7Z2VuZXJhdGVJY29uKHBpbil9XG4gICAgICAgICAgICAke2dlbmVyYXRlVGl0bGUocGluKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgICR7cGluSS5jb250ZW50U2xvdCA/IGA8ZGl2IGNsYXNzPVwic2xvdC1jb250ZW50XCIgJHtjb25uZWN0ZWQgPyAnaGlkZGVuJyA6ICcnfT4ke3BpbkkuY29udGVudFNsb3R9PC9kaXY+YCA6ICcnfVxuICAgIDwvZGl2PlxuXG4gICAgJHtwaW5JLmNoaWxkcmVuU2xvdCA/IGA8ZGl2IGNsYXNzPVwiY2hpbGRyZW5cIiAke2Nvbm5lY3RlZCA/ICdoaWRkZW4nIDogJyd9PiR7cGluSS5jaGlsZHJlblNsb3QubWFwKGNoaWxkID0+ICc8ZGl2IGNsYXNzPVwic2xvdC1jaGlsZHJlblwiPicgKyBjaGlsZCArICc8L2Rpdj4nKS5qb2luKCcnKX08L2Rpdj5gIDogJyd9XG4gICAgPHYtZ3JhcGgtbm9kZS1wYXJhbSAke3Bpbi5oaWRlUGluID8gJ2hpZGRlbicgOiAnJ30gc3R5bGU9XCIke2NvbG9yfVwiIGNsYXNzPVwicG9pbnRcIiBkaXJlY3Rpb249XCJpbnB1dFwiIG5hbWU9XCIke3Bpbi50YWd9XCIgdHlwZT1cIiR7dHlwZX1cIiByb2xlPVwibGVmdFwiPjwvdi1ncmFwaC1ub2RlLXBhcmFtPmA7XG5cbiAgICBjb25zdCAkcmVmTGlzdCA9ICRwaW4ucXVlcnlTZWxlY3RvckFsbCgnW3JlZl0nKTtcbiAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKCRyZWZMaXN0LCAoJHJlZikgPT4ge1xuICAgICAgICBjb25zdCByZWYgPSAkcmVmLmdldEF0dHJpYnV0ZSgncmVmJyk7XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgIHBpbkkucmVmc1tyZWZdID0gJHJlZjtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgcGluRGF0YSA9IHBpbkRhdGFMaXN0W2luZGV4XTtcblxuICAgIHBpbkkuaW5pdChwaW5EYXRhLCBwaW4sIGJsb2NrTmFtZSwgaW5kZXgpO1xuICAgIHBpbkkuJHJvb3QgPSAkcGluO1xuICAgIHBpbkkub25Jbml0KCk7XG4gICAgcGluSS5vblVwZGF0ZSgpO1xuICAgIHJldHVybiAkcGluO1xufVxuXG4vKipcbiAqIOeUn+aIkCBwaW4g55qE5qC35byP5Luj56CBXG4gKiBAcGFyYW0gY29uZmlnXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTdHlsZShibG9ja0Rlc2M6IElCbG9ja0Rlc2NyaXB0aW9uKSB7XG4gICAgcmV0dXJuIC8qY3NzKi9gXG4ucGluIHtcbiAgICAtLXBhcmFtLWNvbG9yOiAjZmZmO1xuICAgIC0tbGluZeKAlG1hcmdpbjogNnB4O1xuXG4gICAgbGluZS1oZWlnaHQ6IGNhbGModmFyKC0taGVhZGVyLWhlaWdodCkgLSA0cHgpO1xuICAgIG1hcmdpbjogdmFyKC0tbGluZeKAlG1hcmdpbikgMTBweCAwIDEwcHg7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLnBpbjpsYXN0LWNoaWxkIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogdmFyKC0tbGluZeKAlG1hcmdpbik7XG59XG4ucGluLmluIHtcblxufVxuLnBpbi5vdXQge1xuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLnBpbi5pbiA+IC5wb2ludFtoaWRkZW5dLCAucGluLm91dCA+IC5wb2ludFtoaWRkZW5dIHtcbiAgICBkaXNwbGF5OiBub25lO1xufVxuXG4ucGluLmluID4gLnBvaW50LCAucGluLm91dCA+IC5wb2ludCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcGFyYW0tY29sb3IpO1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDQ1ZGVnKTtcbiAgICB3aWR0aDogN3B4O1xuICAgIGhlaWdodDogN3B4O1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDZweDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycztcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcbiAgICB6LWluZGV4OiAxO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5waW4uaW4gPiAucG9pbnQge1xuICAgIGxlZnQ6IC0xNHB4O1xufVxuLnBpbi5vdXQgPiAucG9pbnQge1xuICAgIHJpZ2h0OiAtMTRweDtcbn1cbi5waW4uaW4gPiAucG9pbnQ6aG92ZXIsXG4ucGluLmluID4gLnBvaW50W2FjdGl2ZV0sXG4ucGluLm91dCA+IC5wb2ludDpob3Zlcixcbi5waW4ub3V0ID4gLnBvaW50W2FjdGl2ZV1cbntcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYXJhbS1jb2xvcik7XG59XG5cbi5waW4gPiAuYm9keSB7XG4gICAgZGlzcGxheTogZmxleDtcbn1cbi5waW4gPiAuYm9keSA+IC5uYW1lIHtcbiAgICBmbGV4OiAxO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cblxuLnBpbiA+IC5ib2R5ID4gLm5hbWUgPiAubmFtZSB7XG4gICAgcGFkZGluZzogMCA2cHg7XG59XG5cbi5waW4gPiAuYm9keSA+IC5zbG90LWNvbnRlbnQge1xuICAgIGZsZXg6IDE7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICB3aWR0aDogMTIwcHg7XG59XG5cbi5waW4gPiAuY2hpbGRyZW4sIC5waW4gPiAuY2hpbGRyZW4gPiBkaXYge1xuICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tbGluZeKAlG1hcmdpbikgKiAwLjUpO1xufVxuXG4ucGluID4gLmJvZHkgPiAuc2xvdC1jb250ZW50W2hpZGRlbl0sIC5waW4gPiAuY2hpbGRyZW5baGlkZGVuXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cbiAgICBgO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVjbGFyZVBpbihkZWZpbmU6IG5ldyguLi5hcmdzOiBhbnlbXSkgPT4gUGluKSB7XG4gICAgY29uc3QgdHlwZSA9IChkZWZpbmUgYXMgdW5rbm93biBhcyB0eXBlb2YgUGluKS50eXBlO1xuICAgIFRZUEVbdHlwZV0gPSBkZWZpbmU7XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/undo.js b/extensions/shader-graph/dist/block-forge/undo.js new file mode 100644 index 0000000..6580675 --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/undo.js @@ -0,0 +1,93 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.removeSubGraph = exports.addSubGraph = exports.exitSubGraph = exports.enterSubGraph = exports.RemoveLineAction = exports.AddLineAction = exports.RemoveBlockAction = exports.AddBlockAction = exports.BlockPositionAction = exports.setCurrentGraph = exports.zoomToFit = exports.setGraphInfo = exports.setRootGraph = void 0; +const structures_1 = require("@itharbors/structures"); +// --------- +function setRootGraph() { +} +exports.setRootGraph = setRootGraph; +function setGraphInfo() { +} +exports.setGraphInfo = setGraphInfo; +function zoomToFit() { +} +exports.zoomToFit = zoomToFit; +function setCurrentGraph() { +} +exports.setCurrentGraph = setCurrentGraph; +// --------- +class BlockPositionAction extends structures_1.Action { + exec(params) { + const $node = params.forge.getBlockElement(this.detail.blockName); + if ($node) { + $node.setProperty('position', this.detail.target); + } + } + revertAction() { + return new BlockPositionAction({ + blockName: this.detail.blockName, + source: this.detail.target, + target: this.detail.source, + }); + } +} +exports.BlockPositionAction = BlockPositionAction; +class AddBlockAction extends structures_1.Action { + exec(params) { + this.detail.id = params.forge.$graph.addNode(this.detail.block, this.detail.id); + } + revertAction() { + return new RemoveBlockAction({ + id: this.detail.id, + }, this); + } +} +exports.AddBlockAction = AddBlockAction; +class RemoveBlockAction extends structures_1.Action { + exec(params) { + this.blockData = params.forge.$graph.removeNode(this.detail.id); + } + revertAction() { + return new AddBlockAction({ + block: this.blockData, + id: this.detail.id, + }, this); + } +} +exports.RemoveBlockAction = RemoveBlockAction; +class AddLineAction extends structures_1.Action { + exec(params) { + this.detail.id = params.forge.$graph.addLine(this.detail.line, this.detail.id); + } + revertAction() { + return new RemoveLineAction({ + id: this.detail.id, + }, this); + } +} +exports.AddLineAction = AddLineAction; +class RemoveLineAction extends structures_1.Action { + exec(params) { + this.lineData = params.forge.$graph.removeLine(this.detail.id); + } + revertAction() { + return new AddLineAction({ + line: this.lineData, + id: this.detail.id, + }, this); + } +} +exports.RemoveLineAction = RemoveLineAction; +function enterSubGraph() { +} +exports.enterSubGraph = enterSubGraph; +function exitSubGraph() { +} +exports.exitSubGraph = exitSubGraph; +function addSubGraph() { +} +exports.addSubGraph = addSubGraph; +function removeSubGraph() { +} +exports.removeSubGraph = removeSubGraph; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5kby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ibG9jay1mb3JnZS91bmRvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBS2Isc0RBRytCO0FBRS9CLFlBQVk7QUFDWixTQUFnQixZQUFZO0FBRTVCLENBQUM7QUFGRCxvQ0FFQztBQUVELFNBQWdCLFlBQVk7QUFFNUIsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsU0FBUztBQUV6QixDQUFDO0FBRkQsOEJBRUM7QUFFRCxTQUFnQixlQUFlO0FBRS9CLENBQUM7QUFGRCwwQ0FFQztBQUVELFlBQVk7QUFDWixNQUFhLG1CQUFvQixTQUFRLG1CQUl2QztJQUNFLElBQUksQ0FBQyxNQUVKO1FBQ0csTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNsRSxJQUFJLEtBQUssRUFBRTtZQUNQLEtBQUssQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDckQ7SUFDTCxDQUFDO0lBQ0QsWUFBWTtRQUNSLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQztZQUMzQixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1lBQ2hDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTTtTQUM3QixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFwQkQsa0RBb0JDO0FBRUQsTUFBYSxjQUFlLFNBQVEsbUJBR2xDO0lBQ0UsSUFBSSxDQUFDLE1BRUo7UUFDRyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNwRixDQUFDO0lBQ0QsWUFBWTtRQUNSLE9BQU8sSUFBSSxpQkFBaUIsQ0FBQztZQUN6QixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFHO1NBQ3RCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0o7QUFkRCx3Q0FjQztBQUVELE1BQWEsaUJBQWtCLFNBQVEsbUJBRXJDO0lBRUUsSUFBSSxDQUFDLE1BRUo7UUFDRyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7SUFDRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLGNBQWMsQ0FBQztZQUN0QixLQUFLLEVBQUUsSUFBSSxDQUFDLFNBQVU7WUFDdEIsRUFBRSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtTQUNyQixFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNKO0FBZkQsOENBZUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxtQkFHakM7SUFDRSxJQUFJLENBQUMsTUFFSjtRQUNHLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25GLENBQUM7SUFDRCxZQUFZO1FBQ1IsT0FBTyxJQUFJLGdCQUFnQixDQUFDO1lBQ3hCLEVBQUUsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUc7U0FDdEIsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNiLENBQUM7Q0FDSjtBQWRELHNDQWNDO0FBRUQsTUFBYSxnQkFBaUIsU0FBUSxtQkFFcEM7SUFFRSxJQUFJLENBQUMsTUFFSjtRQUNHLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFhLENBQUM7SUFDL0UsQ0FBQztJQUNELFlBQVk7UUFDUixPQUFPLElBQUksYUFBYSxDQUFDO1lBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUztZQUNwQixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1NBQ3JCLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDYixDQUFDO0NBQ0o7QUFmRCw0Q0FlQztBQUVELFNBQWdCLGFBQWE7QUFFN0IsQ0FBQztBQUZELHNDQUVDO0FBQ0QsU0FBZ0IsWUFBWTtBQUU1QixDQUFDO0FBRkQsb0NBRUM7QUFDRCxTQUFnQixXQUFXO0FBRTNCLENBQUM7QUFGRCxrQ0FFQztBQUNELFNBQWdCLGNBQWM7QUFFOUIsQ0FBQztBQUZELHdDQUVDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgdHlwZSB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4vZm9yZ2UnO1xuaW1wb3J0IHR5cGUgeyBHcmFwaERhdGEsIEJsb2NrRGF0YSwgTGluZURhdGEsIElHcmFwaERlZmluZUV2ZW50IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5pbXBvcnQge1xuICAgIEFjdGlvbixcbiAgICBBY3Rpb25RdWV1ZSxcbn0gZnJvbSAnQGl0aGFyYm9ycy9zdHJ1Y3R1cmVzJztcblxuLy8gLS0tLS0tLS0tXG5leHBvcnQgZnVuY3Rpb24gc2V0Um9vdEdyYXBoKCkge1xuXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRHcmFwaEluZm8oKSB7XG5cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHpvb21Ub0ZpdCgpIHtcblxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0Q3VycmVudEdyYXBoKCkge1xuXG59XG5cbi8vIC0tLS0tLS0tLVxuZXhwb3J0IGNsYXNzIEJsb2NrUG9zaXRpb25BY3Rpb24gZXh0ZW5kcyBBY3Rpb248e1xuICAgIGJsb2NrTmFtZTogc3RyaW5nO1xuICAgIHNvdXJjZTogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9LFxuICAgIHRhcmdldDogeyB4OiBudW1iZXIsIHk6IG51bWJlciB9LFxufT4ge1xuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0ICRub2RlID0gcGFyYW1zLmZvcmdlLmdldEJsb2NrRWxlbWVudCh0aGlzLmRldGFpbC5ibG9ja05hbWUpO1xuICAgICAgICBpZiAoJG5vZGUpIHtcbiAgICAgICAgICAgICRub2RlLnNldFByb3BlcnR5KCdwb3NpdGlvbicsIHRoaXMuZGV0YWlsLnRhcmdldCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV2ZXJ0QWN0aW9uKCkge1xuICAgICAgICByZXR1cm4gbmV3IEJsb2NrUG9zaXRpb25BY3Rpb24oe1xuICAgICAgICAgICAgYmxvY2tOYW1lOiB0aGlzLmRldGFpbC5ibG9ja05hbWUsXG4gICAgICAgICAgICBzb3VyY2U6IHRoaXMuZGV0YWlsLnRhcmdldCxcbiAgICAgICAgICAgIHRhcmdldDogdGhpcy5kZXRhaWwuc291cmNlLFxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRCbG9ja0FjdGlvbiBleHRlbmRzIEFjdGlvbjx7XG4gICAgYmxvY2s6IEJsb2NrRGF0YTtcbiAgICBpZD86IHN0cmluZztcbn0+IHtcbiAgICBleGVjKHBhcmFtczoge1xuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50XG4gICAgfSkge1xuICAgICAgICB0aGlzLmRldGFpbC5pZCA9IHBhcmFtcy5mb3JnZS4kZ3JhcGguYWRkTm9kZSh0aGlzLmRldGFpbC5ibG9jaywgdGhpcy5kZXRhaWwuaWQpO1xuICAgIH1cbiAgICByZXZlcnRBY3Rpb24oKTogUmVtb3ZlQmxvY2tBY3Rpb24ge1xuICAgICAgICByZXR1cm4gbmV3IFJlbW92ZUJsb2NrQWN0aW9uKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmRldGFpbC5pZCEsXG4gICAgICAgIH0sIHRoaXMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW92ZUJsb2NrQWN0aW9uIGV4dGVuZHMgQWN0aW9uPHtcbiAgICBpZDogc3RyaW5nO1xufT4ge1xuICAgIHByaXZhdGUgYmxvY2tEYXRhPzogQmxvY2tEYXRhO1xuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIHRoaXMuYmxvY2tEYXRhID0gcGFyYW1zLmZvcmdlLiRncmFwaC5yZW1vdmVOb2RlKHRoaXMuZGV0YWlsLmlkKTtcbiAgICB9XG4gICAgcmV2ZXJ0QWN0aW9uKCk6IEFkZEJsb2NrQWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBZGRCbG9ja0FjdGlvbih7XG4gICAgICAgICAgICBibG9jazogdGhpcy5ibG9ja0RhdGEhLFxuICAgICAgICAgICAgaWQ6IHRoaXMuZGV0YWlsLmlkLFxuICAgICAgICB9LCB0aGlzKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBBZGRMaW5lQWN0aW9uIGV4dGVuZHMgQWN0aW9uPHtcbiAgICBsaW5lOiBMaW5lRGF0YTtcbiAgICBpZD86IHN0cmluZztcbn0+IHtcbiAgICBleGVjKHBhcmFtczoge1xuICAgICAgICBmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50XG4gICAgfSkge1xuICAgICAgICB0aGlzLmRldGFpbC5pZCA9IHBhcmFtcy5mb3JnZS4kZ3JhcGguYWRkTGluZSh0aGlzLmRldGFpbC5saW5lLCB0aGlzLmRldGFpbC5pZCk7XG4gICAgfVxuICAgIHJldmVydEFjdGlvbigpOiBSZW1vdmVMaW5lQWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIG5ldyBSZW1vdmVMaW5lQWN0aW9uKHtcbiAgICAgICAgICAgIGlkOiB0aGlzLmRldGFpbC5pZCEsXG4gICAgICAgIH0sIHRoaXMpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlbW92ZUxpbmVBY3Rpb24gZXh0ZW5kcyBBY3Rpb248e1xuICAgIGlkOiBzdHJpbmc7XG59PiB7XG4gICAgcHJpdmF0ZSBsaW5lRGF0YT86IExpbmVEYXRhO1xuICAgIGV4ZWMocGFyYW1zOiB7XG4gICAgICAgIGZvcmdlOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnRcbiAgICB9KSB7XG4gICAgICAgIHRoaXMubGluZURhdGEgPSBwYXJhbXMuZm9yZ2UuJGdyYXBoLnJlbW92ZUxpbmUodGhpcy5kZXRhaWwuaWQpIGFzIExpbmVEYXRhO1xuICAgIH1cbiAgICByZXZlcnRBY3Rpb24oKTogQWRkTGluZUFjdGlvbiB7XG4gICAgICAgIHJldHVybiBuZXcgQWRkTGluZUFjdGlvbih7XG4gICAgICAgICAgICBsaW5lOiB0aGlzLmxpbmVEYXRhISxcbiAgICAgICAgICAgIGlkOiB0aGlzLmRldGFpbC5pZCxcbiAgICAgICAgfSwgdGhpcyk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW50ZXJTdWJHcmFwaCgpIHtcblxufVxuZXhwb3J0IGZ1bmN0aW9uIGV4aXRTdWJHcmFwaCgpIHtcblxufVxuZXhwb3J0IGZ1bmN0aW9uIGFkZFN1YkdyYXBoKCkge1xuXG59XG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlU3ViR3JhcGgoKSB7XG5cbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/block-forge/utils.js b/extensions/shader-graph/dist/block-forge/utils.js new file mode 100644 index 0000000..db6bc5b --- /dev/null +++ b/extensions/shader-graph/dist/block-forge/utils.js @@ -0,0 +1,85 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createPin = exports.createBlock = exports.createGraph = exports.dispatch = exports.generatePin = exports.generateBlock = exports.generateGraph = exports.generateUUID = exports.completeBlockTarget = void 0; +/** + * 补全 target 上的配置对象 + * 将 extend 里的属性补充到 target 上 + * @param target + * @param extend + */ +function completeBlockTarget(target, extend) { + target.feature = Object.assign(Object.create(extend.feature || {}), target.feature || {}); + target.style = Object.assign(Object.create(extend.style || {}), target.style || {}); +} +exports.completeBlockTarget = completeBlockTarget; +function generateUUID() { + return 't_' + Date.now() + (Math.random() + '').substring(10); +} +exports.generateUUID = generateUUID; +function generateGraph(type, name) { + return { + type, + name: name || type, + nodes: {}, + lines: {}, + graphs: {}, + details: {}, + }; +} +exports.generateGraph = generateGraph; +function generateBlock(type) { + return { + type, + position: { x: 0, y: 0 }, + details: {}, + }; +} +exports.generateBlock = generateBlock; +function generatePin(type) { + return { + dataType: type, + value: {}, + details: {}, + }; +} +exports.generatePin = generatePin; +/** + * 发送一个自定义消息 + * @param elem + * @param eventName + * @param options + */ +function dispatch(elem, eventName, options) { + const targetOptions = { + bubbles: true, + cancelable: true, + }; + if (options) { + Object.assign(targetOptions, options); + } + const event = new CustomEvent(eventName, targetOptions); + elem.dispatchEvent(event); +} +exports.dispatch = dispatch; +/** + * + */ +function createGraph(forge, type) { + // TODO +} +exports.createGraph = createGraph; +/** + * + */ +function createBlock() { + // TODO +} +exports.createBlock = createBlock; +/** + * + */ +function createPin() { + // TODO +} +exports.createPin = createPin; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYmxvY2stZm9yZ2UvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7QUFLYjs7Ozs7R0FLRztBQUNILFNBQWdCLG1CQUFtQixDQUFDLE1BQXlCLEVBQUUsTUFBeUI7SUFDcEYsTUFBTSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzFGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztBQUN4RixDQUFDO0FBSEQsa0RBR0M7QUFFRCxTQUFnQixZQUFZO0lBQ3hCLE9BQU8sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDbEUsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLElBQVksRUFBRSxJQUFhO0lBQ3JELE9BQU87UUFDSCxJQUFJO1FBQ0osSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJO1FBQ2xCLEtBQUssRUFBRSxFQUFFO1FBQ1QsS0FBSyxFQUFFLEVBQUU7UUFDVCxNQUFNLEVBQUUsRUFBRTtRQUNWLE9BQU8sRUFBRSxFQUFFO0tBQ2QsQ0FBQztBQUNOLENBQUM7QUFURCxzQ0FTQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxJQUFZO0lBQ3RDLE9BQU87UUFDSCxJQUFJO1FBQ0osUUFBUSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sRUFBRSxFQUFFO0tBQ2QsQ0FBQztBQUNOLENBQUM7QUFORCxzQ0FNQztBQUVELFNBQWdCLFdBQVcsQ0FBQyxJQUFZO0lBQ3BDLE9BQU87UUFDSCxRQUFRLEVBQUUsSUFBSTtRQUNkLEtBQUssRUFBRSxFQUFFO1FBQ1QsT0FBTyxFQUFFLEVBQUU7S0FDZCxDQUFDO0FBQ04sQ0FBQztBQU5ELGtDQU1DO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixRQUFRLENBQUksSUFBaUIsRUFBRSxTQUFpQixFQUFFLE9BQW1DO0lBQ2pHLE1BQU0sYUFBYSxHQUFHO1FBQ2xCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsVUFBVSxFQUFFLElBQUk7S0FDbkIsQ0FBQztJQUNGLElBQUksT0FBTyxFQUFFO1FBQ1QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDekM7SUFDRCxNQUFNLEtBQUssR0FBRyxJQUFJLFdBQVcsQ0FBSSxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFDM0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBVkQsNEJBVUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFdBQVcsQ0FBQyxLQUFnQixFQUFFLElBQVk7SUFDdEQsT0FBTztBQUNYLENBQUM7QUFGRCxrQ0FFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsV0FBVztJQUN2QixPQUFPO0FBQ1gsQ0FBQztBQUZELGtDQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixTQUFTO0lBQ3JCLE9BQU87QUFDWCxDQUFDO0FBRkQsOEJBRUMiLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIHN0cmljdCc7XG5cbmltcG9ydCB0eXBlIHsgSUJsb2NrRGVzY3JpcHRpb24sIEdyYXBoRGF0YSwgQmxvY2tEYXRhLCBQaW5EYXRhLCBGb3JnZURhdGEgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IEdyYXBoTm9kZUVsZW1lbnQgfSBmcm9tICdAaXRoYXJib3JzL3VpLWdyYXBoL2Rpc3QvZWxlbWVudC9ncmFwaC1ub2RlJztcblxuLyoqXG4gKiDooaXlhaggdGFyZ2V0IOS4iueahOmFjee9ruWvueixoVxuICog5bCGIGV4dGVuZCDph4znmoTlsZ7mgKfooaXlhYXliLAgdGFyZ2V0IOS4ilxuICogQHBhcmFtIHRhcmdldFxuICogQHBhcmFtIGV4dGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGxldGVCbG9ja1RhcmdldCh0YXJnZXQ6IElCbG9ja0Rlc2NyaXB0aW9uLCBleHRlbmQ6IElCbG9ja0Rlc2NyaXB0aW9uKSB7XG4gICAgdGFyZ2V0LmZlYXR1cmUgPSBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoZXh0ZW5kLmZlYXR1cmUgfHwge30pLCB0YXJnZXQuZmVhdHVyZSB8fCB7fSk7XG4gICAgdGFyZ2V0LnN0eWxlID0gT2JqZWN0LmFzc2lnbihPYmplY3QuY3JlYXRlKGV4dGVuZC5zdHlsZSB8fCB7fSksIHRhcmdldC5zdHlsZSB8fCB7fSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVVVSUQoKSB7XG4gICAgcmV0dXJuICd0XycgKyBEYXRlLm5vdygpICsgKE1hdGgucmFuZG9tKCkgKyAnJykuc3Vic3RyaW5nKDEwKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlR3JhcGgodHlwZTogc3RyaW5nLCBuYW1lPzogc3RyaW5nKTogR3JhcGhEYXRhIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlLFxuICAgICAgICBuYW1lOiBuYW1lIHx8IHR5cGUsXG4gICAgICAgIG5vZGVzOiB7fSxcbiAgICAgICAgbGluZXM6IHt9LFxuICAgICAgICBncmFwaHM6IHt9LFxuICAgICAgICBkZXRhaWxzOiB7fSxcbiAgICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVCbG9jayh0eXBlOiBzdHJpbmcpOiBCbG9ja0RhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAgIHR5cGUsXG4gICAgICAgIHBvc2l0aW9uOiB7IHg6IDAsIHk6IDAgfSxcbiAgICAgICAgZGV0YWlsczoge30sXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlUGluKHR5cGU6IHN0cmluZyk6IFBpbkRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICAgIGRhdGFUeXBlOiB0eXBlLFxuICAgICAgICB2YWx1ZToge30sXG4gICAgICAgIGRldGFpbHM6IHt9LFxuICAgIH07XG59XG5cbi8qKlxuICog5Y+R6YCB5LiA5Liq6Ieq5a6a5LmJ5raI5oGvXG4gKiBAcGFyYW0gZWxlbSBcbiAqIEBwYXJhbSBldmVudE5hbWUgXG4gKiBAcGFyYW0gb3B0aW9ucyBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpc3BhdGNoPFQ+KGVsZW06IEhUTUxFbGVtZW50LCBldmVudE5hbWU6IHN0cmluZywgb3B0aW9ucz86IEV2ZW50SW5pdCAmIHsgZGV0YWlsOiBUIH0pIHtcbiAgICBjb25zdCB0YXJnZXRPcHRpb25zID0ge1xuICAgICAgICBidWJibGVzOiB0cnVlLFxuICAgICAgICBjYW5jZWxhYmxlOiB0cnVlLFxuICAgIH07XG4gICAgaWYgKG9wdGlvbnMpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbih0YXJnZXRPcHRpb25zLCBvcHRpb25zKTtcbiAgICB9XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQ8VD4oZXZlbnROYW1lLCB0YXJnZXRPcHRpb25zKTtcbiAgICBlbGVtLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVHcmFwaChmb3JnZTogRm9yZ2VEYXRhLCB0eXBlOiBzdHJpbmcpIHtcbiAgICAvLyBUT0RPXG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUJsb2NrKCkge1xuICAgIC8vIFRPRE9cbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGluKCkge1xuICAgIC8vIFRPRE9cbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/assets-menu.js b/extensions/shader-graph/dist/contributions/assets-menu.js new file mode 100644 index 0000000..0b09302 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/assets-menu.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createMenu = void 0; +const shader_graph_1 = require("../shader-graph"); +function getMenu(assetInfo) { + const AssetsURL = assetInfo ? assetInfo.url : 'db://assets'; + return { + label: `i18n:${shader_graph_1.PACKAGE_NAME}.menu.import`, + submenu: [ + { + label: 'Surface', + async click() { + const url = await Editor.Message.request('asset-db', 'generate-available-url', `${AssetsURL}/${shader_graph_1.DEFAULT_ASSET_NAME}`); + const shaderGraph = await shader_graph_1.GraphDataMgr.createDefaultShaderGraph('SurfaceMasterNode', 'Graph', (0, shader_graph_1.getName)(url)); + const asset = await Editor.Message.request('asset-db', 'create-asset', url, shaderGraph); + }, + }, + { + label: 'Unlit', + async click() { + const url = await Editor.Message.request('asset-db', 'generate-available-url', `${AssetsURL}/${shader_graph_1.DEFAULT_ASSET_NAME}`); + const shaderGraph = await shader_graph_1.GraphDataMgr.createDefaultShaderGraph('UnlitMasterNode', 'Graph', (0, shader_graph_1.getName)(url)); + await Editor.Message.request('asset-db', 'create-asset', url, shaderGraph); + }, + }, + ], + }; +} +/** + * assets 扩展普通资源节点的右键菜单,能够拿到右键资源节点的信息 assetInfo 作为参数 + * @param assetInfo + */ +function createMenu(assetInfo) { + return [ + getMenu(assetInfo), + ]; +} +exports.createMenu = createMenu; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzLW1lbnUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9ucy9hc3NldHMtbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxrREFBMEY7QUFFMUYsU0FBUyxPQUFPLENBQUMsU0FBd0I7SUFDckMsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUM7SUFDNUQsT0FBTztRQUNILEtBQUssRUFBRSxRQUFRLDJCQUFZLGNBQWM7UUFDekMsT0FBTyxFQUFFO1lBQ0w7Z0JBQ0ksS0FBSyxFQUFFLFNBQVM7Z0JBQ2hCLEtBQUssQ0FBQyxLQUFLO29CQUNQLE1BQU0sR0FBRyxHQUFHLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLHdCQUF3QixFQUFFLEdBQUcsU0FBUyxJQUFJLGlDQUFrQixFQUFFLENBQUMsQ0FBQztvQkFDckgsTUFBTSxXQUFXLEdBQUcsTUFBTSwyQkFBWSxDQUFDLHdCQUF3QixDQUFDLG1CQUFtQixFQUFFLE9BQU8sRUFBRSxJQUFBLHNCQUFPLEVBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztvQkFDNUcsTUFBTSxLQUFLLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxXQUFXLENBQUMsQ0FBQztnQkFDN0YsQ0FBQzthQUNKO1lBQ0Q7Z0JBQ0ksS0FBSyxFQUFFLE9BQU87Z0JBQ2QsS0FBSyxDQUFDLEtBQUs7b0JBQ1AsTUFBTSxHQUFHLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsd0JBQXdCLEVBQUUsR0FBRyxTQUFTLElBQUksaUNBQWtCLEVBQUUsQ0FBQyxDQUFDO29CQUNySCxNQUFNLFdBQVcsR0FBRyxNQUFNLDJCQUFZLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLElBQUEsc0JBQU8sRUFBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUMxRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxjQUFjLEVBQUUsR0FBRyxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUMvRSxDQUFDO2FBQ0o7U0FDSjtLQUVKLENBQUM7QUFDTixDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLFNBQXdCO0lBQy9DLE9BQU87UUFDSCxPQUFPLENBQUMsU0FBUyxDQUFDO0tBQ3JCLENBQUM7QUFDTixDQUFDO0FBSkQsZ0NBSUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNZW51QXNzZXRJbmZvIH0gZnJvbSAnQGNvY29zL2NyZWF0b3ItdHlwZXMvZWRpdG9yL3BhY2thZ2VzL3BhY2thZ2UtYXNzZXQvQHR5cGVzL3B1YmxpYyc7XG5pbXBvcnQgeyBQQUNLQUdFX05BTUUsIERFRkFVTFRfQVNTRVRfTkFNRSwgR3JhcGhEYXRhTWdyLCBnZXROYW1lIH0gZnJvbSAnLi4vc2hhZGVyLWdyYXBoJztcblxuZnVuY3Rpb24gZ2V0TWVudShhc3NldEluZm86IE1lbnVBc3NldEluZm8pIHtcbiAgICBjb25zdCBBc3NldHNVUkwgPSBhc3NldEluZm8gPyBhc3NldEluZm8udXJsIDogJ2RiOi8vYXNzZXRzJztcbiAgICByZXR1cm4ge1xuICAgICAgICBsYWJlbDogYGkxOG46JHtQQUNLQUdFX05BTUV9Lm1lbnUuaW1wb3J0YCxcbiAgICAgICAgc3VibWVudTogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGxhYmVsOiAnU3VyZmFjZScsXG4gICAgICAgICAgICAgICAgYXN5bmMgY2xpY2soKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IEVkaXRvci5NZXNzYWdlLnJlcXVlc3QoJ2Fzc2V0LWRiJywgJ2dlbmVyYXRlLWF2YWlsYWJsZS11cmwnLCBgJHtBc3NldHNVUkx9LyR7REVGQVVMVF9BU1NFVF9OQU1FfWApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaGFkZXJHcmFwaCA9IGF3YWl0IEdyYXBoRGF0YU1nci5jcmVhdGVEZWZhdWx0U2hhZGVyR3JhcGgoJ1N1cmZhY2VNYXN0ZXJOb2RlJywgJ0dyYXBoJywgZ2V0TmFtZSh1cmwpKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdhc3NldC1kYicsICdjcmVhdGUtYXNzZXQnLCB1cmwsIHNoYWRlckdyYXBoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBsYWJlbDogJ1VubGl0JyxcbiAgICAgICAgICAgICAgICBhc3luYyBjbGljaygpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdXJsID0gYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnYXNzZXQtZGInLCAnZ2VuZXJhdGUtYXZhaWxhYmxlLXVybCcsIGAke0Fzc2V0c1VSTH0vJHtERUZBVUxUX0FTU0VUX05BTUV9YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNoYWRlckdyYXBoID0gYXdhaXQgR3JhcGhEYXRhTWdyLmNyZWF0ZURlZmF1bHRTaGFkZXJHcmFwaCgnVW5saXRNYXN0ZXJOb2RlJywgJ0dyYXBoJywgZ2V0TmFtZSh1cmwpKTtcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnYXNzZXQtZGInLCAnY3JlYXRlLWFzc2V0JywgdXJsLCBzaGFkZXJHcmFwaCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIF0sXG5cbiAgICB9O1xufVxuXG4vKipcbiAqIGFzc2V0cyDmianlsZXmma7pgJrotYTmupDoioLngrnnmoTlj7PplK7oj5zljZXvvIzog73lpJ/mi7/liLDlj7PplK7otYTmupDoioLngrnnmoTkv6Hmga8gYXNzZXRJbmZvIOS9nOS4uuWPguaVsFxuICogQHBhcmFtIGFzc2V0SW5mb1xuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTWVudShhc3NldEluZm86IE1lbnVBc3NldEluZm8pIHtcbiAgICByZXR1cm4gW1xuICAgICAgICBnZXRNZW51KGFzc2V0SW5mbyksXG4gICAgXTtcbn1cblxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/effect-header.js b/extensions/shader-graph/dist/contributions/effect-header.js new file mode 100644 index 0000000..3bf86e7 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/effect-header.js @@ -0,0 +1,47 @@ +"use strict"; +// @ts-ignore +// import { EDITOR } from 'cc/env'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addChunks = exports.path = exports.fs = void 0; +const effect_utils_1 = require("../effect-utils"); +const useNpm = true; //(EDITOR || (globalThis as any).electron); +exports.fs = useNpm && globalThis.require('fs-extra'); +exports.path = useNpm && globalThis.require('path'); +const { basename, dirname, extname, join, relative } = exports.path || {}; +const { readFileSync, readdirSync, statSync } = exports.fs || {}; +let _addedChunks = false; +async function addChunks() { + if (_addedChunks) { + return; + } + _addedChunks = true; + const enginePath = (await Editor.Message.request('engine', 'query-engine-info')).typescript.path; + // 添加所有 builtin 头文件 + const builtinChunkDir = join(enginePath, './editor/assets/chunks'); + const builtinChunks = (() => { + const arr = []; + function step(dir) { + const names = readdirSync(dir); + names.forEach((name) => { + const file = join(dir, name); + if (/\.chunk$/.test(name)) { + arr.push(file); + } + else if (statSync(file).isDirectory()) { + step(file); + } + }); + } + step(builtinChunkDir); + return arr; + })(); + for (let i = 0; i < builtinChunks.length; ++i) { + const name = basename(builtinChunks[i], '.chunk'); + const content = readFileSync(builtinChunks[i], { encoding: 'utf8' }); + await (0, effect_utils_1.addChunk)(name, content); + const relativeName = relative(builtinChunkDir, builtinChunks[i]).replace('.chunk', '').replace(/\\/g, '/'); + await (0, effect_utils_1.addChunk)(relativeName, content); + } +} +exports.addChunks = addChunks; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LWhlYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmlidXRpb25zL2VmZmVjdC1oZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGFBQWE7QUFDYixtQ0FBbUM7OztBQUVuQyxrREFBMkM7QUFFM0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUEsMkNBQTJDO0FBQ2xELFFBQUEsRUFBRSxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzlDLFFBQUEsSUFBSSxHQUFHLE1BQU0sSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBRXpELE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsWUFBSSxJQUFJLEVBQUUsQ0FBQztBQUNsRSxNQUFNLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFFLElBQUksRUFBRSxDQUFDO0FBRXpELElBQUksWUFBWSxHQUFHLEtBQUssQ0FBQztBQUNsQixLQUFLLFVBQVUsU0FBUztJQUMzQixJQUFJLFlBQVksRUFBRTtRQUNkLE9BQU87S0FDVjtJQUVELFlBQVksR0FBRyxJQUFJLENBQUM7SUFFcEIsTUFBTSxVQUFVLEdBQUcsQ0FBQyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQztJQUVqRyxtQkFBbUI7SUFDbkIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDO0lBQ25FLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBRyxFQUFFO1FBQ3hCLE1BQU0sR0FBRyxHQUFhLEVBQUUsQ0FBQztRQUN6QixTQUFTLElBQUksQ0FBQyxHQUFXO1lBQ3JCLE1BQU0sS0FBSyxHQUFhLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7Z0JBQ25CLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQzdCLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDdkIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDbEI7cUJBQU0sSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUU7b0JBQ3JDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztpQkFDZDtZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0QixPQUFPLEdBQUcsQ0FBQztJQUNmLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFFTCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsRUFBRTtRQUMzQyxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNyRSxNQUFNLElBQUEsdUJBQVEsRUFBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUIsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGVBQWUsRUFBRSxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDM0csTUFBTSxJQUFBLHVCQUFRLEVBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3pDO0FBRUwsQ0FBQztBQXBDRCw4QkFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG4vLyBpbXBvcnQgeyBFRElUT1IgfSBmcm9tICdjYy9lbnYnO1xuXG5pbXBvcnQgeyBhZGRDaHVuayB9IGZyb20gJy4uL2VmZmVjdC11dGlscyc7XG5cbmNvbnN0IHVzZU5wbSA9IHRydWU7Ly8oRURJVE9SIHx8IChnbG9iYWxUaGlzIGFzIGFueSkuZWxlY3Ryb24pO1xuZXhwb3J0IGNvbnN0IGZzID0gdXNlTnBtICYmIGdsb2JhbFRoaXMucmVxdWlyZSgnZnMtZXh0cmEnKTtcbmV4cG9ydCBjb25zdCBwYXRoID0gdXNlTnBtICYmIGdsb2JhbFRoaXMucmVxdWlyZSgncGF0aCcpO1xuXG5jb25zdCB7IGJhc2VuYW1lLCBkaXJuYW1lLCBleHRuYW1lLCBqb2luLCByZWxhdGl2ZSB9ID0gcGF0aCB8fCB7fTtcbmNvbnN0IHsgcmVhZEZpbGVTeW5jLCByZWFkZGlyU3luYywgc3RhdFN5bmMgfSA9IGZzIHx8IHt9O1xuXG5sZXQgX2FkZGVkQ2h1bmtzID0gZmFsc2U7XG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkQ2h1bmtzKCkge1xuICAgIGlmIChfYWRkZWRDaHVua3MpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9hZGRlZENodW5rcyA9IHRydWU7XG5cbiAgICBjb25zdCBlbmdpbmVQYXRoID0gKGF3YWl0IEVkaXRvci5NZXNzYWdlLnJlcXVlc3QoJ2VuZ2luZScsICdxdWVyeS1lbmdpbmUtaW5mbycpKS50eXBlc2NyaXB0LnBhdGg7XG5cbiAgICAvLyDmt7vliqDmiYDmnIkgYnVpbHRpbiDlpLTmlofku7ZcbiAgICBjb25zdCBidWlsdGluQ2h1bmtEaXIgPSBqb2luKGVuZ2luZVBhdGgsICcuL2VkaXRvci9hc3NldHMvY2h1bmtzJyk7XG4gICAgY29uc3QgYnVpbHRpbkNodW5rcyA9ICgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGFycjogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgZnVuY3Rpb24gc3RlcChkaXI6IHN0cmluZykge1xuICAgICAgICAgICAgY29uc3QgbmFtZXM6IHN0cmluZ1tdID0gcmVhZGRpclN5bmMoZGlyKTtcbiAgICAgICAgICAgIG5hbWVzLmZvckVhY2goKG5hbWUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gam9pbihkaXIsIG5hbWUpO1xuICAgICAgICAgICAgICAgIGlmICgvXFwuY2h1bmskLy50ZXN0KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGFyci5wdXNoKGZpbGUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdFN5bmMoZmlsZSkuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgICAgICBzdGVwKGZpbGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHN0ZXAoYnVpbHRpbkNodW5rRGlyKTtcbiAgICAgICAgcmV0dXJuIGFycjtcbiAgICB9KSgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBidWlsdGluQ2h1bmtzLmxlbmd0aDsgKytpKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBiYXNlbmFtZShidWlsdGluQ2h1bmtzW2ldLCAnLmNodW5rJyk7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSByZWFkRmlsZVN5bmMoYnVpbHRpbkNodW5rc1tpXSwgeyBlbmNvZGluZzogJ3V0ZjgnIH0pO1xuICAgICAgICBhd2FpdCBhZGRDaHVuayhuYW1lLCBjb250ZW50KTtcbiAgICAgICAgY29uc3QgcmVsYXRpdmVOYW1lID0gcmVsYXRpdmUoYnVpbHRpbkNodW5rRGlyLCBidWlsdGluQ2h1bmtzW2ldKS5yZXBsYWNlKCcuY2h1bmsnLCAnJykucmVwbGFjZSgvXFxcXC9nLCAnLycpO1xuICAgICAgICBhd2FpdCBhZGRDaHVuayhyZWxhdGl2ZU5hbWUsIGNvbnRlbnQpO1xuICAgIH1cblxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/internal.js b/extensions/shader-graph/dist/contributions/internal.js new file mode 100644 index 0000000..fde4f14 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/internal.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9ucy9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiXG5leHBvcnQgaW50ZXJmYWNlIFByZXZpZXdDb25maWcge1xuICAgIGxpZ2h0RW5hYmxlOiBib29sZWFuO1xuICAgIHByaW1pdGl2ZTogc3RyaW5nO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/preview-scene.js b/extensions/shader-graph/dist/contributions/preview-scene.js new file mode 100644 index 0000000..e4e3299 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/preview-scene.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const preview_1 = tslib_1.__importDefault(require("./preview")); +const shader_graph_preview_1 = require("./preview/shader-graph-preview"); +class PreviewScene { + async init(config) { + await preview_1.default.load(); + shader_graph_preview_1.shaderGraphPreview.resetCamera(); + shader_graph_preview_1.shaderGraphPreview.setPrimitive(config.primitive); + shader_graph_preview_1.shaderGraphPreview.setLightEnable(config.lightEnable); + return true; + } + setMaterial(material) { + shader_graph_preview_1.shaderGraphPreview.setMaterial(material); + } +} +const previewScene = new PreviewScene(); +exports.default = previewScene; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1zY2VuZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cmlidXRpb25zL3ByZXZpZXctc2NlbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsZ0VBQXVDO0FBQ3ZDLHlFQUFvRTtBQUdwRSxNQUFNLFlBQVk7SUFDZCxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQXFCO1FBQzVCLE1BQU0saUJBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1Qix5Q0FBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyx5Q0FBa0IsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELHlDQUFrQixDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdEQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFrQjtRQUMxQix5Q0FBa0IsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDN0MsQ0FBQztDQUNKO0FBRUQsTUFBTSxZQUFZLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztBQUN4QyxrQkFBZSxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYXRlcmlhbCB9IGZyb20gJ2NjJztcblxuaW1wb3J0IHByZXZpZXdNYW5hZ2VyIGZyb20gJy4vcHJldmlldyc7XG5pbXBvcnQgeyBzaGFkZXJHcmFwaFByZXZpZXcgfSBmcm9tICcuL3ByZXZpZXcvc2hhZGVyLWdyYXBoLXByZXZpZXcnO1xuaW1wb3J0IHsgUHJldmlld0NvbmZpZyB9IGZyb20gJy4vaW50ZXJuYWwnO1xuXG5jbGFzcyBQcmV2aWV3U2NlbmUge1xuICAgIGFzeW5jIGluaXQoY29uZmlnOiBQcmV2aWV3Q29uZmlnKSB7XG4gICAgICAgIGF3YWl0IHByZXZpZXdNYW5hZ2VyLmxvYWQoKTtcbiAgICAgICAgc2hhZGVyR3JhcGhQcmV2aWV3LnJlc2V0Q2FtZXJhKCk7XG4gICAgICAgIHNoYWRlckdyYXBoUHJldmlldy5zZXRQcmltaXRpdmUoY29uZmlnLnByaW1pdGl2ZSk7XG4gICAgICAgIHNoYWRlckdyYXBoUHJldmlldy5zZXRMaWdodEVuYWJsZShjb25maWcubGlnaHRFbmFibGUpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBzZXRNYXRlcmlhbChtYXRlcmlhbDogTWF0ZXJpYWwpIHtcbiAgICAgICAgc2hhZGVyR3JhcGhQcmV2aWV3LnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcbiAgICB9XG59XG5cbmNvbnN0IHByZXZpZXdTY2VuZSA9IG5ldyBQcmV2aWV3U2NlbmUoKTtcbmV4cG9ydCBkZWZhdWx0IHByZXZpZXdTY2VuZTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/preview/Interactive-preview.js b/extensions/shader-graph/dist/contributions/preview/Interactive-preview.js new file mode 100644 index 0000000..abfd82f --- /dev/null +++ b/extensions/shader-graph/dist/contributions/preview/Interactive-preview.js @@ -0,0 +1,185 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InteractivePreview = void 0; +const cc_1 = require("cc"); +const buffer_1 = require("./buffer"); +const preview_base_1 = require("./preview-base"); +const tempVec3A = new cc_1.Vec3(); +const tempVec3B = new cc_1.Vec3(); +function clamp(val, min, max) { + return val < min ? min : val > max ? max : val; +} +function makeVec3InRange(inVec3, min, max) { + inVec3.x = clamp(inVec3.x, min, max); + inVec3.y = clamp(inVec3.y, min, max); + inVec3.z = clamp(inVec3.z, min, max); + return inVec3; +} +/** + * 可交互的Preview窗口基类,可以在窗口中方便的预览场景中的元素 + */ +class InteractivePreview extends preview_base_1.PreviewBase { + constructor() { + super(); + this.isMouseDown = false; + this.viewDist = 10; + this.orbitRotateSpeed = 0.01; + this.curCameraRot = new cc_1.Quat(); + this.viewCenter = new cc_1.Vec3(); + this.node = new cc_1.Node(); + this.isMouseLeft = false; + this._flipWheelDirection = true; + this._curPos = cc.v3(); + this._curRot = new cc_1.Quat(); + this._forward = cc.v3(cc_1.Vec3.UNIT_Z); + this._v3a = cc.v3(); + this.scene = new cc_1.Scene(''); + this.cameraComp = new cc_1.Node().addComponent(cc_1.Camera); + // @ts-ignore + this.cameraComp.node.parent = this.scene; + this.cameraComp.node.setPosition(0, 1, 2.5); + this.cameraComp.node.lookAt(cc_1.Vec3.ZERO); + this.cameraComp.near = 0.01; + this.cameraComp.enabled = false; + this.createNodes(); + // @ts-ignore + this.scene._load(); // ensure scene initialized + // @ts-ignore + this.scene._activate(); + this.cameraComp.clearColor = new cc_1.Color(71, 71, 71, 255); + this.camera = this.cameraComp.camera; + this.camera.isWindowSize = false; + this.camera.cameraUsage = cc_1.renderer.scene.CameraUsage?.EDITOR; + this.camera.detachCamera(); + } + createNodes() { + } + init(registerName, queryName) { + this.scene.name = registerName; + this.cameraComp.node.name = registerName + 'camera'; + this.previewBuffer = new buffer_1.PreviewBuffer(registerName, queryName, this.scene); + } + resetCamera(modelNode) { + this.camera.changeTargetWindow(this.previewBuffer.window); + tempVec3A.set(0, 1, 2.5); + this.cameraComp.node.setPosition(tempVec3A); + this.cameraComp.node.lookAt(cc_1.Vec3.ZERO); + modelNode.getWorldPosition(tempVec3B); + cc_1.Vec3.set(this.viewCenter, 0, 0, 0); + this.viewDist = cc_1.Vec3.distance(tempVec3A, tempVec3B); + cce.Engine.repaintInEditMode(); + } + destroyNode() { + if (this.node && (0, cc_1.isValid)(this.node, true)) { + this.node.setParent(null); + this.node._destroyImmediate(); + this.node = null; + } + } + perfectCameraView(boundary) { + this.viewDist = this.getFitDistance(boundary); + this.cameraComp.node.getWorldRotation(this._curRot); + cc_1.Vec3.transformQuat(tempVec3A, cc_1.Vec3.UNIT_Z, this._curRot); + cc_1.Vec3.multiplyScalar(tempVec3A, tempVec3A, this.viewDist); + cc_1.Vec3.add(tempVec3B, this.viewCenter, tempVec3A); + this.cameraComp.node.setWorldPosition(tempVec3B); + this.cameraComp.node.lookAt(this.viewCenter); + cce.Engine.repaintInEditMode(); + } + getFitDistance(boundary) { + if (!boundary) { + return 0; + } + this.viewCenter = boundary.center; + const maxRange = boundary.halfExtents.length(); + // 为了让距离看起来更舒适 + const distScalar = 1.2; + const fov = this.cameraComp.fov; + const depthSize = Math.tan(((fov / 2) * Math.PI) / 180); + const dist = (maxRange * distScalar) / depthSize; + this.cameraComp.near = dist - maxRange; + this.cameraComp.far = dist + maxRange; + return dist; + } + onMouseDown(event) { + this.isMouseDown = true; + this.cameraComp.node.getWorldRotation(this._curRot); + this.cameraComp.node.getWorldPosition(this._curPos); + if ((event.button === cc_1.EventMouse.BUTTON_LEFT || !event.button)) { + this.isMouseLeft = true; + } + this.cameraComp.node.getWorldRotation(this.curCameraRot); + } + onMouseMove(event) { + if (!this.isMouseDown) { + return; + } + if (this.isMouseLeft) { + this.rotate(event.movementX | 0, event.movementY | 0); + } + } + onMouseUp(event) { + this.isMouseDown = false; + this.isMouseLeft = false; + } + onMouseWheel(event) { + this.scale(event.wheelDeltaY); + } + scale(delta) { + if (this._flipWheelDirection) { + delta = -delta; + } + const finalDelta = ((this.cameraComp.far - this.cameraComp.near) / 100); + const node = this.cameraComp.node; + const curPos = this._curPos; + const forward = this._forward; + const v3a = this._v3a; + node.getWorldPosition(curPos); + node.getWorldRotation(this._curRot); + cc_1.Vec3.transformQuat(forward, cc_1.Vec3.UNIT_Z, this._curRot); + cc_1.Vec3.multiplyScalar(v3a, forward, finalDelta * Math.sign(delta)); + cc_1.Vec3.add(curPos, curPos, v3a); + makeVec3InRange(curPos, -1e12, 1e12); + const tempDist = cc_1.Vec3.distance(curPos, this.viewCenter); + const min = this.cameraComp.near * 2; + const max = this.cameraComp.far / 3; + // if (tempDist > min && max > tempDist) { + this.viewDist = tempDist; + node.setWorldPosition(curPos); + // } + } + rotate(dx, dy) { + if (!this.isMouseDown && !this.isMouseLeft) { + return; + } + this.cameraComp.node.getWorldRotation(this._curRot); + const rot = this._curRot; + const euler = cc.v3(); + cc_1.Quat.rotateX(rot, rot, -dy * this.orbitRotateSpeed); + cc_1.Quat.rotateAround(rot, rot, cc_1.Vec3.UNIT_Y, -dx * this.orbitRotateSpeed); + cc_1.Quat.toEuler(euler, rot); + cc_1.Quat.fromEuler(rot, euler.x, euler.y, 0); // clear rotate of z + const offset = cc.v3(0, 0, 1); + cc_1.Vec3.transformQuat(offset, offset, rot); + cc_1.Vec3.normalize(offset, offset); + cc_1.Vec3.multiplyScalar(offset, offset, this.viewDist); + cc_1.Vec3.add(this._curPos, this.viewCenter, offset); + this.cameraComp.node.setWorldPosition(this._curPos); + const up = cc.v3(0, 1, 0); + cc_1.Vec3.transformQuat(up, up, rot); + cc_1.Vec3.normalize(up, up); + this.cameraComp.node.lookAt(this.viewCenter, up); + } + setZoom(scale) { + //向前滚动 > 0 向后滚动 < 0 + this.cameraComp.node.lookAt(this.cameraComp.camera.forward); + this.cameraComp.node.worldPosition.add(this.cameraComp.camera.forward.multiplyScalar(scale)); + this.cameraComp.node.setWorldPosition(this.cameraComp.node.worldPosition); + this.viewDist = cc_1.Vec3.distance(this.cameraComp.node.worldPosition, this.viewCenter); + } + hide() { + this.cameraComp.enabled = false; + } +} +exports.InteractivePreview = InteractivePreview; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW50ZXJhY3RpdmUtcHJldmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3ByZXZpZXcvSW50ZXJhY3RpdmUtcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBcUc7QUFDckcscUNBQXlDO0FBQ3pDLGlEQUE2QztBQUc3QyxNQUFNLFNBQVMsR0FBRyxJQUFJLFNBQUksRUFBRSxDQUFDO0FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBSSxFQUFFLENBQUM7QUFFN0IsU0FBUyxLQUFLLENBQUMsR0FBVyxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQ2hELE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztBQUNuRCxDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsTUFBWSxFQUFFLEdBQVcsRUFBRSxHQUFXO0lBQzNELE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBRXJDLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sa0JBQW1CLFNBQVEsMEJBQVc7SUFtQnhDO1FBQ0ksS0FBSyxFQUFFLENBQUM7UUFoQkYsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDcEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNk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O0FBRVEsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2FtZXJhLCBDb2xvciwgZ2VvbWV0cnksIGlzVmFsaWQsIE5vZGUsIFF1YXQsIHJlbmRlcmVyLCBTY2VuZSwgVmVjMywgRXZlbnRNb3VzZSB9IGZyb20gJ2NjJztcbmltcG9ydCB7IFByZXZpZXdCdWZmZXIgfSBmcm9tICcuL2J1ZmZlcic7XG5pbXBvcnQgeyBQcmV2aWV3QmFzZSB9IGZyb20gJy4vcHJldmlldy1iYXNlJztcbmRlY2xhcmUgY29uc3QgY2NlOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGNjOiBhbnk7XG5jb25zdCB0ZW1wVmVjM0EgPSBuZXcgVmVjMygpO1xuY29uc3QgdGVtcFZlYzNCID0gbmV3IFZlYzMoKTtcblxuZnVuY3Rpb24gY2xhbXAodmFsOiBudW1iZXIsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuICAgIHJldHVybiB2YWwgPCBtaW4gPyBtaW4gOiB2YWwgPiBtYXggPyBtYXggOiB2YWw7XG59XG5cbmZ1bmN0aW9uIG1ha2VWZWMzSW5SYW5nZShpblZlYzM6IFZlYzMsIG1pbjogbnVtYmVyLCBtYXg6IG51bWJlcikge1xuICAgIGluVmVjMy54ID0gY2xhbXAoaW5WZWMzLngsIG1pbiwgbWF4KTtcbiAgICBpblZlYzMueSA9IGNsYW1wKGluVmVjMy55LCBtaW4sIG1heCk7XG4gICAgaW5WZWMzLnogPSBjbGFtcChpblZlYzMueiwgbWluLCBtYXgpO1xuXG4gICAgcmV0dXJuIGluVmVjMztcbn1cblxuLyoqXG4gKiDlj6/kuqTkupLnmoRQcmV2aWV356qX5Y+j5Z+657G777yM5Y+v5Lul5Zyo56qX5Y+j5Lit5pa55L6/55qE6aKE6KeI5Zy65pmv5Lit55qE5YWD57SgXG4gKi9cbmNsYXNzIEludGVyYWN0aXZlUHJldmlldyBleHRlbmRzIFByZXZpZXdCYXNlIHtcbiAgICBwcm90ZWN0ZWQgc2NlbmUhOiBTY2VuZTtcbiAgICBwcm90ZWN0ZWQgY2FtZXJhQ29tcCE6IENhbWVyYTtcbiAgICBwcm90ZWN0ZWQgY2FtZXJhOiByZW5kZXJlci5zY2VuZS5DYW1lcmEgfCBhbnk7XG4gICAgcHJvdGVjdGVkIGlzTW91c2VEb3duID0gZmFsc2U7XG4gICAgcHJvdGVjdGVkIHZpZXdEaXN0ID0gMTA7XG4gICAgcHJvdGVjdGVkIG9yYml0Um90YXRlU3BlZWQgPSAwLjAxO1xuICAgIHByb3RlY3RlZCBjdXJDYW1lcmFSb3QgPSBuZXcgUXVhdCgpO1xuICAgIHByb3RlY3RlZCB2aWV3Q2VudGVyID0gbmV3IFZlYzMoKTtcbiAgICBwcm90ZWN0ZWQgbm9kZTogTm9kZSB8IG51bGwgPSBuZXcgTm9kZSgpO1xuXG4gICAgcHJvdGVjdGVkIGlzTW91c2VMZWZ0ID0gZmFsc2U7XG5cbiAgICBwcml2YXRlIF9mbGlwV2hlZWxEaXJlY3Rpb24gPSB0cnVlO1xuICAgIHByaXZhdGUgX2N1clBvcyA9IGNjLnYzKCk7XG4gICAgcHJpdmF0ZSBfY3VyUm90ID0gbmV3IFF1YXQoKTtcbiAgICBwcml2YXRlIF9mb3J3YXJkID0gY2MudjMoVmVjMy5VTklUX1opO1xuICAgIHByaXZhdGUgX3YzYSA9IGNjLnYzKCk7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5zY2VuZSA9IG5ldyBTY2VuZSgnJyk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcCA9IG5ldyBOb2RlKCkuYWRkQ29tcG9uZW50KENhbWVyYSk7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUucGFyZW50ID0gdGhpcy5zY2VuZTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUuc2V0UG9zaXRpb24oMCwgMSwgMi41KTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUubG9va0F0KFZlYzMuWkVSTyk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5uZWFyID0gMC4wMTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLmVuYWJsZWQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLmNyZWF0ZU5vZGVzKCk7XG5cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB0aGlzLnNjZW5lLl9sb2FkKCk7IC8vIGVuc3VyZSBzY2VuZSBpbml0aWFsaXplZFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHRoaXMuc2NlbmUuX2FjdGl2YXRlKCk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5jbGVhckNvbG9yID0gbmV3IENvbG9yKDcxLCA3MSwgNzEsIDI1NSk7XG4gICAgICAgIHRoaXMuY2FtZXJhID0gdGhpcy5jYW1lcmFDb21wLmNhbWVyYTtcbiAgICAgICAgdGhpcy5jYW1lcmEuaXNXaW5kb3dTaXplID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY2FtZXJhLmNhbWVyYVVzYWdlID0gcmVuZGVyZXIuc2NlbmUuQ2FtZXJhVXNhZ2U/LkVESVRPUjtcbiAgICAgICAgdGhpcy5jYW1lcmEuZGV0YWNoQ2FtZXJhKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZU5vZGVzKCkge1xuXG4gICAgfVxuXG4gICAgcHVibGljIGluaXQocmVnaXN0ZXJOYW1lOiBzdHJpbmcsIHF1ZXJ5TmFtZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuc2NlbmUubmFtZSA9IHJlZ2lzdGVyTmFtZTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUubmFtZSA9IHJlZ2lzdGVyTmFtZSArICdjYW1lcmEnO1xuXG4gICAgICAgIHRoaXMucHJldmlld0J1ZmZlciA9IG5ldyBQcmV2aWV3QnVmZmVyKHJlZ2lzdGVyTmFtZSwgcXVlcnlOYW1lLCB0aGlzLnNjZW5lKTtcbiAgICB9XG5cbiAgICByZXNldENhbWVyYShtb2RlbE5vZGU6IE5vZGUpIHtcbiAgICAgICAgdGhpcy5jYW1lcmEuY2hhbmdlVGFyZ2V0V2luZG93KHRoaXMucHJldmlld0J1ZmZlci53aW5kb3cpO1xuICAgICAgICB0ZW1wVmVjM0Euc2V0KDAsIDEsIDIuNSk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5ub2RlLnNldFBvc2l0aW9uKHRlbXBWZWMzQSk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5ub2RlLmxvb2tBdChWZWMzLlpFUk8pO1xuICAgICAgICBtb2RlbE5vZGUuZ2V0V29ybGRQb3NpdGlvbih0ZW1wVmVjM0IpO1xuICAgICAgICBWZWMzLnNldCh0aGlzLnZpZXdDZW50ZXIsIDAsIDAsIDApO1xuICAgICAgICB0aGlzLnZpZXdEaXN0ID0gVmVjMy5kaXN0YW5jZSh0ZW1wVmVjM0EsIHRlbXBWZWMzQik7XG4gICAgICAgIGNjZS5FbmdpbmUucmVwYWludEluRWRpdE1vZGUoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZGVzdHJveU5vZGUoKSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUgJiYgaXNWYWxpZCh0aGlzLm5vZGUsIHRydWUpKSB7XG4gICAgICAgICAgICB0aGlzLm5vZGUuc2V0UGFyZW50KG51bGwpO1xuICAgICAgICAgICAgdGhpcy5ub2RlLl9kZXN0cm95SW1tZWRpYXRlKCk7XG4gICAgICAgICAgICB0aGlzLm5vZGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHBlcmZlY3RDYW1lcmFWaWV3KGJvdW5kYXJ5OiBnZW9tZXRyeS5BQUJCIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnZpZXdEaXN0ID0gdGhpcy5nZXRGaXREaXN0YW5jZShib3VuZGFyeSk7XG5cbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUuZ2V0V29ybGRSb3RhdGlvbih0aGlzLl9jdXJSb3QpO1xuXG4gICAgICAgIFZlYzMudHJhbnNmb3JtUXVhdCh0ZW1wVmVjM0EsIFZlYzMuVU5JVF9aLCB0aGlzLl9jdXJSb3QpO1xuICAgICAgICBWZWMzLm11bHRpcGx5U2NhbGFyKHRlbXBWZWMzQSwgdGVtcFZlYzNBLCB0aGlzLnZpZXdEaXN0KTtcbiAgICAgICAgVmVjMy5hZGQodGVtcFZlYzNCLCB0aGlzLnZpZXdDZW50ZXIsIHRlbXBWZWMzQSk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5ub2RlLnNldFdvcmxkUG9zaXRpb24odGVtcFZlYzNCKTtcblxuICAgICAgICB0aGlzLmNhbWVyYUNvbXAubm9kZS5sb29rQXQodGhpcy52aWV3Q2VudGVyKTtcbiAgICAgICAgY2NlLkVuZ2luZS5yZXBhaW50SW5FZGl0TW9kZSgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRGaXREaXN0YW5jZShib3VuZGFyeTogZ2VvbWV0cnkuQUFCQiB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCFib3VuZGFyeSkge1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aWV3Q2VudGVyID0gYm91bmRhcnkuY2VudGVyO1xuICAgICAgICBjb25zdCBtYXhSYW5nZSA9IGJvdW5kYXJ5LmhhbGZFeHRlbnRzLmxlbmd0aCgpO1xuXG4gICAgICAgIC8vICDkuLrkuoborqnot53nprvnnIvotbfmnaXmm7ToiJLpgIJcbiAgICAgICAgY29uc3QgZGlzdFNjYWxhciA9IDEuMjtcbiAgICAgICAgY29uc3QgZm92ID0gdGhpcy5jYW1lcmFDb21wLmZvdjtcbiAgICAgICAgY29uc3QgZGVwdGhTaXplID0gTWF0aC50YW4oKChmb3YgLyAyKSAqIE1hdGguUEkpIC8gMTgwKTtcbiAgICAgICAgY29uc3QgZGlzdCA9IChtYXhSYW5nZSAqIGRpc3RTY2FsYXIpIC8gZGVwdGhTaXplO1xuICAgICAgICB0aGlzLmNhbWVyYUNvbXAubmVhciA9IGRpc3QgLSBtYXhSYW5nZTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLmZhciA9IGRpc3QgKyBtYXhSYW5nZTtcblxuICAgICAgICByZXR1cm4gZGlzdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb3VzZURvd24oZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLmlzTW91c2VEb3duID0gdHJ1ZTtcblxuICAgICAgICB0aGlzLmNhbWVyYUNvbXAubm9kZS5nZXRXb3JsZFJvdGF0aW9uKHRoaXMuX2N1clJvdCk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5ub2RlLmdldFdvcmxkUG9zaXRpb24odGhpcy5fY3VyUG9zKTtcblxuICAgICAgICBpZiAoKGV2ZW50LmJ1dHRvbiA9PT0gRXZlbnRNb3VzZS5CVVRUT05fTEVGVCB8fCAhZXZlbnQuYnV0dG9uKSkge1xuICAgICAgICAgICAgdGhpcy5pc01vdXNlTGVmdCA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNhbWVyYUNvbXAubm9kZS5nZXRXb3JsZFJvdGF0aW9uKHRoaXMuY3VyQ2FtZXJhUm90KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Nb3VzZU1vdmUoZXZlbnQ6IGFueSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNNb3VzZURvd24pIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNb3VzZUxlZnQpIHtcbiAgICAgICAgICAgIHRoaXMucm90YXRlKGV2ZW50Lm1vdmVtZW50WCB8IDAsIGV2ZW50Lm1vdmVtZW50WSB8IDApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW91c2VVcChldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMuaXNNb3VzZURvd24gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc01vdXNlTGVmdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vdXNlV2hlZWwoZXZlbnQ6IGFueSkge1xuICAgICAgICB0aGlzLnNjYWxlKGV2ZW50LndoZWVsRGVsdGFZKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc2NhbGUoZGVsdGE6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fZmxpcFdoZWVsRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICBkZWx0YSA9IC1kZWx0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbmFsRGVsdGEgPSAoKHRoaXMuY2FtZXJhQ29tcC5mYXIgLSB0aGlzLmNhbWVyYUNvbXAubmVhcikgLyAxMDApO1xuICAgICAgICBjb25zdCBub2RlID0gdGhpcy5jYW1lcmFDb21wLm5vZGU7XG4gICAgICAgIGNvbnN0IGN1clBvcyA9IHRoaXMuX2N1clBvcztcbiAgICAgICAgY29uc3QgZm9yd2FyZCA9IHRoaXMuX2ZvcndhcmQ7XG4gICAgICAgIGNvbnN0IHYzYSA9IHRoaXMuX3YzYTtcblxuICAgICAgICBub2RlLmdldFdvcmxkUG9zaXRpb24oY3VyUG9zKTtcbiAgICAgICAgbm9kZS5nZXRXb3JsZFJvdGF0aW9uKHRoaXMuX2N1clJvdCk7XG4gICAgICAgIFZlYzMudHJhbnNmb3JtUXVhdChmb3J3YXJkLCBWZWMzLlVOSVRfWiwgdGhpcy5fY3VyUm90KTtcblxuICAgICAgICBWZWMzLm11bHRpcGx5U2NhbGFyKHYzYSwgZm9yd2FyZCwgZmluYWxEZWx0YSAqIE1hdGguc2lnbihkZWx0YSkpO1xuICAgICAgICBWZWMzLmFkZChjdXJQb3MsIGN1clBvcywgdjNhKTtcbiAgICAgICAgbWFrZVZlYzNJblJhbmdlKGN1clBvcywgLTFlMTIsIDFlMTIpO1xuICAgICAgICBjb25zdCB0ZW1wRGlzdCA9IFZlYzMuZGlzdGFuY2UoY3VyUG9zLCB0aGlzLnZpZXdDZW50ZXIpO1xuICAgICAgICBjb25zdCBtaW4gPSB0aGlzLmNhbWVyYUNvbXAubmVhciAqIDI7XG4gICAgICAgIGNvbnN0IG1heCA9IHRoaXMuY2FtZXJhQ29tcC5mYXIgLyAzO1xuXG4gICAgICAgIC8vIGlmICh0ZW1wRGlzdCA+IG1pbiAmJiBtYXggPiB0ZW1wRGlzdCkge1xuICAgICAgICB0aGlzLnZpZXdEaXN0ID0gdGVtcERpc3Q7XG4gICAgICAgIG5vZGUuc2V0V29ybGRQb3NpdGlvbihjdXJQb3MpO1xuICAgICAgICAvLyB9XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcm90YXRlKGR4OiBudW1iZXIsIGR5OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW91c2VEb3duICYmICF0aGlzLmlzTW91c2VMZWZ0KSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmNhbWVyYUNvbXAubm9kZS5nZXRXb3JsZFJvdGF0aW9uKHRoaXMuX2N1clJvdCk7XG4gICAgICAgIGNvbnN0IHJvdCA9IHRoaXMuX2N1clJvdDtcbiAgICAgICAgY29uc3QgZXVsZXIgPSBjYy52MygpO1xuXG4gICAgICAgIFF1YXQucm90YXRlWChyb3QsIHJvdCwgLWR5ICogdGhpcy5vcmJpdFJvdGF0ZVNwZWVkKTtcbiAgICAgICAgUXVhdC5yb3RhdGVBcm91bmQocm90LCByb3QsIFZlYzMuVU5JVF9ZLCAtZHggKiB0aGlzLm9yYml0Um90YXRlU3BlZWQpO1xuICAgICAgICBRdWF0LnRvRXVsZXIoZXVsZXIsIHJvdCk7XG5cbiAgICAgICAgUXVhdC5mcm9tRXVsZXIocm90LCBldWxlci54LCBldWxlci55LCAwKTsgLy8gY2xlYXIgcm90YXRlIG9mIHpcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gY2MudjMoMCwgMCwgMSk7XG4gICAgICAgIFZlYzMudHJhbnNmb3JtUXVhdChvZmZzZXQsIG9mZnNldCwgcm90KTtcbiAgICAgICAgVmVjMy5ub3JtYWxpemUob2Zmc2V0LCBvZmZzZXQpO1xuXG4gICAgICAgIFZlYzMubXVsdGlwbHlTY2FsYXIob2Zmc2V0LCBvZmZzZXQsIHRoaXMudmlld0Rpc3QpO1xuICAgICAgICBWZWMzLmFkZCh0aGlzLl9jdXJQb3MsIHRoaXMudmlld0NlbnRlciwgb2Zmc2V0KTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUuc2V0V29ybGRQb3NpdGlvbih0aGlzLl9jdXJQb3MpO1xuXG4gICAgICAgIGNvbnN0IHVwID0gY2MudjMoMCwgMSwgMCk7XG4gICAgICAgIFZlYzMudHJhbnNmb3JtUXVhdCh1cCwgdXAsIHJvdCk7XG4gICAgICAgIFZlYzMubm9ybWFsaXplKHVwLCB1cCk7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5ub2RlLmxvb2tBdCh0aGlzLnZpZXdDZW50ZXIsIHVwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Wm9vbShzY2FsZTogbnVtYmVyKSB7XG4gICAgICAgIC8v5ZCR5YmN5rua5YqoID4gMCDlkJHlkI7mu5rliqggPCAwXG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5ub2RlLmxvb2tBdCh0aGlzLmNhbWVyYUNvbXAuY2FtZXJhLmZvcndhcmQpO1xuICAgICAgICB0aGlzLmNhbWVyYUNvbXAubm9kZS53b3JsZFBvc2l0aW9uLmFkZCh0aGlzLmNhbWVyYUNvbXAuY2FtZXJhLmZvcndhcmQubXVsdGlwbHlTY2FsYXIoc2NhbGUpKTtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLm5vZGUuc2V0V29ybGRQb3NpdGlvbih0aGlzLmNhbWVyYUNvbXAubm9kZS53b3JsZFBvc2l0aW9uKTtcbiAgICAgICAgdGhpcy52aWV3RGlzdCA9IFZlYzMuZGlzdGFuY2UodGhpcy5jYW1lcmFDb21wLm5vZGUud29ybGRQb3NpdGlvbiwgdGhpcy52aWV3Q2VudGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGlkZSgpIHtcbiAgICAgICAgdGhpcy5jYW1lcmFDb21wLmVuYWJsZWQgPSBmYWxzZTtcbiAgICB9XG59XG5cbmV4cG9ydCB7IEludGVyYWN0aXZlUHJldmlldyB9O1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/preview/buffer.js b/extensions/shader-graph/dist/contributions/preview/buffer.js new file mode 100644 index 0000000..e76d568 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/preview/buffer.js @@ -0,0 +1,206 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PreviewBuffer = void 0; +const cc_1 = require("cc"); +// @ts-ignore +module.paths.push(AppModulePath); +class PreviewBuffer { + constructor(registerName, name, scene = null) { + this.device = cc.director.root.device; + this.width = Math.floor(cc.director.root.mainWindow.width); + this.height = Math.floor(cc.director.root.mainWindow.height); + this.data = new Uint8Array(this.width * this.height * 4); + this.renderScene = null; + this.scene = null; + this.windows = {}; + this.window = null; + // windowList: IWindowInfo[] = []; + this.regions = [new cc_1.gfx.BufferTextureCopy()]; + this.lock = false; + this.needInvertGFXApi = [ + cc_1.gfx.API.GLES2, + cc_1.gfx.API.GLES3, + cc_1.gfx.API.WEBGL, + cc_1.gfx.API.WEBGL2, + ]; + this.renderData = { + width: this.width, + height: this.height, + buffer: this.data, + }; + this._name = name; + this._registerName = registerName; + this.onLoadScene(scene); + this.regions[0].texExtent.width = this.width; + this.regions[0].texExtent.height = this.height; + this.createWindow(); + this.queue = []; + } + resize(width, height, window = null) { + window || (window = this.window); + // only resize when window is render window + if (!window) + return; + width = Math.floor(width); + height = Math.floor(height); + this.renderData.width = this.width = width; + this.renderData.height = this.height = height; + this.regions[0].texExtent.width = width; + this.regions[0].texExtent.height = height; + window.resize(width, height); + this.renderData.buffer = this.data = new Uint8Array(this.width * this.height * 4); + } + /** + * WARNING: DO'NOT USE IT BEFORE DRAW!!! + */ + clear() { + // hack: resize width and height with 0 will be clear buff,realtime clear all data + if (!isSceneNative) { + this.resize(0, 0, this.window); // 原生场景会报错 + } + this.resize(this.width, this.height, this.window); + } + createWindow(uuid = null) { + if (uuid && this.windows[uuid]) { + this.window = this.windows[uuid]; + return; + } + const root = cc.director.root; + const renderPassInfo = new cc_1.gfx.RenderPassInfo([new cc_1.gfx.ColorAttachment(root.mainWindow.swapchain.colorTexture.format)], new cc_1.gfx.DepthStencilAttachment(root.mainWindow.swapchain.depthStencilTexture.format)); + renderPassInfo.colorAttachments[0].barrier = root.device.getGeneralBarrier(new cc_1.gfx.GeneralBarrierInfo(0, cc_1.gfx.AccessFlagBit.FRAGMENT_SHADER_READ_TEXTURE)); + const window = root.createWindow({ + title: this._name, + width: this.width, + height: this.height, + renderPassInfo, + isOffscreen: true, + }); + this.window = window; + uuid && (this.windows[uuid] = window); + } + removeWindow(uuid) { + if (uuid && this.windows[uuid]) { + cc.director.root.destroyWindow(this.windows[uuid]); + if (this.windows[uuid] === this.window) + this.window = null; + delete this.windows[uuid]; + } + } + onLoadScene(scene) { + this.windows = {}; + this.scene = scene; + this.renderScene = scene.renderScene; + } + switchCameras(camera, currWindow) { + if (currWindow) { + camera.isWindowSize = false; + camera.isEnable = true; + camera.changeTargetWindow(currWindow); + cc.director.root.tempWindow = currWindow; + } + } + copyFrameBuffer(window = null) { + window || (window = this.window); + if (!window || !window.framebuffer) + return this.renderData; + this.device.copyTextureToBuffers(window.framebuffer.colorTextures[0], [new Uint8Array(this.renderData.buffer.buffer)], this.regions); + this.formatBuffer(this.renderData.buffer, !this.needInvertGFXApi.includes(this.device.gfxAPI), this.device.gfxAPI === cc_1.gfx.API.METAL); + return this.renderData; + } + formatBuffer(buffer, needInvert, conversionBGRA) { + if (!needInvert) + return buffer; + let startIndex, invertIndex; + const V_U_Vec4 = { r: 0, g: 0, b: 0, a: 0 }; + const indexArr = conversionBGRA ? PreviewBuffer.indexOfBGRA : PreviewBuffer.indexOfRGBA; + for (let w = 0; w < this.renderData.width; w++) { + for (let h = 0; h <= this.renderData.height / 2; h++) { + startIndex = (h * this.renderData.width + w) * 4; + // invert index + invertIndex = ((this.renderData.height - h) * this.renderData.width + w) * 4; + // flip Y + V_U_Vec4.r = buffer[startIndex + indexArr[0]]; + V_U_Vec4.g = buffer[startIndex + indexArr[1]]; + V_U_Vec4.b = buffer[startIndex + indexArr[2]]; + V_U_Vec4.a = buffer[startIndex + indexArr[3]]; + buffer[startIndex + 0] = buffer[invertIndex + indexArr[0]]; + buffer[startIndex + 1] = buffer[invertIndex + indexArr[1]]; + buffer[startIndex + 2] = buffer[invertIndex + indexArr[2]]; + buffer[startIndex + 3] = buffer[invertIndex + indexArr[3]]; + buffer[invertIndex + 0] = V_U_Vec4.r; + buffer[invertIndex + 1] = V_U_Vec4.g; + buffer[invertIndex + 2] = V_U_Vec4.b; + buffer[invertIndex + 3] = V_U_Vec4.a; + } + } + return buffer; + } + getImageDataInQueue(width, height, event) { + const params = { + width: Math.floor(width), + height: Math.floor(height), + }; + this.queue.push({ + params, + event, + }); + this.step(); + } + async step() { + if (this.lock) { + return; + } + this.lock = true; + const item = this.queue.shift(); + if (!item) { + this.lock = false; + return; + } + const { params, event } = item; + const data = await this.getImageData(params.width, params.height); + event.reply(null, data); + this.lock = false; + this.step(); + } + async getImageData(width, height) { + if (!this.renderScene) { + return this.renderData; + } + cce.Engine.repaintInEditMode(); + const root = this.renderScene.root; + const currWindow = this.window; + if (!currWindow) { + return this.renderData; + } + let curWindowCamera = null; + if (root) { + for (const window of root.windows) { + if (window.cameras.length > 0 && window === currWindow) { + // 对于preview可以认为一个window对应一个view + curWindowCamera = window.cameras[0]; + } + } + } + if (!curWindowCamera) { + return this.renderData; + } + const needResize = width && height && (width !== this.width || height !== this.height); + if (needResize) { + this.resize(width, height, currWindow); + } + if (curWindowCamera.width !== this.width || curWindowCamera.height !== this.height) { + curWindowCamera.resize(width, height); + } + curWindowCamera.update(true); + // 取一帧渲染完的数据 + return await new Promise((resolve) => { + cc.director.once(cc.Director.EVENT_AFTER_DRAW, () => { + resolve(this.copyFrameBuffer(this.window)); + }); + }); + } +} +exports.PreviewBuffer = PreviewBuffer; +PreviewBuffer.indexOfRGBA = [0, 1, 2, 3]; // r=>0 g=>1 b=>2 a=>3 +PreviewBuffer.indexOfBGRA = [2, 1, 0, 3]; // r=>2 g=>1 b=>0 a=>3 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVmZmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvcHJldmlldy9idWZmZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW1DO0FBS25DLGFBQWE7QUFDYixNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztBQVNqQyxNQUFhLGFBQWE7SUFnQnRCLFlBQVksWUFBb0IsRUFBRSxJQUFZLEVBQUUsUUFBYSxJQUFJO1FBZGpFLFdBQU0sR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDakMsVUFBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3RELFdBQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN4RCxTQUFJLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3BELGdCQUFXLEdBQVEsSUFBSSxDQUFDO1FBQ3hCLFVBQUssR0FBUSxJQUFJLENBQUM7UUFDbEIsWUFBTyxHQUFRLEVBQUUsQ0FBQztRQUNsQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2Qsa0NBQWtDO1FBQ2xDLFlBQU8sR0FBRyxDQUFDLElBQUksUUFBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQztRQUd4QyxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBdUZOLHFCQUFnQixHQUFHO1lBQ3RCLFFBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNiLFFBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSztZQUNiLFFBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSztZ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QUFPLEVBQUUsRUFBRTtZQUNqQyxFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtnQkFDaEQsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBN09MLHNDQThPQztBQWhIVSx5QkFBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQSxzQkFBc0I7QUFDakQseUJBQVcsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUEsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2Z4LCByZW5kZXJlciB9IGZyb20gJ2NjJztcblxuZGVjbGFyZSBjb25zdCBjYzogYW55O1xuZGVjbGFyZSBjb25zdCBjY2U6IGFueTtcbmRlY2xhcmUgY29uc3QgaXNTY2VuZU5hdGl2ZTogYm9vbGVhbjtcbi8vIEB0cy1pZ25vcmVcbm1vZHVsZS5wYXRocy5wdXNoKEFwcE1vZHVsZVBhdGgpO1xuXG5leHBvcnQgaW50ZXJmYWNlIElXaW5kb3dJbmZvIHtcbiAgICBpbmRleDogbnVtYmVyO1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgd2luZG93PzogYW55O1xufVxuXG5leHBvcnQgY2xhc3MgUHJldmlld0J1ZmZlciB7XG4gICAgcHJpdmF0ZSBfbmFtZTogc3RyaW5nO1xuICAgIGRldmljZSA9IGNjLmRpcmVjdG9yLnJvb3QuZGV2aWNlO1xuICAgIHdpZHRoID0gTWF0aC5mbG9vcihjYy5kaXJlY3Rvci5yb290Lm1haW5XaW5kb3cud2lkdGgpO1xuICAgIGhlaWdodCA9IE1hdGguZmxvb3IoY2MuZGlyZWN0b3Iucm9vdC5tYWluV2luZG93LmhlaWdodCk7XG4gICAgZGF0YSA9IG5ldyBVaW50OEFycmF5KHRoaXMud2lkdGggKiB0aGlzLmhlaWdodCAqIDQpO1xuICAgIHJlbmRlclNjZW5lOiBhbnkgPSBudWxsO1xuICAgIHNjZW5lOiBhbnkgPSBudWxsO1xuICAgIHdpbmRvd3M6IGFueSA9IHt9O1xuICAgIHdpbmRvdyA9IG51bGw7XG4gICAgLy8gd2luZG93TGlzdDogSVdpbmRvd0luZm9bXSA9IFtdO1xuICAgIHJlZ2lvbnMgPSBbbmV3IGdmeC5CdWZmZXJUZXh0dXJlQ29weSgpXTtcbiAgICByZW5kZXJEYXRhOiBhbnk7XG4gICAgcXVldWU6IGFueVtdO1xuICAgIGxvY2sgPSBmYWxzZTtcbiAgICBfcmVnaXN0ZXJOYW1lPzogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHJlZ2lzdGVyTmFtZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIHNjZW5lOiBhbnkgPSBudWxsKSB7XG4gICAgICAgIHRoaXMucmVuZGVyRGF0YSA9IHtcbiAgICAgICAgICAgIHdpZHRoOiB0aGlzLndpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgICAgIGJ1ZmZlcjogdGhpcy5kYXRhLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5fcmVnaXN0ZXJOYW1lID0gcmVnaXN0ZXJOYW1lO1xuICAgICAgICB0aGlzLm9uTG9hZFNjZW5lKHNjZW5lKTtcbiAgICAgICAgdGhpcy5yZWdpb25zWzBdLnRleEV4dGVudC53aWR0aCA9IHRoaXMud2lkdGg7XG4gICAgICAgIHRoaXMucmVnaW9uc1swXS50ZXhFeHRlbnQuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7XG4gICAgICAgIHRoaXMuY3JlYXRlV2luZG93KCk7XG4gICAgICAgIHRoaXMucXVldWUgPSBbXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCB3aW5kb3c6IGFueSA9IG51bGwpIHtcbiAgICAgICAgd2luZG93IHx8ICh3aW5kb3cgPSB0aGlzLndpbmRvdyk7XG4gICAgICAgIC8vIG9ubHkgcmVzaXplIHdoZW4gd2luZG93IGlzIHJlbmRlciB3aW5kb3dcbiAgICAgICAgaWYgKCF3aW5kb3cpIHJldHVybjtcbiAgICAgICAgd2lkdGggPSBNYXRoLmZsb29yKHdpZHRoKTtcbiAgICAgICAgaGVpZ2h0ID0gTWF0aC5mbG9vcihoZWlnaHQpO1xuICAgICAgICB0aGlzLnJlbmRlckRhdGEud2lkdGggPSB0aGlzLndpZHRoID0gd2lkdGg7XG4gICAgICAgIHRoaXMucmVuZGVyRGF0YS5oZWlnaHQgPSB0aGlzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgdGhpcy5yZWdpb25zWzBdLnRleEV4dGVudC53aWR0aCA9IHdpZHRoO1xuICAgICAgICB0aGlzLnJlZ2lvbnNbMF0udGV4RXh0ZW50LmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgd2luZG93LnJlc2l6ZSh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgdGhpcy5yZW5kZXJEYXRhLmJ1ZmZlciA9IHRoaXMuZGF0YSA9IG5ldyBVaW50OEFycmF5KHRoaXMud2lkdGggKiB0aGlzLmhlaWdodCAqIDQpO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXQVJOSU5HOiBETydOT1QgVVNFIElUIEJFRk9SRSBEUkFXISEhXG4gICAgICovXG4gICAgcHVibGljIGNsZWFyKCkge1xuICAgICAgICAvLyBoYWNrOiByZXNpemUgd2lkdGggYW5kIGhlaWdodCB3aXRoIDAgd2lsbCBiZSBjbGVhciBidWZmLHJlYWx0aW1lIGNsZWFyIGFsbCBkYXRhXG4gICAgICAgIGlmICghaXNTY2VuZU5hdGl2ZSkge1xuICAgICAgICAgICAgdGhpcy5yZXNpemUoMCwgMCwgdGhpcy53aW5kb3cpOyAvLyDljp/nlJ/lnLrmma/kvJrmiqXplJlcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2l6ZSh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwgdGhpcy53aW5kb3cpO1xuICAgIH1cblxuICAgIGNyZWF0ZVdpbmRvdyh1dWlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCkge1xuICAgICAgICBpZiAodXVpZCAmJiB0aGlzLndpbmRvd3NbdXVpZF0pIHtcbiAgICAgICAgICAgIHRoaXMud2luZG93ID0gdGhpcy53aW5kb3dzW3V1aWRdO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJvb3QgPSBjYy5kaXJlY3Rvci5yb290O1xuICAgICAgICBjb25zdCByZW5kZXJQYXNzSW5mbyA9IG5ldyBnZnguUmVuZGVyUGFzc0luZm8oXG4gICAgICAgICAgICBbbmV3IGdmeC5Db2xvckF0dGFjaG1lbnQocm9vdC5tYWluV2luZG93LnN3YXBjaGFpbi5jb2xvclRleHR1cmUuZm9ybWF0KV0sXG4gICAgICAgICAgICBuZXcgZ2Z4LkRlcHRoU3RlbmNpbEF0dGFjaG1lbnQocm9vdC5tYWluV2luZG93LnN3YXBjaGFpbi5kZXB0aFN0ZW5jaWxUZXh0dXJlLmZvcm1hdCksXG4gICAgICAgICk7XG4gICAgICAgIHJlbmRlclBhc3NJbmZvLmNvbG9yQXR0YWNobWVudHNbMF0uYmFycmllciA9IHJvb3QuZGV2aWNlLmdldEdlbmVyYWxCYXJyaWVyKG5ldyBnZnguR2VuZXJhbEJhcnJpZXJJbmZvKDAsIGdmeC5BY2Nlc3NGbGFnQml0LkZSQUdNRU5UX1NIQURFUl9SRUFEX1RFWFRVUkUpKTtcbiAgICAgICAgY29uc3Qgd2luZG93ID0gcm9vdC5jcmVhdGVXaW5kb3coe1xuICAgICAgICAgICAgdGl0bGU6IHRoaXMuX25hbWUsXG4gICAgICAgICAgICB3aWR0aDogdGhpcy53aWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGhpcy5oZWlnaHQsXG4gICAgICAgICAgICByZW5kZXJQYXNzSW5mbyxcbiAgICAgICAgICAgIGlzT2Zmc2NyZWVuOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy53aW5kb3cgPSB3aW5kb3c7XG4gICAgICAgIHV1aWQgJiYgKHRoaXMud2luZG93c1t1dWlkXSA9IHdpbmRvdyk7XG4gICAgfVxuXG4gICAgcmVtb3ZlV2luZG93KHV1aWQ6IHN0cmluZykge1xuICAgICAgICBpZiAodXVpZCAmJiB0aGlzLndpbmRvd3NbdXVpZF0pIHtcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLnJvb3QuZGVzdHJveVdpbmRvdyh0aGlzLndpbmRvd3NbdXVpZF0pO1xuICAgICAgICAgICAgaWYgKHRoaXMud2luZG93c1t1dWlkXSA9PT0gdGhpcy53aW5kb3cpIHRoaXMud2luZG93ID0gbnVsbDtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLndpbmRvd3NbdXVpZF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkxvYWRTY2VuZShzY2VuZTogYW55KSB7XG4gICAgICAgIHRoaXMud2luZG93cyA9IHt9O1xuICAgICAgICB0aGlzLnNjZW5lID0gc2NlbmU7XG4gICAgICAgIHRoaXMucmVuZGVyU2NlbmUgPSBzY2VuZS5yZW5kZXJTY2VuZTtcblxuICAgIH1cblxuICAgIHN3aXRjaENhbWVyYXMoY2FtZXJhOiBhbnksIGN1cnJXaW5kb3c6IGFueSkge1xuICAgICAgICBpZiAoY3VycldpbmRvdykge1xuICAgICAgICAgICAgY2FtZXJhLmlzV2luZG93U2l6ZSA9IGZhbHNlO1xuICAgICAgICAgICAgY2FtZXJhLmlzRW5hYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgIGNhbWVyYS5jaGFuZ2VUYXJnZXRXaW5kb3coY3VycldpbmRvdyk7XG4gICAgICAgICAgICBjYy5kaXJlY3Rvci5yb290LnRlbXBXaW5kb3cgPSBjdXJyV2luZG93O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG5lZWRJbnZlcnRHRlhBcGkgPSBbXG4gICAgICAgIGdmeC5BUEkuR0xFUzIsXG4gICAgICAgIGdmeC5BUEkuR0xFUzMsXG4gICAgICAgIGdmeC5BUEkuV0VCR0wsXG4gICAgICAgIGdmeC5BUEkuV0VCR0wyLFxuICAgIF07XG5cbiAgICBjb3B5RnJhbWVCdWZmZXIod2luZG93OiBhbnkgPSBudWxsKSB7XG4gICAgICAgIHdpbmRvdyB8fCAod2luZG93ID0gdGhpcy53aW5kb3cpO1xuICAgICAgICBpZiAoIXdpbmRvdyB8fCAhd2luZG93LmZyYW1lYnVmZmVyKSByZXR1cm4gdGhpcy5yZW5kZXJEYXRhO1xuICAgICAgICB0aGlzLmRldmljZS5jb3B5VGV4dHVyZVRvQnVmZmVycyhcbiAgICAgICAgICAgIHdpbmRvdy5mcmFtZWJ1ZmZlci5jb2xvclRleHR1cmVzWzBdLFxuICAgICAgICAgICAgW25ldyBVaW50OEFycmF5KHRoaXMucmVuZGVyRGF0YS5idWZmZXIuYnVmZmVyKV0sXG4gICAgICAgICAgICB0aGlzLnJlZ2lvbnNcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLmZvcm1hdEJ1ZmZlcihcbiAgICAgICAgICAgIHRoaXMucmVuZGVyRGF0YS5idWZmZXIsXG4gICAgICAgICAgICAhdGhpcy5uZWVkSW52ZXJ0R0ZYQXBpLmluY2x1ZGVzKHRoaXMuZGV2aWNlLmdmeEFQSSksXG4gICAgICAgICAgICB0aGlzLmRldmljZS5nZnhBUEkgPT09IGdmeC5BUEkuTUVUQUxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJEYXRhO1xuICAgIH1cblxuICAgIHN0YXRpYyBpbmRleE9mUkdCQSA9IFswLCAxLCAyLCAzXTsvLyByPT4wIGc9PjEgYj0+MiBhPT4zXG4gICAgc3RhdGljIGluZGV4T2ZCR1JBID0gWzIsIDEsIDAsIDNdOy8vIHI9PjIgZz0+MSBiPT4wIGE9PjNcbiAgICBmb3JtYXRCdWZmZXIoYnVmZmVyOiBVaW50OEFycmF5LCBuZWVkSW52ZXJ0OiBib29sZWFuLCBjb252ZXJzaW9uQkdSQTogYm9vbGVhbikge1xuICAgICAgICBpZiAoIW5lZWRJbnZlcnQpIHJldHVybiBidWZmZXI7XG5cbiAgICAgICAgbGV0IHN0YXJ0SW5kZXgsIGludmVydEluZGV4O1xuICAgICAgICBjb25zdCBWX1VfVmVjNCA9IHsgcjogMCwgZzogMCwgYjogMCwgYTogMCB9O1xuXG4gICAgICAgIGNvbnN0IGluZGV4QXJyID0gY29udmVyc2lvbkJHUkEgPyBQcmV2aWV3QnVmZmVyLmluZGV4T2ZCR1JBIDogUHJldmlld0J1ZmZlci5pbmRleE9mUkdCQTtcblxuICAgICAgICBmb3IgKGxldCB3ID0gMDsgdyA8IHRoaXMucmVuZGVyRGF0YS53aWR0aDsgdysrKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBoID0gMDsgaCA8PSB0aGlzLnJlbmRlckRhdGEuaGVpZ2h0IC8gMjsgaCsrKSB7XG5cbiAgICAgICAgICAgICAgICBzdGFydEluZGV4ID0gKGggKiB0aGlzLnJlbmRlckRhdGEud2lkdGggKyB3KSAqIDQ7XG4gICAgICAgICAgICAgICAgLy8gaW52ZXJ0IGluZGV4XG4gICAgICAgICAgICAgICAgaW52ZXJ0SW5kZXggPSAoKHRoaXMucmVuZGVyRGF0YS5oZWlnaHQgLSBoKSAqIHRoaXMucmVuZGVyRGF0YS53aWR0aCArIHcpICogNDtcblxuICAgICAgICAgICAgICAgIC8vIGZsaXAgWVxuICAgICAgICAgICAgICAgIFZfVV9WZWM0LnIgPSBidWZmZXJbc3RhcnRJbmRleCArIGluZGV4QXJyWzBdXTtcbiAgICAgICAgICAgICAgICBWX1VfVmVjNC5nID0gYnVmZmVyW3N0YXJ0SW5kZXggKyBpbmRleEFyclsxXV07XG4gICAgICAgICAgICAgICAgVl9VX1ZlYzQuYiA9IGJ1ZmZlcltzdGFydEluZGV4ICsgaW5kZXhBcnJbMl1dO1xuICAgICAgICAgICAgICAgIFZfVV9WZWM0LmEgPSBidWZmZXJbc3RhcnRJbmRleCArIGluZGV4QXJyWzNdXTtcblxuICAgICAgICAgICAgICAgIGJ1ZmZlcltzdGFydEluZGV4ICsgMF0gPSBidWZmZXJbaW52ZXJ0SW5kZXggKyBpbmRleEFyclswXV07XG4gICAgICAgICAgICAgICAgYnVmZmVyW3N0YXJ0SW5kZXggKyAxXSA9IGJ1ZmZlcltpbnZlcnRJbmRleCArIGluZGV4QXJyWzFdXTtcbiAgICAgICAgICAgICAgICBidWZmZXJbc3RhcnRJbmRleCArIDJdID0gYnVmZmVyW2ludmVydEluZGV4ICsgaW5kZXhBcnJbMl1dO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcltzdGFydEluZGV4ICsgM10gPSBidWZmZXJbaW52ZXJ0SW5kZXggKyBpbmRleEFyclszXV07XG5cbiAgICAgICAgICAgICAgICBidWZmZXJbaW52ZXJ0SW5kZXggKyAwXSA9IFZfVV9WZWM0LnI7XG4gICAgICAgICAgICAgICAgYnVmZmVyW2ludmVydEluZGV4ICsgMV0gPSBWX1VfVmVjNC5nO1xuICAgICAgICAgICAgICAgIGJ1ZmZlcltpbnZlcnRJbmRleCArIDJdID0gVl9VX1ZlYzQuYjtcbiAgICAgICAgICAgICAgICBidWZmZXJbaW52ZXJ0SW5kZXggKyAzXSA9IFZfVV9WZWM0LmE7XG5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgfVxuXG4gICAgZ2V0SW1hZ2VEYXRhSW5RdWV1ZSh3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgZXZlbnQ6IGFueSkge1xuICAgICAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICAgICAgICB3aWR0aDogTWF0aC5mbG9vcih3aWR0aCksXG4gICAgICAgICAgICBoZWlnaHQ6IE1hdGguZmxvb3IoaGVpZ2h0KSxcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5xdWV1ZS5wdXNoKHtcbiAgICAgICAgICAgIHBhcmFtcyxcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zdGVwKCk7XG4gICAgfVxuXG4gICAgYXN5bmMgc3RlcCgpIHtcbiAgICAgICAgaWYgKHRoaXMubG9jaykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9jayA9IHRydWU7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLnF1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIGlmICghaXRlbSkge1xuICAgICAgICAgICAgdGhpcy5sb2NrID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBwYXJhbXMsIGV2ZW50IH0gPSBpdGVtO1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5nZXRJbWFnZURhdGEocGFyYW1zLndpZHRoLCBwYXJhbXMuaGVpZ2h0KTtcbiAgICAgICAgZXZlbnQucmVwbHkobnVsbCwgZGF0YSk7XG4gICAgICAgIHRoaXMubG9jayA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0ZXAoKTtcbiAgICB9XG5cbiAgICBhc3luYyBnZXRJbWFnZURhdGEod2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnJlbmRlclNjZW5lKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJEYXRhO1xuICAgICAgICB9XG4gICAgICAgIGNjZS5FbmdpbmUucmVwYWludEluRWRpdE1vZGUoKTtcblxuICAgICAgICBjb25zdCByb290ID0gdGhpcy5yZW5kZXJTY2VuZS5yb290O1xuICAgICAgICBjb25zdCBjdXJyV2luZG93ID0gdGhpcy53aW5kb3c7XG4gICAgICAgIGlmICghY3VycldpbmRvdykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVuZGVyRGF0YTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjdXJXaW5kb3dDYW1lcmE6IHJlbmRlcmVyLnNjZW5lLkNhbWVyYSB8IG51bGwgfCB1bmRlZmluZWQgPSBudWxsO1xuICAgICAgICBpZiAocm9vdCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCB3aW5kb3cgb2Ygcm9vdC53aW5kb3dzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHdpbmRvdy5jYW1lcmFzLmxlbmd0aCA+IDAgJiYgd2luZG93ID09PSBjdXJyV2luZG93KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIOWvueS6jnByZXZpZXflj6/ku6XorqTkuLrkuIDkuKp3aW5kb3flr7nlupTkuIDkuKp2aWV3XG4gICAgICAgICAgICAgICAgICAgIGN1cldpbmRvd0NhbWVyYSA9IHdpbmRvdy5jYW1lcmFzWzBdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghY3VyV2luZG93Q2FtZXJhKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJEYXRhO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmVlZFJlc2l6ZSA9IHdpZHRoICYmIGhlaWdodCAmJiAod2lkdGggIT09IHRoaXMud2lkdGggfHwgaGVpZ2h0ICE9PSB0aGlzLmhlaWdodCk7XG4gICAgICAgIGlmIChuZWVkUmVzaXplKSB7XG4gICAgICAgICAgICB0aGlzLnJlc2l6ZSh3aWR0aCwgaGVpZ2h0LCBjdXJyV2luZG93KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjdXJXaW5kb3dDYW1lcmEud2lkdGggIT09IHRoaXMud2lkdGggfHwgY3VyV2luZG93Q2FtZXJhLmhlaWdodCAhPT0gdGhpcy5oZWlnaHQpIHtcbiAgICAgICAgICAgIGN1cldpbmRvd0NhbWVyYS5yZXNpemUod2lkdGgsIGhlaWdodCk7XG4gICAgICAgIH1cblxuICAgICAgICBjdXJXaW5kb3dDYW1lcmEudXBkYXRlKHRydWUpO1xuXG4gICAgICAgIC8vIOWPluS4gOW4p+a4suafk+WujOeahOaVsOaNrlxuICAgICAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNjLmRpcmVjdG9yLm9uY2UoY2MuRGlyZWN0b3IuRVZFTlRfQUZURVJfRFJBVywgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5jb3B5RnJhbWVCdWZmZXIodGhpcy53aW5kb3cpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/preview/index.js b/extensions/shader-graph/dist/contributions/preview/index.js new file mode 100644 index 0000000..2b2b0c6 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/preview/index.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PreviewManager = void 0; +const shader_graph_preview_1 = require("./shader-graph-preview"); +class PreviewManager { + constructor() { + this.loaded = false; + } + async load() { + if (!this.loaded) { + // 要确保编辑器预览插件比这个先注册 + const ccePreview = cce.Preview; + await ccePreview.initPreview('shader-graph-preview', 'query-shader-graph-preview-data', shader_graph_preview_1.shaderGraphPreview); + this.loaded = true; + } + } + unload() { } +} +exports.PreviewManager = PreviewManager; +const previewManager = new PreviewManager(); +exports.default = previewManager; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy9wcmV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGlFQUE0RDtBQUc1RCxNQUFhLGNBQWM7SUFBM0I7UUFDSSxXQUFNLEdBQUcsS0FBSyxDQUFDO0lBVW5CLENBQUM7SUFURyxLQUFLLENBQUMsSUFBSTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ2QsbUJBQW1CO1lBQ25CLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7WUFDL0IsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLHNCQUFzQixFQUFFLGlDQUFpQyxFQUFFLHlDQUFrQixDQUFDLENBQUM7WUFDNUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7U0FDdEI7SUFDTCxDQUFDO0lBQ0QsTUFBTSxLQUFJLENBQUM7Q0FDZDtBQVhELHdDQVdDO0FBQ0QsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztBQUM1QyxrQkFBZSxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzaGFkZXJHcmFwaFByZXZpZXcgfSBmcm9tICcuL3NoYWRlci1ncmFwaC1wcmV2aWV3JztcbmRlY2xhcmUgY29uc3QgY2NlOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBQcmV2aWV3TWFuYWdlciB7XG4gICAgbG9hZGVkID0gZmFsc2U7XG4gICAgYXN5bmMgbG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZCkge1xuICAgICAgICAgICAgLy8g6KaB56Gu5L+d57yW6L6R5Zmo6aKE6KeI5o+S5Lu25q+U6L+Z5Liq5YWI5rOo5YaMXG4gICAgICAgICAgICBjb25zdCBjY2VQcmV2aWV3ID0gY2NlLlByZXZpZXc7XG4gICAgICAgICAgICBhd2FpdCBjY2VQcmV2aWV3LmluaXRQcmV2aWV3KCdzaGFkZXItZ3JhcGgtcHJldmlldycsICdxdWVyeS1zaGFkZXItZ3JhcGgtcHJldmlldy1kYXRhJywgc2hhZGVyR3JhcGhQcmV2aWV3KTtcbiAgICAgICAgICAgIHRoaXMubG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB1bmxvYWQoKSB7fVxufVxuY29uc3QgcHJldmlld01hbmFnZXIgPSBuZXcgUHJldmlld01hbmFnZXIoKTtcbmV4cG9ydCBkZWZhdWx0IHByZXZpZXdNYW5hZ2VyO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/preview/preview-base.js b/extensions/shader-graph/dist/contributions/preview/preview-base.js new file mode 100644 index 0000000..d177e0e --- /dev/null +++ b/extensions/shader-graph/dist/contributions/preview/preview-base.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PreviewBase = void 0; +class PreviewBase { + async queryPreviewData(info) { + return (await this.previewBuffer.getImageData(info.width, info.height)); + } + queryPreviewDataQueue(info, event) { + this.previewBuffer.getImageDataInQueue(info.width, info.height, event); + } + clearPreviewBuffer() { + this.previewBuffer.clear(); + } + init(registerName, queryName) { } +} +exports.PreviewBase = PreviewBase; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJldmlldy1iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvcHJldmlldy9wcmV2aWV3LWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxXQUFXO0lBRU4sS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQVM7UUFDbkMsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RSxDQUFDO0lBRU0scUJBQXFCLENBQUMsSUFBUyxFQUFFLEtBQVU7UUFDOUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBRSxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDNUUsQ0FBQztJQUNELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVNLElBQUksQ0FBQyxZQUFvQixFQUFFLFNBQWlCLElBQUksQ0FBQztDQUMzRDtBQUVRLGtDQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJldmlld0J1ZmZlciB9IGZyb20gJy4vYnVmZmVyJztcblxuY2xhc3MgUHJldmlld0Jhc2Uge1xuICAgIHByb3RlY3RlZCBwcmV2aWV3QnVmZmVyITogUHJldmlld0J1ZmZlcjtcbiAgICBwdWJsaWMgYXN5bmMgcXVlcnlQcmV2aWV3RGF0YShpbmZvOiBhbnkpIHtcbiAgICAgICAgcmV0dXJuIChhd2FpdCB0aGlzLnByZXZpZXdCdWZmZXIuZ2V0SW1hZ2VEYXRhKCBpbmZvLndpZHRoLCBpbmZvLmhlaWdodCkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBxdWVyeVByZXZpZXdEYXRhUXVldWUoaW5mbzogYW55LCBldmVudDogYW55KSB7XG4gICAgICAgIHRoaXMucHJldmlld0J1ZmZlci5nZXRJbWFnZURhdGFJblF1ZXVlKCBpbmZvLndpZHRoLCBpbmZvLmhlaWdodCwgZXZlbnQpO1xuICAgIH1cbiAgICBjbGVhclByZXZpZXdCdWZmZXIoKSB7XG4gICAgICAgIHRoaXMucHJldmlld0J1ZmZlci5jbGVhcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbml0KHJlZ2lzdGVyTmFtZTogc3RyaW5nLCBxdWVyeU5hbWU6IHN0cmluZykgeyB9XG59XG5cbmV4cG9ydCB7IFByZXZpZXdCYXNlIH07XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/preview/shader-graph-preview.js b/extensions/shader-graph/dist/contributions/preview/shader-graph-preview.js new file mode 100644 index 0000000..ab82d97 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/preview/shader-graph-preview.js @@ -0,0 +1,185 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.shaderGraphPreview = void 0; +const cc_1 = require("cc"); +const Interactive_preview_1 = require("./Interactive-preview"); +const regions = [new cc_1.gfx.BufferTextureCopy()]; +regions[0].texExtent.depth = 1; +function insertAdditionals(geometry) { + if (!geometry.customAttributes) { + geometry.customAttributes = []; + } + geometry.customAttributes.push({ + attr: new cc_1.gfx.Attribute(cc_1.gfx.AttributeName.ATTR_TANGENT, cc_1.gfx.Format.RGBA32F), + values: EditorExtends.GeometryUtils.calculateTangents(geometry.positions, geometry.indices, geometry.normals, geometry.uvs), + }); + return geometry; +} +const primitiveData = { + box: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.box())), + scale: new cc_1.Vec3(1, 1, 1), + }, + sphere: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.sphere())), + scale: new cc_1.Vec3(1, 1, 1), + }, + capsule: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.capsule())), + scale: new cc_1.Vec3(0.8, 0.8, 0.8), + }, + cylinder: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.cylinder())), + scale: new cc_1.Vec3(0.8, 0.8, 0.8), + }, + torus: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.torus())), + scale: new cc_1.Vec3(1, 1, 1), + }, + cone: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.cone())), + scale: new cc_1.Vec3(1, 1, 1), + }, + quad: { + mesh: cc_1.utils.createMesh(insertAdditionals(cc_1.primitives.quad())), + scale: new cc_1.Vec3(1, 1, 1), + }, +}; +const tempVec3A = new cc_1.Vec3(); +const tempVec3B = new cc_1.Vec3(); +const tempQuatA = new cc_1.Quat(); +const _matInsInfo = { + parent: null, + owner: null, + subModelIdx: 0, +}; +class ShaderGraphPreview extends Interactive_preview_1.InteractivePreview { + constructor() { + super(...arguments); + this.primitive = 'sphere'; + this.material = null; + this.cacheMeshs = {}; + } + init(registerName, queryName) { + super.init(registerName, queryName); + const device = cc_1.director.root.device; + this.uniformBuffer = device.createBuffer(new cc_1.gfx.BufferInfo(cc_1.gfx.BufferUsageBit.UNIFORM, cc_1.gfx.MemoryUsageBit.HOST | cc_1.gfx.MemoryUsageBit.DEVICE, 16)); + this.dummyUniformBuffer = device.createBuffer(new cc_1.gfx.BufferViewInfo(this.uniformBuffer, 0, this.uniformBuffer.size)); + this.storageBuffer = !isSceneNative ? this.uniformBuffer : device.createBuffer(new cc_1.gfx.BufferInfo(cc_1.gfx.BufferUsageBit.STORAGE, cc_1.gfx.MemoryUsageBit.HOST | cc_1.gfx.MemoryUsageBit.DEVICE, 16)); + this.dummyStorageBuffer = !isSceneNative ? this.dummyUniformBuffer : + device.createBuffer(new cc_1.gfx.BufferViewInfo(this.storageBuffer, 0, this.storageBuffer.size)); + this.dummySampleTexture = device.createTexture(new cc_1.gfx.TextureInfo(cc_1.gfx.TextureType.TEX2D, cc_1.gfx.TextureUsageBit.SAMPLED, cc_1.gfx.Format.RGBA8, 4, 4)); + this.dummyStorageTexture = !isSceneNative ? this.dummySampleTexture : device.createTexture(new cc_1.gfx.TextureInfo(cc_1.gfx.TextureType.TEX2D, cc_1.gfx.TextureUsageBit.STORAGE, cc_1.gfx.Format.RGBA8, 4, 4)); + this.dummySampler = device.getSampler(new cc_1.gfx.SamplerInfo()); + } + createNodes() { + this.lightComp = new cc.Node('Shader Graph Preview Light').addComponent(cc_1.DirectionalLight); + this.lightComp.node.setRotationFromEuler(-45, -45, 0); + this.lightComp.node.setParent(this.scene); + this.modelComp = new cc_1.Node('Shader Graph Preview Model').addComponent(cc_1.MeshRenderer); + this.modelComp.mesh = primitiveData.sphere.mesh; + const material = new cc_1.Material(); + material.initialize({ effectName: 'builtin-standard' }); + this.modelComp.material = material; + this.setMaterial(material); + this.modelComp.node.setParent(this.scene); + } + setMaterial(material) { + if (material && material !== this.material) { + const comp = this.modelComp; + _matInsInfo.parent = material; + _matInsInfo.owner = comp; + const instantiated = new cc_1.renderer.MaterialInstance(_matInsInfo); + comp.material = instantiated; + this.material = material; + this.updateDs(); + this.cameraComp.enabled = true; + this.cameraComp.node.getWorldPosition(tempVec3A); + this.modelComp.node.getWorldPosition(tempVec3B); + this.viewDist = cc_1.Vec3.distance(tempVec3A, tempVec3B); + } + } + // 部分材质如果没有调用该方法会有报错,如spine相关材质 + // 大部分材质不需要调用也会正常预览 + updateDs() { + const model = this.modelComp.model; + if (model) { + for (let i = 0; i < model.subModels.length; i++) { + const ds = model.subModels[i].descriptorSet; + const bindings = ds.layout.bindings; + const device = cc_1.director.root.device; + for (let j = 0; j < bindings.length; j++) { + const desc = bindings[j]; + const binding = desc.binding; + const dsType = desc.descriptorType; + // bind buffer + if (dsType & cc_1.gfx.DescriptorType.UNIFORM_BUFFER || + dsType & cc_1.gfx.DescriptorType.DYNAMIC_UNIFORM_BUFFER) { + if (!ds.getBuffer(binding)) { + ds.bindBuffer(binding, this.dummyUniformBuffer); + } + } + else if (dsType & cc_1.gfx.DescriptorType.STORAGE_BUFFER || + dsType & cc_1.gfx.DescriptorType.DYNAMIC_STORAGE_BUFFER) { + if (!ds.getBuffer(binding)) { + ds.bindBuffer(binding, this.dummyStorageBuffer); + } + } + // binde texture + else if (dsType & cc_1.gfx.DESCRIPTOR_SAMPLER_TYPE) { + if (!ds.getTexture(binding)) { + if (dsType & cc_1.gfx.DescriptorType.SAMPLER_TEXTURE || + dsType & cc_1.gfx.DescriptorType.TEXTURE) { + ds.bindTexture(binding, this.dummySampleTexture); + } + else if (dsType & cc_1.gfx.DescriptorType.STORAGE_IMAGE) { + ds.bindTexture(binding, this.dummyStorageTexture); + } + } + if (!ds.getSampler(binding)) { + ds.bindSampler(binding, this.dummySampler); + } + } + } + ds.update(); + } + } + } + setMesh(primitive, mesh, scale = cc_1.Vec3.ONE) { + this.modelComp.mesh = mesh; + // 在部分情况下,该接口会先于setMaterial调用 #12259 + // 如果上个材质刚好和目标材质类型不同,就会导致引擎底层无法正确绑定纹理,从而报错 + this.updateDs(); + this.modelComp.node.setScale(scale); + this.primitive = primitive; + this.cameraComp.enabled = true; + } + setPrimitive(primitive) { + if (primitive && primitive !== this.primitive) { + const cacheMesh = this.cacheMeshs[primitive]; + if (!cacheMesh) { + cc.assetManager.loadAny(primitive, (err, mesh) => { + if (err) { + return console.error(err); + } + this.cacheMeshs[primitive] = mesh; + this.setMesh(primitive, mesh); + }); + } + else { + this.setMesh(primitive, cacheMesh); + } + } + } + setLightEnable(enable) { + if (this.lightComp.enabled !== enable) { + this.lightComp.enabled = enable; + } + } + resetCamera() { + super.resetCamera(this.modelComp.node); + } +} +const shaderGraphPreview = new ShaderGraphPreview(); +exports.shaderGraphPreview = shaderGraphPreview; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLWdyYXBoLXByZXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy9wcmV2aWV3L3NoYWRlci1ncmFwaC1wcmV2aWV3LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFlBQVksQ0FBQzs7O0FBRWIsMkJBY1k7QUFNWiwrREFBMkQ7QUFDM0QsTUFBTSxPQUFPLEdBQUcsQ0FBQyxJQUFJLFFBQUcsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUFDOUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0FBRS9CLFNBQVMsaUJBQWlCLENBQUMsUUFBOEI7SUFDckQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRTtRQUM1QixRQUFRLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0tBQ2xDO0lBQ0QsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQztRQUMzQixJQUFJLEVBQUUsSUFBSSxRQUFHLENBQUMsU0FBUyxDQUFDLFFBQUcsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLFFBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1FBQzNFLE1BQU0sRUFBRSxhQUFhLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLE9BQVEsRUFBRSxRQUFRLENBQUMsT0FBUSxFQUFFLFFBQVEsQ0FBQyxHQUFJLENBQWE7S0FDN0ksQ0FBQyxDQUFDO0lBQ0gsT0FBTyxRQUFRLENBQUM7QUFDcEIsQ0FBQztBQU9ELE1BQU0sYUFBYSxHQUFtQztJQUNsRCxHQUFHLEVBQUU7UUFDRCxJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUMzRCxLQUFLLEVBQUUsSUFBSSxTQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0I7SUFDRCxNQUFNLEVBQUU7UUFDSixJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUM5RCxLQUFLLEVBQUUsSUFBSSxTQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0I7SUFDRCxPQUFPLEVBQUU7UUFDTCxJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUMvRCxLQUFLLEVBQUUsSUFBSSxTQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7S0FDakM7SUFDRCxRQUFRLEVBQUU7UUFDTixJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUNoRSxLQUFLLEVBQUUsSUFBSSxTQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUM7S0FDakM7SUFDRCxLQUFLLEVBQUU7UUFDSCxJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUM3RCxLQUFLLEVBQUUsSUFBSSxTQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1RCxLQUFLLEVBQUUsSUFBSSxTQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUM7S0FDM0I7SUFDRCxJQUFJLEVBQUU7UUFDRixJQUFJLEVBQUUsVUFBSyxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxlQUFVLENBQUMsSUFBSSxF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LENBQUMsQ0FBQztxQkFDN0I7b0JBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7b0JBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNILElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDO2FBQ3RDO1NBQ0o7SUFDTCxDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWU7UUFDakMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sS0FBSyxNQUFNLEVBQUU7WUFDbkMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQUVNLFdBQVc7UUFDZCxLQUFLLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0MsQ0FBQztDQUNKO0FBRUQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixFQUFFLENBQUM7QUFFM0MsZ0RBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQge1xuICAgIERpcmVjdGlvbmFsTGlnaHQsXG4gICAgZ2Z4LFxuICAgIE1hdGVyaWFsLFxuICAgIE1lc2gsXG4gICAgTWVzaFJlbmRlcmVyLFxuICAgIHByaW1pdGl2ZXMsXG4gICAgUXVhdCxcbiAgICBSZW5kZXJlcixcbiAgICByZW5kZXJlcixcbiAgICB1dGlscyxcbiAgICBWZWMzLFxuICAgIGRpcmVjdG9yLFxuICAgIE5vZGUsXG59IGZyb20gJ2NjJztcblxuZGVjbGFyZSBjb25zdCBjYzogYW55O1xuZGVjbGFyZSBjb25zdCBFZGl0b3JFeHRlbmRzOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGlzU2NlbmVOYXRpdmU6IGJvb2xlYW47XG5cbmltcG9ydCB7IEludGVyYWN0aXZlUHJldmlldyB9IGZyb20gJy4vSW50ZXJhY3RpdmUtcHJldmlldyc7XG5jb25zdCByZWdpb25zID0gW25ldyBnZnguQnVmZmVyVGV4dHVyZUNvcHkoKV07XG5yZWdpb25zWzBdLnRleEV4dGVudC5kZXB0aCA9IDE7XG5cbmZ1bmN0aW9uIGluc2VydEFkZGl0aW9uYWxzKGdlb21ldHJ5OiBwcmltaXRpdmVzLklHZW9tZXRyeSkge1xuICAgIGlmICghZ2VvbWV0cnkuY3VzdG9tQXR0cmlidXRlcykge1xuICAgICAgICBnZW9tZXRyeS5jdXN0b21BdHRyaWJ1dGVzID0gW107XG4gICAgfVxuICAgIGdlb21ldHJ5LmN1c3RvbUF0dHJpYnV0ZXMucHVzaCh7XG4gICAgICAgIGF0dHI6IG5ldyBnZnguQXR0cmlidXRlKGdmeC5BdHRyaWJ1dGVOYW1lLkFUVFJfVEFOR0VOVCwgZ2Z4LkZvcm1hdC5SR0JBMzJGKSxcbiAgICAgICAgdmFsdWVzOiBFZGl0b3JFeHRlbmRzLkdlb21ldHJ5VXRpbHMuY2FsY3VsYXRlVGFuZ2VudHMoZ2VvbWV0cnkucG9zaXRpb25zLCBnZW9tZXRyeS5pbmRpY2VzISwgZ2VvbWV0cnkubm9ybWFscyEsIGdlb21ldHJ5LnV2cyEpIGFzIG51bWJlcltdLFxuICAgIH0pO1xuICAgIHJldHVybiBnZW9tZXRyeTtcbn1cblxuaW50ZXJmYWNlIElQcmltaXRpdmVJbmZvIHtcbiAgICBtZXNoOiBNZXNoO1xuICAgIHNjYWxlOiBWZWMzO1xufVxuXG5jb25zdCBwcmltaXRpdmVEYXRhOiBSZWNvcmQ8c3RyaW5nLCBJUHJpbWl0aXZlSW5mbz4gPSB7XG4gICAgYm94OiB7XG4gICAgICAgIG1lc2g6IHV0aWxzLmNyZWF0ZU1lc2goaW5zZXJ0QWRkaXRpb25hbHMocHJpbWl0aXZlcy5ib3goKSkpLFxuICAgICAgICBzY2FsZTogbmV3IFZlYzMoMSwgMSwgMSksXG4gICAgfSxcbiAgICBzcGhlcmU6IHtcbiAgICAgICAgbWVzaDogdXRpbHMuY3JlYXRlTWVzaChpbnNlcnRBZGRpdGlvbmFscyhwcmltaXRpdmVzLnNwaGVyZSgpKSksXG4gICAgICAgIHNjYWxlOiBuZXcgVmVjMygxLCAxLCAxKSxcbiAgICB9LFxuICAgIGNhcHN1bGU6IHtcbiAgICAgICAgbWVzaDogdXRpbHMuY3JlYXRlTWVzaChpbnNlcnRBZGRpdGlvbmFscyhwcmltaXRpdmVzLmNhcHN1bGUoKSkpLFxuICAgICAgICBzY2FsZTogbmV3IFZlYzMoMC44LCAwLjgsIDAuOCksXG4gICAgfSxcbiAgICBjeWxpbmRlcjoge1xuICAgICAgICBtZXNoOiB1dGlscy5jcmVhdGVNZXNoKGluc2VydEFkZGl0aW9uYWxzKHByaW1pdGl2ZXMuY3lsaW5kZXIoKSkpLFxuICAgICAgICBzY2FsZTogbmV3IFZlYzMoMC44LCAwLjgsIDAuOCksXG4gICAgfSxcbiAgICB0b3J1czoge1xuICAgICAgICBtZXNoOiB1dGlscy5jcmVhdGVNZXNoKGluc2VydEFkZGl0aW9uYWxzKHByaW1pdGl2ZXMudG9ydXMoKSkpLFxuICAgICAgICBzY2FsZTogbmV3IFZlYzMoMSwgMSwgMSksXG4gICAgfSxcbiAgICBjb25lOiB7XG4gICAgICAgIG1lc2g6IHV0aWxzLmNyZWF0ZU1lc2goaW5zZXJ0QWRkaXRpb25hbHMocHJpbWl0aXZlcy5jb25lKCkpKSxcbiAgICAgICAgc2NhbGU6IG5ldyBWZWMzKDEsIDEsIDEpLFxuICAgIH0sXG4gICAgcXVhZDoge1xuICAgICAgICBtZXNoOiB1dGlscy5jcmVhdGVNZXNoKGluc2VydEFkZGl0aW9uYWxzKHByaW1pdGl2ZXMucXVhZCgpKSksXG4gICAgICAgIHNjYWxlOiBuZXcgVmVjMygxLCAxLCAxKSxcbiAgICB9LFxufTtcblxuY29uc3QgdGVtcFZlYzNBID0gbmV3IFZlYzMoKTtcbmNvbnN0IHRlbXBWZWMzQiA9IG5ldyBWZWMzKCk7XG5jb25zdCB0ZW1wUXVhdEEgPSBuZXcgUXVhdCgpO1xuXG5jb25zdCBfbWF0SW5zSW5mbyA9IHtcbiAgICBwYXJlbnQ6IG51bGwhIGFzIE1hdGVyaWFsLFxuICAgIG93bmVyOiBudWxsISBhcyBSZW5kZXJlcixcbiAgICBzdWJNb2RlbElkeDogMCxcbn07XG5cbmNsYXNzIFNoYWRlckdyYXBoUHJldmlldyBleHRlbmRzIEludGVyYWN0aXZlUHJldmlldyB7XG4gICAgcHJpdmF0ZSBsaWdodENvbXAhOiBEaXJlY3Rpb25hbExpZ2h0O1xuICAgIHByaXZhdGUgbW9kZWxDb21wITogTWVzaFJlbmRlcmVyO1xuICAgIHByaXZhdGUgcHJpbWl0aXZlID0gJ3NwaGVyZSc7XG4gICAgcHJpdmF0ZSBtYXRlcmlhbDogTWF0ZXJpYWwgfCBudWxsID0gbnVsbDtcblxuICAgIHByaXZhdGUgZHVtbXlVbmlmb3JtQnVmZmVyITogZ2Z4LkJ1ZmZlcjtcblxuICAgIHByaXZhdGUgZHVtbXlTdG9yYWdlVGV4dHVyZSE6IGdmeC5UZXh0dXJlO1xuICAgIHByaXZhdGUgZHVtbXlTYW1wbGVUZXh0dXJlITogZ2Z4LlRleHR1cmU7XG4gICAgcHJpdmF0ZSBkdW1teVNhbXBsZXIhOiBnZnguU2FtcGxlcjtcblxuICAgIHByaXZhdGUgZHVtbXlTdG9yYWdlQnVmZmVyITogZ2Z4LkJ1ZmZlcjtcbiAgICBwcml2YXRlIHVuaWZvcm1CdWZmZXIhOiBnZnguQnVmZmVyO1xuICAgIHByaXZhdGUgc3RvcmFnZUJ1ZmZlciE6IGdmeC5CdWZmZXI7XG5cbiAgICBwcml2YXRlIGNhY2hlTWVzaHM6IFJlY29yZDxzdHJpbmcsIE1lc2g+ID0ge307XG5cbiAgICBwdWJsaWMgaW5pdChyZWdpc3Rlck5hbWU6IHN0cmluZywgcXVlcnlOYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIuaW5pdChyZWdpc3Rlck5hbWUsIHF1ZXJ5TmFtZSk7XG5cbiAgICAgICAgY29uc3QgZGV2aWNlID0gZGlyZWN0b3Iucm9vdCEuZGV2aWNlO1xuXG4gICAgICAgIHRoaXMudW5pZm9ybUJ1ZmZlciA9IGRldmljZS5jcmVhdGVCdWZmZXIobmV3IGdmeC5CdWZmZXJJbmZvKFxuICAgICAgICAgICAgZ2Z4LkJ1ZmZlclVzYWdlQml0LlVOSUZPUk0sXG4gICAgICAgICAgICBnZnguTWVtb3J5VXNhZ2VCaXQuSE9TVCB8IGdmeC5NZW1vcnlVc2FnZUJpdC5ERVZJQ0UsXG4gICAgICAgICAgICAxNixcbiAgICAgICAgKSk7XG4gICAgICAgIHRoaXMuZHVtbXlVbmlmb3JtQnVmZmVyID0gZGV2aWNlLmNyZWF0ZUJ1ZmZlcihuZXcgZ2Z4LkJ1ZmZlclZpZXdJbmZvKHRoaXMudW5pZm9ybUJ1ZmZlciwgMCwgdGhpcy51bmlmb3JtQnVmZmVyLnNpemUpKTtcblxuICAgICAgICB0aGlzLnN0b3JhZ2VCdWZmZXIgPSAhaXNTY2VuZU5hdGl2ZSA/IHRoaXMudW5pZm9ybUJ1ZmZlciA6IGRldmljZS5jcmVhdGVCdWZmZXIobmV3IGdmeC5CdWZmZXJJbmZvKFxuICAgICAgICAgICAgZ2Z4LkJ1ZmZlclVzYWdlQml0LlNUT1JBR0UsXG4gICAgICAgICAgICBnZnguTWVtb3J5VXNhZ2VCaXQuSE9TVCB8IGdmeC5NZW1vcnlVc2FnZUJpdC5ERVZJQ0UsXG4gICAgICAgICAgICAxNixcbiAgICAgICAgKSk7XG4gICAgICAgIHRoaXMuZHVtbXlTdG9yYWdlQnVmZmVyID0gIWlzU2NlbmVOYXRpdmUgPyB0aGlzLmR1bW15VW5pZm9ybUJ1ZmZlciA6XG4gICAgICAgICAgICBkZXZpY2UuY3JlYXRlQnVmZmVyKG5ldyBnZnguQnVmZmVyVmlld0luZm8odGhpcy5zdG9yYWdlQnVmZmVyLCAwLCB0aGlzLnN0b3JhZ2VCdWZmZXIuc2l6ZSkpO1xuXG4gICAgICAgIHRoaXMuZHVtbXlTYW1wbGVUZXh0dXJlID0gZGV2aWNlLmNyZWF0ZVRleHR1cmUobmV3IGdmeC5UZXh0dXJlSW5mbyhcbiAgICAgICAgICAgIGdmeC5UZXh0dXJlVHlwZS5URVgyRCxcbiAgICAgICAgICAgIGdmeC5UZXh0dXJlVXNhZ2VCaXQuU0FNUExFRCxcbiAgICAgICAgICAgIGdmeC5Gb3JtYXQuUkdCQTgsXG4gICAgICAgICAgICA0LCA0LFxuICAgICAgICApKTtcbiAgICAgICAgdGhpcy5kdW1teVN0b3JhZ2VUZXh0dXJlID0gIWlzU2NlbmVOYXRpdmUgPyB0aGlzLmR1bW15U2FtcGxlVGV4dHVyZSA6IGRldmljZS5jcmVhdGVUZXh0dXJlKG5ldyBnZnguVGV4dHVyZUluZm8oXG4gICAgICAgICAgICBnZnguVGV4dHVyZVR5cGUuVEVYMkQsXG4gICAgICAgICAgICBnZnguVGV4dHVyZVVzYWdlQml0LlNUT1JBR0UsXG4gICAgICAgICAgICBnZnguRm9ybWF0LlJHQkE4LFxuICAgICAgICAgICAgNCwgNCxcbiAgICAgICAgKSk7XG4gICAgICAgIHRoaXMuZHVtbXlTYW1wbGVyID0gZGV2aWNlLmdldFNhbXBsZXIobmV3IGdmeC5TYW1wbGVySW5mbygpKTtcblxuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVOb2RlcygpIHtcbiAgICAgICAgdGhpcy5saWdodENvbXAgPSBuZXcgY2MuTm9kZSgnU2hhZGVyIEdyYXBoIFByZXZpZXcgTGlnaHQnKS5hZGRDb21wb25lbnQoRGlyZWN0aW9uYWxMaWdodCk7XG4gICAgICAgIHRoaXMubGlnaHRDb21wLm5vZGUuc2V0Um90YXRpb25Gcm9tRXVsZXIoLTQ1LCAtNDUsIDApO1xuICAgICAgICB0aGlzLmxpZ2h0Q29tcC5ub2RlLnNldFBhcmVudCh0aGlzLnNjZW5lKTtcblxuICAgICAgICB0aGlzLm1vZGVsQ29tcCA9IG5ldyBOb2RlKCdTaGFkZXIgR3JhcGggUHJldmlldyBNb2RlbCcpLmFkZENvbXBvbmVudChNZXNoUmVuZGVyZXIpO1xuICAgICAgICB0aGlzLm1vZGVsQ29tcC5tZXNoID0gcHJpbWl0aXZlRGF0YS5zcGhlcmUubWVzaDtcbiAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBuZXcgTWF0ZXJpYWwoKTtcbiAgICAgICAgbWF0ZXJpYWwuaW5pdGlhbGl6ZSh7IGVmZmVjdE5hbWU6ICdidWlsdGluLXN0YW5kYXJkJyB9KTtcbiAgICAgICAgdGhpcy5tb2RlbENvbXAubWF0ZXJpYWwgPSBtYXRlcmlhbDtcbiAgICAgICAgdGhpcy5zZXRNYXRlcmlhbChtYXRlcmlhbCk7XG5cbiAgICAgICAgdGhpcy5tb2RlbENvbXAubm9kZS5zZXRQYXJlbnQodGhpcy5zY2VuZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE1hdGVyaWFsKG1hdGVyaWFsOiBNYXRlcmlhbCB8IG51bGwpIHtcbiAgICAgICAgaWYgKG1hdGVyaWFsICYmIG1hdGVyaWFsICE9PSB0aGlzLm1hdGVyaWFsKSB7XG4gICAgICAgICAgICBjb25zdCBjb21wID0gdGhpcy5tb2RlbENvbXA7XG4gICAgICAgICAgICBfbWF0SW5zSW5mby5wYXJlbnQgPSBtYXRlcmlhbDtcbiAgICAgICAgICAgIF9tYXRJbnNJbmZvLm93bmVyID0gY29tcDtcbiAgICAgICAgICAgIGNvbnN0IGluc3RhbnRpYXRlZCA9IG5ldyByZW5kZXJlci5NYXRlcmlhbEluc3RhbmNlKF9tYXRJbnNJbmZvKTtcbiAgICAgICAgICAgIGNvbXAubWF0ZXJpYWwgPSBpbnN0YW50aWF0ZWQ7XG4gICAgICAgICAgICB0aGlzLm1hdGVyaWFsID0gbWF0ZXJpYWw7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZURzKCk7XG4gICAgICAgICAgICB0aGlzLmNhbWVyYUNvbXAuZW5hYmxlZCA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmNhbWVyYUNvbXAubm9kZS5nZXRXb3JsZFBvc2l0aW9uKHRlbXBWZWMzQSk7XG4gICAgICAgICAgICB0aGlzLm1vZGVsQ29tcC5ub2RlLmdldFdvcmxkUG9zaXRpb24odGVtcFZlYzNCKTtcbiAgICAgICAgICAgIHRoaXMudmlld0Rpc3QgPSBWZWMzLmRpc3RhbmNlKHRlbXBWZWMzQSwgdGVtcFZlYzNCKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIOmDqOWIhuadkOi0qOWmguaenOayoeacieiwg+eUqOivpeaWueazleS8muacieaKpemUme+8jOWmgnNwaW5l55u45YWz5p2Q6LSoXG4gICAgLy8g5aSn6YOo5YiG5p2Q6LSo5LiN6ZyA6KaB6LCD55So5Lmf5Lya5q2j5bi46aKE6KeIXG4gICAgcHVibGljIHVwZGF0ZURzKCkge1xuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMubW9kZWxDb21wLm1vZGVsO1xuICAgICAgICBpZiAobW9kZWwpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbW9kZWwuc3ViTW9kZWxzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZHMgPSBtb2RlbC5zdWJNb2RlbHNbaV0uZGVzY3JpcHRvclNldDtcbiAgICAgICAgICAgICAgICBjb25zdCBiaW5kaW5ncyA9IGRzLmxheW91dC5iaW5kaW5ncztcbiAgICAgICAgICAgICAgICBjb25zdCBkZXZpY2UgPSBkaXJlY3Rvci5yb290IS5kZXZpY2U7XG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBiaW5kaW5ncy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gYmluZGluZ3Nbal07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJpbmRpbmcgPSBkZXNjLmJpbmRpbmc7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRzVHlwZSA9IGRlc2MuZGVzY3JpcHRvclR5cGU7XG4gICAgICAgICAgICAgICAgICAgIC8vIGJpbmQgYnVmZmVyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkc1R5cGUgJiBnZnguRGVzY3JpcHRvclR5cGUuVU5JRk9STV9CVUZGRVIgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRzVHlwZSAmIGdmeC5EZXNjcmlwdG9yVHlwZS5EWU5BTUlDX1VOSUZPUk1fQlVGRkVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRzLmdldEJ1ZmZlcihiaW5kaW5nKSkgeyBkcy5iaW5kQnVmZmVyKGJpbmRpbmcsIHRoaXMuZHVtbXlVbmlmb3JtQnVmZmVyKTsgfVxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRzVHlwZSAmIGdmeC5EZXNjcmlwdG9yVHlwZS5TVE9SQUdFX0JVRkZFUiB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgZHNUeXBlICYgZ2Z4LkRlc2NyaXB0b3JUeXBlLkRZTkFNSUNfU1RPUkFHRV9CVUZGRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZHMuZ2V0QnVmZmVyKGJpbmRpbmcpKSB7IGRzLmJpbmRCdWZmZXIoYmluZGluZywgdGhpcy5kdW1teVN0b3JhZ2VCdWZmZXIpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gYmluZGUgdGV4dHVyZVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChkc1R5cGUgJiBnZnguREVTQ1JJUFRPUl9TQU1QTEVSX1RZUEUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZHMuZ2V0VGV4dHVyZShiaW5kaW5nKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkc1R5cGUgJiBnZnguRGVzY3JpcHRvclR5cGUuU0FNUExFUl9URVhUVVJFIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzVHlwZSAmIGdmeC5EZXNjcmlwdG9yVHlwZS5URVhUVVJFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzLmJpbmRUZXh0dXJlKGJpbmRpbmcsIHRoaXMuZHVtbXlTYW1wbGVUZXh0dXJlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRzVHlwZSAmIGdmeC5EZXNjcmlwdG9yVHlwZS5TVE9SQUdFX0lNQUdFKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzLmJpbmRUZXh0dXJlKGJpbmRpbmcsIHRoaXMuZHVtbXlTdG9yYWdlVGV4dHVyZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWRzLmdldFNhbXBsZXIoYmluZGluZykpIHsgZHMuYmluZFNhbXBsZXIoYmluZGluZywgdGhpcy5kdW1teVNhbXBsZXIpOyB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZHMudXBkYXRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE1lc2gocHJpbWl0aXZlOiBzdHJpbmcsIG1lc2g6IE1lc2gsIHNjYWxlOiBWZWMzID0gVmVjMy5PTkUpIHtcbiAgICAgICAgdGhpcy5tb2RlbENvbXAubWVzaCA9IG1lc2g7XG4gICAgICAgIC8vIOWcqOmDqOWIhuaDheWGteS4i++8jOivpeaOpeWPo+S8muWFiOS6jnNldE1hdGVyaWFs6LCD55SoICMxMjI1OVxuICAgICAgICAvLyDlpoLmnpzkuIrkuKrmnZDotKjliJrlpb3lkoznm67moIfmnZDotKjnsbvlnovkuI3lkIzvvIzlsLHkvJrlr7zoh7TlvJXmk47lupXlsYLml6Dms5XmraPnoa7nu5HlrprnurnnkIbvvIzku47ogIzmiqXplJlcbiAgICAgICAgdGhpcy51cGRhdGVEcygpO1xuICAgICAgICB0aGlzLm1vZGVsQ29tcC5ub2RlLnNldFNjYWxlKHNjYWxlKTtcbiAgICAgICAgdGhpcy5wcmltaXRpdmUgPSBwcmltaXRpdmU7XG4gICAgICAgIHRoaXMuY2FtZXJhQ29tcC5lbmFibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0UHJpbWl0aXZlKHByaW1pdGl2ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmIChwcmltaXRpdmUgJiYgcHJpbWl0aXZlICE9PSB0aGlzLnByaW1pdGl2ZSkge1xuICAgICAgICAgICAgY29uc3QgY2FjaGVNZXNoID0gdGhpcy5jYWNoZU1lc2hzW3ByaW1pdGl2ZV07XG4gICAgICAgICAgICBpZiAoIWNhY2hlTWVzaCkge1xuICAgICAgICAgICAgICAgIGNjLmFzc2V0TWFuYWdlci5sb2FkQW55KHByaW1pdGl2ZSwgKGVycjogRXJyb3IsIG1lc2g6IE1lc2gpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0aGlzLmNhY2hlTWVzaHNbcHJpbWl0aXZlXSA9IG1lc2g7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0TWVzaChwcmltaXRpdmUsIG1lc2gpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldE1lc2gocHJpbWl0aXZlLCBjYWNoZU1lc2gpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldExpZ2h0RW5hYmxlKGVuYWJsZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5saWdodENvbXAuZW5hYmxlZCAhPT0gZW5hYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmxpZ2h0Q29tcC5lbmFibGVkID0gZW5hYmxlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlc2V0Q2FtZXJhKCkge1xuICAgICAgICBzdXBlci5yZXNldENhbWVyYSh0aGlzLm1vZGVsQ29tcC5ub2RlKTtcbiAgICB9XG59XG5cbmNvbnN0IHNoYWRlckdyYXBoUHJldmlldyA9IG5ldyBTaGFkZXJHcmFwaFByZXZpZXcoKTtcblxuZXhwb3J0IHsgc2hhZGVyR3JhcGhQcmV2aWV3IH07XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/contributions/scene.js b/extensions/shader-graph/dist/contributions/scene.js new file mode 100644 index 0000000..2e513e3 --- /dev/null +++ b/extensions/shader-graph/dist/contributions/scene.js @@ -0,0 +1,112 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const preview_scene_1 = tslib_1.__importDefault(require("./preview-scene")); +const shader_graph_1 = tslib_1.__importDefault(require("../importer/shader-graph")); +const effect_header_1 = require("./effect-header"); +const effect_utils_1 = require("../effect-utils"); +function createSlot(slot) { + const valueDump = cce.Dump.encode.encodeObject(slot.default, { default: slot.default }); + return { + default: valueDump.value, + type: slot.type, + connectType: slot.connectType, + display: slot.display, + enum: slot.enum, + registerEnumType: slot.registerEnumType, + registerEnum: slot.registerEnum, + }; +} +exports.methods = { + async queryShaderNode() { + const { shaderNodeMap, shaderPropertyMap } = await Editor.Module.importProjectModule('db://shader-graph/graph/index.ts'); + const shaderNodeList = new Map(); + shaderNodeMap.forEach((nodeDefine) => { + const newNodeDefine = { + type: nodeDefine.type, + extend: nodeDefine.extend, + details: nodeDefine.details, + node: {}, + }; + nodeDefine.node.inputs?.forEach((slot) => { + if (!newNodeDefine.node.inputs) { + newNodeDefine.node.inputs = []; + } + newNodeDefine.node.inputs.push(createSlot(slot)); + }); + nodeDefine.node.props?.forEach((slot) => { + if (!newNodeDefine.node.props) { + newNodeDefine.node.props = []; + } + newNodeDefine.node.props.push(createSlot(slot)); + }); + nodeDefine.node.outputs?.forEach((slot) => { + if (!newNodeDefine.node.outputs) { + newNodeDefine.node.outputs = []; + } + newNodeDefine.node.outputs.push(createSlot(slot)); + }); + shaderNodeList.set(newNodeDefine.type, newNodeDefine); + }); + const shaderPropertyList = new Map(); + shaderPropertyMap.forEach((propertyDefine) => { + const valueDump = cce.Dump.encode.encodeObject(propertyDefine.default, { default: propertyDefine.default }); + const newPropertyDefine = { + name: propertyDefine.name, + type: propertyDefine.type, + declareType: propertyDefine.declareType, + default: valueDump.value, + details: propertyDefine.details, + outputs: [], + }; + propertyDefine.outputs.forEach((slot) => { + newPropertyDefine.outputs.push(createSlot(slot)); + }); + shaderPropertyList.set(newPropertyDefine.type, newPropertyDefine); + }); + return { + shaderNodeList: [...shaderNodeList], + shaderPropertyList: [...shaderPropertyList], + }; + }, + async queryPropertyValueDumpByType(type, value) { + const { shaderPropertyMap } = await Editor.Module.importProjectModule('db://shader-graph/graph/index.ts'); + const propertyDefine = shaderPropertyMap.get(type); + const valueDump = cce.Dump.encode.encodeObject(propertyDefine.default, {}); + valueDump.value = value; + return valueDump; + }, + async initPreview(config) { + try { + await (0, effect_header_1.addChunks)(); + await preview_scene_1.default.init(config); + return true; + } + catch (e) { + console.error(e); + return false; + } + }, + async updateMaterial(graphData) { + if (!graphData) + return; + const time = Date.now(); + const masterNode = await shader_graph_1.default.generateMasterNode(graphData); + const material = await masterNode.createMaterial(effect_utils_1.buildEffect); + preview_scene_1.default.setMaterial(material); + console.debug('update shader graph material : ' + (Date.now() - time) / 1000); + }, + registerEffects(uuid) { + console.debug('registerEffects: ' + uuid); + cce.SceneFacadeManager.registerEffects([uuid]); + }, + removeEffects(uuid) { + console.debug('removeEffects:' + uuid); + cce.SceneFacadeManager.removeEffects([uuid]); + }, + updateEffect(uuid) { + console.debug('updateEffect:' + uuid); + cce.SceneFacadeManager.updateEffect([uuid]); + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NlbmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJpYnV0aW9ucy9zY2VuZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSw0RUFBMkM7QUFJM0Msb0ZBQW1EO0FBRW5ELG1EQUE0QztBQUM1QyxrREFBOEM7QUFJOUMsU0FBUyxVQUFVLENBQUMsSUFBZ0I7SUFDaEMsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEYsT0FBTztRQUNILE9BQU8sRUFBRSxTQUFTLENBQUMsS0FBSztRQUN4QixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7UUFDZixXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVc7UUFDN0IsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1FBQ3JCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtRQUNmLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7UUFDdkMsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO0tBQ2xDLENBQUM7QUFDTixDQUFDO0FBRUQsT0FBTyxDQUFDLE9BQU8sR0FBRztJQUNkLEtBQUssQ0FBQyxlQUFlO1FBQ2pCLE1BQU0sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsR0FBRyxNQUFNLE1BQU0sQ0FBQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsa0NBQWtDLENBQW1CLENBQUM7UUFFM0ksTUFBTSxjQUFjLEdBQTRCLElBQUksR0FBRyxFQUFFLENBQUM7UUFDMUQsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQXNCLEVBQUUsRUFBRTtZQUM3QyxNQUFNLGFBQWEsR0FBZTtnQkFDOUIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxJQUFJO2dCQUNyQixNQUFNLEVBQUUsVUFBVSxDQUFDLE1BQU07Z0JBQ3pCLE9B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QUN4QixPQUFPLENBQUMsS0FBSyxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxDQUFDO1FBQzFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxhQUFhLENBQUMsSUFBWTtRQUN0QixPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxZQUFZLENBQUMsSUFBWTtRQUNyQixPQUFPLENBQUMsS0FBSyxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUN0QyxHQUFHLENBQUMsa0JBQWtCLENBQUMsWUFBWSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0NBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSU1vZHVsZU9wdGlvbnMgfSBmcm9tICcuLi9zaGFkZXItZ3JhcGgnO1xuaW1wb3J0IHR5cGUgeyBOb2RlRGVmaW5lLCBQcm9wZXJ0eURlZmluZSwgU2xvdERlZmluZSB9IGZyb20gJy4uLy4uL0B0eXBlcy9zaGFkZXItbm9kZS10eXBlJztcbmltcG9ydCBwcmV2aWV3U2NlbmUgZnJvbSAnLi9wcmV2aWV3LXNjZW5lJztcbmltcG9ydCB7IFByZXZpZXdDb25maWcgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IEdyYXBoRGF0YSB9IGZyb20gJy4uL2Jsb2NrLWZvcmdlL2ludGVyZmFjZSc7XG5cbmltcG9ydCBzaGFkZXJHcmFwaCBmcm9tICcuLi9pbXBvcnRlci9zaGFkZXItZ3JhcGgnO1xuXG5pbXBvcnQgeyBhZGRDaHVua3MgfSBmcm9tICcuL2VmZmVjdC1oZWFkZXInO1xuaW1wb3J0IHsgYnVpbGRFZmZlY3QgfSBmcm9tICcuLi9lZmZlY3QtdXRpbHMnO1xuXG5kZWNsYXJlIGNvbnN0IGNjZTogYW55O1xuXG5mdW5jdGlvbiBjcmVhdGVTbG90KHNsb3Q6IFNsb3REZWZpbmUpIHtcbiAgICBjb25zdCB2YWx1ZUR1bXAgPSBjY2UuRHVtcC5lbmNvZGUuZW5jb2RlT2JqZWN0KHNsb3QuZGVmYXVsdCwgeyBkZWZhdWx0OiBzbG90LmRlZmF1bHQgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGVmYXVsdDogdmFsdWVEdW1wLnZhbHVlLFxuICAgICAgICB0eXBlOiBzbG90LnR5cGUsXG4gICAgICAgIGNvbm5lY3RUeXBlOiBzbG90LmNvbm5lY3RUeXBlLFxuICAgICAgICBkaXNwbGF5OiBzbG90LmRpc3BsYXksXG4gICAgICAgIGVudW06IHNsb3QuZW51bSxcbiAgICAgICAgcmVnaXN0ZXJFbnVtVHlwZTogc2xvdC5yZWdpc3RlckVudW1UeXBlLFxuICAgICAgICByZWdpc3RlckVudW06IHNsb3QucmVnaXN0ZXJFbnVtLFxuICAgIH07XG59XG5cbmV4cG9ydHMubWV0aG9kcyA9IHtcbiAgICBhc3luYyBxdWVyeVNoYWRlck5vZGUoKSB7XG4gICAgICAgIGNvbnN0IHsgc2hhZGVyTm9kZU1hcCwgc2hhZGVyUHJvcGVydHlNYXAgfSA9IGF3YWl0IEVkaXRvci5Nb2R1bGUuaW1wb3J0UHJvamVjdE1vZHVsZSgnZGI6Ly9zaGFkZXItZ3JhcGgvZ3JhcGgvaW5kZXgudHMnKSBhcyBJTW9kdWxlT3B0aW9ucztcblxuICAgICAgICBjb25zdCBzaGFkZXJOb2RlTGlzdDogTWFwPHN0cmluZywgTm9kZURlZmluZT4gPSBuZXcgTWFwKCk7XG4gICAgICAgIHNoYWRlck5vZGVNYXAuZm9yRWFjaCgobm9kZURlZmluZTogTm9kZURlZmluZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3Tm9kZURlZmluZTogTm9kZURlZmluZSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBub2RlRGVmaW5lLnR5cGUsXG4gICAgICAgICAgICAgICAgZXh0ZW5kOiBub2RlRGVmaW5lLmV4dGVuZCxcbiAgICAgICAgICAgICAgICBkZXRhaWxzOiBub2RlRGVmaW5lLmRldGFpbHMsXG4gICAgICAgICAgICAgICAgbm9kZToge30sXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBub2RlRGVmaW5lLm5vZGUuaW5wdXRzPy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdOb2RlRGVmaW5lLm5vZGUuaW5wdXRzKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld05vZGVEZWZpbmUubm9kZS5pbnB1dHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3Tm9kZURlZmluZS5ub2RlLmlucHV0cy5wdXNoKGNyZWF0ZVNsb3Qoc2xvdCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBub2RlRGVmaW5lLm5vZGUucHJvcHM/LmZvckVhY2goKHNsb3QpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW5ld05vZGVEZWZpbmUubm9kZS5wcm9wcykge1xuICAgICAgICAgICAgICAgICAgICBuZXdOb2RlRGVmaW5lLm5vZGUucHJvcHMgPSBbXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3Tm9kZURlZmluZS5ub2RlLnByb3BzLnB1c2goY3JlYXRlU2xvdChzbG90KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIG5vZGVEZWZpbmUubm9kZS5vdXRwdXRzPy5mb3JFYWNoKChzbG90KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFuZXdOb2RlRGVmaW5lLm5vZGUub3V0cHV0cykge1xuICAgICAgICAgICAgICAgICAgICBuZXdOb2RlRGVmaW5lLm5vZGUub3V0cHV0cyA9IFtdO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBuZXdOb2RlRGVmaW5lLm5vZGUub3V0cHV0cy5wdXNoKGNyZWF0ZVNsb3Qoc2xvdCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBzaGFkZXJOb2RlTGlzdC5zZXQobmV3Tm9kZURlZmluZS50eXBlLCBuZXdOb2RlRGVmaW5lKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2hhZGVyUHJvcGVydHlMaXN0OiBNYXA8c3RyaW5nLCBQcm9wZXJ0eURlZmluZT4gPSBuZXcgTWFwKCk7XG4gICAgICAgIHNoYWRlclByb3BlcnR5TWFwLmZvckVhY2goKHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdmFsdWVEdW1wID0gY2NlLkR1bXAuZW5jb2RlLmVuY29kZU9iamVjdChwcm9wZXJ0eURlZmluZS5kZWZhdWx0LCB7IGRlZmF1bHQ6IHByb3BlcnR5RGVmaW5lLmRlZmF1bHQgfSk7XG4gICAgICAgICAgICBjb25zdCBuZXdQcm9wZXJ0eURlZmluZTogUHJvcGVydHlEZWZpbmUgPSB7XG4gICAgICAgICAgICAgICAgbmFtZTogcHJvcGVydHlEZWZpbmUubmFtZSxcbiAgICAgICAgICAgICAgICB0eXBlOiBwcm9wZXJ0eURlZmluZS50eXBlLFxuICAgICAgICAgICAgICAgIGRlY2xhcmVUeXBlOiBwcm9wZXJ0eURlZmluZS5kZWNsYXJlVHlwZSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB2YWx1ZUR1bXAudmFsdWUsXG4gICAgICAgICAgICAgICAgZGV0YWlsczogcHJvcGVydHlEZWZpbmUuZGV0YWlscyxcbiAgICAgICAgICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBwcm9wZXJ0eURlZmluZS5vdXRwdXRzLmZvckVhY2goKHNsb3Q6IFNsb3REZWZpbmUpID0+IHtcbiAgICAgICAgICAgICAgICBuZXdQcm9wZXJ0eURlZmluZS5vdXRwdXRzLnB1c2goY3JlYXRlU2xvdChzbG90KSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNoYWRlclByb3BlcnR5TGlzdC5zZXQobmV3UHJvcGVydHlEZWZpbmUudHlwZSwgbmV3UHJvcGVydHlEZWZpbmUpO1xuXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2hhZGVyTm9kZUxpc3Q6IFsuLi5zaGFkZXJOb2RlTGlzdF0sXG4gICAgICAgICAgICBzaGFkZXJQcm9wZXJ0eUxpc3Q6IFsuLi5zaGFkZXJQcm9wZXJ0eUxpc3RdLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyBxdWVyeVByb3BlcnR5VmFsdWVEdW1wQnlUeXBlKHR5cGU6IHN0cmluZywgdmFsdWU6IGFueSkge1xuICAgICAgICBjb25zdCB7IHNoYWRlclByb3BlcnR5TWFwIH0gPSBhd2FpdCBFZGl0b3IuTW9kdWxlLmltcG9ydFByb2plY3RNb2R1bGUoJ2RiOi8vc2hhZGVyLWdyYXBoL2dyYXBoL2luZGV4LnRzJykgYXMgSU1vZHVsZU9wdGlvbnM7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSA9IHNoYWRlclByb3BlcnR5TWFwLmdldCh0eXBlKSE7XG4gICAgICAgIGNvbnN0IHZhbHVlRHVtcCA9IGNjZS5EdW1wLmVuY29kZS5lbmNvZGVPYmplY3QocHJvcGVydHlEZWZpbmUuZGVmYXVsdCwge30pO1xuICAgICAgICB2YWx1ZUR1bXAudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlRHVtcDtcbiAgICB9LFxuXG4gICAgYXN5bmMgaW5pdFByZXZpZXcoY29uZmlnOiBQcmV2aWV3Q29uZmlnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBhZGRDaHVua3MoKTtcbiAgICAgICAgICAgIGF3YWl0IHByZXZpZXdTY2VuZS5pbml0KGNvbmZpZyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyB1cGRhdGVNYXRlcmlhbChncmFwaERhdGE6IEdyYXBoRGF0YSkge1xuICAgICAgICBpZiAoIWdyYXBoRGF0YSkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBjb25zdCBtYXN0ZXJOb2RlID0gYXdhaXQgc2hhZGVyR3JhcGguZ2VuZXJhdGVNYXN0ZXJOb2RlKGdyYXBoRGF0YSk7XG5cbiAgICAgICAgY29uc3QgbWF0ZXJpYWwgPSBhd2FpdCBtYXN0ZXJOb2RlLmNyZWF0ZU1hdGVyaWFsKGJ1aWxkRWZmZWN0KTtcbiAgICAgICAgcHJldmlld1NjZW5lLnNldE1hdGVyaWFsKG1hdGVyaWFsKTtcblxuICAgICAgICBjb25zb2xlLmRlYnVnKCd1cGRhdGUgc2hhZGVyIGdyYXBoIG1hdGVyaWFsIDogJyArIChEYXRlLm5vdygpIC0gdGltZSkgLyAxMDAwKTtcbiAgICB9LFxuXG4gICAgcmVnaXN0ZXJFZmZlY3RzKHV1aWQ6IHN0cmluZykge1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdyZWdpc3RlckVmZmVjdHM6ICcgKyB1dWlkKTtcbiAgICAgICAgY2NlLlNjZW5lRmFjYWRlTWFuYWdlci5yZWdpc3RlckVmZmVjdHMoW3V1aWRdKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlRWZmZWN0cyh1dWlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygncmVtb3ZlRWZmZWN0czonICsgdXVpZCk7XG4gICAgICAgIGNjZS5TY2VuZUZhY2FkZU1hbmFnZXIucmVtb3ZlRWZmZWN0cyhbdXVpZF0pO1xuICAgIH0sXG5cbiAgICB1cGRhdGVFZmZlY3QodXVpZDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoJ3VwZGF0ZUVmZmVjdDonICsgdXVpZCk7XG4gICAgICAgIGNjZS5TY2VuZUZhY2FkZU1hbmFnZXIudXBkYXRlRWZmZWN0KFt1dWlkXSk7XG4gICAgfSxcbn07XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/effect-utils.js b/extensions/shader-graph/dist/effect-utils.js new file mode 100644 index 0000000..bfb95d7 --- /dev/null +++ b/extensions/shader-graph/dist/effect-utils.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.addChunk = exports.buildEffect = void 0; +const semver_1 = require("semver"); +async function buildEffect(name, content) { + if ((0, semver_1.gte)(Editor.App.version, '3.8.3')) { + return await Editor.Message.request('asset-db', 'execute-custom-operation', 'effect', 'build-effect', name, content); + } + else { + return await Editor.Message.request('engine-extends', 'build-effect', name, content); + } +} +exports.buildEffect = buildEffect; +async function addChunk(name, content) { + if ((0, semver_1.gte)(Editor.App.version, '3.8.3')) { + await Editor.Message.request('asset-db', 'execute-custom-operation', 'effect', 'add-chunk', name, content); + } + else { + return await Editor.Message.request('engine-extends', 'add-chunk', name, content); + } +} +exports.addChunk = addChunk; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWZmZWN0LXV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VmZmVjdC11dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBNkI7QUFFdEIsS0FBSyxVQUFVLFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUMzRCxJQUFJLElBQUEsWUFBRyxFQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2xDLE9BQU8sTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsMEJBQTBCLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDeEg7U0FBTTtRQUNILE9BQU8sTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ3hGO0FBQ0wsQ0FBQztBQU5ELGtDQU1DO0FBRU0sS0FBSyxVQUFVLFFBQVEsQ0FBQyxJQUFZLEVBQUUsT0FBZTtJQUN4RCxJQUFJLElBQUEsWUFBRyxFQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1FBQ2xDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLDBCQUEwQixFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQzlHO1NBQU07UUFDSCxPQUFPLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNyRjtBQUNMLENBQUM7QUFORCw0QkFNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGd0ZSB9IGZyb20gJ3NlbXZlcic7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBidWlsZEVmZmVjdChuYW1lOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGlmIChndGUoRWRpdG9yLkFwcC52ZXJzaW9uLCAnMy44LjMnKSkge1xuICAgICAgICByZXR1cm4gYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnYXNzZXQtZGInLCAnZXhlY3V0ZS1jdXN0b20tb3BlcmF0aW9uJywgJ2VmZmVjdCcsICdidWlsZC1lZmZlY3QnLCBuYW1lLCBjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnZW5naW5lLWV4dGVuZHMnLCAnYnVpbGQtZWZmZWN0JywgbmFtZSwgY29udGVudCk7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYWRkQ2h1bmsobmFtZTogc3RyaW5nLCBjb250ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAoZ3RlKEVkaXRvci5BcHAudmVyc2lvbiwgJzMuOC4zJykpIHtcbiAgICAgICAgYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnYXNzZXQtZGInLCAnZXhlY3V0ZS1jdXN0b20tb3BlcmF0aW9uJywgJ2VmZmVjdCcsICdhZGQtY2h1bmsnLCBuYW1lLCBjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gYXdhaXQgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnZW5naW5lLWV4dGVuZHMnLCAnYWRkLWNodW5rJywgbmFtZSwgY29udGVudCk7XG4gICAgfVxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/hooks.js b/extensions/shader-graph/dist/hooks.js new file mode 100644 index 0000000..eb582fc --- /dev/null +++ b/extensions/shader-graph/dist/hooks.js @@ -0,0 +1,21 @@ +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const semver_1 = require("semver"); +/** + * 插件 register 的时候,触发这个钩子 + * 钩子内可以动态更改 package.json 内定义的数据 + * + * @param info + */ +exports.register = async function (info) { + const version = Editor.App.version; + // 3.8.3 使用新版本的添加菜单方式,移除旧的方式 + if ((0, semver_1.gte)(version, '3.8.3')) { + delete info.contributions.assets.menu; + // 移除旧的导入器 + if (info.contributions['asset-db']) { + delete info.contributions['asset-db'].importer; + } + } +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9va3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaG9va3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOztBQUViLG1DQUE2QjtBQUU3Qjs7Ozs7R0FLRztBQUNILE9BQU8sQ0FBQyxRQUFRLEdBQUcsS0FBSyxXQUFVLElBQTJCO0lBQ3pELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQ25DLDRCQUE0QjtJQUM1QixJQUFJLElBQUEsWUFBRyxFQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsRUFBRTtRQUN2QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN0QyxVQUFVO1FBQ1YsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFO1lBQ2hDLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUM7U0FDbEQ7S0FDSjtBQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaW1wb3J0IHsgZ3RlIH0gZnJvbSAnc2VtdmVyJztcblxuLyoqXG4gKiDmj5Lku7YgcmVnaXN0ZXIg55qE5pe25YCZ77yM6Kem5Y+R6L+Z5Liq6ZKp5a2QXG4gKiDpkqnlrZDlhoXlj6/ku6XliqjmgIHmm7TmlLkgcGFja2FnZS5qc29uIOWGheWumuS5ieeahOaVsOaNrlxuICpcbiAqIEBwYXJhbSBpbmZvXG4gKi9cbmV4cG9ydHMucmVnaXN0ZXIgPSBhc3luYyBmdW5jdGlvbihpbmZvOiB7IFtrZXk6IHN0cmluZ106IGFueX0pIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gRWRpdG9yLkFwcC52ZXJzaW9uO1xuICAgIC8vIDMuOC4zIOS9v+eUqOaWsOeJiOacrOeahOa3u+WKoOiPnOWNleaWueW8j++8jOenu+mZpOaXp+eahOaWueW8j1xuICAgIGlmIChndGUodmVyc2lvbiwgJzMuOC4zJykpIHtcbiAgICAgICAgZGVsZXRlIGluZm8uY29udHJpYnV0aW9ucy5hc3NldHMubWVudTtcbiAgICAgICAgLy8g56e76Zmk5pen55qE5a+85YWl5ZmoXG4gICAgICAgIGlmIChpbmZvLmNvbnRyaWJ1dGlvbnNbJ2Fzc2V0LWRiJ10pIHtcbiAgICAgICAgICAgIGRlbGV0ZSBpbmZvLmNvbnRyaWJ1dGlvbnNbJ2Fzc2V0LWRiJ10uaW1wb3J0ZXI7XG4gICAgICAgIH1cbiAgICB9XG59O1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/importer/index.js b/extensions/shader-graph/dist/importer/index.js new file mode 100644 index 0000000..da924b1 --- /dev/null +++ b/extensions/shader-graph/dist/importer/index.js @@ -0,0 +1,39 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.methods = void 0; +exports.methods = { + async registerShaderGraphImporter380() { + const { ShaderGraph380 } = await Promise.resolve().then(() => __importStar(require('./shader-graph-3.8'))); + return { + extname: ['.shadergraph'], + importer: ShaderGraph380, + }; + }, + async registerShaderGraphImporter() { + return (await Promise.resolve().then(() => __importStar(require('./shader-graph-handler')))).default; + }, +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFYSxRQUFBLE9BQU8sR0FBRztJQUNuQixLQUFLLENBQUMsOEJBQThCO1FBQ2hDLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyx3REFBYSxvQkFBb0IsR0FBQyxDQUFDO1FBQzlELE9BQU87WUFDSCxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUM7WUFDekIsUUFBUSxFQUFFLGNBQWM7U0FDM0IsQ0FBQztJQUNOLENBQUM7SUFFRCxLQUFLLENBQUMsMkJBQTJCO1FBQzdCLE9BQU8sQ0FBQyx3REFBYSx3QkFBd0IsR0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDO0lBQzVELENBQUM7Q0FDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hhZGVyR3JhcGgzODAgfSBmcm9tICcuL3NoYWRlci1ncmFwaC0zLjgnO1xuXG5leHBvcnQgY29uc3QgbWV0aG9kcyA9IHtcbiAgICBhc3luYyByZWdpc3RlclNoYWRlckdyYXBoSW1wb3J0ZXIzODAoKSB7XG4gICAgICAgIGNvbnN0IHsgU2hhZGVyR3JhcGgzODAgfSA9IGF3YWl0IGltcG9ydCgnLi9zaGFkZXItZ3JhcGgtMy44Jyk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBleHRuYW1lOiBbJy5zaGFkZXJncmFwaCddLFxuICAgICAgICAgICAgaW1wb3J0ZXI6IFNoYWRlckdyYXBoMzgwLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICBhc3luYyByZWdpc3RlclNoYWRlckdyYXBoSW1wb3J0ZXIoKSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgaW1wb3J0KCcuL3NoYWRlci1ncmFwaC1oYW5kbGVyJykpLmRlZmF1bHQ7XG4gICAgfSxcbn07XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/importer/shader-graph-3.8.js b/extensions/shader-graph/dist/importer/shader-graph-3.8.js new file mode 100644 index 0000000..1915540 --- /dev/null +++ b/extensions/shader-graph/dist/importer/shader-graph-3.8.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ShaderGraph380 = void 0; +const tslib_1 = require("tslib"); +const path_1 = require("path"); +module.paths.push((0, path_1.join)(Editor.App.path, 'node_modules')); +const { Asset, Importer } = require('@editor/asset-db'); +const shader_graph_1 = tslib_1.__importDefault(require("./shader-graph")); +const utils_3_8_1 = require("./utils-3.8"); +class ShaderGraph380 extends Importer { + // 引擎内对应的类型 + get assetType() { + return shader_graph_1.default.assetType; + } + get version() { + return shader_graph_1.default.version; + } + get name() { + return shader_graph_1.default.name; + } + get migrations() { + return shader_graph_1.default.migrations; + } + /** + * 返回是否导入成功的标记 + * 如果返回 false,则 imported 标记不会变成 true + * 后续的一系列操作都不会执行 + * @param asset + */ + // @ts-expect-error + async import(asset) { + try { + await (0, utils_3_8_1.generateEffectAsset)(asset, await shader_graph_1.default.generateEffectByAsset(asset)); + return true; + } + catch (e) { + console.error(e); + return false; + } + } +} +exports.ShaderGraph380 = ShaderGraph380; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLWdyYXBoLTMuOC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9pbXBvcnRlci9zaGFkZXItZ3JhcGgtMy44LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSwrQkFBNEI7QUFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBQSxXQUFJLEVBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFNLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXhELDBFQUF5QztBQUN6QywyQ0FBa0Q7QUFFbEQsTUFBYSxjQUFlLFNBQVEsUUFBUTtJQUV4QyxXQUFXO0lBQ1gsSUFBSSxTQUFTO1FBQ1QsT0FBTyxzQkFBVyxDQUFDLFNBQVMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxzQkFBVyxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ0osT0FBTyxzQkFBVyxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxzQkFBVyxDQUFDLFVBQVUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxtQkFBbUI7SUFDWixLQUFLLENBQUMsTUFBTSxDQUFDLEtBQVk7UUFDNUIsSUFBSTtZQUNBLE1BQU0sSUFBQSwrQkFBbUIsRUFBQyxLQUFLLEVBQUUsTUFBTSxzQkFBVyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7WUFDakYsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLEtBQUssQ0FBQztTQUNoQjtJQUNMLENBQUM7Q0FDSjtBQW5DRCx3Q0FtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbm1vZHVsZS5wYXRocy5wdXNoKGpvaW4oRWRpdG9yLkFwcC5wYXRoLCAnbm9kZV9tb2R1bGVzJykpO1xuXG5jb25zdCB7IEFzc2V0LCBJbXBvcnRlciB9ID0gcmVxdWlyZSgnQGVkaXRvci9hc3NldC1kYicpO1xuXG5pbXBvcnQgc2hhZGVyR3JhcGggZnJvbSAnLi9zaGFkZXItZ3JhcGgnO1xuaW1wb3J0IHsgZ2VuZXJhdGVFZmZlY3RBc3NldCB9IGZyb20gJy4vdXRpbHMtMy44JztcblxuZXhwb3J0IGNsYXNzIFNoYWRlckdyYXBoMzgwIGV4dGVuZHMgSW1wb3J0ZXIge1xuXG4gICAgLy8g5byV5pOO5YaF5a+55bqU55qE57G75Z6LXG4gICAgZ2V0IGFzc2V0VHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHNoYWRlckdyYXBoLmFzc2V0VHlwZTtcbiAgICB9XG5cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuIHNoYWRlckdyYXBoLnZlcnNpb247XG4gICAgfVxuXG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiBzaGFkZXJHcmFwaC5uYW1lO1xuICAgIH1cblxuICAgIGdldCBtaWdyYXRpb25zKCkge1xuICAgICAgICByZXR1cm4gc2hhZGVyR3JhcGgubWlncmF0aW9ucztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDov5Tlm57mmK/lkKblr7zlhaXmiJDlip/nmoTmoIforrBcbiAgICAgKiDlpoLmnpzov5Tlm54gZmFsc2XvvIzliJkgaW1wb3J0ZWQg5qCH6K6w5LiN5Lya5Y+Y5oiQIHRydWVcbiAgICAgKiDlkI7nu63nmoTkuIDns7vliJfmk43kvZzpg73kuI3kvJrmiafooYxcbiAgICAgKiBAcGFyYW0gYXNzZXRcbiAgICAgKi9cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgcHVibGljIGFzeW5jIGltcG9ydChhc3NldDogQXNzZXQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IGdlbmVyYXRlRWZmZWN0QXNzZXQoYXNzZXQsIGF3YWl0IHNoYWRlckdyYXBoLmdlbmVyYXRlRWZmZWN0QnlBc3NldChhc3NldCkpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/importer/shader-graph-handler.js b/extensions/shader-graph/dist/importer/shader-graph-handler.js new file mode 100644 index 0000000..7482221 --- /dev/null +++ b/extensions/shader-graph/dist/importer/shader-graph-handler.js @@ -0,0 +1,93 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const fs_extra_1 = require("fs-extra"); +const path_1 = require("path"); +const shader_graph_1 = tslib_1.__importDefault(require("./shader-graph")); +const shader_graph_2 = require("../shader-graph"); +module.paths.push((0, path_1.join)(Editor.App.path, 'node_modules')); +const { Asset } = require('@editor/asset-db'); +const ShaderGraphHandler = { + name: shader_graph_1.default.name, + extends: 'effect', + assetType: shader_graph_1.default.assetType, + iconInfo: { + default: { + type: 'image', + value: 'packages://shader-graph/static/asset-icon.png', + }, + }, + createInfo: { + generateMenuInfo() { + return [ + { + label: `i18n:${shader_graph_2.PACKAGE_NAME}.menu.import`, + fullFileName: 'New Shader Graph.shadergraph', + template: 'db://test.shadergraph', + submenu: [ + { + label: 'Surface', + fullFileName: 'New Shader Graph.shadergraph', + template: 'Surface', // 无用 + }, + { + label: 'Unlit', + fullFileName: 'New Shader Graph.shadergraph', + template: 'Unlit', // 无用 + }, + ], + }, + ]; + }, + async create(options) { + try { + let shaderGraph = ''; + const name = (0, shader_graph_2.getName)(options.target); + switch (options.template) { + case 'Surface': + shaderGraph = await shader_graph_2.GraphDataMgr.createDefaultShaderGraph('SurfaceMasterNode', 'Graph', name); + break; + case 'Unlit': + shaderGraph = await shader_graph_2.GraphDataMgr.createDefaultShaderGraph('UnlitMasterNode', 'Graph', name); + break; + } + (0, fs_extra_1.writeFileSync)(options.target, shaderGraph); + } + catch (e) { + console.error(e); + } + return options.target; + }, + }, + // @ts-expect-error + async open(asset) { + Editor.Message.send('shader-graph', 'open', asset.uuid); + return true; + }, + importer: { + version: shader_graph_1.default.version, + migrations: [], + // @ts-expect-error + async before(asset) { + if (!shader_graph_1.default.existsCacheEffect(asset)) { + await shader_graph_1.default.generateEffectByAsset(asset); + } + shader_graph_1.default.cacheSourceMap.set(asset.uuid, asset._source); + // @ts-ignore + asset._source = shader_graph_1.default.getTempEffectCodePath(asset); + return true; + }, + // @ts-expect-error + async after(asset) { + const source = shader_graph_1.default.cacheSourceMap.get(asset.uuid); + if (source) { + // @ts-ignore + asset._source = source; + shader_graph_1.default.cacheSourceMap.delete(asset.uuid); + } + return true; + }, + }, +}; +exports.default = ShaderGraphHandler; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLWdyYXBoLWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW1wb3J0ZXIvc2hhZGVyLWdyYXBoLWhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsdUNBQXlDO0FBQ3pDLCtCQUE0QjtBQUU1QiwwRUFBeUM7QUFDekMsa0RBQXNFO0FBRXRFLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUEsV0FBSSxFQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFFekQsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRTlDLE1BQU0sa0JBQWtCLEdBQUc7SUFFdkIsSUFBSSxFQUFFLHNCQUFXLENBQUMsSUFBSTtJQUV0QixPQUFPLEVBQUUsUUFBUTtJQUVqQixTQUFTLEVBQUUsc0JBQVcsQ0FBQyxTQUFTO0lBRWhDLFFBQVEsRUFBRTtRQUNOLE9BQU8sRUFBRTtZQUNMLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLCtDQUErQztTQUN6RDtLQUNKO0lBRUQsVUFBVSxFQUFFO1FBQ1IsZ0JBQWdCO1lBQ1osT0FBTztnQkFDSDtvQkFDSSxLQUFLLEVBQUUsUUFBUSwyQkFBWSxjQUFjO29CQUN6QyxZQUFZLEVBQUUsOEJBQThCO29CQUM1QyxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxPQUFPLEVBQUU7d0JBQ0w7NEJBQ0ksS0FBSyxFQUFFLFNBQVM7NEJBQ2hCLFlBQVksRUFBRSw4QkFBOEI7NEJBQzVDLFFBQVEsRUFBRSxTQUFTLEVBQUUsS0FBSzt5QkFDN0I7d0JBQ0Q7NEJBQ0ksS0FBSyxFQUFFLE9BQU87NEJBQ2QsWUFBWSxFQUFFLDhCQUE4Qjs0QkFDNUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLO3lCQUMzQjtxQkFDSjtpQkFDSjthQUNKLENBQUM7UUFDTixDQUFDO1FBQ0QsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUE2QztZQUN0RCxJQUFJO2dCQUNBLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDckIsTUFBTSxJQUFJLEdBQUcsSUFBQSxzQkFBTyxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDckMsUUFBUSxPQUFPLENBQUMsUUFBUSxFQUFFO29CQUN0QixLQUFLLFNBQVM7d0JBQ1YsV0FBVyxHQUFHLE1BQU0sMkJBQVksQ0FBQyx3QkFBd0IsQ0FBQyxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7d0JBQzlGLE1BQU07b0JBQ1YsS0FBSyxPQUFPO3dCQUNSLFdBQVcsR0FBRyxNQUFNLDJCQUFZLENBQUMsd0JBQXdCLENBQUMsaUJBQWlCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUM1RixNQUFNO2lCQUNiO2dCQUNELElBQUEsd0JBQWEsRUFBQyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2FBQzlDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQjtZQUNELE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQixDQUFDO0tBQ0o7SUFFRCxtQkFBbUI7SUFDbkIsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFZO1FBQ25CLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxRQUFRLEVBQUU7UUFDTixPQUFPLEVBQUUsc0JBQVcsQ0FBQyxPQUFPO1FBRTVCLFVBQVUsRUFBRSxFQUFFO1FBRWQsbUJBQW1CO1FBQ25CLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBWTtZQUNyQixJQUFJLENBQUMsc0JBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDdkMsTUFBTSxzQkFBVyxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ2xEO1lBQ0Qsc0JBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFELGFBQWE7WUFDYixLQUFLLENBQUMsT0FBTyxHQUFHLHNCQUFXLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztRQUVELG1CQUFtQjtRQUNuQixLQUFLLENBQUMsS0FBSyxDQUFDLEtBQVk7WUFDcEIsTUFBTSxNQUFNLEdBQUcsc0JBQVcsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMxRCxJQUFJLE1BQU0sRUFBRTtnQkFDUixhQUFhO2dCQUNiLEtBQUssQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO2dCQUN2QixzQkFBVyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pEO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQztLQUNKO0NBQ0osQ0FBQztBQUVGLGtCQUFlLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgd3JpdGVGaWxlU3luYyB9IGZyb20gJ2ZzLWV4dHJhJztcbmltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcblxuaW1wb3J0IHNoYWRlckdyYXBoIGZyb20gJy4vc2hhZGVyLWdyYXBoJztcbmltcG9ydCB7IFBBQ0tBR0VfTkFNRSwgR3JhcGhEYXRhTWdyLCBnZXROYW1lIH0gZnJvbSAnLi4vc2hhZGVyLWdyYXBoJztcblxubW9kdWxlLnBhdGhzLnB1c2goam9pbihFZGl0b3IuQXBwLnBhdGgsICdub2RlX21vZHVsZXMnKSk7XG5cbmNvbnN0IHsgQXNzZXQgfSA9IHJlcXVpcmUoJ0BlZGl0b3IvYXNzZXQtZGInKTtcblxuY29uc3QgU2hhZGVyR3JhcGhIYW5kbGVyID0ge1xuXG4gICAgbmFtZTogc2hhZGVyR3JhcGgubmFtZSxcblxuICAgIGV4dGVuZHM6ICdlZmZlY3QnLFxuXG4gICAgYXNzZXRUeXBlOiBzaGFkZXJHcmFwaC5hc3NldFR5cGUsXG5cbiAgICBpY29uSW5mbzoge1xuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgICAgICAgdmFsdWU6ICdwYWNrYWdlczovL3NoYWRlci1ncmFwaC9zdGF0aWMvYXNzZXQtaWNvbi5wbmcnLFxuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBjcmVhdGVJbmZvOiB7XG4gICAgICAgIGdlbmVyYXRlTWVudUluZm8oKSB7XG4gICAgICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGBpMThuOiR7UEFDS0FHRV9OQU1FfS5tZW51LmltcG9ydGAsXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxGaWxlTmFtZTogJ05ldyBTaGFkZXIgR3JhcGguc2hhZGVyZ3JhcGgnLFxuICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogJ2RiOi8vdGVzdC5zaGFkZXJncmFwaCcsIC8vIOaXoOeUqFxuICAgICAgICAgICAgICAgICAgICBzdWJtZW51OiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdTdXJmYWNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsRmlsZU5hbWU6ICdOZXcgU2hhZGVyIEdyYXBoLnNoYWRlcmdyYXBoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZTogJ1N1cmZhY2UnLCAvLyDml6DnlKhcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdVbmxpdCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbEZpbGVOYW1lOiAnTmV3IFNoYWRlciBHcmFwaC5zaGFkZXJncmFwaCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGU6ICdVbmxpdCcsIC8vIOaXoOeUqFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgY3JlYXRlKG9wdGlvbnM6IHsgdGFyZ2V0OiBzdHJpbmcsIHRlbXBsYXRlOiBzdHJpbmcgfSk6IFByb21pc2U8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBsZXQgc2hhZGVyR3JhcGggPSAnJztcbiAgICAgICAgICAgICAgICBjb25zdCBuYW1lID0gZ2V0TmFtZShvcHRpb25zLnRhcmdldCk7XG4gICAgICAgICAgICAgICAgc3dpdGNoIChvcHRpb25zLnRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1N1cmZhY2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2hhZGVyR3JhcGggPSBhd2FpdCBHcmFwaERhdGFNZ3IuY3JlYXRlRGVmYXVsdFNoYWRlckdyYXBoKCdTdXJmYWNlTWFzdGVyTm9kZScsICdHcmFwaCcsIG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIGNhc2UgJ1VubGl0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlckdyYXBoID0gYXdhaXQgR3JhcGhEYXRhTWdyLmNyZWF0ZURlZmF1bHRTaGFkZXJHcmFwaCgnVW5saXRNYXN0ZXJOb2RlJywgJ0dyYXBoJywgbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgd3JpdGVGaWxlU3luYyhvcHRpb25zLnRhcmdldCwgc2hhZGVyR3JhcGgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3B0aW9ucy50YXJnZXQ7XG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBhc3luYyBvcGVuKGFzc2V0OiBBc3NldCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBFZGl0b3IuTWVzc2FnZS5zZW5kKCdzaGFkZXItZ3JhcGgnLCAnb3BlbicsIGFzc2V0LnV1aWQpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuXG4gICAgaW1wb3J0ZXI6IHtcbiAgICAgICAgdmVyc2lvbjogc2hhZGVyR3JhcGgudmVyc2lvbixcblxuICAgICAgICBtaWdyYXRpb25zOiBbXSxcblxuICAgICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICAgIGFzeW5jIGJlZm9yZShhc3NldDogQXNzZXQpIHtcbiAgICAgICAgICAgIGlmICghc2hhZGVyR3JhcGguZXhpc3RzQ2FjaGVFZmZlY3QoYXNzZXQpKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgc2hhZGVyR3JhcGguZ2VuZXJhdGVFZmZlY3RCeUFzc2V0KGFzc2V0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNoYWRlckdyYXBoLmNhY2hlU291cmNlTWFwLnNldChhc3NldC51dWlkLCBhc3NldC5fc291cmNlKTtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIGFzc2V0Ll9zb3VyY2UgPSBzaGFkZXJHcmFwaC5nZXRUZW1wRWZmZWN0Q29kZVBhdGgoYXNzZXQpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0sXG5cbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgICBhc3luYyBhZnRlcihhc3NldDogQXNzZXQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNvdXJjZSA9IHNoYWRlckdyYXBoLmNhY2hlU291cmNlTWFwLmdldChhc3NldC51dWlkKTtcbiAgICAgICAgICAgIGlmIChzb3VyY2UpIHtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgYXNzZXQuX3NvdXJjZSA9IHNvdXJjZTtcbiAgICAgICAgICAgICAgICBzaGFkZXJHcmFwaC5jYWNoZVNvdXJjZU1hcC5kZWxldGUoYXNzZXQudXVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICB9LFxufTtcblxuZXhwb3J0IGRlZmF1bHQgU2hhZGVyR3JhcGhIYW5kbGVyO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/importer/shader-graph.js b/extensions/shader-graph/dist/importer/shader-graph.js new file mode 100644 index 0000000..f724cb8 --- /dev/null +++ b/extensions/shader-graph/dist/importer/shader-graph.js @@ -0,0 +1,234 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ShaderGraph = void 0; +const path_1 = require("path"); +const js_yaml_1 = require("js-yaml"); +const fs_extra_1 = require("fs-extra"); +module.paths.push((0, path_1.join)(Editor.App.path, 'node_modules')); +const { Asset } = require('@editor/asset-db'); +const block_forge_1 = require("../block-forge"); +const shader_graph_1 = require("../shader-graph"); +const utils_3_8_1 = require("./utils-3.8"); +const VectorDataType = [ + 'float', + 'vec2', + 'vec3', + 'vec4', + 'color', + 'enum', + 'boolean', +]; +class ShaderGraph { + constructor() { + this.shaderNodeClassMap = new Map; + /** + * 用于存储每个 asset 对应的 source + * 导入前先换成,把 source 替换成 temp 路径下的 effect + * 导入后在替换成原本的 source + */ + this.cacheSourceMap = new Map(); + this._initedGraph = false; + } + get assetType() { + return 'cc.EffectAsset'; + } + get version() { + return '1.0.0'; + } + get name() { + return 'shader-graph'; + } + get migrations() { + return []; + } + async initGraph() { + if (this._initedGraph && this.shaderContext?.shaderTemplatesDir) { + return; + } + await Editor.Module.importProjectModule('db://shader-graph/operation/index.ts'); + const { ShaderProperty } = await Editor.Module.importProjectModule('db://shader-graph/operation/property.ts'); + this.ShaderProperty = ShaderProperty; + const { shaderNodeMap, shaderPropertyMap, shaderNodeClassMap } = await Editor.Module.importProjectModule('db://shader-graph/graph/index.ts'); + const { shaderContext } = await Editor.Module.importProjectModule('db://shader-graph/operation/context.ts'); + (0, shader_graph_1.declareShaderNodeBlock)(shaderNodeMap); + this.shaderNodeClassMap = shaderNodeClassMap; + this.shaderContext = shaderContext; + shaderContext.shaderTemplatesDir = await Editor.Message.request('asset-db', 'query-path', 'db://shader-graph/../compile-shader/shader-templates'); + // shaderContext.shaderTemplatesDir = queryPath('db://shader-graph/../compile-shader/shader-templates'); + this._initedGraph = true; + } + createShaderNodes(blockMap) { + const shaderNodeClassMap = this.shaderNodeClassMap; + const shaderContext = this.shaderContext; + for (const uuid in blockMap) { + const block = blockMap[uuid]; + if (!block.desc) + continue; + const type = block.desc.type; + let shaderNode = block.shaderNode; + if (!shaderNode) { + const cls = shaderNodeClassMap.get(type); + if (!cls) { + console.error(`Can not find type for ${type}`); + } + shaderNode = new cls(); + shaderNode.init(); + shaderNode.block = block; + if (!shaderContext.allNodes.includes(shaderNode)) { + shaderContext.allNodes.push(shaderNode); + } + if (type === 'RegisterLocalVar') { + if (!shaderContext.localVars.includes(shaderNode)) { + shaderNode.name = block.getInputPinsList()[1].value.value; + shaderContext.localVars.push(shaderNode); + } + } + if (type === 'GetLocalVar') { + if (!shaderContext.getLocalVars.includes(shaderNode)) { + shaderNode.name = block.getInputPinsList()[0].value.value; + shaderContext.getLocalVars.push(shaderNode); + } + } + if (type === 'PropertyNode') { + shaderNode.name = block.block.details.title; + } + const inputPins = block.getInputPinsList(); + for (let i = 0; i < inputPins.length; i++) { + const pin = inputPins[i]; + const value = pin.value; + const input = shaderNode.inputs[i]; + let slot = shaderNode.getSlotWithSlotName(pin.desc.name); + if (!slot) { + slot = shaderNode.getPropWithName(pin.desc.name); + } + if (VectorDataType.includes(value.dataType)) { + if (slot) { + if (typeof value.value === 'number' || typeof value.value === 'boolean') { + slot.value = value.value; + } + else if (value.dataType === 'color') { + // srgb to linear + slot.value.set(value.value.x * value.value.x, value.value.y * value.value.y, value.value.z * value.value.z, value.value.w); + } + else if (value.dataType === 'enum') { + slot.value = value.value; + } + else if (value.dataType === 'dynamicEnum') { + // TODO + } + else { + slot.value.set(value.value); + } + } + } + } + block.shaderNode = shaderNode; + } + } + } + searchInputs(block) { + const shaderNode = block.shaderNode; + const inputList = block.getInputPinsList(); + for (let i = 0; i < inputList.length; i++) { + const pin = inputList[i]; + if (!shaderNode.inputs[i]) { + continue; + } + const connectPin = pin.connectPins[0]; + if (connectPin) { + const connectBlock = connectPin.block; + const connectShaderNode = connectBlock.shaderNode; + const connectOutIdx = connectPin.block.getOutputPinsList().indexOf(connectPin); + const connectSlot = connectShaderNode.outputs[connectOutIdx]; + shaderNode.inputs[i].connectSlots[0] = connectSlot; + connectSlot.connectSlots.push(shaderNode.inputs[i]); + this.searchInputs(connectBlock); + } + else { + shaderNode.inputs[i].connectSlots.length = 0; + } + } + } + async generateMasterNode(graphData) { + await this.initGraph(); + const forge = new block_forge_1.Forge(graphData); + const graph = forge.getGraph(); + this.shaderContext.reset(); + // TODO 这里还需要处理子图的 properties + const properties = graph.details.properties; + if (properties) { + properties.forEach((v) => { + const prop = new this.ShaderProperty(v.type); + prop.name = v.name; + prop.setValue(v.outputPins[0].value); + this.shaderContext.properties.push(prop); + }); + } + const blockMap = graph.getBlockMap(); + await this.createShaderNodes(blockMap); + let masterBlock; + for (const uuid in blockMap) { + const block = blockMap[uuid]; + if (!block.desc) + continue; + const type = block.desc.type; + if (type.includes('MasterNode')) { + masterBlock = block; + } + } + if (!masterBlock) { + throw new Error('Can not find MasterBlock'); + } + for (let i = 0; i < this.shaderContext.localVars.length; i++) { + const locVar = this.shaderContext.localVars[i]; + await this.searchInputs(locVar.block); + } + await this.searchInputs(masterBlock); + const masterNode = masterBlock.shaderNode; + return masterNode; + } + async generateEffectByGraphData(graphData) { + const masterNode = await this.generateMasterNode(graphData); + return masterNode.generateCode(); + } + // @ts-expect-error + async generateEffectByAsset(asset) { + const serializeYAML = await (0, fs_extra_1.readFile)(asset.source, 'utf8'); + const graphData = (0, js_yaml_1.load)(serializeYAML); + const code = await this.generateEffectByGraphData(graphData); + (0, fs_extra_1.ensureDirSync)(this.tempEffectCodeDir); + await (0, fs_extra_1.writeFile)(this.getTempEffectCodePath(asset), code); + return code; + } + // @ts-expect-error + existsCacheEffect(asset) { + return (0, fs_extra_1.existsSync)(this.getTempEffectCodePath(asset)); + } + /** + * 获取存储 effect code 文件夹 + */ + // @ts-expect-error + getTempEffectCodePath(asset) { + return (0, path_1.join)(this.tempEffectCodeDir, `${asset.uuid}.effect`); + } + /** + * 获取存储 effect code 路径 + */ + get tempEffectCodeDir() { + return (0, path_1.join)(Editor.Project.tmpDir, `shader-graph`); + } + /** + * 返回是否导入成功的标记 + * 如果返回 false,则 imported 标记不会变成 true + * 后续的一系列操作都不会执行 + * @param asset + */ + // @ts-expect-error + async import(asset) { + await (0, utils_3_8_1.generateEffectAsset)(asset, await this.generateEffectByAsset(asset)); + return true; + } +} +exports.ShaderGraph = ShaderGraph; +exports.default = new ShaderGraph(); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZGVyLWdyYXBoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydGVyL3NoYWRlci1ncmFwaC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBNEI7QUFDNUIscUNBQStCO0FBQy9CLHVDQUEwRTtBQUUxRSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFBLFdBQUksRUFBQyxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDO0FBRXpELE1BQU0sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUU5QyxnREFBOEM7QUFFOUMsa0RBQXlFO0FBQ3pFLDJDQUFrRDtBQUVsRCxNQUFNLGNBQWMsR0FBRztJQUNuQixPQUFPO0lBQ1AsTUFBTTtJQUNOLE1BQU07SUFDTixNQUFNO0lBQ04sT0FBTztJQUNQLE1BQU07SUFDTixTQUFTO0NBQ1osQ0FBQztBQUVGLE1BQWEsV0FBVztJQUF4QjtRQWtCSSx1QkFBa0IsR0FBcUIsSUFBSSxHQUFHLENBQUM7UUFJL0M7Ozs7V0FJRztRQUNJLG1CQUFjLEdBQXdCLElBQUksR0FBRyxFQUFFLENBQUM7UUFFdkQsaUJBQVksR0FBRyxLQUFLLENBQUM7SUF3T3pCLENBQUM7SUFuUUcsSUFBSSxTQUFTO1FBQ1QsT0FBTyxnQkFBZ0IsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sY0FBYyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDVixPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFjRCxLQUFLLENBQUMsU0FBUztRQUNYLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLGtCQUFrQixFQUFFO1lBQzdELE9BQU87U0FDVjtRQUVE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SSxFQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEtBQUssQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBQSxXQUFJLEVBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsbUJBQW1CO0lBQ1osS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFZO1FBQzVCLE1BQU0sSUFBQSwrQkFBbUIsRUFBQyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMxRSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFyUUQsa0NBcVFDO0FBRUQsa0JBQWUsSUFBSSxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGxvYWQgfSBmcm9tICdqcy15YW1sJztcbmltcG9ydCB7IGVuc3VyZURpclN5bmMsIHJlYWRGaWxlLCB3cml0ZUZpbGUsIGV4aXN0c1N5bmMgfSBmcm9tICdmcy1leHRyYSc7XG5cbm1vZHVsZS5wYXRocy5wdXNoKGpvaW4oRWRpdG9yLkFwcC5wYXRoLCAnbm9kZV9tb2R1bGVzJykpO1xuXG5jb25zdCB7IEFzc2V0IH0gPSByZXF1aXJlKCdAZWRpdG9yL2Fzc2V0LWRiJyk7XG5cbmltcG9ydCB7IEJsb2NrLCBGb3JnZSB9IGZyb20gJy4uL2Jsb2NrLWZvcmdlJztcbmltcG9ydCB7IEdyYXBoRGF0YSB9IGZyb20gJy4uL2Jsb2NrLWZvcmdlL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBJTW9kdWxlT3B0aW9ucywgZGVjbGFyZVNoYWRlck5vZGVCbG9jayB9IGZyb20gJy4uL3NoYWRlci1ncmFwaCc7XG5pbXBvcnQgeyBnZW5lcmF0ZUVmZmVjdEFzc2V0IH0gZnJvbSAnLi91dGlscy0zLjgnO1xuXG5jb25zdCBWZWN0b3JEYXRhVHlwZSA9IFtcbiAgICAnZmxvYXQnLFxuICAgICd2ZWMyJyxcbiAgICAndmVjMycsXG4gICAgJ3ZlYzQnLFxuICAgICdjb2xvcicsXG4gICAgJ2VudW0nLFxuICAgICdib29sZWFuJyxcbl07XG5cbmV4cG9ydCBjbGFzcyBTaGFkZXJHcmFwaCB7XG5cbiAgICBnZXQgYXNzZXRUeXBlKCkge1xuICAgICAgICByZXR1cm4gJ2NjLkVmZmVjdEFzc2V0JztcbiAgICB9XG5cbiAgICBnZXQgdmVyc2lvbigpIHtcbiAgICAgICAgcmV0dXJuICcxLjAuMCc7XG4gICAgfVxuXG4gICAgZ2V0IG5hbWUoKSB7XG4gICAgICAgIHJldHVybiAnc2hhZGVyLWdyYXBoJztcbiAgICB9XG5cbiAgICBnZXQgbWlncmF0aW9ucygpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHNoYWRlck5vZGVDbGFzc01hcDogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXA7XG4gICAgc2hhZGVyQ29udGV4dDogYW55O1xuICAgIFNoYWRlclByb3BlcnR5OiBhbnk7XG5cbiAgICAvKipcbiAgICAgKiDnlKjkuo7lrZjlgqjmr4/kuKogYXNzZXQg5a+55bqU55qEIHNvdXJjZVxuICAgICAqIOWvvOWFpeWJjeWFiOaNouaIkO+8jOaKiiBzb3VyY2Ug5pu/5o2i5oiQIHRlbXAg6Lev5b6E5LiL55qEIGVmZmVjdFxuICAgICAqIOWvvOWFpeWQjuWcqOabv+aNouaIkOWOn+acrOeahCBzb3VyY2VcbiAgICAgKi9cbiAgICBwdWJsaWMgY2FjaGVTb3VyY2VNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG5cbiAgICBfaW5pdGVkR3JhcGggPSBmYWxzZTtcbiAgICBhc3luYyBpbml0R3JhcGgoKSB7XG4gICAgICAgIGlmICh0aGlzLl9pbml0ZWRHcmFwaCAmJiB0aGlzLnNoYWRlckNvbnRleHQ/LnNoYWRlclRlbXBsYXRlc0Rpcikge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgRWRpdG9yLk1vZHVsZS5pbXBvcnRQcm9qZWN0TW9kdWxlKCdkYjovL3NoYWRlci1ncmFwaC9vcGVyYXRpb24vaW5kZXgudHMnKTtcblxuICAgICAgICBjb25zdCB7IFNoYWRlclByb3BlcnR5IH0gPSBhd2FpdCBFZGl0b3IuTW9kdWxlLmltcG9ydFByb2plY3RNb2R1bGUoJ2RiOi8vc2hhZGVyLWdyYXBoL29wZXJhdGlvbi9wcm9wZXJ0eS50cycpIGFzIGFueTtcbiAgICAgICAgdGhpcy5TaGFkZXJQcm9wZXJ0eSA9IFNoYWRlclByb3BlcnR5O1xuXG4gICAgICAgIGNvbnN0IHsgc2hhZGVyTm9kZU1hcCwgc2hhZGVyUHJvcGVydHlNYXAsIHNoYWRlck5vZGVDbGFzc01hcCB9ID0gYXdhaXQgRWRpdG9yLk1vZHVsZS5pbXBvcnRQcm9qZWN0TW9kdWxlKCdkYjovL3NoYWRlci1ncmFwaC9ncmFwaC9pbmRleC50cycpIGFzIElNb2R1bGVPcHRpb25zO1xuXG4gICAgICAgIGNvbnN0IHsgc2hhZGVyQ29udGV4dCB9ID0gYXdhaXQgRWRpdG9yLk1vZHVsZS5pbXBvcnRQcm9qZWN0TW9kdWxlKCdkYjovL3NoYWRlci1ncmFwaC9vcGVyYXRpb24vY29udGV4dC50cycpIGFzIGFueTtcbiAgICAgICAgZGVjbGFyZVNoYWRlck5vZGVCbG9jayhzaGFkZXJOb2RlTWFwKTtcblxuICAgICAgICB0aGlzLnNoYWRlck5vZGVDbGFzc01hcCA9IHNoYWRlck5vZGVDbGFzc01hcDtcbiAgICAgICAgdGhpcy5zaGFkZXJDb250ZXh0ID0gc2hhZGVyQ29udGV4dDtcblxuICAgICAgICBzaGFkZXJDb250ZXh0LnNoYWRlclRlbXBsYXRlc0RpciA9IGF3YWl0IEVkaXRvci5NZXNzYWdlLnJlcXVlc3QoJ2Fzc2V0LWRiJywgJ3F1ZXJ5LXBhdGgnLCAnZGI6Ly9zaGFkZXItZ3JhcGgvLi4vY29tcGlsZS1zaGFkZXIvc2hhZGVyLXRlbXBsYXRlcycpIGFzIHN0cmluZztcbiAgICAgICAgLy8gc2hhZGVyQ29udGV4dC5zaGFkZXJUZW1wbGF0ZXNEaXIgPSBxdWVyeVBhdGgoJ2RiOi8vc2hhZGVyLWdyYXBoLy4uL2NvbXBpbGUtc2hhZGVyL3NoYWRlci10ZW1wbGF0ZXMnKTtcbiAgICAgICAgdGhpcy5faW5pdGVkR3JhcGggPSB0cnVlO1xuICAgIH1cblxuICAgIGNyZWF0ZVNoYWRlck5vZGVzKGJsb2NrTWFwOiB7XG4gICAgICAgIFt1dWlkOiBzdHJpbmddOiBCbG9jaztcbiAgICB9KSB7XG4gICAgICAgIGNvbnN0IHNoYWRlck5vZGVDbGFzc01hcCA9IHRoaXMuc2hhZGVyTm9kZUNsYXNzTWFwO1xuICAgICAgICBjb25zdCBzaGFkZXJDb250ZXh0ID0gdGhpcy5zaGFkZXJDb250ZXh0O1xuXG4gICAgICAgIGZvciAoY29uc3QgdXVpZCBpbiBibG9ja01hcCkge1xuICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBibG9ja01hcFt1dWlkXTtcbiAgICAgICAgICAgIGlmICghYmxvY2suZGVzYykgY29udGludWU7XG4gICAgICAgICAgICBjb25zdCB0eXBlID0gYmxvY2suZGVzYy50eXBlO1xuXG4gICAgICAgICAgICBsZXQgc2hhZGVyTm9kZSA9IChibG9jayBhcyBhbnkpLnNoYWRlck5vZGU7XG4gICAgICAgICAgICBpZiAoIXNoYWRlck5vZGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbHMgPSBzaGFkZXJOb2RlQ2xhc3NNYXAuZ2V0KHR5cGUpO1xuICAgICAgICAgICAgICAgIGlmICghY2xzKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYENhbiBub3QgZmluZCB0eXBlIGZvciAke3R5cGV9YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNoYWRlck5vZGUgPSBuZXcgY2xzKCk7XG4gICAgICAgICAgICAgICAgc2hhZGVyTm9kZS5pbml0KCk7XG4gICAgICAgICAgICAgICAgc2hhZGVyTm9kZS5ibG9jayA9IGJsb2NrO1xuXG4gICAgICAgICAgICAgICAgaWYgKCFzaGFkZXJDb250ZXh0LmFsbE5vZGVzLmluY2x1ZGVzKHNoYWRlck5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlckNvbnRleHQuYWxsTm9kZXMucHVzaChzaGFkZXJOb2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdSZWdpc3RlckxvY2FsVmFyJykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNoYWRlckNvbnRleHQubG9jYWxWYXJzLmluY2x1ZGVzKHNoYWRlck5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJOb2RlLm5hbWUgPSBibG9jay5nZXRJbnB1dFBpbnNMaXN0KClbMV0udmFsdWUudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzaGFkZXJDb250ZXh0LmxvY2FsVmFycy5wdXNoKHNoYWRlck5vZGUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICh0eXBlID09PSAnR2V0TG9jYWxWYXInKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghc2hhZGVyQ29udGV4dC5nZXRMb2NhbFZhcnMuaW5jbHVkZXMoc2hhZGVyTm9kZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlck5vZGUubmFtZSA9IGJsb2NrLmdldElucHV0UGluc0xpc3QoKVswXS52YWx1ZS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRlckNvbnRleHQuZ2V0TG9jYWxWYXJzLnB1c2goc2hhZGVyTm9kZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdQcm9wZXJ0eU5vZGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIHNoYWRlck5vZGUubmFtZSA9IGJsb2NrLmJsb2NrLmRldGFpbHMudGl0bGU7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRQaW5zID0gYmxvY2suZ2V0SW5wdXRQaW5zTGlzdCgpO1xuXG4gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dFBpbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGluID0gaW5wdXRQaW5zW2ldO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHBpbi52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXQgPSBzaGFkZXJOb2RlLmlucHV0c1tpXTtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgc2xvdCA9IHNoYWRlck5vZGUuZ2V0U2xvdFdpdGhTbG90TmFtZShwaW4uZGVzYy5uYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFzbG90KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzbG90ID0gc2hhZGVyTm9kZS5nZXRQcm9wV2l0aE5hbWUocGluLmRlc2MubmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBpZiAoVmVjdG9yRGF0YVR5cGUuaW5jbHVkZXModmFsdWUuZGF0YVR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2xvdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUudmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZS52YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QudmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUuZGF0YVR5cGUgPT09ICdjb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3JnYiB0byBsaW5lYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC52YWx1ZS5zZXQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS52YWx1ZS54ICogdmFsdWUudmFsdWUueCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLnZhbHVlLnkgKiB2YWx1ZS52YWx1ZS55LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUueiAqIHZhbHVlLnZhbHVlLnosXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZS52YWx1ZS53LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5kYXRhVHlwZSA9PT0gJ2VudW0nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsb3QudmFsdWUgPSB2YWx1ZS52YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUuZGF0YVR5cGUgPT09ICdkeW5hbWljRW51bScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ET1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xvdC52YWx1ZS5zZXQodmFsdWUudmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIChibG9jayBhcyBhbnkpLnNoYWRlck5vZGUgPSBzaGFkZXJOb2RlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VhcmNoSW5wdXRzKGJsb2NrOiBCbG9jaykge1xuICAgICAgICBjb25zdCBzaGFkZXJOb2RlID0gKGJsb2NrIGFzIGFueSkuc2hhZGVyTm9kZTtcbiAgICAgICAgY29uc3QgaW5wdXRMaXN0ID0gYmxvY2suZ2V0SW5wdXRQaW5zTGlzdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlucHV0TGlzdC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGluID0gaW5wdXRMaXN0W2ldO1xuICAgICAgICAgICAgaWYgKCFzaGFkZXJOb2RlLmlucHV0c1tpXSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBjb25uZWN0UGluID0gcGluLmNvbm5lY3RQaW5zWzBdO1xuICAgICAgICAgICAgaWYgKGNvbm5lY3RQaW4pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25uZWN0QmxvY2sgPSBjb25uZWN0UGluLmJsb2NrO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3RTaGFkZXJOb2RlID0gKGNvbm5lY3RCbG9jayBhcyBhbnkpLnNoYWRlck5vZGU7XG4gICAgICAgICAgICAgICAgY29uc3QgY29ubmVjdE91dElkeCA9IGNvbm5lY3RQaW4uYmxvY2suZ2V0T3V0cHV0UGluc0xpc3QoKS5pbmRleE9mKGNvbm5lY3RQaW4pO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbm5lY3RTbG90ID0gY29ubmVjdFNoYWRlck5vZGUub3V0cHV0c1tjb25uZWN0T3V0SWR4XTtcblxuICAgICAgICAgICAgICAgIHNoYWRlck5vZGUuaW5wdXRzW2ldLmNvbm5lY3RTbG90c1swXSA9IGNvbm5lY3RTbG90O1xuICAgICAgICAgICAgICAgIGNvbm5lY3RTbG90LmNvbm5lY3RTbG90cy5wdXNoKHNoYWRlck5vZGUuaW5wdXRzW2ldKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRzKGNvbm5lY3RCbG9jayk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzaGFkZXJOb2RlLmlucHV0c1tpXS5jb25uZWN0U2xvdHMubGVuZ3RoID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZW5lcmF0ZU1hc3Rlck5vZGUoZ3JhcGhEYXRhOiBHcmFwaERhdGEpIHtcbiAgICAgICAgYXdhaXQgdGhpcy5pbml0R3JhcGgoKTtcblxuICAgICAgICBjb25zdCBmb3JnZSA9IG5ldyBGb3JnZShncmFwaERhdGEpO1xuXG4gICAgICAgIGNvbnN0IGdyYXBoID0gZm9yZ2UuZ2V0R3JhcGgoKTtcblxuICAgICAgICB0aGlzLnNoYWRlckNvbnRleHQucmVzZXQoKTtcblxuICAgICAgICAvLyBUT0RPIOi/memHjOi/mOmcgOimgeWkhOeQhuWtkOWbvueahCBwcm9wZXJ0aWVzXG4gICAgICAgIGNvbnN0IHByb3BlcnRpZXMgPSBncmFwaC5kZXRhaWxzLnByb3BlcnRpZXM7XG4gICAgICAgIGlmIChwcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBwcm9wZXJ0aWVzLmZvckVhY2goKHY6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IHByb3AgPSBuZXcgdGhpcy5TaGFkZXJQcm9wZXJ0eSh2LnR5cGUpO1xuICAgICAgICAgICAgICAgIHByb3AubmFtZSA9IHYubmFtZTtcbiAgICAgICAgICAgICAgICBwcm9wLnNldFZhbHVlKHYub3V0cHV0UGluc1swXS52YWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zaGFkZXJDb250ZXh0LnByb3BlcnRpZXMucHVzaChwcm9wKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmxvY2tNYXAgPSBncmFwaC5nZXRCbG9ja01hcCgpO1xuXG4gICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlU2hhZGVyTm9kZXMoYmxvY2tNYXApO1xuXG4gICAgICAgIGxldCBtYXN0ZXJCbG9jaztcbiAgICAgICAgZm9yIChjb25zdCB1dWlkIGluIGJsb2NrTWFwKSB7XG4gICAgICAgICAgICBjb25zdCBibG9jayA9IGJsb2NrTWFwW3V1aWRdO1xuICAgICAgICAgICAgaWYgKCFibG9jay5kZXNjKSBjb250aW51ZTtcbiAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9jay5kZXNjLnR5cGU7XG4gICAgICAgICAgICBpZiAodHlwZS5pbmNsdWRlcygnTWFzdGVyTm9kZScpKSB7XG4gICAgICAgICAgICAgICAgbWFzdGVyQmxvY2sgPSBibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghbWFzdGVyQmxvY2spIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuIG5vdCBmaW5kIE1hc3RlckJsb2NrJyk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc2hhZGVyQ29udGV4dC5sb2NhbFZhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGxvY1ZhciA9IHRoaXMuc2hhZGVyQ29udGV4dC5sb2NhbFZhcnNbaV07XG4gICAgICAgICAgICBhd2FpdCB0aGlzLnNlYXJjaElucHV0cyhsb2NWYXIuYmxvY2spO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IHRoaXMuc2VhcmNoSW5wdXRzKG1hc3RlckJsb2NrKTtcblxuICAgICAgICBjb25zdCBtYXN0ZXJOb2RlID0gKG1hc3RlckJsb2NrIGFzIGFueSkuc2hhZGVyTm9kZTtcbiAgICAgICAgcmV0dXJuIG1hc3Rlck5vZGU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdlbmVyYXRlRWZmZWN0QnlHcmFwaERhdGEoZ3JhcGhEYXRhOiBHcmFwaERhdGEpIHtcbiAgICAgICAgY29uc3QgbWFzdGVyTm9kZSA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVNYXN0ZXJOb2RlKGdyYXBoRGF0YSk7XG4gICAgICAgIHJldHVybiBtYXN0ZXJOb2RlLmdlbmVyYXRlQ29kZSgpO1xuICAgIH1cblxuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwdWJsaWMgYXN5bmMgZ2VuZXJhdGVFZmZlY3RCeUFzc2V0KGFzc2V0OiBBc3NldCkge1xuICAgICAgICBjb25zdCBzZXJpYWxpemVZQU1MID0gYXdhaXQgcmVhZEZpbGUoYXNzZXQuc291cmNlLCAndXRmOCcpO1xuXG4gICAgICAgIGNvbnN0IGdyYXBoRGF0YSA9IGxvYWQoc2VyaWFsaXplWUFNTCkgYXMgR3JhcGhEYXRhO1xuXG4gICAgICAgIGNvbnN0IGNvZGUgPSBhd2FpdCB0aGlzLmdlbmVyYXRlRWZmZWN0QnlHcmFwaERhdGEoZ3JhcGhEYXRhKTtcblxuICAgICAgICBlbnN1cmVEaXJTeW5jKHRoaXMudGVtcEVmZmVjdENvZGVEaXIpO1xuICAgICAgICBhd2FpdCB3cml0ZUZpbGUodGhpcy5nZXRUZW1wRWZmZWN0Q29kZVBhdGgoYXNzZXQpLCBjb2RlKTtcbiAgICAgICAgcmV0dXJuIGNvZGU7XG4gICAgfVxuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHB1YmxpYyBleGlzdHNDYWNoZUVmZmVjdChhc3NldDogQXNzZXQpIHtcbiAgICAgICAgcmV0dXJuIGV4aXN0c1N5bmModGhpcy5nZXRUZW1wRWZmZWN0Q29kZVBhdGgoYXNzZXQpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5blrZjlgqggZWZmZWN0IGNvZGUg5paH5Lu25aS5XG4gICAgICovXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHB1YmxpYyBnZXRUZW1wRWZmZWN0Q29kZVBhdGgoYXNzZXQ6IEFzc2V0KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGpvaW4odGhpcy50ZW1wRWZmZWN0Q29kZURpciwgYCR7YXNzZXQudXVpZH0uZWZmZWN0YCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog6I635Y+W5a2Y5YKoIGVmZmVjdCBjb2RlIOi3r+W+hFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdGVtcEVmZmVjdENvZGVEaXIoKSB7XG4gICAgICAgIHJldHVybiBqb2luKEVkaXRvci5Qcm9qZWN0LnRtcERpciwgYHNoYWRlci1ncmFwaGApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOi/lOWbnuaYr+WQpuWvvOWFpeaIkOWKn+eahOagh+iusFxuICAgICAqIOWmguaenOi/lOWbniBmYWxzZe+8jOWImSBpbXBvcnRlZCDmoIforrDkuI3kvJrlj5jmiJAgdHJ1ZVxuICAgICAqIOWQjue7reeahOS4gOezu+WIl+aTjeS9nOmDveS4jeS8muaJp+ihjFxuICAgICAqIEBwYXJhbSBhc3NldFxuICAgICAqL1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBwdWJsaWMgYXN5bmMgaW1wb3J0KGFzc2V0OiBBc3NldCkge1xuICAgICAgICBhd2FpdCBnZW5lcmF0ZUVmZmVjdEFzc2V0KGFzc2V0LCBhd2FpdCB0aGlzLmdlbmVyYXRlRWZmZWN0QnlBc3NldChhc3NldCkpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBTaGFkZXJHcmFwaCgpO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/importer/utils-3.8.js b/extensions/shader-graph/dist/importer/utils-3.8.js new file mode 100644 index 0000000..2be4095 --- /dev/null +++ b/extensions/shader-graph/dist/importer/utils-3.8.js @@ -0,0 +1,121 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getDeserializeResult = exports.getDependUUIDList = exports.generateEffectAsset = void 0; +const path_1 = require("path"); +module.paths.push((0, path_1.join)(Editor.App.path, 'node_modules')); +const { AssetDB, forEach, Asset } = require('@editor/asset-db'); +const effect_utils_1 = require("../effect-utils"); +async function loadTexture(assetId) { + return new Promise((resolve) => { + cc.assetManager.loadAny(assetId, (error, asset) => { + if (!error) { + resolve(asset); + } + else { + resolve(null); + } + }); + }); +} +/** + * 在 library 里生成对应的 effectAsset 对象 + * @param asset 资源数据 + * @param code + */ +// @ts-expect-error +async function generateEffectAsset(asset, code) { + const name = (0, path_1.basename)(asset.source, (0, path_1.extname)(asset.source)); + const effect = await (0, effect_utils_1.buildEffect)(name, code); + // 记录 effect 的头文件依赖 + // @ts-expect-error + forEach((db) => { + for (const header of effect.dependencies) { + asset.depend((0, path_1.resolve)(db.options.target, 'chunks', header + '.chunk')); + } + }); + const result = new cc.EffectAsset(); + Object.assign(result, effect); + // 引擎数据结构不变,保留 hideInEditor 属性 + if (effect.editor && effect.editor.hide) { + result.hideInEditor = true; + } + for (let n = 0; n < result.techniques.length; n++) { + const technique = result.techniques[n]; + for (let i = 0; i < technique.passes.length; i++) { + const pass = technique.passes[i]; + for (const key in pass.properties) { + const propInfo = pass.properties[key]; + if (typeof propInfo.value === 'string') { + const assetId = propInfo.value; + if (Editor.Utils.UUID.isUUID(assetId)) { + const asset = await loadTexture(assetId); + if (asset) { + propInfo.value = asset; + } + } + } + } + } + } + // 添加 meta 文件中的 combinations + if (asset.userData) { + if (asset.userData.combinations) { + result.combinations = asset.userData.combinations; + } + if (effect.editor) { + asset.userData.editor = effect.editor; + } + else { + // 已存在的需要清空 + asset.userData.editor = undefined; + } + } + const serializeJSON = EditorExtends.serialize(result); + await asset.saveToLibrary('.json', serializeJSON); + const depends = getDependUUIDList(serializeJSON); + asset.setData('depends', depends); +} +exports.generateEffectAsset = generateEffectAsset; +function getDependUUIDList(content, uuid) { + if (typeof content === 'string') { + // 注意:此方法无法匹配出脚本引用的 uuid + let arr = content.match(/[a-z0-9]{8}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{4}-[a-z0-9]{12}(@[a-z0-9]+){0,}/g); + if (arr) { + // https://stackoverflow.com/questions/32813720/nodejs-profiling-parent-in-sliced-string + arr = JSON.parse(JSON.stringify(Array.from(new Set(arr)).filter((id) => id !== uuid))); + } + // const arr = content.match(/"__uuid__":( )?"[^"]+/g); + return arr || []; + } + // console.warn('Unable to extract dependencies properly'); + return getDeserializeResult(content).uuids; +} +exports.getDependUUIDList = getDependUUIDList; +function getDeserializeResult(json) { + const deserializeDetails = new cc.deserialize.Details(); + deserializeDetails.reset(); + const MissingClass = EditorExtends.MissingReporter.classInstance; + MissingClass.reset(); + MissingClass.hasMissingClass = false; + const dependScriptID = new Set(); + function classFinder(classId) { + if (Editor.Utils.UUID.isUUID(classId)) { + dependScriptID.add(Editor.Utils.UUID.decompressUUID(classId)); + } + return MissingClass.classFinder(classId); + } + const deserializedAsset = cc.deserialize(json, deserializeDetails, { + classFinder, + }); + deserializeDetails.assignAssetsBy(function (uuid, options) { + return EditorExtends.serialize.asAsset(uuid); + }); + return { + instance: deserializedAsset, + uuids: deserializeDetails.uuidList, + dependScriptUuids: Array.from(dependScriptID), + classFinder: MissingClass.classFinder, + }; +} +exports.getDeserializeResult = getDeserializeResult; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMtMy44LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2ltcG9ydGVyL3V0aWxzLTMuOC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBd0Q7QUFFeEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBQSxXQUFJLEVBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUV6RCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUloRSxrREFBOEM7QUFLOUMsS0FBSyxVQUFVLFdBQVcsQ0FBQyxPQUFlO0lBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUMzQixFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFVLEVBQUUsS0FBVSxFQUFFLEVBQUU7WUFDeEQsSUFBSSxDQUFDLEtBQUssRUFBRTtnQkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0gsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ2pCO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsbUJBQW1CO0FBQ1osS0FBSyxVQUFVLG1CQUFtQixDQUFDLEtBQVksRUFBRSxJQUFZO0lBQ2hFLE1BQU0sSUFBSSxHQUFHLElBQUEsZUFBUSxFQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsSUFBQSxjQUFPLEVBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFFM0QsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFBLDBCQUFXLEVBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBRTdDLG1CQUFtQjtJQUNuQixtQkFBbUI7SUFD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TSxpQkFBaUIsR0FBRyxFQUFFLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtRQUMvRCxXQUFXO0tBQ2QsQ0FBQyxDQUFDO0lBQ0gsa0JBQWtCLENBQUMsY0FBYyxDQUFDLFVBQVMsSUFBWSxFQUFFLE9BQXdEO1FBQzdHLE9BQU8sYUFBYSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFDLENBQUM7SUFDSCxPQUFPO1FBQ0gsUUFBUSxFQUFFLGlCQUFpQjtRQUMzQixLQUFLLEVBQUUsa0JBQWtCLENBQUMsUUFBUTtRQUNsQyxpQkFBaUIsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUM3QyxXQUFXLEVBQUUsWUFBWSxDQUFDLFdBQVc7S0FDeEMsQ0FBQztBQUNOLENBQUM7QUF6QkQsb0RBeUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGV4dG5hbWUsIGpvaW4sIHJlc29sdmUgfSBmcm9tICdwYXRoJztcblxubW9kdWxlLnBhdGhzLnB1c2goam9pbihFZGl0b3IuQXBwLnBhdGgsICdub2RlX21vZHVsZXMnKSk7XG5cbmNvbnN0IHsgQXNzZXREQiwgZm9yRWFjaCwgQXNzZXQgfSA9IHJlcXVpcmUoJ0BlZGl0b3IvYXNzZXQtZGInKTtcblxuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgQ0NPTiB9IGZyb20gJ2NjL2VkaXRvci9zZXJpYWxpemF0aW9uJztcbmltcG9ydCB7IGJ1aWxkRWZmZWN0IH0gZnJvbSAnLi4vZWZmZWN0LXV0aWxzJztcblxuZGVjbGFyZSBjb25zdCBFZGl0b3JFeHRlbmRzOiBhbnk7XG5kZWNsYXJlIGNvbnN0IGNjOiBhbnk7XG5cbmFzeW5jIGZ1bmN0aW9uIGxvYWRUZXh0dXJlKGFzc2V0SWQ6IHN0cmluZyk6IFByb21pc2U8YW55IHwgbnVsbD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgICBjYy5hc3NldE1hbmFnZXIubG9hZEFueShhc3NldElkLCAoZXJyb3I6IGFueSwgYXNzZXQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgICAgICAgIHJlc29sdmUoYXNzZXQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuLyoqXG4gKiDlnKggbGlicmFyeSDph4znlJ/miJDlr7nlupTnmoQgZWZmZWN0QXNzZXQg5a+56LGhXG4gKiBAcGFyYW0gYXNzZXQg6LWE5rqQ5pWw5o2uXG4gKiBAcGFyYW0gY29kZVxuICovXG4vLyBAdHMtZXhwZWN0LWVycm9yXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2VuZXJhdGVFZmZlY3RBc3NldChhc3NldDogQXNzZXQsIGNvZGU6IHN0cmluZyl7XG4gICAgY29uc3QgbmFtZSA9IGJhc2VuYW1lKGFzc2V0LnNvdXJjZSwgZXh0bmFtZShhc3NldC5zb3VyY2UpKTtcblxuICAgIGNvbnN0IGVmZmVjdCA9IGF3YWl0IGJ1aWxkRWZmZWN0KG5hbWUsIGNvZGUpO1xuXG4gICAgLy8g6K6w5b2VIGVmZmVjdCDnmoTlpLTmlofku7bkvp3otZZcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgZm9yRWFjaCgoZGI6IEFzc2V0REIpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBoZWFkZXIgb2YgZWZmZWN0LmRlcGVuZGVuY2llcykge1xuICAgICAgICAgICAgYXNzZXQuZGVwZW5kKHJlc29sdmUoZGIub3B0aW9ucy50YXJnZXQsICdjaHVua3MnLCBoZWFkZXIgKyAnLmNodW5rJykpO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgY2MuRWZmZWN0QXNzZXQoKTtcbiAgICBPYmplY3QuYXNzaWduKHJlc3VsdCwgZWZmZWN0KTtcblxuICAgIC8vIOW8leaTjuaVsOaNrue7k+aehOS4jeWPmO+8jOS/neeVmSBoaWRlSW5FZGl0b3Ig5bGe5oCnXG4gICAgaWYgKGVmZmVjdC5lZGl0b3IgJiYgZWZmZWN0LmVkaXRvci5oaWRlKSB7XG4gICAgICAgIHJlc3VsdC5oaWRlSW5FZGl0b3IgPSB0cnVlO1xuICAgIH1cblxuICAgIGZvciAobGV0IG4gPSAwOyBuIDwgcmVzdWx0LnRlY2huaXF1ZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgY29uc3QgdGVjaG5pcXVlID0gcmVzdWx0LnRlY2huaXF1ZXNbbl07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGVjaG5pcXVlLnBhc3Nlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgcGFzcyA9IHRlY2huaXF1ZS5wYXNzZXNbaV07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBwYXNzLnByb3BlcnRpZXMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcm9wSW5mbyA9IHBhc3MucHJvcGVydGllc1trZXldO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcHJvcEluZm8udmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzc2V0SWQgPSBwcm9wSW5mby52YWx1ZSBhcyBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgIGlmIChFZGl0b3IuVXRpbHMuVVVJRC5pc1VVSUQoYXNzZXRJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFzc2V0ID0gYXdhaXQgbG9hZFRleHR1cmUoYXNzZXRJZCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXNzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wSW5mby52YWx1ZSA9IGFzc2V0O1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8g5re75YqgIG1ldGEg5paH5Lu25Lit55qEIGNvbWJpbmF0aW9uc1xuICAgIGlmIChhc3NldC51c2VyRGF0YSkge1xuICAgICAgICBpZiAoYXNzZXQudXNlckRhdGEuY29tYmluYXRpb25zKSB7XG4gICAgICAgICAgICByZXN1bHQuY29tYmluYXRpb25zID0gYXNzZXQudXNlckRhdGEuY29tYmluYXRpb25zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVmZmVjdC5lZGl0b3IpIHtcbiAgICAgICAgICAgIGFzc2V0LnVzZXJEYXRhLmVkaXRvciA9IGVmZmVjdC5lZGl0b3I7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyDlt7LlrZjlnKjnmoTpnIDopoHmuIXnqbpcbiAgICAgICAgICAgIGFzc2V0LnVzZXJEYXRhLmVkaXRvciA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHNlcmlhbGl6ZUpTT04gPSBFZGl0b3JFeHRlbmRzLnNlcmlhbGl6ZShyZXN1bHQpO1xuICAgIGF3YWl0IGFzc2V0LnNhdmVUb0xpYnJhcnkoJy5qc29uJywgc2VyaWFsaXplSlNPTik7XG5cbiAgICBjb25zdCBkZXBlbmRzID0gZ2V0RGVwZW5kVVVJRExpc3Qoc2VyaWFsaXplSlNPTik7XG4gICAgYXNzZXQuc2V0RGF0YSgnZGVwZW5kcycsIGRlcGVuZHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVwZW5kVVVJRExpc3QoY29udGVudDogc3RyaW5nIHwgQ0NPTiB8IE9iamVjdCwgdXVpZD86IHN0cmluZykge1xuICAgIGlmICh0eXBlb2YgY29udGVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgLy8g5rOo5oSP77ya5q2k5pa55rOV5peg5rOV5Yy56YWN5Ye66ISa5pys5byV55So55qEIHV1aWRcbiAgICAgICAgbGV0IGFyciA9IGNvbnRlbnQubWF0Y2goL1thLXowLTldezh9LVthLXowLTldezR9LVthLXowLTldezR9LVthLXowLTldezR9LVthLXowLTldezEyfShAW2EtejAtOV0rKXswLH0vZyk7XG4gICAgICAgIGlmIChhcnIpIHtcbiAgICAgICAgICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMyODEzNzIwL25vZGVqcy1wcm9maWxpbmctcGFyZW50LWluLXNsaWNlZC1zdHJpbmdcbiAgICAgICAgICAgIGFyciA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoQXJyYXkuZnJvbShuZXcgU2V0KGFycikpLmZpbHRlcigoaWQpID0+IGlkICE9PSB1dWlkKSkpO1xuICAgICAgICB9XG4gICAgICAgIC8vIGNvbnN0IGFyciA9IGNvbnRlbnQubWF0Y2goL1wiX191dWlkX19cIjooICk/XCJbXlwiXSsvZyk7XG4gICAgICAgIHJldHVybiBhcnIgfHwgW107XG4gICAgfVxuICAgIC8vIGNvbnNvbGUud2FybignVW5hYmxlIHRvIGV4dHJhY3QgZGVwZW5kZW5jaWVzIHByb3Blcmx5Jyk7XG5cbiAgICByZXR1cm4gZ2V0RGVzZXJpYWxpemVSZXN1bHQoY29udGVudCkudXVpZHM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREZXNlcmlhbGl6ZVJlc3VsdChqc29uOiBDQ09OIHwgT2JqZWN0KSB7XG4gICAgY29uc3QgZGVzZXJpYWxpemVEZXRhaWxzID0gbmV3IGNjLmRlc2VyaWFsaXplLkRldGFpbHMoKTtcbiAgICBkZXNlcmlhbGl6ZURldGFpbHMucmVzZXQoKTtcbiAgICBjb25zdCBNaXNzaW5nQ2xhc3MgPSBFZGl0b3JFeHRlbmRzLk1pc3NpbmdSZXBvcnRlci5jbGFzc0luc3RhbmNlO1xuICAgIE1pc3NpbmdDbGFzcy5yZXNldCgpO1xuICAgIE1pc3NpbmdDbGFzcy5oYXNNaXNzaW5nQ2xhc3MgPSBmYWxzZTtcbiAgICBjb25zdCBkZXBlbmRTY3JpcHRJRCA9IG5ldyBTZXQoKTtcbiAgICBmdW5jdGlvbiBjbGFzc0ZpbmRlcihjbGFzc0lkOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKEVkaXRvci5VdGlscy5VVUlELmlzVVVJRChjbGFzc0lkKSkge1xuICAgICAgICAgICAgZGVwZW5kU2NyaXB0SUQuYWRkKEVkaXRvci5VdGlscy5VVUlELmRlY29tcHJlc3NVVUlEKGNsYXNzSWQpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gTWlzc2luZ0NsYXNzLmNsYXNzRmluZGVyKGNsYXNzSWQpO1xuICAgIH1cbiAgICBjb25zdCBkZXNlcmlhbGl6ZWRBc3NldCA9IGNjLmRlc2VyaWFsaXplKGpzb24sIGRlc2VyaWFsaXplRGV0YWlscywge1xuICAgICAgICBjbGFzc0ZpbmRlcixcbiAgICB9KTtcbiAgICBkZXNlcmlhbGl6ZURldGFpbHMuYXNzaWduQXNzZXRzQnkoZnVuY3Rpb24odXVpZDogc3RyaW5nLCBvcHRpb25zOiB7IG93bmVyOiBvYmplY3Q7IHByb3A6IHN0cmluZzsgdHlwZTogRnVuY3Rpb24gfSkge1xuICAgICAgICByZXR1cm4gRWRpdG9yRXh0ZW5kcy5zZXJpYWxpemUuYXNBc3NldCh1dWlkKTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpbnN0YW5jZTogZGVzZXJpYWxpemVkQXNzZXQsXG4gICAgICAgIHV1aWRzOiBkZXNlcmlhbGl6ZURldGFpbHMudXVpZExpc3QsXG4gICAgICAgIGRlcGVuZFNjcmlwdFV1aWRzOiBBcnJheS5mcm9tKGRlcGVuZFNjcmlwdElEKSxcbiAgICAgICAgY2xhc3NGaW5kZXI6IE1pc3NpbmdDbGFzcy5jbGFzc0ZpbmRlcixcbiAgICB9O1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/main.js b/extensions/shader-graph/dist/main.js new file mode 100644 index 0000000..de76929 --- /dev/null +++ b/extensions/shader-graph/dist/main.js @@ -0,0 +1,36 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.unload = exports.load = exports.methods = void 0; +const global_exports_1 = require("./shader-graph/global-exports"); +/** + * @en + * @zh 为扩展的主进程的注册方法 + */ +exports.methods = { + openPanel() { + Editor.Panel.open(global_exports_1.PACKAGE_NAME); + }, + async openShaderGraph(assetUuid) { + const lastAssetUuid = await Editor.Profile.getConfig(global_exports_1.PACKAGE_NAME, 'asset-uuid', 'local'); + await Editor.Profile.setConfig(global_exports_1.PACKAGE_NAME, 'asset-uuid', assetUuid, 'local'); + if (await Editor.Panel.has(global_exports_1.PANEL_NAME)) { + Editor.Message.send(global_exports_1.PACKAGE_NAME, 'open-asset', assetUuid, lastAssetUuid); + return; + } + await Editor.Panel.open(global_exports_1.PANEL_NAME); + }, +}; +/** + * @en Hooks triggered after extension loading is complete + * @zh 扩展加载完成后触发的钩子 + */ +function load() { +} +exports.load = load; +/** + * @en Hooks triggered after extension uninstallation is complete + * @zh 扩展卸载完成后触发的钩子 + */ +function unload() { } +exports.unload = unload; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLGtFQUF5RTtBQUV6RTs7O0dBR0c7QUFDVSxRQUFBLE9BQU8sR0FBNEM7SUFDNUQsU0FBUztRQUNMLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLDZCQUFZLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxTQUFpQjtRQUNuQyxNQUFNLGFBQWEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLDZCQUFZLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzFGLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsNkJBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRS9FLElBQUksTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQywyQkFBVSxDQUFDLEVBQUU7WUFDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNkJBQVksRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQzFFLE9BQU87U0FDVjtRQUVELE1BQU0sTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsMkJBQVUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7Q0FDSixDQUFDO0FBRUY7OztHQUdHO0FBQ0gsU0FBZ0IsSUFBSTtBQUVwQixDQUFDO0FBRkQsb0JBRUM7QUFFRDs7O0dBR0c7QUFDSCxTQUFnQixNQUFNLEtBQUssQ0FBQztBQUE1Qix3QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQQUNLQUdFX05BTUUsIFBBTkVMX05BTUUgfSBmcm9tICcuL3NoYWRlci1ncmFwaC9nbG9iYWwtZXhwb3J0cyc7XG5cbi8qKlxuICogQGVuXG4gKiBAemgg5Li65omp5bGV55qE5Li76L+b56iL55qE5rOo5YaM5pa55rOVXG4gKi9cbmV4cG9ydCBjb25zdCBtZXRob2RzOiB7IFtrZXk6IHN0cmluZ106ICguLi5hbnk6IGFueSkgPT4gYW55IH0gPSB7XG4gICAgb3BlblBhbmVsKCkge1xuICAgICAgICBFZGl0b3IuUGFuZWwub3BlbihQQUNLQUdFX05BTUUpO1xuICAgIH0sXG5cbiAgICBhc3luYyBvcGVuU2hhZGVyR3JhcGgoYXNzZXRVdWlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgbGFzdEFzc2V0VXVpZCA9IGF3YWl0IEVkaXRvci5Qcm9maWxlLmdldENvbmZpZyhQQUNLQUdFX05BTUUsICdhc3NldC11dWlkJywgJ2xvY2FsJyk7XG4gICAgICAgIGF3YWl0IEVkaXRvci5Qcm9maWxlLnNldENvbmZpZyhQQUNLQUdFX05BTUUsICdhc3NldC11dWlkJywgYXNzZXRVdWlkLCAnbG9jYWwnKTtcblxuICAgICAgICBpZiAoYXdhaXQgRWRpdG9yLlBhbmVsLmhhcyhQQU5FTF9OQU1FKSkge1xuICAgICAgICAgICAgRWRpdG9yLk1lc3NhZ2Uuc2VuZChQQUNLQUdFX05BTUUsICdvcGVuLWFzc2V0JywgYXNzZXRVdWlkLCBsYXN0QXNzZXRVdWlkKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IEVkaXRvci5QYW5lbC5vcGVuKFBBTkVMX05BTUUpO1xuICAgIH0sXG59O1xuXG4vKipcbiAqIEBlbiBIb29rcyB0cmlnZ2VyZWQgYWZ0ZXIgZXh0ZW5zaW9uIGxvYWRpbmcgaXMgY29tcGxldGVcbiAqIEB6aCDmianlsZXliqDovb3lrozmiJDlkI7op6blj5HnmoTpkqnlrZBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWQoKSB7XG5cbn1cblxuLyoqXG4gKiBAZW4gSG9va3MgdHJpZ2dlcmVkIGFmdGVyIGV4dGVuc2lvbiB1bmluc3RhbGxhdGlvbiBpcyBjb21wbGV0ZVxuICogQHpoIOaJqeWxleWNuOi9veWujOaIkOWQjuinpuWPkeeahOmSqeWtkFxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5sb2FkKCkgeyB9XG5cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/const.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/const.js new file mode 100644 index 0000000..66ca220 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/const.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getMinSize = exports.setMinSize = void 0; +let minWidth = 0; +let minHeight = 0; +function setMinSize(width, height) { + minWidth = width; + minHeight = height; +} +exports.setMinSize = setMinSize; +function getMinSize() { + return { + width: minWidth, + height: minHeight, + }; +} +exports.getMinSize = getMinSize; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9iYXNlL2NvbnN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNqQixJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7QUFFbEIsU0FBZ0IsVUFBVSxDQUFDLEtBQWEsRUFBRSxNQUFjO0lBQ3BELFFBQVEsR0FBRyxLQUFLLENBQUM7SUFDakIsU0FBUyxHQUFHLE1BQU0sQ0FBQztBQUN2QixDQUFDO0FBSEQsZ0NBR0M7QUFFRCxTQUFnQixVQUFVO0lBQ3RCLE9BQU87UUFDSCxLQUFLLEVBQUUsUUFBUTtRQUNmLE1BQU0sRUFBRSxTQUFTO0tBQ3BCLENBQUM7QUFDTixDQUFDO0FBTEQsZ0NBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgbWluV2lkdGggPSAwO1xubGV0IG1pbkhlaWdodCA9IDA7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNaW5TaXplKHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyKSB7XG4gICAgbWluV2lkdGggPSB3aWR0aDtcbiAgICBtaW5IZWlnaHQgPSBoZWlnaHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaW5TaXplKCkge1xuICAgIHJldHVybiB7XG4gICAgICAgIHdpZHRoOiBtaW5XaWR0aCxcbiAgICAgICAgaGVpZ2h0OiBtaW5IZWlnaHQsXG4gICAgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/header.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/header.js new file mode 100644 index 0000000..f288330 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/header.js @@ -0,0 +1,66 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.useDragEvent = void 0; +let onDragStartHeaderEvent; +/** + * 添加 header 拖动时间 + * @param options + */ +function useDragEvent(options) { + const { target, $window, config } = options; + if (!config.events.drag) { + target.removeEventListener('mousedown', onDragStartHeaderEvent, false); + target.removeAttribute('style'); + return; + } + if (target.getAttribute('has-drag-event') !== null) + return; + const parentElement = $window.parentElement; + onDragStartHeaderEvent = function (event) { + event.stopPropagation(); + const parentElementRect = parentElement.getBoundingClientRect(); + const windowRect = $window.getBoundingClientRect(); + const pointX = event.clientX; + const pointY = event.clientY; + const uiGraphForge = parentElement.parentElement?.querySelector('ui-graph-forge')?.shadowRoot; + const uiGraphForgeHeaderHeight = uiGraphForge?.querySelector('header')?.clientHeight || 28; + // 当前窗口的位置 + const start = { + left: $window.offsetLeft, + top: $window.offsetTop, + }; + const minX = 0; + const minY = uiGraphForgeHeaderHeight; + const maxX = parentElement.offsetWidth + parentElement.offsetLeft - windowRect.width; + const maxY = parentElement.offsetHeight - parentElement.offsetTop - windowRect.height; + const tabs = $window.parentNode?.parentNode?.querySelector('.right-tabs'); + const tabsRect = tabs?.getBoundingClientRect(); + function drag(event) { + const x = start.left + (event.clientX - pointX); + const y = start.top + (event.clientY - pointY); + let newX = 0, newY = 0; + if (config.events.limitless) { + newX = x; + newY = y; + } + else { + newY = Math.min(Math.max(minY, y), maxY); + newX = Math.min(Math.max(minX, x), maxX - (tabsRect?.width || 0)); + } + $window.style.left = `${newX}px`; + $window.style.top = `${newY}px`; + options.onChange && options.onChange($window.style); + } + function dragEnd() { + document.removeEventListener('mousemove', drag, true); + document.removeEventListener('mouseup', dragEnd, true); + } + document.addEventListener('mousemove', drag, true); + document.addEventListener('mouseup', dragEnd, true); + }; + target.addEventListener('mousedown', onDragStartHeaderEvent, false); + target.setAttribute('style', 'cursor: move;'); + target.setAttribute('has-drag-event', ''); +} +exports.useDragEvent = useDragEvent; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3BhbmVscy9zaGFkZXItZ3JhcGgvY29tcG9uZW50cy9mbG9hdC13aW5kb3cvYmFzZS9oZWFkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBa0JBLElBQUksc0JBQW1ELENBQUM7QUFFeEQ7OztHQUdHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLE9BQTJCO0lBQ3BELE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUU1QyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7UUFDckIsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsRUFBRSxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN2RSxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLE9BQU87S0FDVjtJQUVELElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLElBQUk7UUFBRSxPQUFPO0lBRTNELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFjLENBQUM7SUFFN0Msc0JBQXNCLEdBQUcsVUFBUyxLQUFpQjtRQUMvQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFFeEIsTUFBTSxpQkFBaUIsR0FBRyxhQUFhLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNoRSxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFFN0IsTUFBTSxZQUFZLEdBQUcsYUFBYSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxVQUFVLENBQUM7UUFDOUYsTUFBTSx3QkFBd0Is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IEZsb2F0V2luZG93Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuXG4vKipcbiAqIEBwYXJhbSBoZWFkZXJcbiAqIEBwYXJhbSBsaW1pdGVkQXJlYUVsZW1lbnRcbiAqIEBwYXJhbSAkd2luZG93IC0g5b2T5YmN56qX5Y+j5a+56LGhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUhlYWRlckRyYWdPcHRpb25zIHtcbiAgICAvLyDpnIDopoHmi5bliqjnmoTlr7nosaFcbiAgICB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50O1xuICAgIC8vIOW9k+WJjeeql+WPo+WvueixoVxuICAgICR3aW5kb3c6IEhUTUxEaXZFbGVtZW50O1xuICAgIC8vIOmFjee9rlxuICAgIGNvbmZpZzogRmxvYXRXaW5kb3dDb25maWc7XG4gICAgb25DaGFuZ2U/OiAoc3R5bGU6IENTU1N0eWxlRGVjbGFyYXRpb24pID0+IHZvaWQ7XG5cbn1cblxubGV0IG9uRHJhZ1N0YXJ0SGVhZGVyRXZlbnQ6IChldmVudDogTW91c2VFdmVudCkgPT4gdm9pZDtcblxuLyoqXG4gKiDmt7vliqAgaGVhZGVyIOaLluWKqOaXtumXtFxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZURyYWdFdmVudChvcHRpb25zOiBJSGVhZGVyRHJhZ09wdGlvbnMpIHtcbiAgICBjb25zdCB7IHRhcmdldCwgJHdpbmRvdywgY29uZmlnIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKCFjb25maWcuZXZlbnRzLmRyYWcpIHtcbiAgICAgICAgdGFyZ2V0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIG9uRHJhZ1N0YXJ0SGVhZGVyRXZlbnQsIGZhbHNlKTtcbiAgICAgICAgdGFyZ2V0LnJlbW92ZUF0dHJpYnV0ZSgnc3R5bGUnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0YXJnZXQuZ2V0QXR0cmlidXRlKCdoYXMtZHJhZy1ldmVudCcpICE9PSBudWxsKSByZXR1cm47XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gJHdpbmRvdy5wYXJlbnRFbGVtZW50ITtcblxuICAgIG9uRHJhZ1N0YXJ0SGVhZGVyRXZlbnQgPSBmdW5jdGlvbihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50UmVjdCA9IHBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIGNvbnN0IHdpbmRvd1JlY3QgPSAkd2luZG93LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBwb2ludFggPSBldmVudC5jbGllbnRYO1xuICAgICAgICBjb25zdCBwb2ludFkgPSBldmVudC5jbGllbnRZO1xuXG4gICAgICAgIGNvbnN0IHVpR3JhcGhGb3JnZSA9IHBhcmVudEVsZW1lbnQucGFyZW50RWxlbWVudD8ucXVlcnlTZWxlY3RvcigndWktZ3JhcGgtZm9yZ2UnKT8uc2hhZG93Um9vdDtcbiAgICAgICAgY29uc3QgdWlHcmFwaEZvcmdlSGVhZGVySGVpZ2h0ID0gdWlHcmFwaEZvcmdlPy5xdWVyeVNlbGVjdG9yKCdoZWFkZXInKT8uY2xpZW50SGVpZ2h0IHx8IDI4O1xuXG4gICAgICAgIC8vIOW9k+WJjeeql+WPo+eahOS9jee9rlxuICAgICAgICBjb25zdCBzdGFydCA9IHtcbiAgICAgICAgICAgIGxlZnQ6ICR3aW5kb3cub2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogJHdpbmRvdy5vZmZzZXRUb3AsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgbWluWCA9IDA7XG4gICAgICAgIGNvbnN0IG1pblkgPSB1aUdyYXBoRm9yZ2VIZWFkZXJIZWlnaHQ7XG4gICAgICAgIGNvbnN0IG1heFggPSBwYXJlbnRFbGVtZW50Lm9mZnNldFdpZHRoICsgcGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0IC0gd2luZG93UmVjdC53aWR0aDtcbiAgICAgICAgY29uc3QgbWF4WSA9IHBhcmVudEVsZW1lbnQub2Zmc2V0SGVpZ2h0IC0gcGFyZW50RWxlbWVudC5vZmZzZXRUb3AgLSB3aW5kb3dSZWN0LmhlaWdodDtcblxuICAgICAgICBjb25zdCB0YWJzID0gJHdpbmRvdy5wYXJlbnROb2RlPy5wYXJlbnROb2RlPy5xdWVyeVNlbGVjdG9yKCcucmlnaHQtdGFicycpO1xuICAgICAgICBjb25zdCB0YWJzUmVjdCA9IHRhYnM/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGRyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IHggPSBzdGFydC5sZWZ0ICsgKGV2ZW50LmNsaWVudFggLSBwb2ludFgpO1xuICAgICAgICAgICAgY29uc3QgeSA9IHN0YXJ0LnRvcCArIChldmVudC5jbGllbnRZIC0gcG9pbnRZKTtcblxuICAgICAgICAgICAgbGV0IG5ld1ggPSAwLCBuZXdZID0gMDtcbiAgICAgICAgICAgIGlmIChjb25maWcuZXZlbnRzLmxpbWl0bGVzcykge1xuICAgICAgICAgICAgICAgIG5ld1ggPSB4O1xuICAgICAgICAgICAgICAgIG5ld1kgPSB5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBuZXdZID0gTWF0aC5taW4oTWF0aC5tYXgobWluWSwgeSksIG1heFkpO1xuICAgICAgICAgICAgICAgIG5ld1ggPSBNYXRoLm1pbihNYXRoLm1heChtaW5YLCB4KSwgbWF4WCAtICh0YWJzUmVjdD8ud2lkdGggfHwgMCkpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkd2luZG93LnN0eWxlLmxlZnQgPSBgJHtuZXdYfXB4YDtcbiAgICAgICAgICAgICR3aW5kb3cuc3R5bGUudG9wID0gYCR7bmV3WX1weGA7XG5cbiAgICAgICAgICAgIG9wdGlvbnMub25DaGFuZ2UgJiYgb3B0aW9ucy5vbkNoYW5nZSgkd2luZG93LnN0eWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRyYWdFbmQoKSB7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBkcmFnLCB0cnVlKTtcbiAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBkcmFnRW5kLCB0cnVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIGRyYWcsIHRydWUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZHJhZ0VuZCwgdHJ1ZSk7XG4gICAgfTtcblxuICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBvbkRyYWdTdGFydEhlYWRlckV2ZW50LCBmYWxzZSk7XG4gICAgdGFyZ2V0LnNldEF0dHJpYnV0ZSgnc3R5bGUnLCAnY3Vyc29yOiBtb3ZlOycpO1xuICAgIHRhcmdldC5zZXRBdHRyaWJ1dGUoJ2hhcy1kcmFnLWV2ZW50JywgJycpO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/index.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/index.js new file mode 100644 index 0000000..0d17e56 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/index.js @@ -0,0 +1,157 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const header_1 = require("./header"); +const resizer_1 = require("./resizer"); +const block_forge_1 = require("../../../../../block-forge"); +const internal_1 = require("../internal"); +const vue_js_1 = require("vue/dist/vue.js"); +const const_1 = require("./const"); +const shader_graph_1 = require("../../../../../shader-graph"); +exports.default = (0, vue_js_1.defineComponent)({ + name: 'BaseFloatWindow', + props: { + forge: { + type: block_forge_1.HTMLGraphForgeElement, + required: true, + default: null, + }, + config: { + type: Object, + required: true, + default: null, + }, + }, + emits: [ + 'hide', + 'show', + 'size-changed', + ], + setup(props, ctx) { + const isShow = (0, vue_js_1.ref)(false); + const floatWindowRef = (0, vue_js_1.ref)(); + const headerRef = (0, vue_js_1.ref)(); + function syncPosition(rect) { + if (rect.top !== undefined) { + floatWindowRef.value.style.top = rect.top; + } + else { + floatWindowRef.value.style.top = ''; + } + if (rect.left !== undefined) { + floatWindowRef.value.style.left = rect.left; + } + else { + floatWindowRef.value.style.left = ''; + } + if (rect.right !== undefined) { + floatWindowRef.value.style.right = rect.right; + } + else { + floatWindowRef.value.style.right = ''; + } + if (rect.bottom !== undefined) { + floatWindowRef.value.style.bottom = rect.bottom; + } + else { + floatWindowRef.value.style.bottom = ''; + } + } + function hide() { + isShow.value = false; + floatWindowRef.value?.setAttribute('hidden', ''); + ctx.emit('hide'); + } + function show(position) { + syncPosition(position || props.config.position); + if (isShow.value) + return; + isShow.value = true; + (0, vue_js_1.nextTick)(() => { + onResize(); + floatWindowRef.value?.removeAttribute('hidden'); + ctx.emit('show'); + }); + } + function syncConfig() { + if (!floatWindowRef.value || !props.forge) + return; + syncBase(); + syncEvents(); + } + function syncBase() { + const base = props.config.base; + const details = props.config.details; + floatWindowRef.value.style.height = details?.height || base.height; + floatWindowRef.value.style.width = details?.width || base.width; + (0, const_1.setMinSize)(parseFloat(base.minWidth), parseFloat(base.minHeight)); + (0, vue_js_1.nextTick)(() => { + onResize(); + }); + } + function syncEvents() { + let target; + if (props.config.events.target === internal_1.FloatWindowDragTarget.header) { + target = headerRef.value; + } + else { + target = floatWindowRef.value; + } + (0, header_1.useDragEvent)({ + config: props.config, + $window: floatWindowRef.value, + target: target, + onChange: () => { }, + }); + (0, resizer_1.useResizer)({ + config: props.config, + $window: floatWindowRef.value, + onChange: () => { + ctx.emit('size-changed'); + }, + }); + } + (0, vue_js_1.watch)(() => props.config.events, () => { + syncEvents(); + }); + (0, vue_js_1.watch)(() => props.config.base, () => { + syncBase(); + }); + function onResize() { + if (isShow.value) { + (0, resizer_1.adjustWindowPosition)(floatWindowRef.value, props.forge); + } + } + (0, vue_js_1.onMounted)(() => { + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.Resize, onResize); + (0, vue_js_1.nextTick)(() => { + syncConfig(); + }); + }); + (0, vue_js_1.onUnmounted)(() => { + shader_graph_1.MessageMgr.Instance.unregister(shader_graph_1.MessageType.Resize, onResize); + }); + return { + floatWindowRef, + headerRef, + hide, + show, + syncConfig, + onResize, + isShow, + }; + }, + template: ` + + `, +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9iYXNlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBQXdDO0FBQ3hDLHVDQUE2RDtBQUM3RCw0REFBbUU7QUFDbkUsMENBQXVFO0FBRXZFLDRDQUFnRztBQUNoRyxtQ0FBcUM7QUFDckMsOERBQXNFO0FBRXRFLGtCQUFlLElBQUEsd0JBQWUsRUFBQztJQUMzQixJQUFJLEVBQUUsaUJBQWlCO0lBRXZCLEtBQUssRUFBRTtRQUNILEtBQUssRUFBRTtZQUNILElBQUksRUFBRSxtQ0FBcUI7WUFDM0IsUUFBUSxFQUFFLElBQUk7WUFDZCxPQUFPLEVBQUUsSUFBSTtTQUNoQjtRQUNELE1BQU0sRUFBRTtZQUNKLElBQUksRUFBRSxNQUFpQztZQUN2QyxRQUFRLEVBQUUsSUFBSTtZQUNkLE9BQU8sRUFBRSxJQUFJO1NBQ2hCO0tBQ0o7SUFFRCxLQUFLLEVBQUU7UUFDSCxNQUFNO1FBQ04sTUFBTTtRQUNOLGNBQWM7S0FDakI7SUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUc7UUFDWixNQUFNLE1BQU0sR0FBRyxJQUFBLFlBQUcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixNQUFNLGNBQWMsR0FBRyxJQUFBLFlBQUcsR0FBRSxDQUFDO1FBQzdCLE1BQU0sU0FBUyxHQUFHLElBQUEsWUFBRyxHQUFFLENBQUM7UUFFeEIsU0FBUyxZQUFZLENBQUMsSUFBdUU7WUFDekYsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLFNBQVMsRUFBRTtnQkFDeEIsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7YUFDN0M7aUJBQU07Z0JBQ0gsY0FBYyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFH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RUFBQyxHQUFHLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUEsb0JBQVcsRUFBQyxHQUFHLEVBQUU7WUFDYix5QkFBVSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsMEJBQVcsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDakUsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPO1lBQ0gsY0FBYztZQUNkLFNBQVM7WUFFVCxJQUFJO1lBQ0osSUFBSTtZQUNKLFVBQVU7WUFDVixRQUFRO1lBRVIsTUFBTTtTQUNULENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7U0FZTDtDQUNSLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZURyYWdFdmVudCB9IGZyb20gJy4vaGVhZGVyJztcbmltcG9ydCB7IGFkanVzdFdpbmRvd1Bvc2l0aW9uLCB1c2VSZXNpemVyIH0gZnJvbSAnLi9yZXNpemVyJztcbmltcG9ydCB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2Jsb2NrLWZvcmdlJztcbmltcG9ydCB7IEZsb2F0V2luZG93Q29uZmlnLCBGbG9hdFdpbmRvd0RyYWdUYXJnZXQgfSBmcm9tICcuLi9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgbmV4dFRpY2ssIG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiwgd2F0Y2ggfSBmcm9tICd2dWUvZGlzdC92dWUuanMnO1xuaW1wb3J0IHsgc2V0TWluU2l6ZSB9IGZyb20gJy4vY29uc3QnO1xuaW1wb3J0IHsgTWVzc2FnZU1nciwgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFkZXItZ3JhcGgnO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuICAgIG5hbWU6ICdCYXNlRmxvYXRXaW5kb3cnLFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZm9yZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEhUTUxHcmFwaEZvcmdlRWxlbWVudCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QgYXMgKCkgPT4gRmxvYXRXaW5kb3dDb25maWcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGVtaXRzOiBbXG4gICAgICAgICdoaWRlJyxcbiAgICAgICAgJ3Nob3cnLFxuICAgICAgICAnc2l6ZS1jaGFuZ2VkJyxcbiAgICBdLFxuXG4gICAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgICAgICBjb25zdCBpc1Nob3cgPSByZWYoZmFsc2UpO1xuICAgICAgICBjb25zdCBmbG9hdFdpbmRvd1JlZiA9IHJlZigpO1xuICAgICAgICBjb25zdCBoZWFkZXJSZWYgPSByZWYoKTtcblxuICAgICAgICBmdW5jdGlvbiBzeW5jUG9zaXRpb24ocmVjdDogeyB0b3A/OiBzdHJpbmc7IHJpZ2h0Pzogc3RyaW5nOyBsZWZ0Pzogc3RyaW5nOyBib3R0b20/OiBzdHJpbmc7IH0pIHtcbiAgICAgICAgICAgIGlmIChyZWN0LnRvcCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWUuc3R5bGUudG9wID0gcmVjdC50b3A7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZsb2F0V2luZG93UmVmLnZhbHVlLnN0eWxlLnRvcCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlY3QubGVmdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWUuc3R5bGUubGVmdCA9IHJlY3QubGVmdDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWUuc3R5bGUubGVmdCA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlY3QucmlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIGZsb2F0V2luZG93UmVmLnZhbHVlLnN0eWxlLnJpZ2h0ID0gcmVjdC5yaWdodDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWUuc3R5bGUucmlnaHQgPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZWN0LmJvdHRvbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWUuc3R5bGUuYm90dG9tID0gcmVjdC5ib3R0b207XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGZsb2F0V2luZG93UmVmLnZhbHVlLnN0eWxlLmJvdHRvbSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gaGlkZSgpIHtcbiAgICAgICAgICAgIGlzU2hvdy52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWU/LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuICAgICAgICAgICAgY3R4LmVtaXQoJ2hpZGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHNob3cocG9zaXRpb24/OiB7IHRvcD86IHN0cmluZzsgcmlnaHQ/OiBzdHJpbmc7IGxlZnQ/OiBzdHJpbmc7IGJvdHRvbT86IHN0cmluZzsgfSkge1xuICAgICAgICAgICAgc3luY1Bvc2l0aW9uKHBvc2l0aW9uIHx8IHByb3BzLmNvbmZpZy5wb3NpdGlvbik7XG5cbiAgICAgICAgICAgIGlmIChpc1Nob3cudmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGlzU2hvdy52YWx1ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICBvblJlc2l6ZSgpO1xuICAgICAgICAgICAgICAgIGZsb2F0V2luZG93UmVmLnZhbHVlPy5yZW1vdmVBdHRyaWJ1dGUoJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgIGN0eC5lbWl0KCdzaG93Jyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHN5bmNDb25maWcoKSB7XG4gICAgICAgICAgICBpZiAoIWZsb2F0V2luZG93UmVmLnZhbHVlIHx8ICFwcm9wcy5mb3JnZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBzeW5jQmFzZSgpO1xuICAgICAgICAgICAgc3luY0V2ZW50cygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc3luY0Jhc2UoKSB7XG4gICAgICAgICAgICBjb25zdCBiYXNlID0gcHJvcHMuY29uZmlnLmJhc2U7XG4gICAgICAgICAgICBjb25zdCBkZXRhaWxzID0gcHJvcHMuY29uZmlnLmRldGFpbHM7XG4gICAgICAgICAgICBmbG9hdFdpbmRvd1JlZi52YWx1ZS5zdHlsZS5oZWlnaHQgPSBkZXRhaWxzPy5oZWlnaHQgfHwgYmFzZS5oZWlnaHQ7XG4gICAgICAgICAgICBmbG9hdFdpbmRvd1JlZi52YWx1ZS5zdHlsZS53aWR0aCA9IGRldGFpbHM/LndpZHRoIHx8IGJhc2Uud2lkdGg7XG5cbiAgICAgICAgICAgIHNldE1pblNpemUocGFyc2VGbG9hdChiYXNlLm1pbldpZHRoKSwgcGFyc2VGbG9hdChiYXNlLm1pbkhlaWdodCkpO1xuXG4gICAgICAgICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgb25SZXNpemUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc3luY0V2ZW50cygpIHtcbiAgICAgICAgICAgIGxldCB0YXJnZXQ6IEhUTUxEaXZFbGVtZW50O1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5ldmVudHMudGFyZ2V0ID09PSBGbG9hdFdpbmRvd0RyYWdUYXJnZXQuaGVhZGVyKSB7XG4gICAgICAgICAgICAgICAgdGFyZ2V0ID0gaGVhZGVyUmVmLnZhbHVlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXQgPSBmbG9hdFdpbmRvd1JlZi52YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHVzZURyYWdFdmVudCh7XG4gICAgICAgICAgICAgICAgY29uZmlnOiBwcm9wcy5jb25maWcsXG4gICAgICAgICAgICAgICAgJHdpbmRvdzogZmxvYXRXaW5kb3dSZWYudmFsdWUsXG4gICAgICAgICAgICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICAgICAgICAgICAgb25DaGFuZ2U6ICgpID0+IHt9LFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHVzZVJlc2l6ZXIoe1xuICAgICAgICAgICAgICAgIGNvbmZpZzogcHJvcHMuY29uZmlnLFxuICAgICAgICAgICAgICAgICR3aW5kb3c6IGZsb2F0V2luZG93UmVmLnZhbHVlLFxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGN0eC5lbWl0KCdzaXplLWNoYW5nZWQnKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB3YXRjaCgoKSA9PiBwcm9wcy5jb25maWcuZXZlbnRzLCAoKSA9PiB7XG4gICAgICAgICAgICBzeW5jRXZlbnRzKCk7XG4gICAgICAgIH0pO1xuICAgICAgICB3YXRjaCgoKSA9PiBwcm9wcy5jb25maWcuYmFzZSwgKCkgPT4ge1xuICAgICAgICAgICAgc3luY0Jhc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gb25SZXNpemUoKSB7XG4gICAgICAgICAgICBpZiAoaXNTaG93LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0V2luZG93UG9zaXRpb24oZmxvYXRXaW5kb3dSZWYudmFsdWUsIHByb3BzLmZvcmdlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLlJlc2l6ZSwgb25SZXNpemUpO1xuXG4gICAgICAgICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgc3luY0NvbmZpZygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UudW5yZWdpc3RlcihNZXNzYWdlVHlwZS5SZXNpemUsIG9uUmVzaXplKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZsb2F0V2luZG93UmVmLFxuICAgICAgICAgICAgaGVhZGVyUmVmLFxuXG4gICAgICAgICAgICBoaWRlLFxuICAgICAgICAgICAgc2hvdyxcbiAgICAgICAgICAgIHN5bmNDb25maWcsXG4gICAgICAgICAgICBvblJlc2l6ZSxcblxuICAgICAgICAgICAgaXNTaG93LFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgcmVmPVwiZmxvYXRXaW5kb3dSZWZcIiBjbGFzcz1cImZsb2F0LXdpbmRvd1wiIGhpZGRlbj5cbiAgICAgIDxkaXYgcmVmPVwiaGVhZGVyUmVmXCIgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImhlYWRlclwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb25cIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cInNlY3Rpb25cIj48L3Nsb3Q+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb290ZXJcIj5cbiAgICAgICAgPHNsb3QgbmFtZT1cImZvb3RlclwiPjwvc2xvdD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgICAgICBgLFxufSk7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/resizer.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/resizer.js new file mode 100644 index 0000000..d893001 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/base/resizer.js @@ -0,0 +1,211 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.adjustWindowPosition = exports.useResizer = void 0; +const const_1 = require("./const"); +const RESIZER_TAG = [ + 'top', + 'left', + 'right', + 'bottom', + 'top-left', + 'top-right', + 'bottom-left', + 'bottom-right', +]; +const hasResizerEvent = false; +/** + * 添加缩放器 + * @param options + */ +function useResizer(options) { + const { $window, config } = options; + if (!config.events.resizer) { + RESIZER_TAG.forEach((tag) => { + const element = $window.querySelector(tag); + if (element) { + element.remove(); + } + }); + return; + } + // 检查是否注册过,如果注册过就跳过 + for (const tag of RESIZER_TAG) { + if ($window.querySelector(tag)) { + return; + } + } + const minSize = (0, const_1.getMinSize)(); + RESIZER_TAG.forEach((tag) => { + const element = document.createElement('div'); + element.setAttribute('id', tag); + element.setAttribute('class', tag); + element.addEventListener('mousedown', onDragStartFrameEvent, false); + $window.appendChild(element); + }); + const parentElement = $window.parentElement; + let aspectRatio = 1; + function onDragStartFrameEvent(event) { + const windowRect = { + left: $window.offsetLeft, + top: $window.offsetTop, + width: $window.offsetWidth, + height: $window.offsetHeight, + }; + // 鼠标点击时候的坐标 + const mouseDown = { + x: event.clientX, + y: event.clientY, + }; + const dragTarget = event.target; + aspectRatio = windowRect.width / windowRect.height; + let lastLeft = -1; + let lastTop = -1; + let lastWidth = -1; + let lastHeight = -1; + let newLeft = -1; + let newWidth = -1; + let newTop = -1; + let newHeight = -1; + const minX = 0; + const minY = 0; + const maxX = parentElement.offsetWidth + parentElement.offsetLeft - windowRect.width; + const maxY = parentElement.offsetHeight - parentElement.offsetTop - windowRect.height; + function moveTop(deltaY) { + newTop = windowRect.top - deltaY; + newHeight = windowRect.height + deltaY; + newHeight = Math.max(newHeight, minSize.height); + newHeight = Math.min(newHeight, windowRect.top + windowRect.height); + newTop = Math.min(newTop, windowRect.top + windowRect.height - minSize.height); + newTop = Math.max(newTop, minX); + if (newHeight <= minSize.width) { + newTop = lastTop; + newHeight = lastHeight; + } + lastTop = newTop; + lastHeight = newHeight; + } + const parentElementOffsetHeight = parentElement.offsetHeight; + function moveBottom(deltaY) { + newHeight = windowRect.height - deltaY; + newHeight = Math.max(minSize.height, newHeight); + const offsetTop = parentElement.offsetTop; + newHeight = Math.min(newHeight, Math.abs(parentElementOffsetHeight - offsetTop - windowRect.top)); + } + function moveLeft(deltaX) { + newLeft = windowRect.left - deltaX; + newWidth = windowRect.width + deltaX; + newWidth = Math.max(newWidth, minSize.width); + newWidth = Math.min(newWidth, windowRect.left + windowRect.width); + newLeft = Math.min(newLeft, windowRect.left + windowRect.width - minSize.width); + newLeft = Math.max(newLeft, 0); + if (newWidth <= minSize.width) { + newLeft = lastLeft; + newWidth = lastWidth; + } + lastLeft = newLeft; + lastWidth = newWidth; + } + function moveRight(deltaX) { + newWidth = windowRect.width - deltaX; + newWidth = Math.max(minSize.width, newWidth); + newWidth = Math.min(newWidth, Math.abs(windowRect.left - (parentElement.offsetLeft + parentElement.offsetWidth))); + } + function drag(event) { + const deltaX = (mouseDown.x - event.clientX); + const deltaY = (mouseDown.y - event.clientY); + switch (dragTarget.id) { + case 'top-left': + moveTop(deltaY); + moveLeft(deltaX); + break; + case 'top-right': + moveTop(deltaY); + moveRight(deltaX); + break; + case 'bottom-left': + moveBottom(deltaY); + moveLeft(deltaX); + break; + case 'bottom-right': + moveBottom(deltaY); + moveRight(deltaX); + break; + case 'top': + moveTop(deltaY); + break; + case 'bottom': + moveBottom(deltaY); + break; + case 'left': + moveLeft(deltaX); + break; + case 'right': + moveRight(deltaX); + break; + } + if (config.events.enableAspectRatio) { + if (newHeight !== -1) { + newWidth = newHeight * aspectRatio; + } + if (newWidth !== -1) { + newHeight = newWidth; //newWidth / aspectRatio; + } + } + if (newWidth !== -1) { + const minWidth = parseFloat(config.base.minWidth); + newWidth = newWidth <= minWidth ? minWidth : newWidth; + } + if (newHeight !== -1) { + const minHeight = parseFloat(config.base.minHeight); + newHeight = newHeight <= minHeight ? minHeight : newHeight; + } + if (newTop !== -1) + $window.style.top = `${newTop}px`; + if (newHeight !== -1) + $window.style.height = `${newHeight}px`; + if (newLeft !== -1) + $window.style.left = `${newLeft}px`; + if (newWidth !== -1) + $window.style.width = `${newWidth}px`; + if (newTop !== -1 || newHeight !== -1 || newLeft !== -1 || newWidth !== -1) { + options.onChange && options.onChange($window.style); + } + } + function dragEnd() { + document.removeEventListener('mousemove', drag, true); + document.removeEventListener('mouseup', dragEnd, true); + } + document.addEventListener('mousemove', drag, true); + document.addEventListener('mouseup', dragEnd, true); + } +} +exports.useResizer = useResizer; +/** + * 窗口 resize 时,重新矫正坐标,保证在画板内 + */ +function adjustWindowPosition($window, limitedAreaElement) { + const limitedAreaSection = limitedAreaElement.shadowRoot.querySelector('section'); + const limitedAreaSectionRect = { + left: limitedAreaSection.clientLeft, + right: limitedAreaSection.clientLeft + limitedAreaSection.clientWidth, + top: limitedAreaSection.clientTop, + bottom: limitedAreaSection.clientTop + limitedAreaSection.clientHeight, + }; + const left = parseFloat($window.style.left) || undefined; + if (left !== undefined && (left < limitedAreaSectionRect.left || + left > (limitedAreaSectionRect.right - $window.offsetWidth))) { + const newLeft = Math.min(Math.max(left, limitedAreaSectionRect.left), limitedAreaSectionRect.right - $window.offsetWidth); + $window.style.left = newLeft + 'px'; + } + const top = parseFloat($window.style.top) || undefined; + if (top !== undefined && (top < limitedAreaSectionRect.top || + top > limitedAreaSectionRect.bottom - $window.offsetHeight)) { + // 校正位置,确保窗口在父节点区域内 + let newTop = Math.min(Math.max(top, limitedAreaSectionRect.top), limitedAreaSectionRect.bottom - $window.offsetHeight); + const minTop = limitedAreaElement.shadowRoot.querySelector('header').offsetHeight; + newTop = Math.max(minTop, newTop); + $window.style.top = newTop + 'px'; + } +} +exports.adjustWindowPosition = adjustWindowPosition; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wYW5lbHMvc2hhZGVyLWdyYXBoL2NvbXBvbmVudHMvZmxvYXQtd2luZG93L2Jhc2UvcmVzaXplci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBcUM7QUFHckMsTUFBTSxXQUFXLEdBQUc7SUFDaEIsS0FBSztJQUNMLE1BQU07SUFDTixPQUFPO0lBQ1AsUUFBUTtJQUNSLFVBQVU7SUFDVixXQUFXO0lBQ1gsYUFBYTtJQUNiLGNBQWM7Q0FDakIsQ0FBQztBQVdGLE1BQU0sZUFBZSxHQUFHLEtBQUssQ0FBQztBQUU5Qjs7O0dBR0c7QUFDSCxTQUFnQixVQUFVLENBQUMsT0FBd0I7SUFDL0MsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUM7SUFDcEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3hCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUNoQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNDLElBQUksT0FBTyxFQUFFO2dCQUNULE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNwQjtRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTztLQUNWO0lBRUQsbUJBQW1CO0lBQ25CLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFO1FBQzNCLElBQUksT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QixPQUFPO1NBQ1Y7S0FDSjtJQUVELE1BQU0sT0FBTyxHQUFHLElBQUEsa0JBQVUsR0FBRSxDQUFDO0lBQzdCLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtRQUNoQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFD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QUNuQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLHNCQUFzQixDQUFDLEdBQUcsQ0FBQyxFQUFFLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDeEgsTUFBTSxNQUFNLEdBQUcsa0JBQWtCLENBQUMsVUFBVyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUUsQ0FBQyxZQUFZLENBQUM7UUFDcEYsTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUM7S0FDckM7QUFDTCxDQUFDO0FBNUJELG9EQTRCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldE1pblNpemUgfSBmcm9tICcuL2NvbnN0JztcbmltcG9ydCB7IEZsb2F0V2luZG93Q29uZmlnIH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuXG5jb25zdCBSRVNJWkVSX1RBRyA9IFtcbiAgICAndG9wJyxcbiAgICAnbGVmdCcsXG4gICAgJ3JpZ2h0JyxcbiAgICAnYm90dG9tJyxcbiAgICAndG9wLWxlZnQnLFxuICAgICd0b3AtcmlnaHQnLFxuICAgICdib3R0b20tbGVmdCcsXG4gICAgJ2JvdHRvbS1yaWdodCcsXG5dO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXNpemVyT3B0aW9ucyB7XG4gICAgLy8g5b2T5YmN56qX5Y+jXG4gICAgJHdpbmRvdzogSFRNTERpdkVsZW1lbnQ7XG4gICAgLy8g6YWN572uXG4gICAgY29uZmlnOiBGbG9hdFdpbmRvd0NvbmZpZztcbiAgICAvLyDmlbDmja7lj5jljJbmmK/op6blj5HnmoTkuovku7ZcbiAgICBvbkNoYW5nZT86IChzdHlsZTogQ1NTU3R5bGVEZWNsYXJhdGlvbikgPT4gdm9pZDtcbn1cblxuY29uc3QgaGFzUmVzaXplckV2ZW50ID0gZmFsc2U7XG5cbi8qKlxuICog5re75Yqg57yp5pS+5ZmoXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlUmVzaXplcihvcHRpb25zOiBJUmVzaXplck9wdGlvbnMpIHtcbiAgICBjb25zdCB7ICR3aW5kb3csIGNvbmZpZyB9ID0gb3B0aW9ucztcbiAgICBpZiAoIWNvbmZpZy5ldmVudHMucmVzaXplcikge1xuICAgICAgICBSRVNJWkVSX1RBRy5mb3JFYWNoKCh0YWc6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9ICR3aW5kb3cucXVlcnlTZWxlY3Rvcih0YWcpO1xuICAgICAgICAgICAgaWYgKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIOajgOafpeaYr+WQpuazqOWGjOi/h++8jOWmguaenOazqOWGjOi/h+Wwsei3s+i/h1xuICAgIGZvciAoY29uc3QgdGFnIG9mIFJFU0laRVJfVEFHKSB7XG4gICAgICAgIGlmICgkd2luZG93LnF1ZXJ5U2VsZWN0b3IodGFnKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbWluU2l6ZSA9IGdldE1pblNpemUoKTtcbiAgICBSRVNJWkVSX1RBRy5mb3JFYWNoKCh0YWc6IHN0cmluZykgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdpZCcsIHRhZyk7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdjbGFzcycsIHRhZyk7XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25EcmFnU3RhcnRGcmFtZUV2ZW50LCBmYWxzZSk7XG4gICAgICAgICR3aW5kb3cuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBwYXJlbnRFbGVtZW50ID0gJHdpbmRvdy5wYXJlbnRFbGVtZW50ITtcblxuICAgIGxldCBhc3BlY3RSYXRpbyA9IDE7XG4gICAgZnVuY3Rpb24gb25EcmFnU3RhcnRGcmFtZUV2ZW50KGV2ZW50OiBNb3VzZUV2ZW50KSB7XG5cbiAgICAgICAgY29uc3Qgd2luZG93UmVjdCA9IHtcbiAgICAgICAgICAgIGxlZnQ6ICR3aW5kb3cub2Zmc2V0TGVmdCxcbiAgICAgICAgICAgIHRvcDogJHdpbmRvdy5vZmZzZXRUb3AsXG4gICAgICAgICAgICB3aWR0aDogJHdpbmRvdy5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogJHdpbmRvdy5vZmZzZXRIZWlnaHQsXG4gICAgICAgIH07XG5cbiAgICAgICAgLy8g6byg5qCH54K55Ye75pe25YCZ55qE5Z2Q5qCHXG4gICAgICAgIGNvbnN0IG1vdXNlRG93biA9IHtcbiAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudC5jbGllbnRZLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGRyYWdUYXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgYXNwZWN0UmF0aW8gPSB3aW5kb3dSZWN0LndpZHRoIC8gd2luZG93UmVjdC5oZWlnaHQ7XG5cbiAgICAgICAgbGV0IGxhc3RMZWZ0ID0gLTE7XG4gICAgICAgIGxldCBsYXN0VG9wID0gLTE7XG4gICAgICAgIGxldCBsYXN0V2lkdGggPSAtMTtcbiAgICAgICAgbGV0IGxhc3RIZWlnaHQgPSAtMTtcbiAgICAgICAgbGV0IG5ld0xlZnQgPSAtMTtcbiAgICAgICAgbGV0IG5ld1dpZHRoID0gLTE7XG4gICAgICAgIGxldCBuZXdUb3AgPSAtMTtcbiAgICAgICAgbGV0IG5ld0hlaWdodCA9IC0xO1xuXG4gICAgICAgIGNvbnN0IG1pblggPSAwO1xuICAgICAgICBjb25zdCBtaW5ZID0gMDtcbiAgICAgICAgY29uc3QgbWF4WCA9IHBhcmVudEVsZW1lbnQub2Zmc2V0V2lkdGggKyBwYXJlbnRFbGVtZW50Lm9mZnNldExlZnQgLSB3aW5kb3dSZWN0LndpZHRoO1xuICAgICAgICBjb25zdCBtYXhZID0gcGFyZW50RWxlbWVudC5vZmZzZXRIZWlnaHQgLSBwYXJlbnRFbGVtZW50Lm9mZnNldFRvcCAtIHdpbmRvd1JlY3QuaGVpZ2h0O1xuXG4gICAgICAgIGZ1bmN0aW9uIG1vdmVUb3AoZGVsdGFZOiBudW1iZXIpIHtcbiAgICAgICAgICAgIG5ld1RvcCA9IHdpbmRvd1JlY3QudG9wIC0gZGVsdGFZO1xuICAgICAgICAgICAgbmV3SGVpZ2h0ID0gd2luZG93UmVjdC5oZWlnaHQgKyBkZWx0YVk7XG5cbiAgICAgICAgICAgIG5ld0hlaWdodCA9IE1hdGgubWF4KG5ld0hlaWdodCwgbWluU2l6ZS5oZWlnaHQpO1xuICAgICAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5taW4obmV3SGVpZ2h0LCB3aW5kb3dSZWN0LnRvcCArIHdpbmRvd1JlY3QuaGVpZ2h0KTtcblxuICAgICAgICAgICAgbmV3VG9wID0gTWF0aC5taW4obmV3VG9wLCB3aW5kb3dSZWN0LnRvcCArIHdpbmRvd1JlY3QuaGVpZ2h0IC0gbWluU2l6ZS5oZWlnaHQpO1xuICAgICAgICAgICAgbmV3VG9wID0gTWF0aC5tYXgobmV3VG9wLCBtaW5YKTtcblxuICAgICAgICAgICAgaWYgKG5ld0hlaWdodCA8PSBtaW5TaXplLndpZHRoKSB7XG4gICAgICAgICAgICAgICAgbmV3VG9wID0gbGFzdFRvcDtcbiAgICAgICAgICAgICAgICBuZXdIZWlnaHQgPSBsYXN0SGVpZ2h0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGFzdFRvcCA9IG5ld1RvcDtcbiAgICAgICAgICAgIGxhc3RIZWlnaHQgPSBuZXdIZWlnaHQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJlbnRFbGVtZW50T2Zmc2V0SGVpZ2h0ID0gcGFyZW50RWxlbWVudC5vZmZzZXRIZWlnaHQ7XG5cbiAgICAgICAgZnVuY3Rpb24gbW92ZUJvdHRvbShkZWx0YVk6IG51bWJlcikge1xuICAgICAgICAgICAgbmV3SGVpZ2h0ID0gd2luZG93UmVjdC5oZWlnaHQgLSBkZWx0YVk7XG4gICAgICAgICAgICBuZXdIZWlnaHQgPSBNYXRoLm1heChtaW5TaXplLmhlaWdodCwgbmV3SGVpZ2h0KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldFRvcCA9IHBhcmVudEVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgbmV3SGVpZ2h0ID0gTWF0aC5taW4obmV3SGVpZ2h0LCBNYXRoLmFicyhwYXJlbnRFbGVtZW50T2Zmc2V0SGVpZ2h0IC0gb2Zmc2V0VG9wIC0gd2luZG93UmVjdC50b3ApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG1vdmVMZWZ0KGRlbHRhWDogbnVtYmVyKSB7XG4gICAgICAgICAgICBuZXdMZWZ0ID0gd2luZG93UmVjdC5sZWZ0IC0gZGVsdGFYO1xuICAgICAgICAgICAgbmV3V2lkdGggPSB3aW5kb3dSZWN0LndpZHRoICsgZGVsdGFYO1xuXG4gICAgICAgICAgICBuZXdXaWR0aCA9IE1hdGgubWF4KG5ld1dpZHRoLCBtaW5TaXplLndpZHRoKTtcbiAgICAgICAgICAgIG5ld1dpZHRoID0gTWF0aC5taW4obmV3V2lkdGgsIHdpbmRvd1JlY3QubGVmdCArIHdpbmRvd1JlY3Qud2lkdGgpO1xuXG4gICAgICAgICAgICBuZXdMZWZ0ID0gTWF0aC5taW4obmV3TGVmdCwgd2luZG93UmVjdC5sZWZ0ICsgd2luZG93UmVjdC53aWR0aCAtIG1pblNpemUud2lkdGgpO1xuICAgICAgICAgICAgbmV3TGVmdCA9IE1hdGgubWF4KG5ld0xlZnQsIDApO1xuICAgICAgICAgICAgaWYgKG5ld1dpZHRoIDw9IG1pblNpemUud2lkdGgpIHtcbiAgICAgICAgICAgICAgICBuZXdMZWZ0ID0gbGFzdExlZnQ7XG4gICAgICAgICAgICAgICAgbmV3V2lkdGggPSBsYXN0V2lkdGg7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsYXN0TGVmdCA9IG5ld0xlZnQ7XG4gICAgICAgICAgICBsYXN0V2lkdGggPSBuZXdXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG1vdmVSaWdodChkZWx0YVg6IG51bWJlcikge1xuICAgICAgICAgICAgbmV3V2lkdGggPSB3aW5kb3dSZWN0LndpZHRoIC0gZGVsdGFYO1xuICAgICAgICAgICAgbmV3V2lkdGggPSBNYXRoLm1heChtaW5TaXplLndpZHRoLCBuZXdXaWR0aCk7XG4gICAgICAgICAgICBuZXdXaWR0aCA9IE1hdGgubWluKG5ld1dpZHRoLCBNYXRoLmFicyh3aW5kb3dSZWN0LmxlZnQgLSAocGFyZW50RWxlbWVudC5vZmZzZXRMZWZ0ICsgcGFyZW50RWxlbWVudC5vZmZzZXRXaWR0aCkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGRyYWcoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGRlbHRhWCA9IChtb3VzZURvd24ueCAtIGV2ZW50LmNsaWVudFgpO1xuICAgICAgICAgICAgY29uc3QgZGVsdGFZID0gKG1vdXNlRG93bi55IC0gZXZlbnQuY2xpZW50WSk7XG5cbiAgICAgICAgICAgIHN3aXRjaCAoZHJhZ1RhcmdldC5pZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ3RvcC1sZWZ0JzpcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRvcChkZWx0YVkpO1xuICAgICAgICAgICAgICAgICAgICBtb3ZlTGVmdChkZWx0YVgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICd0b3AtcmlnaHQnOlxuICAgICAgICAgICAgICAgICAgICBtb3ZlVG9wKGRlbHRhWSk7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVSaWdodChkZWx0YVgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20tbGVmdCc6XG4gICAgICAgICAgICAgICAgICAgIG1vdmVCb3R0b20oZGVsdGFZKTtcbiAgICAgICAgICAgICAgICAgICAgbW92ZUxlZnQoZGVsdGFYKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnYm90dG9tLXJpZ2h0JzpcbiAgICAgICAgICAgICAgICAgICAgbW92ZUJvdHRvbShkZWx0YVkpO1xuICAgICAgICAgICAgICAgICAgICBtb3ZlUmlnaHQoZGVsdGFYKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgICAgICAgICAgICAgbW92ZVRvcChkZWx0YVkpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgICAgICAgICBtb3ZlQm90dG9tKGRlbHRhWSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgICAgICAgICAgICAgICBtb3ZlTGVmdChkZWx0YVgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICAgICAgICAgIG1vdmVSaWdodChkZWx0YVgpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGNvbmZpZy5ldmVudHMuZW5hYmxlQXNwZWN0UmF0aW8pIHtcblxuICAgICAgICAgICAgICAgIGlmIChuZXdIZWlnaHQgIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIG5ld1dpZHRoID0gbmV3SGVpZ2h0ICogYXNwZWN0UmF0aW87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChuZXdXaWR0aCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICAgICAgbmV3SGVpZ2h0ID0gbmV3V2lkdGg7IC8vbmV3V2lkdGggLyBhc3BlY3RSYXRpbztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdXaWR0aCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5XaWR0aCA9IHBhcnNlRmxvYXQoY29uZmlnLmJhc2UubWluV2lkdGgpO1xuICAgICAgICAgICAgICAgIG5ld1dpZHRoID0gbmV3V2lkdGggPD0gbWluV2lkdGggPyBtaW5XaWR0aCA6IG5ld1dpZHRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5ld0hlaWdodCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5IZWlnaHQgPSBwYXJzZUZsb2F0KGNvbmZpZy5iYXNlLm1pbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgbmV3SGVpZ2h0ID0gbmV3SGVpZ2h0IDw9IG1pbkhlaWdodCA/IG1pbkhlaWdodCA6IG5ld0hlaWdodDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1RvcCAhPT0gLTEpICR3aW5kb3cuc3R5bGUudG9wID0gYCR7bmV3VG9wfXB4YDtcbiAgICAgICAgICAgIGlmIChuZXdIZWlnaHQgIT09IC0xKSAkd2luZG93LnN0eWxlLmhlaWdodCA9IGAke25ld0hlaWdodH1weGA7XG4gICAgICAgICAgICBpZiAobmV3TGVmdCAhPT0gLTEpICR3aW5kb3cuc3R5bGUubGVmdCA9IGAke25ld0xlZnR9cHhgO1xuICAgICAgICAgICAgaWYgKG5ld1dpZHRoICE9PSAtMSkgJHdpbmRvdy5zdHlsZS53aWR0aCA9IGAke25ld1dpZHRofXB4YDtcblxuICAgICAgICAgICAgaWYgKG5ld1RvcCAhPT0gLTEgfHwgbmV3SGVpZ2h0ICE9PSAtMSB8fCBuZXdMZWZ0ICE9PSAtMSB8fCBuZXdXaWR0aCAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLm9uQ2hhbmdlICYmIG9wdGlvbnMub25DaGFuZ2UoJHdpbmRvdy5zdHlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBkcmFnRW5kKCkge1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZHJhZywgdHJ1ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZHJhZ0VuZCwgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBkcmFnLCB0cnVlKTtcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGRyYWdFbmQsIHRydWUpO1xuICAgIH1cbn1cblxuLyoqXG4gKiDnqpflj6MgcmVzaXplIOaXtu+8jOmHjeaWsOefq+ato+WdkOagh++8jOS/neivgeWcqOeUu+adv+WGhVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0V2luZG93UG9zaXRpb24oJHdpbmRvdzogSFRNTEVsZW1lbnQsIGxpbWl0ZWRBcmVhRWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICBjb25zdCBsaW1pdGVkQXJlYVNlY3Rpb24gPSBsaW1pdGVkQXJlYUVsZW1lbnQuc2hhZG93Um9vdCEucXVlcnlTZWxlY3Rvcignc2VjdGlvbicpITtcbiAgICBjb25zdCBsaW1pdGVkQXJlYVNlY3Rpb25SZWN0ID0ge1xuICAgICAgICBsZWZ0OiBsaW1pdGVkQXJlYVNlY3Rpb24uY2xpZW50TGVmdCxcbiAgICAgICAgcmlnaHQ6IGxpbWl0ZWRBcmVhU2VjdGlvbi5jbGllbnRMZWZ0ICsgbGltaXRlZEFyZWFTZWN0aW9uLmNsaWVudFdpZHRoLFxuICAgICAgICB0b3A6IGxpbWl0ZWRBcmVhU2VjdGlvbi5jbGllbnRUb3AsXG4gICAgICAgIGJvdHRvbTogbGltaXRlZEFyZWFTZWN0aW9uLmNsaWVudFRvcCArIGxpbWl0ZWRBcmVhU2VjdGlvbi5jbGllbnRIZWlnaHQsXG4gICAgfTtcblxuICAgIGNvbnN0IGxlZnQgPSBwYXJzZUZsb2F0KCR3aW5kb3cuc3R5bGUubGVmdCkgfHwgdW5kZWZpbmVkO1xuICAgIGlmIChsZWZ0ICE9PSB1bmRlZmluZWQgJiYgKFxuICAgICAgICBsZWZ0IDwgbGltaXRlZEFyZWFTZWN0aW9uUmVjdC5sZWZ0IHx8XG4gICAgICAgIGxlZnQgPiAobGltaXRlZEFyZWFTZWN0aW9uUmVjdC5yaWdodCAtICR3aW5kb3cub2Zmc2V0V2lkdGgpKSkge1xuICAgICAgICBjb25zdCBuZXdMZWZ0ID0gTWF0aC5taW4oTWF0aC5tYXgobGVmdCwgbGltaXRlZEFyZWFTZWN0aW9uUmVjdC5sZWZ0KSwgbGltaXRlZEFyZWFTZWN0aW9uUmVjdC5yaWdodCAtICR3aW5kb3cub2Zmc2V0V2lkdGgpO1xuICAgICAgICAkd2luZG93LnN0eWxlLmxlZnQgPSBuZXdMZWZ0ICsgJ3B4JztcbiAgICB9XG5cbiAgICBjb25zdCB0b3AgPSBwYXJzZUZsb2F0KCR3aW5kb3cuc3R5bGUudG9wKSB8fCB1bmRlZmluZWQ7XG4gICAgaWYgKHRvcCAhPT0gdW5kZWZpbmVkICYmIChcbiAgICAgICAgdG9wIDwgbGltaXRlZEFyZWFTZWN0aW9uUmVjdC50b3AgfHxcbiAgICAgICAgdG9wID4gbGltaXRlZEFyZWFTZWN0aW9uUmVjdC5ib3R0b20gLSAkd2luZG93Lm9mZnNldEhlaWdodFxuICAgICkpIHtcbiAgICAgICAgLy8g5qCh5q2j5L2N572u77yM56Gu5L+d56qX5Y+j5Zyo54i26IqC54K55Yy65Z+f5YaFXG4gICAgICAgIGxldCBuZXdUb3AgPSBNYXRoLm1pbiggTWF0aC5tYXgodG9wLCBsaW1pdGVkQXJlYVNlY3Rpb25SZWN0LnRvcCksIGxpbWl0ZWRBcmVhU2VjdGlvblJlY3QuYm90dG9tIC0gJHdpbmRvdy5vZmZzZXRIZWlnaHQpO1xuICAgICAgICBjb25zdCBtaW5Ub3AgPSBsaW1pdGVkQXJlYUVsZW1lbnQuc2hhZG93Um9vdCEucXVlcnlTZWxlY3RvcignaGVhZGVyJykhLm9mZnNldEhlaWdodDtcbiAgICAgICAgbmV3VG9wID0gTWF0aC5tYXgobWluVG9wLCBuZXdUb3ApO1xuICAgICAgICAkd2luZG93LnN0eWxlLnRvcCA9IG5ld1RvcCArICdweCc7XG4gICAgfVxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/common.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/common.js new file mode 100644 index 0000000..ce416ef --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/common.js @@ -0,0 +1,109 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.commonTemplate = exports.commonLogic = exports.commonProps = exports.commonEmits = void 0; +const vue_js_1 = require("vue/dist/vue.js"); +const block_forge_1 = require("../../../../block-forge"); +exports.commonEmits = [ + 'hide', +]; +exports.commonProps = { + forge: { + type: block_forge_1.HTMLGraphForgeElement, + required: true, + default: null, + }, + config: { + type: Object, + required: true, + default: null, + }, +}; +const commonLogic = (props, ctx) => { + const floatWindowRef = (0, vue_js_1.ref)(); + const headerTitle = (0, vue_js_1.ref)(''); + const hide = () => { + floatWindowRef.value?.hide(); + }; + const isShow = () => { + return floatWindowRef.value?.isShow; + }; + const show = (position) => { + floatWindowRef.value?.show(position); + }; + const getRect = () => { + const floatWindow = floatWindowRef.value; + return { + x: parseInt(floatWindow.$el.style.left) || 0, + y: parseInt(floatWindow.$el.style.top) || 0, + width: parseInt(floatWindow.$el.style.width), + height: parseInt(floatWindow.$el.style.height), + }; + }; + const onClickHide = () => { + hide(); + }; + function syncBase() { + const base = props.config.base; + headerTitle.value = base.title; + } + (0, vue_js_1.watch)(() => props.config.base, () => { + syncBase(); + }); + (0, vue_js_1.onMounted)(() => { + (0, vue_js_1.nextTick)(() => { + syncBase(); + }); + }); + function onSizeChanged() { + } + function onShow() { + } + function onHide() { + ctx.emit('hide', props.config.key); + } + return { + floatWindowRef, + headerTitle, + isShow, + show, + hide, + onClickHide, + getRect, + onShow, + onHide, + onSizeChanged, + }; +}; +exports.commonLogic = commonLogic; +const commonTemplate = (config) => { + return ` + + + + + + + + `; +}; +exports.commonTemplate = commonTemplate; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3BhbmVscy9zaGFkZXItZ3JhcGgvY29tcG9uZW50cy9mbG9hdC13aW5kb3cvY29tbW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDRDQUFrRTtBQUdsRSx5REFBZ0U7QUFJbkQsUUFBQSxXQUFXLEdBQUc7SUFDdkIsTUFBTTtDQUNULENBQUM7QUFFVyxRQUFBLFdBQVcsR0FBRztJQUN2QixLQUFLLEVBQUU7UUFDSCxJQUFJLEVBQUUsbUNBQXFCO1FBQzNCLFFBQVEsRUFBRSxJQUFJO1FBQ2QsT0FBTyxFQUFFLElBQUk7S0FDaEI7SUFDRCxNQUFNLEVBQUU7UUFDSixJQUFJLEVBQUUsTUFBaUM7UUFDdkMsUUFBUSxFQUFFLElBQUk7UUFDZCxPQUFPLEVBQUUsSUFBSTtLQUNoQjtDQUNKLENBQUM7QUFFSyxNQUFNLFdBQVcsR0FBRyxDQUFDLEtBQWtFLEVBQUUsR0FBcUMsRUFBRSxFQUFFO0lBQ3JJLE1BQU0sY0FBYyxHQUFHLElBQUEsWUFBRyxHQUEwQixDQUFDO0lBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUEsWUFBRyxFQUFDLEVBQUUsQ0FBQyxDQUFDO0lBRTVCLE1BQU0sSUFBSSxHQUFHLEdBQUcsRUFBRTtRQUNkLGNBQWMsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLE9BQU8sY0FBYyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDeEMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsQ0FBQyxRQUE0RSxFQUFFLEVBQUU7UUFDMUYsY0FBYyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ2pCLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxLQUFNLENBQUM7UUFDMUMsT0FBTztZQUNILENBQUMsRUFBRSxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QyxDQUFDLEVBQUUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDM0MsS0FBSyxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUM7WUFDNUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7U0FDakQsQ0FBQztJQUNOLENBQUMsQ0FBQztJQUVGLE1BQU0sV0FBVyxHQUFHLEdBQUcsRUFBRTtRQUNyQixJQUFJLEVBQUUsQ0FBQztJQUNYLENBQUMsQ0FBQztJQUVGLFNBQVMsUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQy9CLFdBQVcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBQSxjQUFLLEVBQUMsR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFO1FBQ2hDLFFBQVEsRUFBRSxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLGtCQUFTLEVBQUMsR0FBRyxFQUFFO1FBQ1gsSUFBQSxpQkFBUSxFQUFDLEdBQUcsRUFBRTtZQUNWLFFBQVEsRUFBRSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDLENBQUMsQ0FBQztJQUVILFNBQVMsYUFBYTtJQUV0QixDQUFDO0lBRUQsU0FBUyxNQUFNO0lBRWYsQ0FBQztJQUVELFNBQVMsTUFBTTtRQUNYLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE9BQU87UUFDSCxjQUFjO1FBQ2QsV0FBVztRQUVYLE1BQU07UUFFTixJQUFJO1FBQ0osSUFBSTtRQUNKLFdBQVc7UUFDWCxPQUFPO1FBRVAsTUFBTTtRQUNOLE1BQU07UUFDTixhQUFhO0tBQ2hCLENBQUM7QUFDTixDQUFDLENBQUM7QUF4RVcsUUFBQSxXQUFXLGVBd0V0QjtBQUVLLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBNEUsRUFBRSxFQUFFO0lBQzNHLE9BQU87Ozs7O21CQUtRLE1BQU0sQ0FBQyxHQUFHOzs7OzswQkFLSCxNQUFNLENBQUMsTUFBTSxLQUFLLFNBQVM7WUFDekMsTUFBTSxDQUFDLE1BQU07Ozs7Ozs7Ozs7WUFVYixNQUFNLENBQUMsT0FBTzs7O1lBR2QsTUFBTSxDQUFDLE1BQU07OztLQUdwQixDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBN0JXLFFBQUEsY0FBYyxrQkE2QnpCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbmV4dFRpY2ssIG9uTW91bnRlZCwgcmVmLCB3YXRjaCB9IGZyb20gJ3Z1ZS9kaXN0L3Z1ZS5qcyc7XG5pbXBvcnQgeyBTZXR1cENvbnRleHQgfSBmcm9tICd2dWUvdHlwZXMvdjMtc2V0dXAtY29udGV4dCc7XG5cbmltcG9ydCB7IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB9IGZyb20gJy4uLy4uLy4uLy4uL2Jsb2NrLWZvcmdlJztcbmltcG9ydCBCYXNlRmxvYXRXaW5kb3cgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IEZsb2F0V2luZG93Q29uZmlnIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5cbmV4cG9ydCBjb25zdCBjb21tb25FbWl0cyA9IFtcbiAgICAnaGlkZScsXG5dO1xuXG5leHBvcnQgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgZm9yZ2U6IHtcbiAgICAgICAgdHlwZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50LFxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICB9LFxuICAgIGNvbmZpZzoge1xuICAgICAgICB0eXBlOiBPYmplY3QgYXMgKCkgPT4gRmxvYXRXaW5kb3dDb25maWcsXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgIH0sXG59O1xuXG5leHBvcnQgY29uc3QgY29tbW9uTG9naWMgPSAocHJvcHM6IHsgZm9yZ2U6IEhUTUxHcmFwaEZvcmdlRWxlbWVudCwgY29uZmlnOiBGbG9hdFdpbmRvd0NvbmZpZyB9LCBjdHg6IFNldHVwQ29udGV4dCB8IFNldHVwQ29udGV4dDxhbnk+KSA9PiB7XG4gICAgY29uc3QgZmxvYXRXaW5kb3dSZWYgPSByZWY8dHlwZW9mIEJhc2VGbG9hdFdpbmRvdz4oKTtcbiAgICBjb25zdCBoZWFkZXJUaXRsZSA9IHJlZignJyk7XG5cbiAgICBjb25zdCBoaWRlID0gKCkgPT4ge1xuICAgICAgICBmbG9hdFdpbmRvd1JlZi52YWx1ZT8uaGlkZSgpO1xuICAgIH07XG5cbiAgICBjb25zdCBpc1Nob3cgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiBmbG9hdFdpbmRvd1JlZi52YWx1ZT8uaXNTaG93O1xuICAgIH07XG5cbiAgICBjb25zdCBzaG93ID0gKHBvc2l0aW9uPzogeyB0b3A/OiBzdHJpbmc7IHJpZ2h0Pzogc3RyaW5nOyBsZWZ0Pzogc3RyaW5nOyBib3R0b20/OiBzdHJpbmc7IH0pID0+IHtcbiAgICAgICAgZmxvYXRXaW5kb3dSZWYudmFsdWU/LnNob3cocG9zaXRpb24pO1xuICAgIH07XG5cbiAgICBjb25zdCBnZXRSZWN0ID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBmbG9hdFdpbmRvdyA9IGZsb2F0V2luZG93UmVmLnZhbHVlITtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHg6IHBhcnNlSW50KGZsb2F0V2luZG93LiRlbC5zdHlsZS5sZWZ0KSB8fCAwLFxuICAgICAgICAgICAgeTogcGFyc2VJbnQoZmxvYXRXaW5kb3cuJGVsLnN0eWxlLnRvcCkgfHwgMCxcbiAgICAgICAgICAgIHdpZHRoOiBwYXJzZUludChmbG9hdFdpbmRvdy4kZWwuc3R5bGUud2lkdGgpLFxuICAgICAgICAgICAgaGVpZ2h0OiBwYXJzZUludChmbG9hdFdpbmRvdy4kZWwuc3R5bGUuaGVpZ2h0KSxcbiAgICAgICAgfTtcbiAgICB9O1xuXG4gICAgY29uc3Qgb25DbGlja0hpZGUgPSAoKSA9PiB7XG4gICAgICAgIGhpZGUoKTtcbiAgICB9O1xuXG4gICAgZnVuY3Rpb24gc3luY0Jhc2UoKSB7XG4gICAgICAgIGNvbnN0IGJhc2UgPSBwcm9wcy5jb25maWcuYmFzZTtcbiAgICAgICAgaGVhZGVyVGl0bGUudmFsdWUgPSBiYXNlLnRpdGxlO1xuICAgIH1cblxuICAgIHdhdGNoKCgpID0+IHByb3BzLmNvbmZpZy5iYXNlLCAoKSA9PiB7XG4gICAgICAgIHN5bmNCYXNlKCk7XG4gICAgfSk7XG5cbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICBzeW5jQmFzZSgpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIG9uU2l6ZUNoYW5nZWQoKSB7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvblNob3coKSB7XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBvbkhpZGUoKSB7XG4gICAgICAgIGN0eC5lbWl0KCdoaWRlJywgcHJvcHMuY29uZmlnLmtleSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZmxvYXRXaW5kb3dSZWYsXG4gICAgICAgIGhlYWRlclRpdGxlLFxuXG4gICAgICAgIGlzU2hvdyxcblxuICAgICAgICBzaG93LFxuICAgICAgICBoaWRlLFxuICAgICAgICBvbkNsaWNrSGlkZSxcbiAgICAgICAgZ2V0UmVjdCxcblxuICAgICAgICBvblNob3csXG4gICAgICAgIG9uSGlkZSxcbiAgICAgICAgb25TaXplQ2hhbmdlZCxcbiAgICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbW1vblRlbXBsYXRlID0gKGNvbmZpZzogeyBjc3M/OiBzdHJpbmcsIGhlYWRlcj86IHN0cmluZywgc2VjdGlvbj86IHN0cmluZywgZm9vdGVyPzogc3RyaW5nIH0pID0+IHtcbiAgICByZXR1cm4gYFxuICAgICAgPEJhc2VGbG9hdFdpbmRvd1xuICAgICAgICAgIHJlZj1cImZsb2F0V2luZG93UmVmXCJcbiAgICAgICAgICA6Zm9yZ2U9XCJmb3JnZVwiXG4gICAgICAgICAgOmNvbmZpZz1cImNvbmZpZ1wiXG4gICAgICAgICAgY2xhc3M9XCIke2NvbmZpZy5jc3N9XCJcbiAgICAgICAgICBAc2hvdz1cIm9uU2hvd1wiXG4gICAgICAgICAgQGhpZGU9XCJvbkhpZGVcIlxuICAgICAgICAgIEBzaXplLWNoYW5nZWQ9XCJvblNpemVDaGFuZ2VkXCJcbiAgICAgID5cbiAgICAgICAgPHRlbXBsYXRlIHYtaWY9XCIke2NvbmZpZy5oZWFkZXIgIT09IHVuZGVmaW5lZH1cIiAjaGVhZGVyPlxuICAgICAgICAgICR7Y29uZmlnLmhlYWRlcn1cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgPHRlbXBsYXRlIHYtZWxzZSAjaGVhZGVyPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgICAgICAgPHVpLWxhYmVsIDp2YWx1ZT1oZWFkZXJUaXRsZT48L3VpLWxhYmVsPlxuICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJoaWRlLWJ1dHRvblwiIHZhbHVlPVwiY29sbGFwc2UtcmlnaHRcIiBAY2xpY2s9XCJvbkNsaWNrSGlkZVwiPjwvdWktaWNvbj5cbiAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgXG4gICAgICAgIDx0ZW1wbGF0ZSAjc2VjdGlvbj5cbiAgICAgICAgICAke2NvbmZpZy5zZWN0aW9ufVxuICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICA8dGVtcGxhdGUgI2Zvb3Rlcj5cbiAgICAgICAgICAke2NvbmZpZy5mb290ZXJ9XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICA8L0Jhc2VGbG9hdFdpbmRvdz5cbiAgICBgO1xufTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/create-node/index.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/create-node/index.js new file mode 100644 index 0000000..64316e4 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/create-node/index.js @@ -0,0 +1,327 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.component = exports.getConfig = exports.DefaultConfig = void 0; +const tslib_1 = require("tslib"); +const lodash_1 = require("lodash"); +const vue_js_1 = require("vue/dist/vue.js"); +const internal_1 = require("../internal"); +const block_forge_1 = require("../../../../../block-forge"); +const base_1 = tslib_1.__importDefault(require("../base")); +const common_1 = require("../common"); +const shader_graph_1 = require("../../../../../shader-graph"); +const utils_1 = require("../utils"); +const shader_graph_2 = require("../../../../../shader-graph"); +exports.DefaultConfig = { + key: 'create-node', + tab: { + name: 'i18n:shader-graph.create_node.menu_name', + show: false, + }, + dontSave: true, + base: { + title: 'i18n:shader-graph.create_node.title', + width: '380px', + height: '250px', + minWidth: '200px', + minHeight: '200px', + defaultShow: false, + }, + position: { + top: '200px', + left: '200px', + }, + events: { + limitless: true, + resizer: true, + drag: true, + target: internal_1.FloatWindowDragTarget.header, + }, +}; +function getConfig() { + const newConfig = JSON.parse(JSON.stringify(exports.DefaultConfig)); + const config = shader_graph_1.GraphConfigMgr.Instance.getFloatingWindowConfigByName(exports.DefaultConfig.key); + if (config) { + newConfig.details = (0, lodash_1.merge)({}, newConfig.details, config); + } + return newConfig; +} +exports.getConfig = getConfig; +exports.component = (0, vue_js_1.defineComponent)({ + components: { + BaseFloatWindow: base_1.default, + }, + props: { + forge: { + type: block_forge_1.HTMLGraphForgeElement, + required: true, + default: null, + }, + config: { + type: Object, + required: true, + default: null, + }, + }, + emits: [...common_1.commonEmits], + setup(props, ctx) { + const commonObject = (0, common_1.commonLogic)(props, ctx); + const searchValue = (0, vue_js_1.ref)(''); + const searchInputRef = (0, vue_js_1.ref)(); + const menuRef = (0, vue_js_1.ref)(); + const foldValue = (0, vue_js_1.ref)(true); + const onCreateMenuChange = () => { + updateMenuTreeTemplate(); + }; + const onShowCreateNodeWindow = () => { + const floatWindowRef = commonObject.floatWindowRef.value; + const floatWindowConfig = floatWindowRef?.$options.propsData.config; + if (floatWindowRef && floatWindowConfig) { + if (commonObject.isShow()) { + return; + } + const $shaderGraph = floatWindowRef.$parent.$parent.$el; + const shaderGraphRect = (0, utils_1.getBoundingClientRect)($shaderGraph); + const inPanel = (0, shader_graph_2.contains)(shader_graph_1.GraphEditorMgr.Instance.mousePoint, { + x: shaderGraphRect.left, + y: shaderGraphRect.top, + width: shaderGraphRect.width, + height: shaderGraphRect.height, + }); + // 如果鼠标不在面板中就不弹窗 + if (!inPanel) + return; + const floatWindowRect = commonObject.getRect(); + const width = floatWindowRect.width || floatWindowConfig.base.width; + const height = floatWindowRect.height || floatWindowConfig.base.height; + const offsetX = 300, offsetY = 0; + let x = shader_graph_1.GraphEditorMgr.Instance.mousePointInPanel.x - offsetX; + const titleBarHeight = (0, utils_1.getTitleBarHeight)(); // 系统 titleBar 的高度 + let y = shader_graph_1.GraphEditorMgr.Instance.mousePointInPanel.y - titleBarHeight - offsetY; + if (x < 0) { + x = 0; + } + else if (x + floatWindowRect.width > shaderGraphRect.width - 28) { + x = shaderGraphRect.width - floatWindowRect.width - 28; + } + if (y < 0) { + y = 0; + } + else if (y + floatWindowRect.height > shaderGraphRect.bottom - 40) { + y = shaderGraphRect.bottom - floatWindowRect.height - 40; + } + foldValue.value = true; + updateMenuTreeTemplate(); + commonObject.show({ + left: x + 'px', + top: y + 'px', + }); + window.addEventListener('keyup', onKeyup); + (0, vue_js_1.nextTick)(() => { + searchValue.value = ''; + menuRef.value.clear(); + menuRef.value.select(menuRef.value.list[2]); + menuRef.value.positioning(menuRef.value.list[2]); + searchInputRef.value.focus(); + }); + } + }; + (0, vue_js_1.onMounted)(() => { + shader_graph_1.MessageMgr.Instance.register(shader_graph_2.MessageType.CreateMenuChange, onCreateMenuChange); + shader_graph_1.MessageMgr.Instance.register(shader_graph_2.MessageType.ShowCreateNodeWindow, onShowCreateNodeWindow); + }); + (0, vue_js_1.onUnmounted)(() => { + shader_graph_1.MessageMgr.Instance.unregister(shader_graph_2.MessageType.CreateMenuChange, onCreateMenuChange); + shader_graph_1.MessageMgr.Instance.unregister(shader_graph_2.MessageType.ShowCreateNodeWindow, onShowCreateNodeWindow); + }); + function createNode(addOptions) { + if (!addOptions) + return; + const floatWindowRef = commonObject.floatWindowRef.value; + const $shaderGraph = floatWindowRef.$parent.$parent.$el; + shader_graph_1.GraphEditorMgr.Instance.add(addOptions); + onClose(); + } + let initialized = false; + function updateMenuTreeTemplate() { + if (!initialized) { + initialized = true; + menuRef.value.setTemplate('text', ``); + menuRef.value.setTemplateInit('text', ($text) => { + $text.$name = $text.querySelector('.name'); + }); + menuRef.value.setRender('text', ($text, data) => { + $text.$name.innerHTML = data.detail.value; + }); + menuRef.value.setTemplateInit('item', ($div) => { + $div.addEventListener('click', (event) => { + menuRef.value.clear(); + menuRef.value.select($div.data); + menuRef.value.render(); + createNode($div.data.detail.addOptions); + }); + }); + menuRef.value.css = ` + .item { + text-align: center; + line-height: 24px; + } + .content .fixed .list > ui-drag-item[selected] { + background-color: #094A5D; + } + `; + } + menuRef.value.tree = (0, utils_1.convertMenuData)(shader_graph_1.Menu.Instance.getShaderNodeMenu(), false); + menuRef.value.render(); + } + function getSelectedCreateNodeItem(item, list, arrow = 'down') { + let index = item.index; + if (arrow === 'down') { + index++; + if (index > list.length - 1) + index = 0; + item = list[index]; + // while (item && item.children.length > 0) { + // index++; + // if (index > list.length - 1) index = 0; + // + // item = list[index]; + // } + } + else if (arrow === 'up') { + index--; + if (index < 0) + index = list.length - 1; + item = list[index]; + // while (item && item.children.length > 0) { + // index--; + // if (index < 0) index = list.length - 1; + // + // item = list[index]; + // } + } + return item; + } + function onKeyup(event) { + const which = event.which; + // 'Escape' 退出 + if (which === 27) { + onClose(); + return; + } + const $dom = menuRef.value; + const item = $dom.selectItems[$dom.selectItems.length - 1]; + if (!item) + return; + let selectItem = undefined; + switch (which) { + case 13: // Enter + if (!item.detail.addOptions) + return; + createNode(item.detail.addOptions); + return; + case 40: // ArrowDown + selectItem = getSelectedCreateNodeItem(item, $dom.list, 'down'); + break; + case 38: // ArrowUp + selectItem = getSelectedCreateNodeItem(item, $dom.list, 'up'); + break; + case 37: // ArrowLeft + if (!item.fold && item.parent) { + $dom.collapse(item.parent); + } + if (item.parent.parent) { + $dom.clear(); + $dom.select(item.parent); + } + break; + case 39: // ArrowRight + if (item.fold && item.children.length > 0) { + $dom.expand(item); + } + if (item.children[0]) { + $dom.clear(); + $dom.select(item.children[0]); + } + break; + } + if (selectItem !== undefined) { + $dom.clear(); + $dom.select(selectItem); + $dom.positioning(selectItem); + } + $dom.render(); + } + function onSearchInputChange(value) { + if (searchValue.value === value) + return; + searchValue.value = value; + setTimeout(() => { + let selectItem; + let treeData = (0, utils_1.convertMenuData)(shader_graph_1.Menu.Instance.getShaderNodeMenu(), false); + if (value) { + const result = (0, utils_1.filterMenuByKeyword)(treeData, value); + treeData = result.filterTree; + selectItem = result.firstSelect; + } + const $dom = menuRef.value; + $dom.tree = treeData; + if (treeData.length > 0) { + $dom.clear(); + $dom.select(selectItem); + menuRef.value.positioning(selectItem); + $dom.render(); + } + }, 50); + } + function onClose() { + window.removeEventListener('keyup', onKeyup); + searchValue.value = ''; + commonObject.hide(); + } + (0, vue_js_1.onUnmounted)(() => { + onClose(); + }); + commonObject.onSizeChanged = () => { + setTimeout(() => { + if (menuRef.value) { + menuRef.value.render(); + } + }, 100); + }; + return { + ...commonObject, + searchValue, + searchInputRef, + menuRef, + onClose, + onSearchInputChange, + }; + }, + template: (0, common_1.commonTemplate)({ + css: 'create-node', + header: ` + + + + + `, + section: ` +
+ + +
+ + + `, + footer: ` + `, + }), +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9jcmVhdGUtbm9kZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQStCO0FBRS9CLDRDQUF5RjtBQUV6RiwwQ0FBdUU7QUFDdkUsNERBQW1FO0FBQ25FLDJEQUFzQztBQUN0QyxzQ0FBcUU7QUFFckUsOERBQXNIO0FBQ3RILG9DQUEwRztBQUUxRyw4REFBb0U7QUFFdkQsUUFBQSxhQUFhLEdBQXNCO0lBQzVDLEdBQUcsRUFBRSxhQUFhO0lBQ2xCLEdBQUcsRUFBRTtRQUNELElBQUksRUFBRSx5Q0FBeUM7UUFDL0MsSUFBSSxFQUFFLEtBQUs7S0FDZDtJQUNELFFBQVEsRUFBRSxJQUFJO0lBQ2QsSUFBSSxFQUFFO1FBQ0YsS0FBSyxFQUFFLHFDQUFxQztRQUM1QyxLQUFLLEVBQUUsT0FBTztRQUNkLE1BQU0sRUFBRSxPQUFPO1FBQ2YsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLE9BQU87UUFDbEIsV0FBVyxFQUFFLEtBQUs7S0FDckI7SUFDRCxRQUFRLEVBQUU7UUFDTixHQUFHLEVBQUUsT0FBTztRQUNaLElBQUksRUFBRSxPQUFPO0tBQ2hCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osU0FBUyxFQUFFLElBQUk7UUFDZixPQUFPLEVBQUUsSUFBSTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsTUFBTSxFQUFFLGdDQUFxQixDQUFDLE1BQU07S0FDdkM7Q0FDSixDQUFDO0FBRUYsU0FBZ0IsU0FBUztJQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQWEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsTUFBTSxNQUFNLEdBQUcsNkJBQWMsQ0FBQyxRQUFRLENBQUMsNkJBQTZCLENBQUMs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UUFDRCxPQUFPLEVBQUU7Ozs7Ozs7Ozs7O1NBV1I7UUFDRCxNQUFNLEVBQUU7U0FDUDtLQUNKLENBQUM7Q0FDTCxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBtZXJnZSB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVmLCBuZXh0VGljaywgb25Nb3VudGVkLCBvblVubW91bnRlZCB9IGZyb20gJ3Z1ZS9kaXN0L3Z1ZS5qcyc7XG5cbmltcG9ydCB7IEZsb2F0V2luZG93Q29uZmlnLCBGbG9hdFdpbmRvd0RyYWdUYXJnZXQgfSBmcm9tICcuLi9pbnRlcm5hbCc7XG5pbXBvcnQgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9ibG9jay1mb3JnZSc7XG5pbXBvcnQgQmFzZUZsb2F0V2luZG93IGZyb20gJy4uL2Jhc2UnO1xuaW1wb3J0IHsgY29tbW9uRW1pdHMsIGNvbW1vbkxvZ2ljLCBjb21tb25UZW1wbGF0ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmltcG9ydCB7IEdyYXBoQ29uZmlnTWdyLCBHcmFwaEVkaXRvck1nciwgTWVudSwgR3JhcGhFZGl0b3JBZGRPcHRpb25zLCBNZXNzYWdlTWdyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhZGVyLWdyYXBoJztcbmltcG9ydCB7IGNvbnZlcnRNZW51RGF0YSwgZmlsdGVyTWVudUJ5S2V5d29yZCwgZ2V0Qm91bmRpbmdDbGllbnRSZWN0LCBnZXRUaXRsZUJhckhlaWdodCB9IGZyb20gJy4uL3V0aWxzJztcblxuaW1wb3J0IHsgY29udGFpbnMsIE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2hhZGVyLWdyYXBoJztcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRDb25maWc6IEZsb2F0V2luZG93Q29uZmlnID0ge1xuICAgIGtleTogJ2NyZWF0ZS1ub2RlJyxcbiAgICB0YWI6IHtcbiAgICAgICAgbmFtZTogJ2kxOG46c2hhZGVyLWdyYXBoLmNyZWF0ZV9ub2RlLm1lbnVfbmFtZScsXG4gICAgICAgIHNob3c6IGZhbHNlLFxuICAgIH0sXG4gICAgZG9udFNhdmU6IHRydWUsXG4gICAgYmFzZToge1xuICAgICAgICB0aXRsZTogJ2kxOG46c2hhZGVyLWdyYXBoLmNyZWF0ZV9ub2RlLnRpdGxlJyxcbiAgICAgICAgd2lkdGg6ICczODBweCcsXG4gICAgICAgIGhlaWdodDogJzI1MHB4JyxcbiAgICAgICAgbWluV2lkdGg6ICcyMDBweCcsXG4gICAgICAgIG1pbkhlaWdodDogJzIwMHB4JyxcbiAgICAgICAgZGVmYXVsdFNob3c6IGZhbHNlLFxuICAgIH0sXG4gICAgcG9zaXRpb246IHtcbiAgICAgICAgdG9wOiAnMjAwcHgnLFxuICAgICAgICBsZWZ0OiAnMjAwcHgnLFxuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIGxpbWl0bGVzczogdHJ1ZSxcbiAgICAgICAgcmVzaXplcjogdHJ1ZSxcbiAgICAgICAgZHJhZzogdHJ1ZSxcbiAgICAgICAgdGFyZ2V0OiBGbG9hdFdpbmRvd0RyYWdUYXJnZXQuaGVhZGVyLFxuICAgIH0sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnKCkge1xuICAgIGNvbnN0IG5ld0NvbmZpZyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoRGVmYXVsdENvbmZpZykpO1xuICAgIGNvbnN0IGNvbmZpZyA9IEdyYXBoQ29uZmlnTWdyLkluc3RhbmNlLmdldEZsb2F0aW5nV2luZG93Q29uZmlnQnlOYW1lKERlZmF1bHRDb25maWcua2V5KTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICAgIG5ld0NvbmZpZy5kZXRhaWxzID0gbWVyZ2Uoe30sIG5ld0NvbmZpZy5kZXRhaWxzLCBjb25maWcpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Q29uZmlnO1xufVxuXG5leHBvcnQgY29uc3QgY29tcG9uZW50ID0gZGVmaW5lQ29tcG9uZW50KHtcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJhc2VGbG9hdFdpbmRvdyxcbiAgICB9LFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgZm9yZ2U6IHtcbiAgICAgICAgICAgIHR5cGU6IEhUTUxHcmFwaEZvcmdlRWxlbWVudCxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlnOiB7XG4gICAgICAgICAgICB0eXBlOiBPYmplY3QgYXMgKCkgPT4gRmxvYXRXaW5kb3dDb25maWcsXG4gICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgICAgIH0sXG4gICAgfSxcblxuICAgIGVtaXRzOiBbLi4uY29tbW9uRW1pdHNdLFxuXG4gICAgc2V0dXAocHJvcHMsIGN0eCkge1xuICAgICAgICBjb25zdCBjb21tb25PYmplY3QgPSBjb21tb25Mb2dpYyhwcm9wcywgY3R4KTtcbiAgICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSByZWYoJycpO1xuICAgICAgICBjb25zdCBzZWFyY2hJbnB1dFJlZiA9IHJlZigpO1xuICAgICAgICBjb25zdCBtZW51UmVmID0gcmVmKCk7XG4gICAgICAgIGNvbnN0IGZvbGRWYWx1ZSA9IHJlZih0cnVlKTtcblxuICAgICAgICBjb25zdCBvbkNyZWF0ZU1lbnVDaGFuZ2UgPSAoKSA9PiB7XG4gICAgICAgICAgICB1cGRhdGVNZW51VHJlZVRlbXBsYXRlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3Qgb25TaG93Q3JlYXRlTm9kZVdpbmRvdyA9ICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZsb2F0V2luZG93UmVmID0gY29tbW9uT2JqZWN0LmZsb2F0V2luZG93UmVmLnZhbHVlO1xuICAgICAgICAgICAgY29uc3QgZmxvYXRXaW5kb3dDb25maWcgPSBmbG9hdFdpbmRvd1JlZj8uJG9wdGlvbnMucHJvcHNEYXRhLmNvbmZpZztcbiAgICAgICAgICAgIGlmIChmbG9hdFdpbmRvd1JlZiAmJiBmbG9hdFdpbmRvd0NvbmZpZykge1xuICAgICAgICAgICAgICAgIGlmIChjb21tb25PYmplY3QuaXNTaG93KCkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCAkc2hhZGVyR3JhcGggPSBmbG9hdFdpbmRvd1JlZi4kcGFyZW50LiRwYXJlbnQuJGVsO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNoYWRlckdyYXBoUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdCgkc2hhZGVyR3JhcGgpO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaW5QYW5lbCA9IGNvbnRhaW5zKEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLm1vdXNlUG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgeDogc2hhZGVyR3JhcGhSZWN0LmxlZnQsXG4gICAgICAgICAgICAgICAgICAgIHk6IHNoYWRlckdyYXBoUmVjdC50b3AsXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoOiBzaGFkZXJHcmFwaFJlY3Qud2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogc2hhZGVyR3JhcGhSZWN0LmhlaWdodCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzpvKDmoIfkuI3lnKjpnaLmnb/kuK3lsLHkuI3lvLnnqpdcbiAgICAgICAgICAgICAgICBpZiAoIWluUGFuZWwpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGZsb2F0V2luZG93UmVjdCA9IGNvbW1vbk9iamVjdC5nZXRSZWN0KCk7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBmbG9hdFdpbmRvd1JlY3Qud2lkdGggfHwgZmxvYXRXaW5kb3dDb25maWcuYmFzZS53aWR0aDtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBmbG9hdFdpbmRvd1JlY3QuaGVpZ2h0IHx8IGZsb2F0V2luZG93Q29uZmlnLmJhc2UuaGVpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IG9mZnNldFggPSAzMDAsXG4gICAgICAgICAgICAgICAgICAgIG9mZnNldFkgPSAwO1xuICAgICAgICAgICAgICAgIGxldCB4ID0gR3JhcGhFZGl0b3JNZ3IuSW5zdGFuY2UubW91c2VQb2ludEluUGFuZWwueCAtIG9mZnNldFg7XG4gICAgICAgICAgICAgICAgY29uc3QgdGl0bGVCYXJIZWlnaHQgPSBnZXRUaXRsZUJhckhlaWdodCgpOyAvLyDns7vnu58gdGl0bGVCYXIg55qE6auY5bqmXG4gICAgICAgICAgICAgICAgbGV0IHkgPSBHcmFwaEVkaXRvck1nci5JbnN0YW5jZS5tb3VzZVBvaW50SW5QYW5lbC55IC0gdGl0bGVCYXJIZWlnaHQgLSBvZmZzZXRZO1xuXG4gICAgICAgICAgICAgICAgaWYgKHggPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHggPSAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeCArIGZsb2F0V2luZG93UmVjdC53aWR0aCA+IHNoYWRlckdyYXBoUmVjdC53aWR0aCAtIDI4KSB7XG4gICAgICAgICAgICAgICAgICAgIHggPSBzaGFkZXJHcmFwaFJlY3Qud2lkdGggLSBmbG9hdFdpbmRvd1JlY3Qud2lkdGggLSAyODtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHkgPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHkgPSAwO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeSArIGZsb2F0V2luZG93UmVjdC5oZWlnaHQgPiBzaGFkZXJHcmFwaFJlY3QuYm90dG9tIC0gNDApIHtcbiAgICAgICAgICAgICAgICAgICAgeSA9IHNoYWRlckdyYXBoUmVjdC5ib3R0b20gLSBmbG9hdFdpbmRvd1JlY3QuaGVpZ2h0IC0gNDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9sZFZhbHVlLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB1cGRhdGVNZW51VHJlZVRlbXBsYXRlKCk7XG4gICAgICAgICAgICAgICAgY29tbW9uT2JqZWN0LnNob3coe1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB4ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiB5ICsgJ3B4JyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleXVwKTtcblxuICAgICAgICAgICAgICAgIG5leHRUaWNrKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgc2VhcmNoVmFsdWUudmFsdWUgPSAnJztcbiAgICAgICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICBtZW51UmVmLnZhbHVlLnNlbGVjdChtZW51UmVmLnZhbHVlLmxpc3RbMl0pO1xuICAgICAgICAgICAgICAgICAgICBtZW51UmVmLnZhbHVlLnBvc2l0aW9uaW5nKG1lbnVSZWYudmFsdWUubGlzdFsyXSk7XG4gICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0UmVmLnZhbHVlLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgb25Nb3VudGVkKCgpID0+IHtcbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UucmVnaXN0ZXIoTWVzc2FnZVR5cGUuQ3JlYXRlTWVudUNoYW5nZSwgb25DcmVhdGVNZW51Q2hhbmdlKTtcbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UucmVnaXN0ZXIoTWVzc2FnZVR5cGUuU2hvd0NyZWF0ZU5vZGVXaW5kb3csIG9uU2hvd0NyZWF0ZU5vZGVXaW5kb3cpO1xuICAgICAgICB9KTtcblxuICAgICAgICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnVucmVnaXN0ZXIoTWVzc2FnZVR5cGUuQ3JlYXRlTWVudUNoYW5nZSwgb25DcmVhdGVNZW51Q2hhbmdlKTtcbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UudW5yZWdpc3RlcihNZXNzYWdlVHlwZS5TaG93Q3JlYXRlTm9kZVdpbmRvdywgb25TaG93Q3JlYXRlTm9kZVdpbmRvdyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIGNyZWF0ZU5vZGUoYWRkT3B0aW9uczogR3JhcGhFZGl0b3JBZGRPcHRpb25zKSB7XG4gICAgICAgICAgICBpZiAoIWFkZE9wdGlvbnMpIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IGZsb2F0V2luZG93UmVmID0gY29tbW9uT2JqZWN0LmZsb2F0V2luZG93UmVmLnZhbHVlITtcbiAgICAgICAgICAgIGNvbnN0ICRzaGFkZXJHcmFwaCA9IGZsb2F0V2luZG93UmVmLiRwYXJlbnQuJHBhcmVudC4kZWw7XG4gICAgICAgICAgICBHcmFwaEVkaXRvck1nci5JbnN0YW5jZS5hZGQoYWRkT3B0aW9ucyk7XG4gICAgICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlTWVudVRyZWVUZW1wbGF0ZSgpIHtcbiAgICAgICAgICAgIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5zZXRUZW1wbGF0ZSgndGV4dCcsIGA8c3BhbiBjbGFzcz1cIm5hbWVcIj48L3NwYW4+YCk7XG4gICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5zZXRUZW1wbGF0ZUluaXQoJ3RleHQnLCAoJHRleHQ6IEhUTUxFbGVtZW50ICYgeyAkbmFtZTogSFRNTEVsZW1lbnQgfCBudWxsOyAkbGluazogSFRNTEVsZW1lbnQgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAkdGV4dC4kbmFtZSA9ICR0ZXh0LnF1ZXJ5U2VsZWN0b3IoJy5uYW1lJyk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5zZXRSZW5kZXIoXG4gICAgICAgICAgICAgICAgICAgICd0ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQ6IEhUTUxFbGVtZW50ICYgeyAkbmFtZTogSFRNTEVsZW1lbnQ7ICRsaW5rOiBIVE1MRWxlbWVudCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogeyBkZXRhaWw6IHsgdmFsdWU6IHN0cmluZyB9OyBmb2xkOiBib29sZWFuIH0sXG4gICAgICAgICAgICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgJHRleHQuJG5hbWUuaW5uZXJIVE1MID0gZGF0YS5kZXRhaWwudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIG1lbnVSZWYudmFsdWUuc2V0VGVtcGxhdGVJbml0KCdpdGVtJywgKCRkaXY6IEhUTUxFbGVtZW50ICYgeyBkYXRhOiB7IGRldGFpbDogeyBhZGRPcHRpb25zOiBHcmFwaEVkaXRvckFkZE9wdGlvbnMgfSB9IH0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgJGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5zZWxlY3QoJGRpdi5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lbnVSZWYudmFsdWUucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVOb2RlKCRkaXYuZGF0YS5kZXRhaWwuYWRkT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgbWVudVJlZi52YWx1ZS5jc3MgPSBgXG4gICAgICAgICAgICAgICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIC5jb250ZW50IC5maXhlZCAubGlzdCA+IHVpLWRyYWctaXRlbVtzZWxlY3RlZF0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzA5NEE1RDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG1lbnVSZWYudmFsdWUudHJlZSA9IGNvbnZlcnRNZW51RGF0YShNZW51Lkluc3RhbmNlLmdldFNoYWRlck5vZGVNZW51KCksIGZhbHNlKTtcbiAgICAgICAgICAgIG1lbnVSZWYudmFsdWUucmVuZGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBnZXRTZWxlY3RlZENyZWF0ZU5vZGVJdGVtKFxuICAgICAgICAgICAgaXRlbTogeyBpbmRleDogbnVtYmVyOyBjaGlsZHJlbjogW10gfSxcbiAgICAgICAgICAgIGxpc3Q6IHsgaW5kZXg6IG51bWJlcjsgY2hpbGRyZW46IFtdIH1bXSxcbiAgICAgICAgICAgIGFycm93OiAnZG93bicgfCAndXAnID0gJ2Rvd24nLFxuICAgICAgICApIHtcbiAgICAgICAgICAgIGxldCBpbmRleCA9IGl0ZW0uaW5kZXg7XG4gICAgICAgICAgICBpZiAoYXJyb3cgPT09ICdkb3duJykge1xuICAgICAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gbGlzdC5sZW5ndGggLSAxKSBpbmRleCA9IDA7XG5cbiAgICAgICAgICAgICAgICBpdGVtID0gbGlzdFtpbmRleF07XG4gICAgICAgICAgICAgICAgLy8gd2hpbGUgKGl0ZW0gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGluZGV4Kys7XG4gICAgICAgICAgICAgICAgLy8gICAgIGlmIChpbmRleCA+IGxpc3QubGVuZ3RoIC0gMSkgaW5kZXggPSAwO1xuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gICAgIGl0ZW0gPSBsaXN0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFycm93ID09PSAndXAnKSB7XG4gICAgICAgICAgICAgICAgaW5kZXgtLTtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSBpbmRleCA9IGxpc3QubGVuZ3RoIC0gMTtcblxuICAgICAgICAgICAgICAgIGl0ZW0gPSBsaXN0W2luZGV4XTtcbiAgICAgICAgICAgICAgICAvLyB3aGlsZSAoaXRlbSAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgaW5kZXgtLTtcbiAgICAgICAgICAgICAgICAvLyAgICAgaWYgKGluZGV4IDwgMCkgaW5kZXggPSBsaXN0Lmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyAgICAgaXRlbSA9IGxpc3RbaW5kZXhdO1xuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25LZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICAgICAgY29uc3Qgd2hpY2ggPSBldmVudC53aGljaDtcbiAgICAgICAgICAgIC8vICdFc2NhcGUnIOmAgOWHulxuICAgICAgICAgICAgaWYgKHdoaWNoID09PSAyNykge1xuICAgICAgICAgICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCAkZG9tID0gbWVudVJlZi52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSAkZG9tLnNlbGVjdEl0ZW1zWyRkb20uc2VsZWN0SXRlbXMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBpZiAoIWl0ZW0pIHJldHVybjtcblxuICAgICAgICAgICAgbGV0IHNlbGVjdEl0ZW0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICBzd2l0Y2ggKHdoaWNoKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAxMzogLy8gRW50ZXJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLmRldGFpbC5hZGRPcHRpb25zKSByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIGNyZWF0ZU5vZGUoaXRlbS5kZXRhaWwuYWRkT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICBjYXNlIDQwOiAvLyBBcnJvd0Rvd25cbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0SXRlbSA9IGdldFNlbGVjdGVkQ3JlYXRlTm9kZUl0ZW0oaXRlbSwgJGRvbS5saXN0LCAnZG93bicpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDM4OiAvLyBBcnJvd1VwXG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdEl0ZW0gPSBnZXRTZWxlY3RlZENyZWF0ZU5vZGVJdGVtKGl0ZW0sICRkb20ubGlzdCwgJ3VwJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzc6IC8vIEFycm93TGVmdFxuICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uZm9sZCAmJiBpdGVtLnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGRvbS5jb2xsYXBzZShpdGVtLnBhcmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGFyZW50LnBhcmVudCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGRvbS5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgJGRvbS5zZWxlY3QoaXRlbS5wYXJlbnQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgMzk6IC8vIEFycm93UmlnaHRcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uZm9sZCAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICRkb20uZXhwYW5kKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZG9tLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZG9tLnNlbGVjdChpdGVtLmNoaWxkcmVuWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RJdGVtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAkZG9tLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgJGRvbS5zZWxlY3Qoc2VsZWN0SXRlbSk7XG4gICAgICAgICAgICAgICAgJGRvbS5wb3NpdGlvbmluZyhzZWxlY3RJdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICRkb20ucmVuZGVyKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvblNlYXJjaElucHV0Q2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgICAgIGlmIChzZWFyY2hWYWx1ZS52YWx1ZSA9PT0gdmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlLnZhbHVlID0gdmFsdWU7XG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RJdGVtO1xuICAgICAgICAgICAgICAgIGxldCB0cmVlRGF0YSA9IGNvbnZlcnRNZW51RGF0YShNZW51Lkluc3RhbmNlLmdldFNoYWRlck5vZGVNZW51KCksIGZhbHNlKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gZmlsdGVyTWVudUJ5S2V5d29yZCh0cmVlRGF0YSwgdmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB0cmVlRGF0YSA9IHJlc3VsdC5maWx0ZXJUcmVlO1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RJdGVtID0gcmVzdWx0LmZpcnN0U2VsZWN0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCAkZG9tID0gbWVudVJlZi52YWx1ZTtcbiAgICAgICAgICAgICAgICAkZG9tLnRyZWUgPSB0cmVlRGF0YTtcbiAgICAgICAgICAgICAgICBpZiAodHJlZURhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAkZG9tLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgICAgICRkb20uc2VsZWN0KHNlbGVjdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICBtZW51UmVmLnZhbHVlLnBvc2l0aW9uaW5nKHNlbGVjdEl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAkZG9tLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sIDUwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9uQ2xvc2UoKSB7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5dXAnLCBvbktleXVwKTtcbiAgICAgICAgICAgIHNlYXJjaFZhbHVlLnZhbHVlID0gJyc7XG4gICAgICAgICAgICBjb21tb25PYmplY3QuaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgb25Vbm1vdW50ZWQoKCkgPT4ge1xuICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21tb25PYmplY3Qub25TaXplQ2hhbmdlZCA9ICgpID0+IHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChtZW51UmVmLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVSZWYudmFsdWUucmVuZGVyKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgMTAwKTtcbiAgICAgICAgfTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uT2JqZWN0LFxuICAgICAgICAgICAgc2VhcmNoVmFsdWUsXG4gICAgICAgICAgICBzZWFyY2hJbnB1dFJlZixcbiAgICAgICAgICAgIG1lbnVSZWYsXG5cbiAgICAgICAgICAgIG9uQ2xvc2UsXG4gICAgICAgICAgICBvblNlYXJjaElucHV0Q2hhbmdlLFxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICB0ZW1wbGF0ZTogY29tbW9uVGVtcGxhdGUoe1xuICAgICAgICBjc3M6ICdjcmVhdGUtbm9kZScsXG4gICAgICAgIGhlYWRlcjogYFxuPHVpLWxhYmVsIGNsYXNzPVwidGl0bGUtbGFiZWxcIiB2YWx1ZT1cImkxOG46c2hhZGVyLWdyYXBoLmNyZWF0ZV9ub2RlLnRpdGxlXCI+PC91aS1sYWJlbD5cbjx1aS1idXR0b24gY2xhc3M9XCJjbG9zZVwiIHRyYW5zcGFyZW50XG4gIHRvb2x0aXA9XCJpMThuOnNoYWRlci1ncmFwaC5jcmVhdGVfbm9kZS5jbG9zZS50b29sdGlwXCJcbiAgQGNsaWNrPVwib25DbG9zZVwiXG4+XG4gIDx1aS1pY29uIHZhbHVlPVwiY2xvc2VcIj48L3VpLWljb24+XG48L3VpLWJ1dHRvbj5cbiAgICAgICAgYCxcbiAgICAgICAgc2VjdGlvbjogYFxuPGRpdiBjbGFzcz1cInNlYXJjaC1ncm91cFwiPlxuICA8dWktaWNvbiBjbGFzcz1cImljb25cIiB2YWx1ZT1cInNlYXJjaFwiPjwvdWktaWNvbj5cbiAgPHVpLWlucHV0IHJlZj1cInNlYXJjaElucHV0UmVmXCIgY2xhc3M9XCJpbnB1dFwiXG4gICAgOnZhbHVlPVwic2VhcmNoVmFsdWVcIlxuICAgIHBsYWNlaG9sZGVyPVwiaTE4bjpzaGFkZXItZ3JhcGguY3JlYXRlX25vZGUuc2VhcmNoX2lucHV0LnBsYWNlaG9sZGVyXCJcbiAgICBAY2hhbmdlPVwib25TZWFyY2hJbnB1dENoYW5nZSgkZXZlbnQudGFyZ2V0LnZhbHVlKVwiXG4gID48L3VpLWlucHV0PlxuPC9kaXY+XG5cbjx1aS10cmVlIHJlZj1cIm1lbnVSZWZcIiBjbGFzcz1cIm1lbnVzXCI+PC91aS10cmVlPlxuICAgICAgICBgLFxuICAgICAgICBmb290ZXI6IGBcbiAgICAgICAgYCxcbiAgICB9KSxcbn0pO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/custom-nodes/index.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/custom-nodes/index.js new file mode 100644 index 0000000..7fea6e5 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/custom-nodes/index.js @@ -0,0 +1,66 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.component = exports.getConfig = exports.DefaultConfig = void 0; +const tslib_1 = require("tslib"); +const vue_js_1 = require("vue/dist/vue.js"); +const lodash_1 = require("lodash"); +const base_1 = tslib_1.__importDefault(require("../base")); +const common_1 = require("../common"); +const internal_1 = require("../internal"); +const shader_graph_1 = require("../../../../../shader-graph"); +exports.DefaultConfig = { + key: 'custom-nodes', + tab: { + name: 'i18n:shader-graph.custom_nodes.menu_name', + show: false, + }, + base: { + title: 'i18n:shader-graph.custom_nodes.title', + minWidth: '240px', + minHeight: '240px', + defaultShow: false, + }, + position: { + right: '0', + top: '360', + }, + events: { + resizer: true, + drag: true, + target: internal_1.FloatWindowDragTarget.header, + }, +}; +function getConfig() { + const newConfig = JSON.parse(JSON.stringify(exports.DefaultConfig)); + const config = shader_graph_1.GraphConfigMgr.Instance.getFloatingWindowConfigByName(exports.DefaultConfig.key); + if (config) { + newConfig.details = (0, lodash_1.merge)({}, newConfig.details, config); + } + return newConfig; +} +exports.getConfig = getConfig; +exports.component = (0, vue_js_1.defineComponent)({ + components: { + BaseFloatWindow: base_1.default, + }, + props: { + ...common_1.commonProps, + }, + emits: [ + ...common_1.commonEmits, + ], + setup(props, ctx) { + return { + ...(0, common_1.commonLogic)(props, ctx), + }; + }, + template: (0, common_1.commonTemplate)({ + section: ` + + `, + footer: ` + + `, + }), +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9jdXN0b20tbm9kZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDRDQUFrRDtBQUVsRCxtQ0FBK0I7QUFDL0IsMkRBQXNDO0FBQ3RDLHNDQUFrRjtBQUNsRiwwQ0FBdUU7QUFDdkUsOERBQTZEO0FBRWhELFFBQUEsYUFBYSxHQUFzQjtJQUM1QyxHQUFHLEVBQUUsY0FBYztJQUNuQixHQUFHLEVBQUU7UUFDRCxJQUFJLEVBQUUsMENBQTBDO1FBQ2hELElBQUksRUFBRSxLQUFLO0tBQ2Q7SUFDRCxJQUFJLEVBQUU7UUFDRixLQUFLLEVBQUUsc0NBQXNDO1FBQzdDLFFBQVEsRUFBRSxPQUFPO1FBQ2pCLFNBQVMsRUFBRSxPQUFPO1FBQ2xCLFdBQVcsRUFBRSxLQUFLO0tBQ3JCO0lBQ0QsUUFBUSxFQUFFO1FBQ04sS0FBSyxFQUFFLEdBQUc7UUFDVixHQUFHLEVBQUUsS0FBSztLQUNiO0lBQ0QsTUFBTSxFQUFFO1FBQ0osT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLE1BQU0sRUFBRSxnQ0FBcUIsQ0FBQyxNQUFNO0tBQ3ZDO0NBQ0osQ0FBQztBQUVGLFNBQWdCLFNBQVM7SUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sTUFBTSxHQUFHLDZCQUFjLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLHFCQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEYsSUFBSSxNQUFNLEVBQUU7UUFDUixTQUFTLENBQUMsT0FBTyxHQUFHLElBQUEsY0FBSyxFQUFDLEVBQUUsRUFBRSxTQUFTLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0tBQzVEO0lBQ0QsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQztBQVBELDhCQU9DO0FBRVksUUFBQSxTQUFTLEdBQUcsSUFBQSx3QkFBZSxFQUFDO0lBRXJDLFVBQVUsRUFBRTtRQUNSLGVBQWUsRUFBZixjQUFlO0tBQ2xCO0lBRUQsS0FBSyxFQUFFO1FBQ0gsR0FBRyxvQkFBVztLQUNqQjtJQUVELEtBQUssRUFBRTtRQUNILEdBQUcsb0JBQVc7S0FDakI7SUFFRCxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUc7UUFDWixPQUFPO1lBQ0gsR0FBRyxJQUFBLG9CQUFXLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQztTQUU3QixDQUFDO0lBQ04sQ0FBQztJQUVELFFBQVEsRUFBRSxJQUFBLHVCQUFjLEVBQUM7UUFDckIsT0FBTyxFQUFFOztTQUVSO1FBQ0QsTUFBTSxFQUFFOztTQUVQO0tBQ0osQ0FBQztDQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRlZmluZUNvbXBvbmVudCB9IGZyb20gJ3Z1ZS9kaXN0L3Z1ZS5qcyc7XG5cbmltcG9ydCB7IG1lcmdlIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCYXNlRmxvYXRXaW5kb3cgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBjb21tb25FbWl0cywgY29tbW9uTG9naWMsIGNvbW1vblByb3BzLCBjb21tb25UZW1wbGF0ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBGbG9hdFdpbmRvd0NvbmZpZywgRmxvYXRXaW5kb3dEcmFnVGFyZ2V0IH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgR3JhcGhDb25maWdNZ3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFkZXItZ3JhcGgnO1xuXG5leHBvcnQgY29uc3QgRGVmYXVsdENvbmZpZzogRmxvYXRXaW5kb3dDb25maWcgPSB7XG4gICAga2V5OiAnY3VzdG9tLW5vZGVzJyxcbiAgICB0YWI6IHtcbiAgICAgICAgbmFtZTogJ2kxOG46c2hhZGVyLWdyYXBoLmN1c3RvbV9ub2Rlcy5tZW51X25hbWUnLFxuICAgICAgICBzaG93OiBmYWxzZSxcbiAgICB9LFxuICAgIGJhc2U6IHtcbiAgICAgICAgdGl0bGU6ICdpMThuOnNoYWRlci1ncmFwaC5jdXN0b21fbm9kZXMudGl0bGUnLFxuICAgICAgICBtaW5XaWR0aDogJzI0MHB4JyxcbiAgICAgICAgbWluSGVpZ2h0OiAnMjQwcHgnLFxuICAgICAgICBkZWZhdWx0U2hvdzogZmFsc2UsXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgICByaWdodDogJzAnLFxuICAgICAgICB0b3A6ICczNjAnLFxuICAgIH0sXG4gICAgZXZlbnRzOiB7XG4gICAgICAgIHJlc2l6ZXI6IHRydWUsXG4gICAgICAgIGRyYWc6IHRydWUsXG4gICAgICAgIHRhcmdldDogRmxvYXRXaW5kb3dEcmFnVGFyZ2V0LmhlYWRlcixcbiAgICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZygpIHtcbiAgICBjb25zdCBuZXdDb25maWcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KERlZmF1bHRDb25maWcpKTtcbiAgICBjb25zdCBjb25maWcgPSBHcmFwaENvbmZpZ01nci5JbnN0YW5jZS5nZXRGbG9hdGluZ1dpbmRvd0NvbmZpZ0J5TmFtZShEZWZhdWx0Q29uZmlnLmtleSk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgICBuZXdDb25maWcuZGV0YWlscyA9IG1lcmdlKHt9LCBuZXdDb25maWcuZGV0YWlscywgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0NvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUNvbXBvbmVudCh7XG5cbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEJhc2VGbG9hdFdpbmRvdyxcbiAgICB9LFxuXG4gICAgcHJvcHM6IHtcbiAgICAgICAgLi4uY29tbW9uUHJvcHMsXG4gICAgfSxcblxuICAgIGVtaXRzOiBbXG4gICAgICAgIC4uLmNvbW1vbkVtaXRzLFxuICAgIF0sXG5cbiAgICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21tb25Mb2dpYyhwcm9wcywgY3R4KSxcblxuICAgICAgICB9O1xuICAgIH0sXG5cbiAgICB0ZW1wbGF0ZTogY29tbW9uVGVtcGxhdGUoe1xuICAgICAgICBzZWN0aW9uOiBgXG4gICAgICAgIFxuICAgICAgICBgLFxuICAgICAgICBmb290ZXI6IGBcbiAgICAgICAgXG4gICAgICAgIGAsXG4gICAgfSksXG59KTtcblxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/graph-property/index.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/graph-property/index.js new file mode 100644 index 0000000..23c53a8 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/graph-property/index.js @@ -0,0 +1,352 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.component = exports.getConfig = exports.DefaultConfig = void 0; +const tslib_1 = require("tslib"); +const lodash_1 = require("lodash"); +const internal_1 = require("../internal"); +const block_forge_1 = require("../../../../../block-forge"); +const base_1 = tslib_1.__importDefault(require("../base")); +const shader_graph_1 = require("../../../../../shader-graph"); +const common_1 = require("../common"); +const vue_js_1 = require("vue/dist/vue.js"); +exports.DefaultConfig = { + key: 'graph-property', + tab: { + name: 'i18n:shader-graph.graph_property.menu_name', + show: true, + height: 80, + }, + base: { + title: 'i18n:shader-graph.graph_property.title', + width: '300px', + height: '240px', + minWidth: '300px', + minHeight: '240px', + defaultShow: false, + }, + position: { + top: '28px', + right: '28px', + }, + events: { + resizer: true, + drag: true, + target: internal_1.FloatWindowDragTarget.header, + }, +}; +function getConfig() { + const newConfig = JSON.parse(JSON.stringify(exports.DefaultConfig)); + const config = shader_graph_1.GraphConfigMgr.Instance.getFloatingWindowConfigByName(exports.DefaultConfig.key); + if (config) { + newConfig.details = (0, lodash_1.merge)({}, newConfig.details, config); + } + return newConfig; +} +exports.getConfig = getConfig; +exports.component = (0, vue_js_1.defineComponent)({ + components: { + BaseFloatWindow: base_1.default, + }, + directives: { + focus: (el) => { + // 不延迟的话,无法 focus,可能是时机问题 + setTimeout(() => { + el.focus(); + }); + }, + }, + props: { + forge: { + type: block_forge_1.HTMLGraphForgeElement, + required: true, + default: null, + }, + config: { + type: Object, + required: true, + default: null, + }, + }, + emits: [...common_1.commonEmits], + setup(props, ctx) { + const common = (0, common_1.commonLogic)(props, ctx); + const deleteStyleRef = (0, vue_js_1.ref)(); + const loading = (0, vue_js_1.ref)(false); + const popupMenuRef = (0, vue_js_1.ref)(false); + const menusRef = (0, vue_js_1.ref)([]); + const propertyRefs = (0, vue_js_1.ref)([]); + const propertyMap = new Map(); + function updateMenuByShaderPropertyDefines() { + menusRef.value = []; + (0, shader_graph_1.iteratePropertyDefines)((propertyDefine) => { + if (propertyDefine.details.menu) { + menusRef.value.push({ + label: propertyDefine.details.menu, + data: propertyDefine, + }); + } + }); + } + async function updateProperties() { + loading.value = true; + updateMenuByShaderPropertyDefines(); + propertyMap.clear(); + await shader_graph_1.GraphPropertyMgr.Instance.iterateProperties(async (property, propertyDefine) => { + await createPropertyItem(property, propertyDefine); + }); + propertyRefs.value = []; + propertyMap.forEach((item) => { + shader_graph_1.Menu.Instance.addItemPath(item.menu, item.addOptions); + propertyRefs.value.push(item); + }); + loading.value = false; + } + const updatePropertiesDebounce = (0, lodash_1.debounce)(async () => { + await updateProperties(); + }, 100); + shader_graph_1.MessageMgr.Instance.register([ + shader_graph_1.MessageType.EnterGraph, + shader_graph_1.MessageType.Restore, + shader_graph_1.MessageType.SetGraphDataToForge, + ], () => { + if (!common.isShow()) + return; + updatePropertiesDebounce(); + }); + async function createPropertyItem(propertyData, propertyDefine) { + if (!propertyData || !propertyDefine) { + console.debug('data undefined or define ', propertyData, propertyDefine); + return; + } + const menu = `Variables/${propertyData.name}`; + const valueDump = await shader_graph_1.MessageMgr.Instance.callSceneMethod('queryPropertyValueDumpByType', [ + propertyData.type, propertyData.outputPins[0].value, + ]); + const propertyItem = { + menu: menu, + rename: false, + showDelete: false, + valueDump: valueDump, + addOptions: { + type: propertyDefine.declareType, + details: { + propertyID: propertyData.id, + baseType: propertyDefine.type, + title: propertyData.name, + outputPins: propertyData.outputPins, + }, + }, + ...propertyData, + }; + propertyMap.set(propertyData.id, propertyItem); + return propertyItem; + } + async function addProperty(propertyDefine) { + const variableData = shader_graph_1.GraphPropertyMgr.Instance.addProperty(propertyDefine); + const item = await createPropertyItem(variableData, propertyDefine); + if (item) { + item.rename = true; + propertyRefs.value.push(item); + shader_graph_1.Menu.Instance.addItemPath(item.menu, item.addOptions); + } + popupMenuRef.value = false; + document.removeEventListener('mouseup', onFullscreenMouseUp); + } + function onDelete(index) { + const propertyData = shader_graph_1.GraphPropertyMgr.Instance.removeProperty(index); + const propertyItem = propertyRefs.value.splice(index, 1)[0]; + if (propertyData && propertyItem) { + shader_graph_1.Menu.Instance.removeItemPath(propertyItem.menu); + } + } + // 用于隐藏 menu + function onFullscreenMouseUp() { + if (popupMenuRef.value) { + setTimeout(() => { + popupMenuRef.value = false; + document.removeEventListener('mouseup', onFullscreenMouseUp); + }, 10); + } + } + function onPopupMenu() { + popupMenuRef.value = true; + document.addEventListener('mouseup', onFullscreenMouseUp); + } + function goToRename(event, variable) { + variable.rename = true; + } + function onRender(value) { + return JSON.stringify(value); + } + function onRenameSubmit(name, variableItem) { + variableItem.rename = false; + variableItem.showDelete = false; + if (name === variableItem.name || !name) + return; + if (shader_graph_1.GraphPropertyMgr.Instance.exitsProperty(name)) { + console.warn('rename failed, a great name'); + return; + } + shader_graph_1.Menu.Instance.removeItemPath(variableItem.menu); + variableItem.menu = `Variables/${name}`; + variableItem.name = name; + variableItem.addOptions.details.title = name; + shader_graph_1.Menu.Instance.addItemPath(variableItem.menu, variableItem.addOptions); + const variableData = shader_graph_1.GraphPropertyMgr.Instance.getPropertyByID(variableItem.id); + if (variableData) { + variableData.name = name; + shader_graph_1.GraphPropertyMgr.Instance.updateProperty(variableItem.id, variableData); + } + else { + console.error('rename failed, variable data not found by ID: ' + variableItem.id); + } + variableItem.rename = false; + } + function onRenameCancel(variable) { + variable.rename = false; + } + function onMouseEnter(variable) { + if (variable.rename) + return; + variable.showDelete = true; + } + function onMouseLeave(variable) { + if (variable.rename) + return; + variable.showDelete = false; + } + function onDumpConfirm(event, variable) { + const dump = event.target && event.target.dump; + if (dump) { + variable.valueDump = dump; + variable.outputPins[0].value = dump.value; + shader_graph_1.GraphPropertyMgr.Instance.updatePropertyValue(variable.id, { + id: variable.id, + name: variable.name, + type: variable.type, + declareType: variable.declareType, + outputPins: variable.outputPins, + }); + } + } + function onDragStart($event, variable) { + const addOptions = { + type: variable.declareType, + details: { + propertyID: variable.id, + baseType: variable.type, + title: variable.name, + outputPins: variable.outputPins, + }, + }; + $event.dataTransfer?.setData('value', JSON.stringify(addOptions)); + shader_graph_1.MessageMgr.Instance.send(shader_graph_1.MessageType.DraggingProperty); + } + function show() { + common.show(); + updatePropertiesDebounce(); + } + return { + ...common, + loading, + propertyRefs, + menusRef, + popupMenuRef, + deleteStyleRef, + addProperty, + onPopupMenu, + onRender, + onDelete, + onDumpConfirm, + goToRename, + onRenameSubmit, + onRenameCancel, + onMouseEnter, + onMouseLeave, + onDragStart, + show, + }; + }, + template: (0, common_1.commonTemplate)({ + css: 'graph-property', + section: ` +
+ + + + +
+ +
+
+ + + + + + +
+ + +
+
+
+ +
+
+
+ +
+ +
+ `, + footer: ` + + `, + }), +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9ncmFwaC1wcm9wZXJ0eS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsbUNBQXlDO0FBS3pDLDBDQUF1RTtBQUN2RSw0REFBbUU7QUFDbkUsMkRBQXNDO0FBQ3RDLDhEQVNxQztBQUNyQyxzQ0FBcUU7QUFFckUsNENBQXVEO0FBVzFDLFFBQUEsYUFBYSxHQUFzQjtJQUM1QyxHQUFHLEVBQUUsZ0JBQWdCO0lBQ3JCLEdBQUcsRUFBRTtRQUNELElBQUksRUFBRSw0Q0FBNEM7UUFDbEQsSUFBSSxFQUFFLElBQUk7UUFDVixNQUFNLEVBQUUsRUFBRTtLQUNiO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsS0FBSyxFQUFFLHdDQUF3QztRQUMvQyxLQUFLLEVBQUUsT0FBTztRQUNkLE1BQU0sRUFBRSxPQUFPO1FBQ2YsUUFBUSxFQUFFLE9BQU87UUFDakIsU0FBUyxFQUFFLE9BQU87UUFDbEIsV0FBVyxFQUFFLEtBQUs7S0FDckI7SUFDRCxRQUFRLEVBQUU7UUFDTixHQUFHLEVBQUUsTUFBTTtRQUNYLEtBQUssRUFBRSxNQUFNO0tBQ2hCO0lBQ0QsTUFBTSxFQUFFO1FBQ0osT0FBTyxFQUFFLElBQUk7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNWLE1BQU0sRUFBRSxnQ0FBcUIsQ0FBQyxNQUFNO0tBQ3ZDO0NBQ0osQ0FBQztBQUVGLFNBQWdCLFNBQVM7SUFDckIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFhLENBQUMsQ0FBQyxDQUFDO0lBQzVELE1BQU0sTUFBTSxHQUFHLDZCQUFjLENBQUMsUUFBUSxDQUFDLDZCQUE2QixDQUFDLHFCQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEYsSUFBSSxNQUFN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M0QsQ0FBQztRQUVELFNBQVMsSUFBSTtZQUNULE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNkLHdCQUF3QixFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELE9BQU87WUFDSCxHQUFHLE1BQU07WUFFVCxPQUFPO1lBRVAsWUFBWTtZQUNaLFFBQVE7WUFDUixZQUFZO1lBQ1osY0FBYztZQUVkLFdBQVc7WUFDWCxXQUFXO1lBQ1gsUUFBUTtZQUNSLFFBQVE7WUFFUixhQUFhO1lBRWIsVUFBVTtZQUNWLGNBQWM7WUFDZCxjQUFjO1lBQ2QsWUFBWTtZQUNaLFlBQVk7WUFFWixXQUFXO1lBRVgsSUFBSTtTQUNQLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxFQUFFLElBQUEsdUJBQWMsRUFBQztRQUNyQixHQUFHLEVBQUUsZ0JBQWdCO1FBQ3JCLE9BQU8sRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7U0EwRVI7UUFDRCxNQUFNLEVBQUU7O1NBRVA7S0FDSixDQUFDO0NBQ0wsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2UsIGRlYm91bmNlIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHR5cGUgeyBJUHJvcGVydHkgfSBmcm9tICdAY29jb3MvY3JlYXRvci10eXBlcy9lZGl0b3IvcGFja2FnZXMvc2NlbmUvQHR5cGVzL3B1YmxpYyc7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5RGVmaW5lIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vQHR5cGVzL3NoYWRlci1ub2RlLXR5cGUnO1xuXG5pbXBvcnQgeyBGbG9hdFdpbmRvd0NvbmZpZywgRmxvYXRXaW5kb3dEcmFnVGFyZ2V0IH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgSFRNTEdyYXBoRm9yZ2VFbGVtZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vYmxvY2stZm9yZ2UnO1xuaW1wb3J0IEJhc2VGbG9hdFdpbmRvdyBmcm9tICcuLi9iYXNlJztcbmltcG9ydCB7XG4gICAgUHJvcGVydHlEYXRhLFxuICAgIEdyYXBoUHJvcGVydHlNZ3IsXG4gICAgTWVudSxcbiAgICBHcmFwaEVkaXRvckFkZE9wdGlvbnMsXG4gICAgTWVzc2FnZU1ncixcbiAgICBNZXNzYWdlVHlwZSxcbiAgICBHcmFwaENvbmZpZ01ncixcbiAgICBpdGVyYXRlUHJvcGVydHlEZWZpbmVzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFkZXItZ3JhcGgnO1xuaW1wb3J0IHsgY29tbW9uRW1pdHMsIGNvbW1vbkxvZ2ljLCBjb21tb25UZW1wbGF0ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5cbmltcG9ydCB7IGRlZmluZUNvbXBvbmVudCwgcmVmIH0gZnJvbSAndnVlL2Rpc3QvdnVlLmpzJztcblxudHlwZSBQcm9wZXJ0eUl0ZW0gPSB7XG4gICAgbWVudTogc3RyaW5nO1xuICAgIHJlbmFtZTogYm9vbGVhbjtcbiAgICBzaG93RGVsZXRlOiBib29sZWFuO1xuICAgIHZhbHVlRHVtcDogSVByb3BlcnR5IHwgdW5kZWZpbmVkO1xuICAgIC8vXG4gICAgYWRkT3B0aW9uczogR3JhcGhFZGl0b3JBZGRPcHRpb25zO1xufSAmIFByb3BlcnR5RGF0YTtcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRDb25maWc6IEZsb2F0V2luZG93Q29uZmlnID0ge1xuICAgIGtleTogJ2dyYXBoLXByb3BlcnR5JyxcbiAgICB0YWI6IHtcbiAgICAgICAgbmFtZTogJ2kxOG46c2hhZGVyLWdyYXBoLmdyYXBoX3Byb3BlcnR5Lm1lbnVfbmFtZScsXG4gICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgIGhlaWdodDogODAsXG4gICAgfSxcbiAgICBiYXNlOiB7XG4gICAgICAgIHRpdGxlOiAnaTE4bjpzaGFkZXItZ3JhcGguZ3JhcGhfcHJvcGVydHkudGl0bGUnLFxuICAgICAgICB3aWR0aDogJzMwMHB4JyxcbiAgICAgICAgaGVpZ2h0OiAnMjQwcHgnLFxuICAgICAgICBtaW5XaWR0aDogJzMwMHB4JyxcbiAgICAgICAgbWluSGVpZ2h0OiAnMjQwcHgnLFxuICAgICAgICBkZWZhdWx0U2hvdzogZmFsc2UsXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgICB0b3A6ICcyOHB4JyxcbiAgICAgICAgcmlnaHQ6ICcyOHB4JyxcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgICByZXNpemVyOiB0cnVlLFxuICAgICAgICBkcmFnOiB0cnVlLFxuICAgICAgICB0YXJnZXQ6IEZsb2F0V2luZG93RHJhZ1RhcmdldC5oZWFkZXIsXG4gICAgfSxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKSB7XG4gICAgY29uc3QgbmV3Q29uZmlnID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShEZWZhdWx0Q29uZmlnKSk7XG4gICAgY29uc3QgY29uZmlnID0gR3JhcGhDb25maWdNZ3IuSW5zdGFuY2UuZ2V0RmxvYXRpbmdXaW5kb3dDb25maWdCeU5hbWUoRGVmYXVsdENvbmZpZy5rZXkpO1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgICAgbmV3Q29uZmlnLmRldGFpbHMgPSBtZXJnZSh7fSwgbmV3Q29uZmlnLmRldGFpbHMsIGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBuZXdDb25maWc7XG59XG5cbmV4cG9ydCBjb25zdCBjb21wb25lbnQgPSBkZWZpbmVDb21wb25lbnQoe1xuICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgQmFzZUZsb2F0V2luZG93LFxuICAgIH0sXG5cbiAgICBkaXJlY3RpdmVzOiB7XG4gICAgICAgIGZvY3VzOiAoZWwpID0+IHtcbiAgICAgICAgICAgIC8vIOS4jeW7tui/n+eahOivne+8jOaXoOazlSBmb2N1c++8jOWPr+iDveaYr+aXtuacuumXrumimFxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgZWwuZm9jdXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgIH0sXG5cbiAgICBwcm9wczoge1xuICAgICAgICBmb3JnZToge1xuICAgICAgICAgICAgdHlwZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50LFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0OiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICBjb25maWc6IHtcbiAgICAgICAgICAgIHR5cGU6IE9iamVjdCBhcyAoKSA9PiBGbG9hdFdpbmRvd0NvbmZpZyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgICAgICAgICAgZGVmYXVsdDogbnVsbCxcbiAgICAgICAgfSxcbiAgICB9LFxuXG4gICAgZW1pdHM6IFsuLi5jb21tb25FbWl0c10sXG5cbiAgICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgICAgIGNvbnN0IGNvbW1vbiA9IGNvbW1vbkxvZ2ljKHByb3BzLCBjdHgpO1xuICAgICAgICBjb25zdCBkZWxldGVTdHlsZVJlZiA9IHJlZigpO1xuICAgICAgICBjb25zdCBsb2FkaW5nID0gcmVmKGZhbHNlKTtcbiAgICAgICAgY29uc3QgcG9wdXBNZW51UmVmID0gcmVmKGZhbHNlKTtcbiAgICAgICAgY29uc3QgbWVudXNSZWYgPSByZWY8eyBsYWJlbDogc3RyaW5nOyBkYXRhOiBQcm9wZXJ0eURlZmluZSB9W10+KFtdKTtcbiAgICAgICAgY29uc3QgcHJvcGVydHlSZWZzID0gcmVmPFByb3BlcnR5SXRlbVtdPihbXSk7XG5cbiAgICAgICAgY29uc3QgcHJvcGVydHlNYXA6IE1hcDxzdHJpbmcsIFByb3BlcnR5SXRlbT4gPSBuZXcgTWFwKCk7XG5cbiAgICAgICAgZnVuY3Rpb24gdXBkYXRlTWVudUJ5U2hhZGVyUHJvcGVydHlEZWZpbmVzKCkge1xuICAgICAgICAgICAgbWVudXNSZWYudmFsdWUgPSBbXTtcbiAgICAgICAgICAgIGl0ZXJhdGVQcm9wZXJ0eURlZmluZXMoKHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eURlZmluZS5kZXRhaWxzLm1lbnUpIHtcbiAgICAgICAgICAgICAgICAgICAgbWVudXNSZWYudmFsdWUucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogcHJvcGVydHlEZWZpbmUuZGV0YWlscy5tZW51LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogcHJvcGVydHlEZWZpbmUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlUHJvcGVydGllcygpIHtcbiAgICAgICAgICAgIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgdXBkYXRlTWVudUJ5U2hhZGVyUHJvcGVydHlEZWZpbmVzKCk7XG5cbiAgICAgICAgICAgIHByb3BlcnR5TWFwLmNsZWFyKCk7XG4gICAgICAgICAgICBhd2FpdCBHcmFwaFByb3BlcnR5TWdyLkluc3RhbmNlLml0ZXJhdGVQcm9wZXJ0aWVzKGFzeW5jIChwcm9wZXJ0eTogUHJvcGVydHlEYXRhLCBwcm9wZXJ0eURlZmluZTogUHJvcGVydHlEZWZpbmUgfCB1bmRlZmluZWQpID0+IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjcmVhdGVQcm9wZXJ0eUl0ZW0ocHJvcGVydHksIHByb3BlcnR5RGVmaW5lKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBwcm9wZXJ0eVJlZnMudmFsdWUgPSBbXTtcbiAgICAgICAgICAgIHByb3BlcnR5TWFwLmZvckVhY2goKGl0ZW06IFByb3BlcnR5SXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIE1lbnUuSW5zdGFuY2UuYWRkSXRlbVBhdGgoaXRlbS5tZW51LCBpdGVtLmFkZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5UmVmcy52YWx1ZS5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBsb2FkaW5nLnZhbHVlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB1cGRhdGVQcm9wZXJ0aWVzRGVib3VuY2UgPSBkZWJvdW5jZShhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB1cGRhdGVQcm9wZXJ0aWVzKCk7XG4gICAgICAgIH0sIDEwMCk7XG5cbiAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5yZWdpc3RlcihbXG4gICAgICAgICAgICBNZXNzYWdlVHlwZS5FbnRlckdyYXBoLFxuICAgICAgICAgICAgTWVzc2FnZVR5cGUuUmVzdG9yZSxcbiAgICAgICAgICAgIE1lc3NhZ2VUeXBlLlNldEdyYXBoRGF0YVRvRm9yZ2UsXG4gICAgICAgIF0sICgpID0+IHtcbiAgICAgICAgICAgIGlmICghY29tbW9uLmlzU2hvdygpKSByZXR1cm47XG4gICAgICAgICAgICB1cGRhdGVQcm9wZXJ0aWVzRGVib3VuY2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUHJvcGVydHlJdGVtKHByb3BlcnR5RGF0YT86IFByb3BlcnR5RGF0YSwgcHJvcGVydHlEZWZpbmU/OiBQcm9wZXJ0eURlZmluZSkge1xuICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eURhdGEgfHwgIXByb3BlcnR5RGVmaW5lKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS5kZWJ1ZygnZGF0YSB1bmRlZmluZWQgb3IgZGVmaW5lICcsIHByb3BlcnR5RGF0YSwgcHJvcGVydHlEZWZpbmUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgbWVudSA9IGBWYXJpYWJsZXMvJHtwcm9wZXJ0eURhdGEubmFtZX1gO1xuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZUR1bXAgPSBhd2FpdCBNZXNzYWdlTWdyLkluc3RhbmNlLmNhbGxTY2VuZU1ldGhvZCgncXVlcnlQcm9wZXJ0eVZhbHVlRHVtcEJ5VHlwZScsIFtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eURhdGEudHlwZSwgcHJvcGVydHlEYXRhLm91dHB1dFBpbnNbMF0udmFsdWUsXG4gICAgICAgICAgICBdKTtcblxuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlJdGVtOiBQcm9wZXJ0eUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgbWVudTogbWVudSxcbiAgICAgICAgICAgICAgICByZW5hbWU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNob3dEZWxldGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHZhbHVlRHVtcDogdmFsdWVEdW1wLFxuICAgICAgICAgICAgICAgIGFkZE9wdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogcHJvcGVydHlEZWZpbmUuZGVjbGFyZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5SUQ6IHByb3BlcnR5RGF0YS5pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlOiBwcm9wZXJ0eURlZmluZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHByb3BlcnR5RGF0YS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0UGluczogcHJvcGVydHlEYXRhLm91dHB1dFBpbnMsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAuLi5wcm9wZXJ0eURhdGEsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBwcm9wZXJ0eU1hcC5zZXQocHJvcGVydHlEYXRhLmlkLCBwcm9wZXJ0eUl0ZW0pO1xuICAgICAgICAgICAgcmV0dXJuIHByb3BlcnR5SXRlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGFkZFByb3BlcnR5KHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSkge1xuICAgICAgICAgICAgY29uc3QgdmFyaWFibGVEYXRhID0gR3JhcGhQcm9wZXJ0eU1nci5JbnN0YW5jZS5hZGRQcm9wZXJ0eShwcm9wZXJ0eURlZmluZSk7XG4gICAgICAgICAgICBjb25zdCBpdGVtOiBQcm9wZXJ0eUl0ZW0gfCB1bmRlZmluZWQgPSBhd2FpdCBjcmVhdGVQcm9wZXJ0eUl0ZW0odmFyaWFibGVEYXRhLCBwcm9wZXJ0eURlZmluZSk7XG4gICAgICAgICAgICBpZiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGl0ZW0ucmVuYW1lID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eVJlZnMudmFsdWUucHVzaChpdGVtKTtcbiAgICAgICAgICAgICAgICBNZW51Lkluc3RhbmNlLmFkZEl0ZW1QYXRoKGl0ZW0ubWVudSwgaXRlbS5hZGRPcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBvcHVwTWVudVJlZi52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uRnVsbHNjcmVlbk1vdXNlVXApO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25EZWxldGUoaW5kZXg6IG51bWJlcikge1xuICAgICAgICAgICAgY29uc3QgcHJvcGVydHlEYXRhID0gR3JhcGhQcm9wZXJ0eU1nci5JbnN0YW5jZS5yZW1vdmVQcm9wZXJ0eShpbmRleCk7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0eUl0ZW0gPSBwcm9wZXJ0eVJlZnMudmFsdWUuc3BsaWNlKGluZGV4LCAxKVswXTtcbiAgICAgICAgICAgIGlmIChwcm9wZXJ0eURhdGEgJiYgcHJvcGVydHlJdGVtKSB7XG4gICAgICAgICAgICAgICAgTWVudS5JbnN0YW5jZS5yZW1vdmVJdGVtUGF0aChwcm9wZXJ0eUl0ZW0ubWVudSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyDnlKjkuo7pmpDol48gbWVudVxuICAgICAgICBmdW5jdGlvbiBvbkZ1bGxzY3JlZW5Nb3VzZVVwKCkge1xuICAgICAgICAgICAgaWYgKHBvcHVwTWVudVJlZi52YWx1ZSkge1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cE1lbnVSZWYudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIG9uRnVsbHNjcmVlbk1vdXNlVXApO1xuICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9uUG9wdXBNZW51KCkge1xuICAgICAgICAgICAgcG9wdXBNZW51UmVmLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBvbkZ1bGxzY3JlZW5Nb3VzZVVwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGdvVG9SZW5hbWUoZXZlbnQ6IE1vdXNlRXZlbnQsIHZhcmlhYmxlOiBQcm9wZXJ0eUl0ZW0pIHtcbiAgICAgICAgICAgIHZhcmlhYmxlLnJlbmFtZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvblJlbmRlcih2YWx1ZTogYW55KSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25SZW5hbWVTdWJtaXQobmFtZTogc3RyaW5nLCB2YXJpYWJsZUl0ZW06IFByb3BlcnR5SXRlbSkge1xuICAgICAgICAgICAgdmFyaWFibGVJdGVtLnJlbmFtZSA9IGZhbHNlO1xuICAgICAgICAgICAgdmFyaWFibGVJdGVtLnNob3dEZWxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmIChuYW1lID09PSB2YXJpYWJsZUl0ZW0ubmFtZSB8fCAhbmFtZSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBpZiAoR3JhcGhQcm9wZXJ0eU1nci5JbnN0YW5jZS5leGl0c1Byb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKCdyZW5hbWUgZmFpbGVkLCBhIGdyZWF0IG5hbWUnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIE1lbnUuSW5zdGFuY2UucmVtb3ZlSXRlbVBhdGgodmFyaWFibGVJdGVtLm1lbnUpO1xuICAgICAgICAgICAgdmFyaWFibGVJdGVtLm1lbnUgPSBgVmFyaWFibGVzLyR7bmFtZX1gO1xuICAgICAgICAgICAgdmFyaWFibGVJdGVtLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgdmFyaWFibGVJdGVtLmFkZE9wdGlvbnMuZGV0YWlscy50aXRsZSA9IG5hbWU7XG4gICAgICAgICAgICBNZW51Lkluc3RhbmNlLmFkZEl0ZW1QYXRoKHZhcmlhYmxlSXRlbS5tZW51LCB2YXJpYWJsZUl0ZW0uYWRkT3B0aW9ucyk7XG4gICAgICAgICAgICBjb25zdCB2YXJpYWJsZURhdGE6IFByb3BlcnR5RGF0YSB8IHVuZGVmaW5lZCA9IEdyYXBoUHJvcGVydHlNZ3IuSW5zdGFuY2UuZ2V0UHJvcGVydHlCeUlEKHZhcmlhYmxlSXRlbS5pZCk7XG4gICAgICAgICAgICBpZiAodmFyaWFibGVEYXRhKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGVEYXRhLm5hbWUgPSBuYW1lO1xuICAgICAgICAgICAgICAgIEdyYXBoUHJvcGVydHlNZ3IuSW5zdGFuY2UudXBkYXRlUHJvcGVydHkodmFyaWFibGVJdGVtLmlkLCB2YXJpYWJsZURhdGEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdyZW5hbWUgZmFpbGVkLCB2YXJpYWJsZSBkYXRhIG5vdCBmb3VuZCBieSBJRDogJyArIHZhcmlhYmxlSXRlbS5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXJpYWJsZUl0ZW0ucmVuYW1lID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvblJlbmFtZUNhbmNlbCh2YXJpYWJsZTogUHJvcGVydHlJdGVtKSB7XG4gICAgICAgICAgICB2YXJpYWJsZS5yZW5hbWUgPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9uTW91c2VFbnRlcih2YXJpYWJsZTogUHJvcGVydHlJdGVtKSB7XG4gICAgICAgICAgICBpZiAodmFyaWFibGUucmVuYW1lKSByZXR1cm47XG5cbiAgICAgICAgICAgIHZhcmlhYmxlLnNob3dEZWxldGUgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25Nb3VzZUxlYXZlKHZhcmlhYmxlOiBQcm9wZXJ0eUl0ZW0pIHtcbiAgICAgICAgICAgIGlmICh2YXJpYWJsZS5yZW5hbWUpIHJldHVybjtcblxuICAgICAgICAgICAgdmFyaWFibGUuc2hvd0RlbGV0ZSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25EdW1wQ29uZmlybShldmVudDogeyB0YXJnZXQ6IHsgZHVtcDogSVByb3BlcnR5IH0gfSwgdmFyaWFibGU6IFByb3BlcnR5SXRlbSkge1xuICAgICAgICAgICAgY29uc3QgZHVtcCA9IGV2ZW50LnRhcmdldCAmJiBldmVudC50YXJnZXQuZHVtcDtcbiAgICAgICAgICAgIGlmIChkdW1wKSB7XG4gICAgICAgICAgICAgICAgdmFyaWFibGUudmFsdWVEdW1wID0gZHVtcDtcbiAgICAgICAgICAgICAgICB2YXJpYWJsZS5vdXRwdXRQaW5zWzBdLnZhbHVlID0gZHVtcC52YWx1ZTtcbiAgICAgICAgICAgICAgICBHcmFwaFByb3BlcnR5TWdyLkluc3RhbmNlLnVwZGF0ZVByb3BlcnR5VmFsdWUodmFyaWFibGUuaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHZhcmlhYmxlLmlkLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiB2YXJpYWJsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB2YXJpYWJsZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICBkZWNsYXJlVHlwZTogdmFyaWFibGUuZGVjbGFyZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFBpbnM6IHZhcmlhYmxlLm91dHB1dFBpbnMsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvbkRyYWdTdGFydCgkZXZlbnQ6IERyYWdFdmVudCwgdmFyaWFibGU6IFByb3BlcnR5SXRlbSkge1xuICAgICAgICAgICAgY29uc3QgYWRkT3B0aW9uczogR3JhcGhFZGl0b3JBZGRPcHRpb25zID0ge1xuICAgICAgICAgICAgICAgIHR5cGU6IHZhcmlhYmxlLmRlY2xhcmVUeXBlLFxuICAgICAgICAgICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlJRDogdmFyaWFibGUuaWQsXG4gICAgICAgICAgICAgICAgICAgIGJhc2VUeXBlOiB2YXJpYWJsZS50eXBlLFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogdmFyaWFibGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0UGluczogdmFyaWFibGUub3V0cHV0UGlucyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICRldmVudC5kYXRhVHJhbnNmZXI/LnNldERhdGEoJ3ZhbHVlJywgSlNPTi5zdHJpbmdpZnkoYWRkT3B0aW9ucykpO1xuICAgICAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLkRyYWdnaW5nUHJvcGVydHkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gc2hvdygpIHtcbiAgICAgICAgICAgIGNvbW1vbi5zaG93KCk7XG4gICAgICAgICAgICB1cGRhdGVQcm9wZXJ0aWVzRGVib3VuY2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb21tb24sXG5cbiAgICAgICAgICAgIGxvYWRpbmcsXG5cbiAgICAgICAgICAgIHByb3BlcnR5UmVmcyxcbiAgICAgICAgICAgIG1lbnVzUmVmLFxuICAgICAgICAgICAgcG9wdXBNZW51UmVmLFxuICAgICAgICAgICAgZGVsZXRlU3R5bGVSZWYsXG5cbiAgICAgICAgICAgIGFkZFByb3BlcnR5LFxuICAgICAgICAgICAgb25Qb3B1cE1lbnUsXG4gICAgICAgICAgICBvblJlbmRlcixcbiAgICAgICAgICAgIG9uRGVsZXRlLFxuXG4gICAgICAgICAgICBvbkR1bXBDb25maXJtLFxuXG4gICAgICAgICAgICBnb1RvUmVuYW1lLFxuICAgICAgICAgICAgb25SZW5hbWVTdWJtaXQsXG4gICAgICAgICAgICBvblJlbmFtZUNhbmNlbCxcbiAgICAgICAgICAgIG9uTW91c2VFbnRlcixcbiAgICAgICAgICAgIG9uTW91c2VMZWF2ZSxcblxuICAgICAgICAgICAgb25EcmFnU3RhcnQsXG5cbiAgICAgICAgICAgIHNob3csXG4gICAgICAgIH07XG4gICAgfSxcblxuICAgIHRlbXBsYXRlOiBjb21tb25UZW1wbGF0ZSh7XG4gICAgICAgIGNzczogJ2dyYXBoLXByb3BlcnR5JyxcbiAgICAgICAgc2VjdGlvbjogYFxuPGRpdiBjbGFzcz1cInByb3BlcnR5LXRpdGxlXCI+XG4gICAgPHVpLWxhYmVsIGNsYXNzPVwibmFtZVwiIFxuICAgICAgICB2YWx1ZT1cImkxOG46c2hhZGVyLWdyYXBoLmdyYXBoX3Byb3BlcnR5LmFkZFwiPlxuICAgIDwvdWktbGFiZWw+XG4gICAgPHVpLWljb24gY2xhc3M9XCJhZGRcIiAgXG4gICAgICAgIHZhbHVlPVwiYWRkLW1vcmVcIlxuICAgICAgICBAY2xpY2suc3RvcD1cIm9uUG9wdXBNZW51KClcIlxuICAgICAgICB0b29sdGlwPVwiaTE4bjpzaGFkZXItZ3JhcGguZ3JhcGhfcHJvcGVydHkuYWRkXCI+XG4gICAgPC91aS1pY29uPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJwcm9wZXJ0eS1jb250ZW50c1wiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJpdGVtXCJcbiAgICAgICAgdi1mb3I9XCIocHJvcGVydHksIGluZGV4KSBpbiBwcm9wZXJ0eVJlZnNcIiBcbiAgICAgICAgOmtleT1cInByb3BlcnR5Lm5hbWUgKyAnJyArIGluZGV4XCJcbiAgICAgICAgQG1vdXNlZW50ZXI9XCJvbk1vdXNlRW50ZXIocHJvcGVydHkpXCJcbiAgICAgICAgQG1vdXNlbGVhdmU9XCJvbk1vdXNlTGVhdmUocHJvcGVydHkpXCJcbiAgICA+XG4gICAgICAgIDx1aS1wcm9wIGNsYXNzPVwicHJvcFwiPiAgIFxuICAgICAgICAgICAgPHVpLWlucHV0IHNsb3Q9XCJsYWJlbFwiIGNsYXNzPVwiaW5wdXRcIlxuICAgICAgICAgICAgICAgIHYtaWY9XCJwcm9wZXJ0eS5yZW5hbWVcIlxuICAgICAgICAgICAgICAgIDp2YWx1ZT1cInByb3BlcnR5Lm5hbWVcIlxuICAgICAgICAgICAgICAgIEBibHVyPVwib25SZW5hbWVTdWJtaXQoJGV2ZW50LnRhcmdldC52YWx1ZSwgcHJvcGVydHkpXCJcbiAgICAgICAgICAgICAgICBAa2V5ZG93bi5zdG9wXG4gICAgICAgICAgICAgICAgQGtleWRvd24uZW50ZXI9XCIkZXZlbnQudGFyZ2V0LmJsdXIoKVwiXG4gICAgICAgICAgICAgICAgQGtleWRvd24uZXNjPVwib25SZW5hbWVDYW5jZWwocHJvcGVydHkpXCJcbiAgICAgICAgICAgICAgICBAY2xpY2suc3RvcFxuICAgICAgICAgICAgICAgIEBkYmxjbGljay5zdG9wXG4gICAgICAgICAgICAgICAgQGNoYW5nZS5zdG9wXG4gICAgICAgICAgICAgICAgdi1mb2N1c1xuICAgICAgICAgICAgPjwvdWktaW5wdXQ+XG4gICAgICAgICAgICA8dWktZHJhZy1pdGVtIHNsb3Q9XCJsYWJlbFwiIGNsYXNzPVwibGFiZWxcIiB0eXBlPVwicHJvcGVydHlcIlxuICAgICAgICAgICAgICAgIEBkcmFnc3RhcnQ9XCJvbkRyYWdTdGFydCgkZXZlbnQsIHByb3BlcnR5KVwiXG4gICAgICAgICAgICAgICAgdi1lbHNlXG4gICAgICAgICAgICAgICAgQGRibGNsaWNrLnN0b3A9XCJnb1RvUmVuYW1lKCRldmVudCwgcHJvcGVydHksIGluZGV4KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJrZXlcIiB2YWx1ZT1cImtleVwiPjwvdWktaWNvbj5cbiAgICAgICAgICAgICAgICA8dWktbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwicHJvcGVydHkubmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIDp0b29sdGlwPVwicHJvcGVydHkubmFtZVwiXG4gICAgICAgICAgICAgICAgPjwvdWktbGFiZWw+XG4gICAgICAgICAgICA8L3VpLWRyYWctaXRlbT5cbiAgICAgICAgICAgIDxkaXYgc2xvdD1cImNvbnRlbnRcIiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICA8dWktcHJvcCBuby1sYWJlbFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZHVtcFwiXG4gICAgICAgICAgICAgICAgICAgIDpyZW5kZXI9XCJvblJlbmRlcihwcm9wZXJ0eS52YWx1ZUR1bXApXCJcbiAgICAgICAgICAgICAgICAgICAgQGNvbmZpcm0tZHVtcD1cIm9uRHVtcENvbmZpcm0oJGV2ZW50LCBwcm9wZXJ0eSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8L3VpLXByb3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC91aS1wcm9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGVsZXRlXCI+XG4gICAgICAgICAgICA8dWktaWNvbiBjbGFzcz1cImljb25cIiB2LWlmPVwicHJvcGVydHkuc2hvd0RlbGV0ZVwiXG4gICAgICAgICAgICAgICAgOnRvb2x0aXA9XCInaTE4bjpzaGFkZXItZ3JhcGguZ3JhcGhfcHJvcGVydHkuZGVsZXRlJ1wiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJjbG9zZVwiIFxuICAgICAgICAgICAgICAgIEBjbGljaz1cIm9uRGVsZXRlKGluZGV4KVwiXG4gICAgICAgICAgICA+PC91aS1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwicHJvcGVydHktbWVudVwiXG4gICAgdi1pZj1cInBvcHVwTWVudVJlZlwiXG4+XG4gICAgPHVpLWxhYmVsIGNsYXNzPVwib3B0aW9uXCIgXG4gICAgICAgIHYtZm9yPVwiKG1lbnUsIGluZGV4KSBpbiBtZW51c1JlZlwiIFxuICAgICAgICA6a2V5PVwibWVudS5sYWJlbCArICcnICsgaW5kZXhcIlxuICAgICAgICA6dmFsdWU9XCJtZW51LmxhYmVsXCJcbiAgICAgICAgQGNsaWNrLnN0b3A9XCJhZGRQcm9wZXJ0eShtZW51LmRhdGEpXCJcbiAgICA+PC91aS1sYWJlbD5cbjwvZGl2PlxuICAgICAgICBgLFxuICAgICAgICBmb290ZXI6IGBcbiAgICAgICAgICAgIDx1aS1sb2FkaW5nIGNsYXNzPVwibG9hZGluZ1wiIHYtc2hvdz1cImxvYWRpbmdcIj48L3VpLWxvYWRpbmc+XG4gICAgICAgIGAsXG4gICAgfSksXG59KTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/index.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/index.js new file mode 100644 index 0000000..f648cbc --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/index.js @@ -0,0 +1,52 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getFloatWindowMap = exports.FloatWindow = exports.updateFloatWindowConfigs = exports.getFloatWindowConfigByName = exports.floatWindowConfigs = void 0; +const tslib_1 = require("tslib"); +const base_1 = tslib_1.__importDefault(require("./base")); +exports.FloatWindow = base_1.default; +const GraphProperty = tslib_1.__importStar(require("./graph-property")); +const CustomNodes = tslib_1.__importStar(require("./custom-nodes")); +const CreateNode = tslib_1.__importStar(require("./create-node")); +const Preview = tslib_1.__importStar(require("./preview")); +tslib_1.__exportStar(require("./internal"), exports); +const floatWindowMap = new Map([ + [ + GraphProperty.DefaultConfig.key, + GraphProperty.component, + ], + [ + CreateNode.DefaultConfig.key, + CreateNode.component, + ], + [ + Preview.DefaultConfig.key, + Preview.component, + ], + [ + CustomNodes.DefaultConfig.key, + CustomNodes.component, + ], +]); +exports.floatWindowConfigs = new Map(); +function getFloatWindowConfigByName(name) { + return exports.floatWindowConfigs.get(name); +} +exports.getFloatWindowConfigByName = getFloatWindowConfigByName; +async function updateFloatWindowConfigs() { + const configs = [ + GraphProperty.getConfig(), + Preview.getConfig(), + CreateNode.getConfig(), + CustomNodes.getConfig(), + ]; + configs.forEach(config => { + exports.floatWindowConfigs.set(config.key, config); + }); + return configs; +} +exports.updateFloatWindowConfigs = updateFloatWindowConfigs; +function getFloatWindowMap() { + return floatWindowMap; +} +exports.getFloatWindowMap = getFloatWindowMap; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRUEsMERBQWlDO0FBbUQ3QixzQkFuREcsY0FBVyxDQW1ESDtBQWxEZix3RUFBa0Q7QUFDbEQsb0VBQThDO0FBQzlDLGtFQUE0QztBQUM1QywyREFBcUM7QUFFckMscURBQTJCO0FBRTNCLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFpQztJQUMzRDtRQUNJLGFBQWEsQ0FBQyxhQUFhLENBQUMsR0FBRztRQUMvQixhQUFhLENBQUMsU0FBUztLQUMxQjtJQUNEO1FBQ0ksVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHO1FBQzVCLFVBQVUsQ0FBQyxTQUFTO0tBQ3ZCO0lBQ0Q7UUFDSSxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUc7UUFDekIsT0FBTyxDQUFDLFNBQVM7S0FDcEI7SUFDRDtRQUNJLFdBQVcsQ0FBQyxhQUFhLENBQUMsR0FBRztRQUM3QixXQUFXLENBQUMsU0FBUztLQUN4QjtDQUNKLENBQUMsQ0FBQztBQUVVLFFBQUEsa0JBQWtCLEdBQW1DLElBQUksR0FBRyxFQUFFLENBQUM7QUFFNUUsU0FBZ0IsMEJBQTBCLENBQUMsSUFBWTtJQUNuRCxPQUFPLDBCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsZ0VBRUM7QUFFTSxLQUFLLFVBQVUsd0JBQXdCO0lBQzFDLE1BQU0sT0FBTyxHQUFHO1FBQ1osYUFBYSxDQUFDLFNBQVMsRUFBRTtRQUN6QixPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ25CLFVBQVUsQ0FBQyxTQUFTLEVBQUU7UUFDdEIsV0FBVyxDQUFDLFNBQVMsRUFBRTtLQUMxQixDQUFDO0lBQ0YsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUNyQiwwQkFBa0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvQyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFYRCw0REFXQztBQUVELFNBQVMsaUJBQWlCO0lBQ3RCLE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUM7QUFJRyw4Q0FBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZsb2F0V2luZG93Q29uZmlnIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5cbmltcG9ydCBGbG9hdFdpbmRvdyBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0ICogYXMgR3JhcGhQcm9wZXJ0eSBmcm9tICcuL2dyYXBoLXByb3BlcnR5JztcbmltcG9ydCAqIGFzIEN1c3RvbU5vZGVzIGZyb20gJy4vY3VzdG9tLW5vZGVzJztcbmltcG9ydCAqIGFzIENyZWF0ZU5vZGUgZnJvbSAnLi9jcmVhdGUtbm9kZSc7XG5pbXBvcnQgKiBhcyBQcmV2aWV3IGZyb20gJy4vcHJldmlldyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vaW50ZXJuYWwnO1xuXG5jb25zdCBmbG9hdFdpbmRvd01hcCA9IG5ldyBNYXA8c3RyaW5nLCBhbnkvKkRlZmluZUNvbXBvbmVudCovPihbXG4gICAgW1xuICAgICAgICBHcmFwaFByb3BlcnR5LkRlZmF1bHRDb25maWcua2V5LFxuICAgICAgICBHcmFwaFByb3BlcnR5LmNvbXBvbmVudCxcbiAgICBdLFxuICAgIFtcbiAgICAgICAgQ3JlYXRlTm9kZS5EZWZhdWx0Q29uZmlnLmtleSxcbiAgICAgICAgQ3JlYXRlTm9kZS5jb21wb25lbnQsXG4gICAgXSxcbiAgICBbXG4gICAgICAgIFByZXZpZXcuRGVmYXVsdENvbmZpZy5rZXksXG4gICAgICAgIFByZXZpZXcuY29tcG9uZW50LFxuICAgIF0sXG4gICAgW1xuICAgICAgICBDdXN0b21Ob2Rlcy5EZWZhdWx0Q29uZmlnLmtleSxcbiAgICAgICAgQ3VzdG9tTm9kZXMuY29tcG9uZW50LFxuICAgIF0sXG5dKTtcblxuZXhwb3J0IGNvbnN0IGZsb2F0V2luZG93Q29uZmlnczogTWFwPHN0cmluZywgRmxvYXRXaW5kb3dDb25maWc+ID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RmxvYXRXaW5kb3dDb25maWdCeU5hbWUobmFtZTogc3RyaW5nKTogRmxvYXRXaW5kb3dDb25maWcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBmbG9hdFdpbmRvd0NvbmZpZ3MuZ2V0KG5hbWUpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBkYXRlRmxvYXRXaW5kb3dDb25maWdzKCkge1xuICAgIGNvbnN0IGNvbmZpZ3MgPSBbXG4gICAgICAgIEdyYXBoUHJvcGVydHkuZ2V0Q29uZmlnKCksXG4gICAgICAgIFByZXZpZXcuZ2V0Q29uZmlnKCksXG4gICAgICAgIENyZWF0ZU5vZGUuZ2V0Q29uZmlnKCksXG4gICAgICAgIEN1c3RvbU5vZGVzLmdldENvbmZpZygpLFxuICAgIF07XG4gICAgY29uZmlncy5mb3JFYWNoKGNvbmZpZyA9PiB7XG4gICAgICAgIGZsb2F0V2luZG93Q29uZmlncy5zZXQoY29uZmlnLmtleSwgY29uZmlnKTtcbiAgICB9KTtcbiAgICByZXR1cm4gY29uZmlncztcbn1cblxuZnVuY3Rpb24gZ2V0RmxvYXRXaW5kb3dNYXAoKSB7XG4gICAgcmV0dXJuIGZsb2F0V2luZG93TWFwO1xufVxuXG5leHBvcnQge1xuICAgIEZsb2F0V2luZG93LFxuICAgIGdldEZsb2F0V2luZG93TWFwLFxufTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/internal.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/internal.js new file mode 100644 index 0000000..66d162b --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/internal.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FloatWindowDragTarget = void 0; +var FloatWindowDragTarget; +(function (FloatWindowDragTarget) { + // 自身 + FloatWindowDragTarget[FloatWindowDragTarget["itself"] = 0] = "itself"; + // 头部 + FloatWindowDragTarget[FloatWindowDragTarget["header"] = 1] = "header"; +})(FloatWindowDragTarget = exports.FloatWindowDragTarget || (exports.FloatWindowDragTarget = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9pbnRlcm5hbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDN0IsS0FBSztJQUNMLHFFQUFVLENBQUE7SUFDVixLQUFLO0lBQ0wscUVBQVUsQ0FBQTtBQUNkLENBQUMsRUFMVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUtoQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZsb2F0V2luZG93RHJhZ1RhcmdldCB7XG4gICAgLy8g6Ieq6LqrXG4gICAgaXRzZWxmID0gMCxcbiAgICAvLyDlpLTpg6hcbiAgICBoZWFkZXIgPSAxLFxufVxuXG5leHBvcnQgdHlwZSBGbG9hdFdpbmRvd0V2ZW50T3B0aW9ucyA9IHtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblj6/ku6XnvKnmlL7nqpflj6NcbiAgICAgKi9cbiAgICByZXNpemVyOiBib29sZWFuO1xuICAgIGVuYWJsZUFzcGVjdFJhdGlvPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiDmmK/lkKblj6/ku6Xmi5bliqhcbiAgICAgKi9cbiAgICBkcmFnOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIOaXoOmZkOWItlxuICAgICAqL1xuICAgIGxpbWl0bGVzcz86IGJvb2xlYW47XG4gICAgLyoqXG4gICAgICog5ouW5Yqo5LuA5LmI5YWD57Sg5Y+v56e75YqoXG4gICAgICovXG4gICAgdGFyZ2V0OiBGbG9hdFdpbmRvd0RyYWdUYXJnZXQsXG59XG5cbmV4cG9ydCB0eXBlIEZsb2F0V2luZG93VGFiID0ge1xuICAgICAgICBuYW1lOiBzdHJpbmc7XG4gICAgICAgIHNob3c6IGJvb2xlYW47XG4gICAgICAgIGhlaWdodD86IG51bWJlcjtcbiAgICAgICAgd2lkdGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZsb2F0V2luZG93Q29uZmlnID0ge1xuICAgIGRvbnRTYXZlPzogYm9vbGVhbjtcbiAgICBrZXk6IHN0cmluZztcbiAgICB0YWI6IEZsb2F0V2luZG93VGFiO1xuICAgIGJhc2U6IHtcbiAgICAgICAgZGVmYXVsdFNob3c6IGJvb2xlYW47XG4gICAgICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgICAgIG1pbldpZHRoOiBzdHJpbmc7XG4gICAgICAgIG1pbkhlaWdodDogc3RyaW5nO1xuICAgICAgICB3aWR0aD86IHN0cmluZyxcbiAgICAgICAgaGVpZ2h0Pzogc3RyaW5nLFxuICAgIH07XG4gICAgcG9zaXRpb246IHtcbiAgICAgICAgdG9wPzogc3RyaW5nO1xuICAgICAgICByaWdodD86IHN0cmluZztcbiAgICAgICAgbGVmdD86IHN0cmluZztcbiAgICAgICAgYm90dG9tPzogc3RyaW5nO1xuICAgIH07XG4gICAgZXZlbnRzOiBGbG9hdFdpbmRvd0V2ZW50T3B0aW9ucztcbiAgICBkZXRhaWxzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/preview/index.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/preview/index.js new file mode 100644 index 0000000..531ad9b --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/preview/index.js @@ -0,0 +1,317 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.component = exports.getConfig = exports.DefaultConfig = void 0; +const tslib_1 = require("tslib"); +const lodash_1 = require("lodash"); +const vue_js_1 = require("vue/dist/vue.js"); +const base_1 = tslib_1.__importDefault(require("../base")); +const common_1 = require("../common"); +const internal_1 = require("../internal"); +const shader_graph_1 = require("../../../../../shader-graph"); +const utils_1 = require("../utils"); +const BOX_MESH = '1263d74c-8167-4928-91a6-4e2672411f47@a804a'; +exports.DefaultConfig = { + key: 'preview', + tab: { + name: 'i18n:shader-graph.preview.menu_name', + show: true, + height: 80, + }, + base: { + title: 'i18n:shader-graph.preview.title', + width: '223px', + height: '228px', + minWidth: '223px', + minHeight: '228px', + defaultShow: false, + }, + position: { + right: '28px', + bottom: '0', + }, + events: { + resizer: true, + drag: true, + enableAspectRatio: true, + target: internal_1.FloatWindowDragTarget.header, + }, + details: { + primitive: BOX_MESH, + lightEnable: true, + }, +}; +function getConfig() { + const newConfig = JSON.parse(JSON.stringify(exports.DefaultConfig)); + const config = shader_graph_1.GraphConfigMgr.Instance.getFloatingWindowConfigByName(exports.DefaultConfig.key); + if (config) { + newConfig.details = (0, lodash_1.merge)({}, newConfig.details, config); + } + return newConfig; +} +exports.getConfig = getConfig; +exports.component = (0, vue_js_1.defineComponent)({ + components: { + BaseFloatWindow: base_1.default, + }, + props: { + ...common_1.commonProps, + }, + emits: [...common_1.commonEmits], + setup(props, ctx) { + const common = (0, common_1.commonLogic)(props, ctx); + const glPreview = (0, vue_js_1.ref)(); + const initPreviewDone = (0, vue_js_1.ref)(false); + const initGL = (0, vue_js_1.ref)(false); + const previewDirty = (0, vue_js_1.ref)(true); + const loading = (0, vue_js_1.ref)(true); + const animationId = (0, vue_js_1.ref)(-1); + const lightRef = (0, vue_js_1.ref)(); + const previewCanvas = (0, vue_js_1.ref)(); + const previewConfig = (0, vue_js_1.ref)({ + primitive: '', + lightEnable: false, + }); + async function callPreview(funcName, ...args) { + if (!initPreviewDone.value) + return; + await Editor.Message.request('scene', 'call-preview-function', 'shader-graph-preview', funcName, ...args); + previewDirty.value = true; + } + async function updateConfigToPreview(config) { + await callPreview('setLightEnable', config.lightEnable); + await callPreview('setPrimitive', config.primitive); + } + async function updateMaterial() { + if (!initPreviewDone.value || !common.isShow()) + return; + loading.value = true; + await shader_graph_1.MessageMgr.Instance.callSceneMethod('updateMaterial', [shader_graph_1.GraphDataMgr.Instance.getCurrentGraphData()]); + loading.value = false; + previewDirty.value = true; + } + const aspectRatio = -1; + async function refreshPreview() { + if (previewDirty.value) { + previewDirty.value = false; + const canvas = previewCanvas.value; + if (!canvas) + return; + const width = canvas.clientWidth === 0 ? canvas.parentNode.clientWidth : canvas.clientWidth; + const height = width; + // 等比缩放 + if (canvas.width !== width || !initGL.value) { + initGL.value = true; + await glPreview.value.initGL(canvas, { width, height }); + await glPreview.value.resizeGL(width, height); + } + const data = await glPreview.value.queryPreviewData({ + width, + height: height, + }); + glPreview.value.drawGL(data); + } + cancelAnimationFrame(animationId.value); + animationId.value = requestAnimationFrame(() => { + refreshPreview(); + }); + } + async function onMouseDownOnCanvas(event) { + await callPreview('onMouseDown', { x: event.x, y: event.y, button: event.button }); + async function mousemove(event) { + await callPreview('onMouseMove', { + movementX: event.movementX, + movementY: event.movementY, + }); + } + async function mouseup(event) { + await callPreview('onMouseUp', { + x: event.x, + y: event.y, + }); + document.removeEventListener('mousemove', mousemove); + document.removeEventListener('mouseup', mouseup); + previewDirty.value = false; + } + document.addEventListener('mousemove', mousemove); + document.addEventListener('mouseup', mouseup); + } + async function onMouseWheelOnCanvas(event) { + const scale = event.deltaY * 0.01; + await callPreview('setZoom', scale); + } + function addEventListenerToCanvas() { + const canvas = previewCanvas.value; + canvas.addEventListener('mousedown', onMouseDownOnCanvas); + canvas.addEventListener('mousewheel', onMouseWheelOnCanvas); + } + function removeEventListenerToCanvas() { + const canvas = previewCanvas.value; + canvas.removeEventListener('mousedown', onMouseDownOnCanvas); + canvas.removeEventListener('mousewheel', onMouseWheelOnCanvas); + } + const onSizeChangedDebounced = (0, lodash_1.debounce)(() => { + if (!common.isShow()) + return; + initPreview().then(() => { + previewDirty.value = true; + }); + }, 50); + common.onSizeChanged = () => { + onSizeChangedDebounced(); + }; + const onPreviewChangeDebounced = (0, lodash_1.debounce)(async (dirty, type) => { + if (!common.isShow()) + return; + if (dirty && type !== 'position-changed') { + await initPreview(); + await updateMaterial(); + } + }, 50); + async function onInitPreview() { + if (!common.isShow() || !shader_graph_1.GraphAssetMgr.Instance.uuid) + return; + await initPreview(); + const { primitive, lightEnable } = props.config.details; + if (previewConfig.value.primitive !== primitive || + previewConfig.value.lightEnable !== lightEnable) { + previewConfig.value = { + primitive: primitive || BOX_MESH, + lightEnable: lightEnable, + }; + applyPreviewConfigToUI(); + } + await updateMaterial(); + } + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.SceneReady, onInitPreview); + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.SetGraphDataToForge, onInitPreview); + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.DirtyChanged, onPreviewChangeDebounced); + async function initPreview(force = false) { + if (!initPreviewDone.value || force) { + initPreviewDone.value = true; + await shader_graph_1.MessageMgr.Instance.callSceneMethod('initPreview', [previewConfig.value]); + // @ts-expect-error + const GlPreview = Editor._Module.require('PreviewExtends').default; + glPreview.value = new GlPreview('shader-graph-preview', 'query-shader-graph-preview-data'); + glPreview.value.init({ + width: previewCanvas.value.clientWidth, + height: previewCanvas.value.clientHeight, + }); + addEventListenerToCanvas(); + refreshPreview(); + } + } + common.onShow = async () => { + if (await shader_graph_1.MessageMgr.Instance.checkSceneReady()) { + await onInitPreview(); + } + }; + function reset() { + initPreviewDone.value = false; + initGL.value = false; + removeEventListenerToCanvas(); + cancelAnimationFrame(animationId.value); + } + const commonHide = common.hide; + common.hide = async () => { + commonHide(); + reset(); + await shader_graph_1.GraphConfigMgr.Instance.autoSave(); + }; + const commonShow = common.show; + common.show = async (position) => { + if (!(0, utils_1.validatePosition)(position)) { + const config = shader_graph_1.GraphConfigMgr.Instance.getFloatingWindowConfigByName(exports.DefaultConfig.key); + position = (0, utils_1.validatePosition)(config?.position) ? config?.position : exports.DefaultConfig.position; + } + commonShow(position); + }; + async function onClose() { + common.hide(); + } + async function onRefresh() { + reset(); + initGL.value = false; + await initPreview(true); + await updateMaterial(); + } + function applyPreviewConfigToUI() { + onLightChange(previewConfig.value.lightEnable, false); + } + function onLightChange(enabled, save = true) { + if (enabled) { + lightRef.value?.setAttribute('pressed', ''); + } + else { + lightRef.value?.removeAttribute('pressed'); + } + const { primitive } = previewConfig.value; + previewConfig.value = { + primitive: primitive, + lightEnable: enabled, + }; + updateConfigToPreview(previewConfig.value); + if (save) { + shader_graph_1.GraphConfigMgr.Instance.saveDetails(exports.DefaultConfig.key, previewConfig.value); + } + } + function onPrimitiveChange(event) { + callPreview('resetCamera'); + const target = event.target; + const { lightEnable } = previewConfig.value; + previewConfig.value = { + primitive: target.value, + lightEnable: lightEnable, + }; + updateConfigToPreview(previewConfig.value); + shader_graph_1.GraphConfigMgr.Instance.saveDetails(exports.DefaultConfig.key, previewConfig.value); + } + return { + ...common, + previewCanvas, + previewConfig, + loading, + onClose, + onRefresh, + lightRef, + onLightChange, + onPrimitiveChange, + }; + }, + template: (0, common_1.commonTemplate)({ + css: 'preview', + header: ` + + + `, + section: ` + + +
+ + +
+
+ + +
+ `, + footer: ``, + }), +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy9wcmV2aWV3L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxtQ0FBeUM7QUFDekMsNENBQXVEO0FBRXZELDJEQUFzQztBQUN0QyxzQ0FBa0Y7QUFDbEYsMENBQXVFO0FBQ3ZFLDhEQUFtSDtBQUVuSCxvQ0FBNEM7QUFFNUMsTUFBTSxRQUFRLEdBQUcsNENBQTRDLENBQUM7QUFFakQsUUFBQSxhQUFhLEdBQXNCO0lBQzVDLEdBQUcsRUFBRSxTQUFTO0lBQ2QsR0FBRyxFQUFFO1FBQ0QsSUFBSSxFQUFFLHFDQUFxQztRQUMzQyxJQUFJLEVBQUUsSUFBSTtRQUNWLE1BQU0sRUFBRSxFQUFFO0tBQ2I7SUFDRCxJQUFJLEVBQUU7UUFDRixLQUFLLEVBQUUsaUNBQWlDO1FBQ3hDLEtBQUssRUFBRSxPQUFPO1FBQ2QsTUFBTSxFQUFFLE9BQU87UUFDZixRQUFRLEVBQUUsT0FBTztRQUNqQixTQUFTLEVBQUUsT0FBTztRQUNsQixXQUFXLEVBQUUsS0FBSztLQUNyQjtJQUNELFFBQVEsRUFBRTtRQUNOLEtBQUssRUFBRSxNQUFNO1FBQ2IsTUFBTSxFQUFFLEdBQUc7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNKLE9BQU8sRUFBRSxJQUFJO1FBQ2IsSUFBSSxFQUFFLElBQUk7UUFDVixpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLE1BQU0sRUFBRSxnQ0FBcUIsQ0FBQyxNQUFNO0tBQ3ZDO0lBQ0QsT0FBTyxFQUFFO1FBQ0wsU0FBUyxFQUFFLFFBQVE7UUFDbkIsV0FBVyxFQUFFLElBQUk7S0FDcEI7Q0FDSixDQUFDO0FBRUYsU0FBZ0IsU0FBUztJQUNyQixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMscUJBQWEsQ0FB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QUFDO1lBQzNDLElBQUksSUFBSSxFQUFFO2dCQUNOLDZCQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxxQkFBYSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDL0U7UUFDTCxDQUFDO1FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxLQUFrQjtZQUN6QyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDM0IsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQTBCLENBQUM7WUFDaEQsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLGFBQWEsQ0FBQyxLQUFLLENBQUM7WUFDNUMsYUFBYSxDQUFDLEtBQUssR0FBRztnQkFDbEIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxLQUFLO2dCQUN2QixXQUFXLEVBQUUsV0FBVzthQUMzQixDQUFDO1lBQ0YscUJBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzNDLDZCQUFjLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxxQkFBYSxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEYsQ0FBQztRQUVELE9BQU87WUFDSCxHQUFHLE1BQU07WUFFVCxhQUFhO1lBQ2IsYUFBYTtZQUViLE9BQU87WUFFUCxPQUFPO1lBQ1AsU0FBUztZQUVULFFBQVE7WUFFUixhQUFhO1lBQ2IsaUJBQWlCO1NBQ3BCLENBQUM7SUFDTixDQUFDO0lBRUQsUUFBUSxFQUFFLElBQUEsdUJBQWMsRUFBQztRQUNyQixHQUFHLEVBQUUsU0FBUztRQUNkLE1BQU0sRUFBRTs7Ozs7OztTQU9QO1FBQ0QsT0FBTyxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXVCUjtRQUNELE1BQU0sRUFBRSxFQUFFO0tBQ2IsQ0FBQztDQUNMLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1lcmdlLCBkZWJvdW5jZSB9IGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBkZWZpbmVDb21wb25lbnQsIHJlZiB9IGZyb20gJ3Z1ZS9kaXN0L3Z1ZS5qcyc7XG5cbmltcG9ydCBCYXNlRmxvYXRXaW5kb3cgZnJvbSAnLi4vYmFzZSc7XG5pbXBvcnQgeyBjb21tb25FbWl0cywgY29tbW9uTG9naWMsIGNvbW1vblByb3BzLCBjb21tb25UZW1wbGF0ZSB9IGZyb20gJy4uL2NvbW1vbic7XG5pbXBvcnQgeyBGbG9hdFdpbmRvd0NvbmZpZywgRmxvYXRXaW5kb3dEcmFnVGFyZ2V0IH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuaW1wb3J0IHsgR3JhcGhEYXRhTWdyLCBNZXNzYWdlTWdyLCBHcmFwaENvbmZpZ01nciwgTWVzc2FnZVR5cGUsIEdyYXBoQXNzZXRNZ3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zaGFkZXItZ3JhcGgnO1xuaW1wb3J0IHsgUHJldmlld0NvbmZpZyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2NvbnRyaWJ1dGlvbnMvaW50ZXJuYWwnO1xuaW1wb3J0IHsgdmFsaWRhdGVQb3NpdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcblxuY29uc3QgQk9YX01FU0ggPSAnMTI2M2Q3NGMtODE2Ny00OTI4LTkxYTYtNGUyNjcyNDExZjQ3QGE4MDRhJztcblxuZXhwb3J0IGNvbnN0IERlZmF1bHRDb25maWc6IEZsb2F0V2luZG93Q29uZmlnID0ge1xuICAgIGtleTogJ3ByZXZpZXcnLFxuICAgIHRhYjoge1xuICAgICAgICBuYW1lOiAnaTE4bjpzaGFkZXItZ3JhcGgucHJldmlldy5tZW51X25hbWUnLFxuICAgICAgICBzaG93OiB0cnVlLFxuICAgICAgICBoZWlnaHQ6IDgwLFxuICAgIH0sXG4gICAgYmFzZToge1xuICAgICAgICB0aXRsZTogJ2kxOG46c2hhZGVyLWdyYXBoLnByZXZpZXcudGl0bGUnLFxuICAgICAgICB3aWR0aDogJzIyM3B4JyxcbiAgICAgICAgaGVpZ2h0OiAnMjI4cHgnLFxuICAgICAgICBtaW5XaWR0aDogJzIyM3B4JyxcbiAgICAgICAgbWluSGVpZ2h0OiAnMjI4cHgnLFxuICAgICAgICBkZWZhdWx0U2hvdzogZmFsc2UsXG4gICAgfSxcbiAgICBwb3NpdGlvbjoge1xuICAgICAgICByaWdodDogJzI4cHgnLFxuICAgICAgICBib3R0b206ICcwJyxcbiAgICB9LFxuICAgIGV2ZW50czoge1xuICAgICAgICByZXNpemVyOiB0cnVlLFxuICAgICAgICBkcmFnOiB0cnVlLFxuICAgICAgICBlbmFibGVBc3BlY3RSYXRpbzogdHJ1ZSxcbiAgICAgICAgdGFyZ2V0OiBGbG9hdFdpbmRvd0RyYWdUYXJnZXQuaGVhZGVyLFxuICAgIH0sXG4gICAgZGV0YWlsczoge1xuICAgICAgICBwcmltaXRpdmU6IEJPWF9NRVNILFxuICAgICAgICBsaWdodEVuYWJsZTogdHJ1ZSxcbiAgICB9LFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENvbmZpZygpIHtcbiAgICBjb25zdCBuZXdDb25maWcgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KERlZmF1bHRDb25maWcpKTtcbiAgICBjb25zdCBjb25maWcgPSBHcmFwaENvbmZpZ01nci5JbnN0YW5jZS5nZXRGbG9hdGluZ1dpbmRvd0NvbmZpZ0J5TmFtZShEZWZhdWx0Q29uZmlnLmtleSk7XG4gICAgaWYgKGNvbmZpZykge1xuICAgICAgICBuZXdDb25maWcuZGV0YWlscyA9IG1lcmdlKHt9LCBuZXdDb25maWcuZGV0YWlscywgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ld0NvbmZpZztcbn1cblxuZXhwb3J0IGNvbnN0IGNvbXBvbmVudCA9IGRlZmluZUNvbXBvbmVudCh7XG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBCYXNlRmxvYXRXaW5kb3csXG4gICAgfSxcblxuICAgIHByb3BzOiB7XG4gICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgIH0sXG5cbiAgICBlbWl0czogWy4uLmNvbW1vbkVtaXRzXSxcblxuICAgIHNldHVwKHByb3BzLCBjdHgpIHtcbiAgICAgICAgY29uc3QgY29tbW9uID0gY29tbW9uTG9naWMocHJvcHMsIGN0eCk7XG4gICAgICAgIGNvbnN0IGdsUHJldmlldyA9IHJlZigpO1xuICAgICAgICBjb25zdCBpbml0UHJldmlld0RvbmUgPSByZWYoZmFsc2UpO1xuICAgICAgICBjb25zdCBpbml0R0wgPSByZWYoZmFsc2UpO1xuICAgICAgICBjb25zdCBwcmV2aWV3RGlydHkgPSByZWYodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGxvYWRpbmcgPSByZWYodHJ1ZSk7XG4gICAgICAgIGNvbnN0IGFuaW1hdGlvbklkID0gcmVmKC0xKTtcbiAgICAgICAgY29uc3QgbGlnaHRSZWYgPSByZWY8SFRNTEVsZW1lbnQ+KCk7XG4gICAgICAgIGNvbnN0IHByZXZpZXdDYW52YXMgPSByZWYoKTtcbiAgICAgICAgY29uc3QgcHJldmlld0NvbmZpZyA9IHJlZjxQcmV2aWV3Q29uZmlnPih7XG4gICAgICAgICAgICBwcmltaXRpdmU6ICcnLFxuICAgICAgICAgICAgbGlnaHRFbmFibGU6IGZhbHNlLFxuICAgICAgICB9KTtcblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBjYWxsUHJldmlldyhmdW5jTmFtZTogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgICAgICAgICAgaWYgKCFpbml0UHJldmlld0RvbmUudmFsdWUpIHJldHVybjtcbiAgICAgICAgICAgIGF3YWl0IEVkaXRvci5NZXNzYWdlLnJlcXVlc3QoJ3NjZW5lJywgJ2NhbGwtcHJldmlldy1mdW5jdGlvbicsICdzaGFkZXItZ3JhcGgtcHJldmlldycsIGZ1bmNOYW1lLCAuLi5hcmdzKTtcbiAgICAgICAgICAgIHByZXZpZXdEaXJ0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiB1cGRhdGVDb25maWdUb1ByZXZpZXcoY29uZmlnOiBQcmV2aWV3Q29uZmlnKSB7XG4gICAgICAgICAgICBhd2FpdCBjYWxsUHJldmlldygnc2V0TGlnaHRFbmFibGUnLCBjb25maWcubGlnaHRFbmFibGUpO1xuICAgICAgICAgICAgYXdhaXQgY2FsbFByZXZpZXcoJ3NldFByaW1pdGl2ZScsIGNvbmZpZy5wcmltaXRpdmUpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gdXBkYXRlTWF0ZXJpYWwoKSB7XG4gICAgICAgICAgICBpZiAoIWluaXRQcmV2aWV3RG9uZS52YWx1ZSB8fCAhY29tbW9uLmlzU2hvdygpKSByZXR1cm47XG5cbiAgICAgICAgICAgIGxvYWRpbmcudmFsdWUgPSB0cnVlO1xuICAgICAgICAgICAgYXdhaXQgTWVzc2FnZU1nci5JbnN0YW5jZS5jYWxsU2NlbmVNZXRob2QoJ3VwZGF0ZU1hdGVyaWFsJywgW0dyYXBoRGF0YU1nci5JbnN0YW5jZS5nZXRDdXJyZW50R3JhcGhEYXRhKCldKTtcbiAgICAgICAgICAgIGxvYWRpbmcudmFsdWUgPSBmYWxzZTtcbiAgICAgICAgICAgIHByZXZpZXdEaXJ0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBhc3BlY3RSYXRpbyA9IC0xO1xuICAgICAgICBhc3luYyBmdW5jdGlvbiByZWZyZXNoUHJldmlldygpIHtcbiAgICAgICAgICAgIGlmIChwcmV2aWV3RGlydHkudmFsdWUpIHtcbiAgICAgICAgICAgICAgICBwcmV2aWV3RGlydHkudmFsdWUgPSBmYWxzZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHByZXZpZXdDYW52YXMudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKCFjYW52YXMpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gY2FudmFzLmNsaWVudFdpZHRoID09PSAwID8gY2FudmFzLnBhcmVudE5vZGUuY2xpZW50V2lkdGggOiBjYW52YXMuY2xpZW50V2lkdGg7XG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gd2lkdGg7XG5cbiAgICAgICAgICAgICAgICAvLyDnrYnmr5TnvKnmlL5cbiAgICAgICAgICAgICAgICBpZiAoY2FudmFzLndpZHRoICE9PSB3aWR0aCB8fCAhaW5pdEdMLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGluaXRHTC52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGdsUHJldmlldy52YWx1ZS5pbml0R0woY2FudmFzLCB7IHdpZHRoLCBoZWlnaHQgfSk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IGdsUHJldmlldy52YWx1ZS5yZXNpemVHTCh3aWR0aCwgaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGdsUHJldmlldy52YWx1ZS5xdWVyeVByZXZpZXdEYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGdsUHJldmlldy52YWx1ZS5kcmF3R0woZGF0YSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbklkLnZhbHVlKTtcbiAgICAgICAgICAgIGFuaW1hdGlvbklkLnZhbHVlID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICAgICAgICByZWZyZXNoUHJldmlldygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBhc3luYyBmdW5jdGlvbiBvbk1vdXNlRG93bk9uQ2FudmFzKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICBhd2FpdCBjYWxsUHJldmlldygnb25Nb3VzZURvd24nLCB7IHg6IGV2ZW50LngsIHk6IGV2ZW50LnksIGJ1dHRvbjogZXZlbnQuYnV0dG9uIH0pO1xuXG4gICAgICAgICAgICBhc3luYyBmdW5jdGlvbiBtb3VzZW1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBjYWxsUHJldmlldygnb25Nb3VzZU1vdmUnLCB7XG4gICAgICAgICAgICAgICAgICAgIG1vdmVtZW50WDogZXZlbnQubW92ZW1lbnRYLFxuICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudFk6IGV2ZW50Lm1vdmVtZW50WSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXN5bmMgZnVuY3Rpb24gbW91c2V1cChldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNhbGxQcmV2aWV3KCdvbk1vdXNlVXAnLCB7XG4gICAgICAgICAgICAgICAgICAgIHg6IGV2ZW50LngsXG4gICAgICAgICAgICAgICAgICAgIHk6IGV2ZW50LnksXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCBtb3VzZW1vdmUpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZXVwKTtcblxuICAgICAgICAgICAgICAgIHByZXZpZXdEaXJ0eS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW91c2Vtb3ZlKTtcbiAgICAgICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBtb3VzZXVwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIG9uTW91c2VXaGVlbE9uQ2FudmFzKGV2ZW50OiBXaGVlbEV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBzY2FsZSA9IGV2ZW50LmRlbHRhWSAqIDAuMDE7XG4gICAgICAgICAgICBhd2FpdCBjYWxsUHJldmlldygnc2V0Wm9vbScsIHNjYWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXJUb0NhbnZhcygpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHByZXZpZXdDYW52YXMudmFsdWU7XG4gICAgICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Nb3VzZURvd25PbkNhbnZhcyk7XG4gICAgICAgICAgICBjYW52YXMuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIG9uTW91c2VXaGVlbE9uQ2FudmFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIHJlbW92ZUV2ZW50TGlzdGVuZXJUb0NhbnZhcygpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHByZXZpZXdDYW52YXMudmFsdWU7XG4gICAgICAgICAgICBjYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgb25Nb3VzZURvd25PbkNhbnZhcyk7XG4gICAgICAgICAgICBjYW52YXMucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIG9uTW91c2VXaGVlbE9uQ2FudmFzKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9uU2l6ZUNoYW5nZWREZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoIWNvbW1vbi5pc1Nob3coKSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBpbml0UHJldmlldygpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgIHByZXZpZXdEaXJ0eS52YWx1ZSA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgNTApO1xuXG4gICAgICAgIGNvbW1vbi5vblNpemVDaGFuZ2VkID0gKCkgPT4ge1xuICAgICAgICAgICAgb25TaXplQ2hhbmdlZERlYm91bmNlZCgpO1xuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG9uUHJldmlld0NoYW5nZURlYm91bmNlZCA9IGRlYm91bmNlKGFzeW5jIChkaXJ0eTogYm9vbGVhbiwgdHlwZT86IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgaWYgKCFjb21tb24uaXNTaG93KCkpIHJldHVybjtcblxuICAgICAgICAgICAgaWYgKGRpcnR5ICYmIHR5cGUgIT09ICdwb3NpdGlvbi1jaGFuZ2VkJykge1xuICAgICAgICAgICAgICAgIGF3YWl0IGluaXRQcmV2aWV3KCk7XG4gICAgICAgICAgICAgICAgYXdhaXQgdXBkYXRlTWF0ZXJpYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgNTApO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIG9uSW5pdFByZXZpZXcoKSB7XG4gICAgICAgICAgICBpZiAoIWNvbW1vbi5pc1Nob3coKSB8fCAhR3JhcGhBc3NldE1nci5JbnN0YW5jZS51dWlkKSByZXR1cm47XG5cbiAgICAgICAgICAgIGF3YWl0IGluaXRQcmV2aWV3KCk7XG4gICAgICAgICAgICBjb25zdCB7IHByaW1pdGl2ZSwgbGlnaHRFbmFibGUgfSA9IHByb3BzLmNvbmZpZy5kZXRhaWxzITtcbiAgICAgICAgICAgIGlmIChwcmV2aWV3Q29uZmlnLnZhbHVlLnByaW1pdGl2ZSAhPT0gcHJpbWl0aXZlIHx8XG4gICAgICAgICAgICAgICAgcHJldmlld0NvbmZpZy52YWx1ZS5saWdodEVuYWJsZSAhPT0gbGlnaHRFbmFibGUpIHtcbiAgICAgICAgICAgICAgICBwcmV2aWV3Q29uZmlnLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgICAgICBwcmltaXRpdmU6IHByaW1pdGl2ZSB8fCBCT1hfTUVTSCxcbiAgICAgICAgICAgICAgICAgICAgbGlnaHRFbmFibGU6IGxpZ2h0RW5hYmxlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgYXBwbHlQcmV2aWV3Q29uZmlnVG9VSSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgdXBkYXRlTWF0ZXJpYWwoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UucmVnaXN0ZXIoTWVzc2FnZVR5cGUuU2NlbmVSZWFkeSwgb25Jbml0UHJldmlldyk7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UucmVnaXN0ZXIoTWVzc2FnZVR5cGUuU2V0R3JhcGhEYXRhVG9Gb3JnZSwgb25Jbml0UHJldmlldyk7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UucmVnaXN0ZXIoTWVzc2FnZVR5cGUuRGlydHlDaGFuZ2VkLCBvblByZXZpZXdDaGFuZ2VEZWJvdW5jZWQpO1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIGluaXRQcmV2aWV3KGZvcmNlID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmICghaW5pdFByZXZpZXdEb25lLnZhbHVlIHx8IGZvcmNlKSB7XG4gICAgICAgICAgICAgICAgaW5pdFByZXZpZXdEb25lLnZhbHVlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBhd2FpdCBNZXNzYWdlTWdyLkluc3RhbmNlLmNhbGxTY2VuZU1ldGhvZCgnaW5pdFByZXZpZXcnLCBbcHJldmlld0NvbmZpZy52YWx1ZV0pO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgICAgICAgICAgICBjb25zdCBHbFByZXZpZXcgPSBFZGl0b3IuX01vZHVsZS5yZXF1aXJlKCdQcmV2aWV3RXh0ZW5kcycpLmRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgZ2xQcmV2aWV3LnZhbHVlID0gbmV3IEdsUHJldmlldygnc2hhZGVyLWdyYXBoLXByZXZpZXcnLCAncXVlcnktc2hhZGVyLWdyYXBoLXByZXZpZXctZGF0YScpO1xuICAgICAgICAgICAgICAgIGdsUHJldmlldy52YWx1ZS5pbml0KHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHByZXZpZXdDYW52YXMudmFsdWUuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogcHJldmlld0NhbnZhcy52YWx1ZS5jbGllbnRIZWlnaHQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgYWRkRXZlbnRMaXN0ZW5lclRvQ2FudmFzKCk7XG4gICAgICAgICAgICAgICAgcmVmcmVzaFByZXZpZXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbW1vbi5vblNob3cgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgTWVzc2FnZU1nci5JbnN0YW5jZS5jaGVja1NjZW5lUmVhZHkoKSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IG9uSW5pdFByZXZpZXcoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBmdW5jdGlvbiByZXNldCgpIHtcbiAgICAgICAgICAgIGluaXRQcmV2aWV3RG9uZS52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgaW5pdEdMLnZhbHVlID0gZmFsc2U7XG4gICAgICAgICAgICByZW1vdmVFdmVudExpc3RlbmVyVG9DYW52YXMoKTtcbiAgICAgICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvbklkLnZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbW1vbkhpZGUgPSBjb21tb24uaGlkZTtcbiAgICAgICAgY29tbW9uLmhpZGUgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICBjb21tb25IaWRlKCk7XG4gICAgICAgICAgICByZXNldCgpO1xuICAgICAgICAgICAgYXdhaXQgR3JhcGhDb25maWdNZ3IuSW5zdGFuY2UuYXV0b1NhdmUoKTtcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjb21tb25TaG93ID0gY29tbW9uLnNob3c7XG4gICAgICAgIGNvbW1vbi5zaG93ID0gYXN5bmMgKHBvc2l0aW9uPzogeyB0b3A/OiBzdHJpbmc7IHJpZ2h0Pzogc3RyaW5nOyBsZWZ0Pzogc3RyaW5nOyBib3R0b20/OiBzdHJpbmcgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZVBvc2l0aW9uKHBvc2l0aW9uKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IEdyYXBoQ29uZmlnTWdyLkluc3RhbmNlLmdldEZsb2F0aW5nV2luZG93Q29uZmlnQnlOYW1lKERlZmF1bHRDb25maWcua2V5KTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHZhbGlkYXRlUG9zaXRpb24oY29uZmlnPy5wb3NpdGlvbikgPyBjb25maWc/LnBvc2l0aW9uIDogRGVmYXVsdENvbmZpZy5wb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbW1vblNob3cocG9zaXRpb24pO1xuICAgICAgICB9O1xuXG4gICAgICAgIGFzeW5jIGZ1bmN0aW9uIG9uQ2xvc2UoKSB7XG4gICAgICAgICAgICBjb21tb24uaGlkZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXN5bmMgZnVuY3Rpb24gb25SZWZyZXNoKCkge1xuICAgICAgICAgICAgcmVzZXQoKTtcbiAgICAgICAgICAgIGluaXRHTC52YWx1ZSA9IGZhbHNlO1xuICAgICAgICAgICAgYXdhaXQgaW5pdFByZXZpZXcodHJ1ZSk7XG4gICAgICAgICAgICBhd2FpdCB1cGRhdGVNYXRlcmlhbCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gYXBwbHlQcmV2aWV3Q29uZmlnVG9VSSgpIHtcbiAgICAgICAgICAgIG9uTGlnaHRDaGFuZ2UocHJldmlld0NvbmZpZy52YWx1ZS5saWdodEVuYWJsZSwgZmFsc2UpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25MaWdodENoYW5nZShlbmFibGVkOiBib29sZWFuLCBzYXZlID0gdHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBsaWdodFJlZi52YWx1ZT8uc2V0QXR0cmlidXRlKCdwcmVzc2VkJywgJycpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBsaWdodFJlZi52YWx1ZT8ucmVtb3ZlQXR0cmlidXRlKCdwcmVzc2VkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHsgcHJpbWl0aXZlIH0gPSBwcmV2aWV3Q29uZmlnLnZhbHVlO1xuICAgICAgICAgICAgcHJldmlld0NvbmZpZy52YWx1ZSA9IHtcbiAgICAgICAgICAgICAgICBwcmltaXRpdmU6IHByaW1pdGl2ZSxcbiAgICAgICAgICAgICAgICBsaWdodEVuYWJsZTogZW5hYmxlZCxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1cGRhdGVDb25maWdUb1ByZXZpZXcocHJldmlld0NvbmZpZy52YWx1ZSk7XG4gICAgICAgICAgICBpZiAoc2F2ZSkge1xuICAgICAgICAgICAgICAgIEdyYXBoQ29uZmlnTWdyLkluc3RhbmNlLnNhdmVEZXRhaWxzKERlZmF1bHRDb25maWcua2V5LCBwcmV2aWV3Q29uZmlnLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9uUHJpbWl0aXZlQ2hhbmdlKGV2ZW50OiBDdXN0b21FdmVudCkge1xuICAgICAgICAgICAgY2FsbFByZXZpZXcoJ3Jlc2V0Q2FtZXJhJyk7XG4gICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHsgbGlnaHRFbmFibGUgfSA9IHByZXZpZXdDb25maWcudmFsdWU7XG4gICAgICAgICAgICBwcmV2aWV3Q29uZmlnLnZhbHVlID0ge1xuICAgICAgICAgICAgICAgIHByaW1pdGl2ZTogdGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICAgIGxpZ2h0RW5hYmxlOiBsaWdodEVuYWJsZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB1cGRhdGVDb25maWdUb1ByZXZpZXcocHJldmlld0NvbmZpZy52YWx1ZSk7XG4gICAgICAgICAgICBHcmFwaENvbmZpZ01nci5JbnN0YW5jZS5zYXZlRGV0YWlscyhEZWZhdWx0Q29uZmlnLmtleSwgcHJldmlld0NvbmZpZy52YWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29tbW9uLFxuXG4gICAgICAgICAgICBwcmV2aWV3Q2FudmFzLFxuICAgICAgICAgICAgcHJldmlld0NvbmZpZyxcblxuICAgICAgICAgICAgbG9hZGluZyxcblxuICAgICAgICAgICAgb25DbG9zZSxcbiAgICAgICAgICAgIG9uUmVmcmVzaCxcblxuICAgICAgICAgICAgbGlnaHRSZWYsXG5cbiAgICAgICAgICAgIG9uTGlnaHRDaGFuZ2UsXG4gICAgICAgICAgICBvblByaW1pdGl2ZUNoYW5nZSxcbiAgICAgICAgfTtcbiAgICB9LFxuXG4gICAgdGVtcGxhdGU6IGNvbW1vblRlbXBsYXRlKHtcbiAgICAgICAgY3NzOiAncHJldmlldycsXG4gICAgICAgIGhlYWRlcjogYFxuPHVpLWxhYmVsIGNsYXNzPVwidGl0bGUtbGFiZWxcIiB2YWx1ZT1cImkxOG46c2hhZGVyLWdyYXBoLnByZXZpZXcudGl0bGVcIj48L3VpLWxhYmVsPlxuPHVpLWljb24gY2xhc3M9XCJjbG9zZVwiIHRyYW5zcGFyZW50XG4gIHRvb2x0aXA9XCJpMThuOnNoYWRlci1ncmFwaC5wcmV2aWV3LmNsb3NlLnRvb2x0aXBcIlxuICB2YWx1ZT1cImNvbGxhcHNlLXJpZ2h0XCJcbiAgQGNsaWNrPVwib25DbG9zZVwiXG4+PC91aS1pY29uPlxuICAgICAgICBgLFxuICAgICAgICBzZWN0aW9uOiBgXG4gICAgICAgICAgICA8Y2FudmFzIHJlZj1cInByZXZpZXdDYW52YXNcIj48L2NhbnZhcz5cbiAgICAgICAgICAgIDx1aS1sb2FkaW5nIGNsYXNzPVwibG9hZGluZ1wiIHYtc2hvdz1cImxvYWRpbmdcIj48L3VpLWxvYWRpbmc+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidG9vbHNcIj5cbiAgICAgICAgICAgICAgPHVpLWljb24gY2xhc3M9XCJsaWdodFwiXG4gICAgICAgICAgICAgICAgcmVmPVwibGlnaHRSZWZcIlxuICAgICAgICAgICAgICAgIHZhbHVlPVwic3BvdC1saWdodFwiXG4gICAgICAgICAgICAgICAgQG1vdXNlZG93bi5zdG9wPVwib25MaWdodENoYW5nZShwcmV2aWV3Q29uZmlnLmxpZ2h0RW5hYmxlPSFwcmV2aWV3Q29uZmlnLmxpZ2h0RW5hYmxlKVwiXG4gICAgICAgICAgICAgID48L3VpLWljb24+XG4gICAgICAgICAgICAgIDx1aS1pY29uXG4gICAgICAgICAgICAgICAgdHlwZT1cImljb25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVmcmVzaFwiXG4gICAgICAgICAgICAgICAgdmFsdWU9XCJyZWZyZXNoXCJcbiAgICAgICAgICAgICAgICBAbW91c2Vkb3duLnN0b3A9XCJvblJlZnJlc2hcIiBcbiAgICAgICAgICAgICAgPjwvdWktaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByaW1pdGl2ZS1ncm91cFwiPlxuICAgICAgICAgICAgICAgIDx1aS1sYWJlbCBzbG90PVwibGFiZWxcIiB2YWx1ZT1cImkxOG46c2hhZGVyLWdyYXBoLnByZXZpZXcubWVzaFwiPjwvdWktbGFiZWw+XG4gICAgICAgICAgICAgICAgPHVpLWFzc2V0IHNsb3Q9XCJjb250ZW50XCIgZHJvcHBhYmxlPVwiY2MuTWVzaFwiIFxuICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJwcmV2aWV3Q29uZmlnLnByaW1pdGl2ZVwiXG4gICAgICAgICAgICAgICAgICAgIEBjaGFuZ2Uuc3RvcD1cIm9uUHJpbWl0aXZlQ2hhbmdlXCJcbiAgICAgICAgICAgICAgICA+PC91aS1hc3NldD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICBgLFxuICAgICAgICBmb290ZXI6IGBgLFxuICAgIH0pLFxufSk7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/components/float-window/utils.js b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/utils.js new file mode 100644 index 0000000..ce26435 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/components/float-window/utils.js @@ -0,0 +1,102 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.convertMenuData = exports.filterMenuByKeyword = exports.getTitleBarHeight = exports.getBoundingClientRect = exports.validatePosition = void 0; +function validatePosition(position) { + return !(!position || ((position.left !== undefined && position.left === '') || + (position.right !== undefined && position.right === '') || + (position.top !== undefined && position.top === '') || + (position.bottom !== undefined && position.bottom === ''))); +} +exports.validatePosition = validatePosition; +function getBoundingClientRect(target) { + if (document.body.getAttribute('name') === 'sub') { + return { + left: target.clientLeft, + right: target.clientLeft + target.clientWidth, + top: target.clientTop, + bottom: target.clientTop + target.clientHeight, + width: target.clientWidth, + height: target.clientHeight, + }; + } + return target.getBoundingClientRect(); +} +exports.getBoundingClientRect = getBoundingClientRect; +/** + * 获取 title bar 的高度 + */ +function getTitleBarHeight() { + let titleBarHeight = 25; // 系统 titleBar 的高度 + if (document.body.getAttribute('name') === 'sub') { + // 窗口 title 的高度 + titleBarHeight += 50; + } + return titleBarHeight; +} +exports.getTitleBarHeight = getTitleBarHeight; +function filterMenuByKeyword(tree, keyword) { + const result = { + firstSelect: null, + filterTree: [], + }; + const keywordLowerCase = keyword.toLowerCase(); + function filterRecursive(menuItems) { + for (const item of menuItems) { + item.show = false; + const text = item.detail.value.toLowerCase(); + if (item.children.length === 0 && + (text.startsWith(keywordLowerCase) || text.includes(keywordLowerCase))) { + item.show = true; + let target = item.parent; + while (target) { + if (target.show) + break; + target.show = true; + target = target.parent; + } + } + if (item.children && item.children.length > 0) { + filterRecursive(item.children); + } + } + } + filterRecursive(tree); + const list = []; + function filterItems(menuItems) { + menuItems = menuItems.filter((item) => { + if (item.show && item.children.length === 0) { + list.push(item); + } + return item.show; + }); + for (const menuItem of menuItems) { + menuItem.children = filterItems(menuItem.children); + } + return menuItems; + } + return { + filterTree: filterItems(tree), + firstSelect: list[0], + }; +} +exports.filterMenuByKeyword = filterMenuByKeyword; +function convertMenuData(menuData, fold, parent) { + return menuData.map((item) => { + const submenu = item.submenu || []; + const itemMenu = { + parent: parent || null, + detail: { + addOptions: item.addOptions, + value: item.label, + }, + show: true, + fold: fold, + showArrow: submenu.length > 0, + children: [], + }; + itemMenu.children = convertMenuData(submenu, fold, itemMenu); + return itemMenu; + }); +} +exports.convertMenuData = convertMenuData; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9jb21wb25lbnRzL2Zsb2F0LXdpbmRvdy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFjQSxTQUFnQixnQkFBZ0IsQ0FBQyxRQUE0RTtJQUN6RyxPQUFPLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxDQUNsQixDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQ3JELENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUM7UUFDdkQsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxRQUFRLENBQUMsR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNuRCxDQUFDLFFBQVEsQ0FBQyxNQUFNLEtBQUssU0FBUyxJQUFJLFFBQVEsQ0FBQyxNQUFNLEtBQUssRUFBRSxDQUFDLENBQzVELENBQUMsQ0FBQztBQUNQLENBQUM7QUFQRCw0Q0FPQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLE1BQW1CO0lBQ3JELElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzlDLE9BQU87WUFDSCxJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDdkIsS0FBSyxFQUFFLE1BQU0sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVc7WUFDN0MsR0FBRyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1lBQ3JCLE1BQU0sRUFBRSxNQUFNLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxZQUFZO1lBQzlDLEtBQUssRUFBRSxNQUFNLENBQUMsV0FBVztZQUN6QixNQUFNLEVBQUUsTUFBTSxDQUFDLFlBQVk7U0FDOUIsQ0FBQztLQUNMO0lBQ0QsT0FB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LENBQUM7UUFDbkMsTUFBTSxRQUFRLEdBQWE7WUFDdkIsTUFBTSxFQUFFLE1BQU0sSUFBSSxJQUFJO1lBQ3RCLE1BQU0sRUFBRTtnQkFDSixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVc7Z0JBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBTTthQUNyQjtZQUNELElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixTQUFTLEVBQUUsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQzdCLFFBQVEsRUFBRSxFQUFFO1NBQ2YsQ0FBQztRQUNGLFFBQVEsQ0FBQyxRQUFRLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDN0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBakJELDBDQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEdyYXBoRWRpdG9yQWRkT3B0aW9ucywgTWVudVRlbXBsYXRlSXRlbSB9IGZyb20gJy4uLy4uLy4uLy4uL3NoYWRlci1ncmFwaCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJlZURhdGEge1xuICAgIHBhcmVudDogVHJlZURhdGEgfCBudWxsLFxuICAgIGRldGFpbDoge1xuICAgICAgICBhZGRPcHRpb25zOiBHcmFwaEVkaXRvckFkZE9wdGlvbnMsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgfSxcbiAgICBzaG93OiBib29sZWFuLFxuICAgIGZvbGQ6IGJvb2xlYW4sXG4gICAgc2hvd0Fycm93OiBib29sZWFuLFxuICAgIGNoaWxkcmVuOiBUcmVlRGF0YVtdLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQb3NpdGlvbihwb3NpdGlvbj86IHsgdG9wPzogc3RyaW5nOyByaWdodD86IHN0cmluZzsgbGVmdD86IHN0cmluZzsgYm90dG9tPzogc3RyaW5nOyB9KSB7XG4gICAgcmV0dXJuICEoIXBvc2l0aW9uIHx8IChcbiAgICAgICAgKHBvc2l0aW9uLmxlZnQgIT09IHVuZGVmaW5lZCAmJiBwb3NpdGlvbi5sZWZ0ID09PSAnJykgfHxcbiAgICAgICAgKHBvc2l0aW9uLnJpZ2h0ICE9PSB1bmRlZmluZWQgJiYgcG9zaXRpb24ucmlnaHQgPT09ICcnKSB8fFxuICAgICAgICAocG9zaXRpb24udG9wICE9PSB1bmRlZmluZWQgJiYgcG9zaXRpb24udG9wID09PSAnJykgfHxcbiAgICAgICAgKHBvc2l0aW9uLmJvdHRvbSAhPT0gdW5kZWZpbmVkICYmIHBvc2l0aW9uLmJvdHRvbSA9PT0gJycpXG4gICAgKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QodGFyZ2V0OiBIVE1MRWxlbWVudCkge1xuICAgIGlmIChkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnbmFtZScpID09PSAnc3ViJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbGVmdDogdGFyZ2V0LmNsaWVudExlZnQsXG4gICAgICAgICAgICByaWdodDogdGFyZ2V0LmNsaWVudExlZnQgKyB0YXJnZXQuY2xpZW50V2lkdGgsXG4gICAgICAgICAgICB0b3A6IHRhcmdldC5jbGllbnRUb3AsXG4gICAgICAgICAgICBib3R0b206IHRhcmdldC5jbGllbnRUb3AgKyB0YXJnZXQuY2xpZW50SGVpZ2h0LFxuICAgICAgICAgICAgd2lkdGg6IHRhcmdldC5jbGllbnRXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogdGFyZ2V0LmNsaWVudEhlaWdodCxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbn1cblxuLyoqXG4gKiDojrflj5YgdGl0bGUgYmFyIOeahOmrmOW6plxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGl0bGVCYXJIZWlnaHQoKSB7XG4gICAgbGV0IHRpdGxlQmFySGVpZ2h0ID0gMjU7Ly8g57O757ufIHRpdGxlQmFyIOeahOmrmOW6plxuICAgIGlmIChkb2N1bWVudC5ib2R5LmdldEF0dHJpYnV0ZSgnbmFtZScpID09PSAnc3ViJykge1xuICAgICAgICAvLyDnqpflj6MgdGl0bGUg55qE6auY5bqmXG4gICAgICAgIHRpdGxlQmFySGVpZ2h0ICs9IDUwO1xuICAgIH1cbiAgICByZXR1cm4gdGl0bGVCYXJIZWlnaHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJNZW51QnlLZXl3b3JkKHRyZWU6IFRyZWVEYXRhW10sIGtleXdvcmQ6IHN0cmluZyk6IHsgZmlyc3RTZWxlY3Q6IFRyZWVEYXRhIHwgbnVsbCwgZmlsdGVyVHJlZTogVHJlZURhdGFbXSB9IHtcbiAgICBjb25zdCByZXN1bHQ6IHsgZmlyc3RTZWxlY3Q6IFRyZWVEYXRhIHwgbnVsbCwgZmlsdGVyVHJlZTogVHJlZURhdGFbXSB9ID0ge1xuICAgICAgICBmaXJzdFNlbGVjdDogbnVsbCxcbiAgICAgICAgZmlsdGVyVHJlZTogW10sXG4gICAgfTtcblxuICAgIGNvbnN0IGtleXdvcmRMb3dlckNhc2UgPSBrZXl3b3JkLnRvTG93ZXJDYXNlKCk7XG4gICAgZnVuY3Rpb24gZmlsdGVyUmVjdXJzaXZlKG1lbnVJdGVtczogVHJlZURhdGFbXSkge1xuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbWVudUl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtLnNob3cgPSBmYWxzZTtcblxuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGl0ZW0uZGV0YWlsLnZhbHVlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBpZiAoaXRlbS5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICAgICAgICAodGV4dC5zdGFydHNXaXRoKGtleXdvcmRMb3dlckNhc2UpIHx8IHRleHQuaW5jbHVkZXMoa2V5d29yZExvd2VyQ2FzZSkpKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5zaG93ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0gaXRlbS5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHRhcmdldCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LnNob3cpIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQuc2hvdyA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldCA9IHRhcmdldC5wYXJlbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4gJiYgaXRlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyUmVjdXJzaXZlKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmlsdGVyUmVjdXJzaXZlKHRyZWUpO1xuXG4gICAgY29uc3QgbGlzdDogVHJlZURhdGFbXSA9IFtdO1xuICAgIGZ1bmN0aW9uIGZpbHRlckl0ZW1zKG1lbnVJdGVtczogVHJlZURhdGFbXSkge1xuICAgICAgICBtZW51SXRlbXMgPSBtZW51SXRlbXMuZmlsdGVyKChpdGVtOiBUcmVlRGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uc2hvdyAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBpdGVtLnNob3c7XG4gICAgICAgIH0pO1xuICAgICAgICBmb3IgKGNvbnN0IG1lbnVJdGVtIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgbWVudUl0ZW0uY2hpbGRyZW4gPSBmaWx0ZXJJdGVtcyhtZW51SXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBmaWx0ZXJUcmVlOiBmaWx0ZXJJdGVtcyh0cmVlKSxcbiAgICAgICAgZmlyc3RTZWxlY3Q6IGxpc3RbMF0sXG4gICAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRNZW51RGF0YShtZW51RGF0YTogTWVudVRlbXBsYXRlSXRlbVtdLCBmb2xkOiBib29sZWFuLCBwYXJlbnQ/OiBUcmVlRGF0YSk6IFRyZWVEYXRhW10ge1xuICAgIHJldHVybiBtZW51RGF0YS5tYXAoKGl0ZW06IE1lbnVUZW1wbGF0ZUl0ZW0pID0+IHtcbiAgICAgICAgY29uc3Qgc3VibWVudSA9IGl0ZW0uc3VibWVudSB8fCBbXTtcbiAgICAgICAgY29uc3QgaXRlbU1lbnU6IFRyZWVEYXRhID0ge1xuICAgICAgICAgICAgcGFyZW50OiBwYXJlbnQgfHwgbnVsbCxcbiAgICAgICAgICAgIGRldGFpbDoge1xuICAgICAgICAgICAgICAgIGFkZE9wdGlvbnM6IGl0ZW0uYWRkT3B0aW9ucyEsXG4gICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0ubGFiZWwhLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNob3c6IHRydWUsXG4gICAgICAgICAgICBmb2xkOiBmb2xkLFxuICAgICAgICAgICAgc2hvd0Fycm93OiBzdWJtZW51Lmxlbmd0aCA+IDAsXG4gICAgICAgICAgICBjaGlsZHJlbjogW10sXG4gICAgICAgIH07XG4gICAgICAgIGl0ZW1NZW51LmNoaWxkcmVuID0gY29udmVydE1lbnVEYXRhKHN1Ym1lbnUsIGZvbGQsIGl0ZW1NZW51KTtcbiAgICAgICAgcmV0dXJuIGl0ZW1NZW51O1xuICAgIH0pO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/float-windows.js b/extensions/shader-graph/dist/panels/shader-graph/float-windows.js new file mode 100644 index 0000000..85ad789 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/float-windows.js @@ -0,0 +1,104 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.floatWindowsLogic = void 0; +const vue_js_1 = require("vue/dist/vue.js"); +const float_window_1 = require("./components/float-window"); +const shader_graph_1 = require("../../shader-graph"); +const vue_1 = require("vue"); +const floatWindowsLogic = (props, ctx) => { + const tabRefs = (0, vue_js_1.ref)([]); + const floatWindowRefs = (0, vue_js_1.ref)([]); + const pressTabRefs = new Map(); + const floatWindowMap = (0, float_window_1.getFloatWindowMap)(); + const floatWindowConfigList = (0, vue_js_1.ref)([]); + function onFloatWindowConfigChanged() { + (0, float_window_1.updateFloatWindowConfigs)().then((configs) => { + floatWindowConfigList.value = configs; + }); + } + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.AssetLoaded, () => { + initFloatWindowConfigs(); + }); + (0, vue_js_1.onMounted)(() => { + shader_graph_1.MessageMgr.Instance.register([ + shader_graph_1.MessageType.FloatWindowConfigChanged, + ], onFloatWindowConfigChanged); + }); + (0, vue_js_1.onUnmounted)(() => { + shader_graph_1.MessageMgr.Instance.unregister([ + shader_graph_1.MessageType.FloatWindowConfigChanged, + ], onFloatWindowConfigChanged); + }); + function getFloatWindowByKey(key) { + return floatWindowMap.get(key) ?? undefined; + } + function initFloatWindowConfigs() { + (0, float_window_1.updateFloatWindowConfigs)().then((configs) => { + floatWindowConfigList.value = configs; + (0, vue_1.nextTick)(() => { + floatWindowRefs.value.forEach((floatWindowRef) => { + shader_graph_1.GraphConfigMgr.Instance.addFloatWindow(floatWindowRef.config.key, floatWindowRef.$el); + }); + floatWindowConfigList.value.forEach((config, index) => { + if (config.base.defaultShow || config.details?.show) { + pressTab(tabRefs.value[index], floatWindowRefs.value[index], config.key); + } + else { + releaseTab(floatWindowRefs.value[index]); + } + }); + }); + }); + } + function pressTab(tabRef, floatWindowRef, key) { + if (tabRef && floatWindowRef) { + floatWindowRef.show(); + pressTabRefs.set(key, tabRef); + tabRef.setAttribute('pressed', ''); + } + } + function releaseTab(floatWindowRef) { + floatWindowRef.hide(); + onHideFloatWindow(floatWindowRef.config.key); + } + ///// 右边 tab 菜单 + function togglePressTab(key, index) { + // 当前按下的 tab + const tabRef = tabRefs.value[index]; + const floatWindowRef = floatWindowRefs.value[index]; + if (tabRef && floatWindowRef) { + if (tabRef.getAttribute('pressed') !== null) { + releaseTab(floatWindowRef); + } + else { + pressTab(tabRef, floatWindowRef, key); + } + } + } + function getStyle(tab) { + const style = {}; + if (tab.height !== undefined) { + style.height = tab.height + 'px'; + } + return style; + } + function onHideFloatWindow(key) { + const tabRef = pressTabRefs.get(key); + if (tabRef) { + tabRef.removeAttribute('pressed'); + pressTabRefs.delete(key); + } + } + ///// + return { + tabRefs, + floatWindowRefs, + floatWindowConfigList, + onHideFloatWindow, + togglePressTab, + getFloatWindowByKey, + getStyle, + }; +}; +exports.floatWindowsLogic = floatWindowsLogic; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmxvYXQtd2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYW5lbHMvc2hhZGVyLWdyYXBoL2Zsb2F0LXdpbmRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsNENBQThEO0FBRTlELDREQU1tQztBQUNuQyxxREFBNkU7QUFDN0UsNkJBQStCO0FBRXhCLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFVLEVBQUUsR0FBcUMsRUFBRSxFQUFFO0lBQ25GLE1BQU0sT0FBTyxHQUFHLElBQUEsWUFBRyxFQUFnQixFQUFFLENBQUMsQ0FBQztJQUN2QyxNQUFNLGVBQWUsR0FBRyxJQUFBLFlBQUcsRUFBdUIsRUFBRSxDQUFDLENBQUM7SUFDdEQsTUFBTSxZQUFZLEdBQTZCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDekQsTUFBTSxjQUFjLEdBQUcsSUFBQSxnQ0FBaUIsR0FBRSxDQUFDO0lBQzNDLE1BQU0scUJBQXFCLEdBQUcsSUFBQSxZQUFHLEVBQXNCLEVBQUUsQ0FBQyxDQUFDO0lBRTNELFNBQVMsMEJBQTBCO1FBQy9CLElBQUEsdUNBQXdCLEdBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUE0QixFQUFFLEVBQUU7WUFDN0QscUJBQXFCLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQztRQUMxQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCx5QkFBVSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsMEJBQVcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFO1FBQ3ZELHNCQUFzQixFQUFFLENBQUM7SUFDN0IsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFBLGtCQUFTLEVBQUMsR0FBRyxFQUFFO1FBQ1gseUJBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQ3pCLDBCQUFXLENBQUMsd0JBQXdCO1NBQ3ZDLEVBQUUsMEJBQTBCLENBQUMsQ0FBQztJQUNuQyxDQUFDLENBQUMsQ0FBQztJQUVILElBQUEs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RyxJQUFJLENBQUM7U0FDcEM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsU0FBUyxpQkFBaUIsQ0FBQyxHQUFXO1FBQ2xDLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxNQUFNLEVBQUU7WUFDUixNQUFNLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLFlBQVksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDO0lBQ0QsS0FBSztJQUVMLE9BQU87UUFDSCxPQUFPO1FBQ1AsZUFBZTtRQUNmLHFCQUFxQjtRQUVyQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLG1CQUFtQjtRQUVuQixRQUFRO0tBQ1gsQ0FBQztBQUNOLENBQUMsQ0FBQztBQTNHVyxRQUFBLGlCQUFpQixxQkEyRzVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2V0dXBDb250ZXh0IH0gZnJvbSAndnVlL3R5cGVzL3YzLXNldHVwLWNvbnRleHQnO1xuaW1wb3J0IHsgcmVmLCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkIH0gZnJvbSAndnVlL2Rpc3QvdnVlLmpzJztcblxuaW1wb3J0IHtcbiAgICBGbG9hdFdpbmRvdyxcbiAgICBGbG9hdFdpbmRvd0NvbmZpZyxcbiAgICBGbG9hdFdpbmRvd1RhYixcbiAgICBnZXRGbG9hdFdpbmRvd01hcCxcbiAgICB1cGRhdGVGbG9hdFdpbmRvd0NvbmZpZ3MsXG59IGZyb20gJy4vY29tcG9uZW50cy9mbG9hdC13aW5kb3cnO1xuaW1wb3J0IHsgR3JhcGhDb25maWdNZ3IsIE1lc3NhZ2VNZ3IsIE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi4vLi4vc2hhZGVyLWdyYXBoJztcbmltcG9ydCB7IG5leHRUaWNrIH0gZnJvbSAndnVlJztcblxuZXhwb3J0IGNvbnN0IGZsb2F0V2luZG93c0xvZ2ljID0gKHByb3BzOiB7IH0sIGN0eDogU2V0dXBDb250ZXh0IHwgU2V0dXBDb250ZXh0PGFueT4pID0+IHtcbiAgICBjb25zdCB0YWJSZWZzID0gcmVmPEhUTUxFbGVtZW50W10+KFtdKTtcbiAgICBjb25zdCBmbG9hdFdpbmRvd1JlZnMgPSByZWY8dHlwZW9mIEZsb2F0V2luZG93W10+KFtdKTtcbiAgICBjb25zdCBwcmVzc1RhYlJlZnM6IE1hcDxzdHJpbmcsIEhUTUxFbGVtZW50PiA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBmbG9hdFdpbmRvd01hcCA9IGdldEZsb2F0V2luZG93TWFwKCk7XG4gICAgY29uc3QgZmxvYXRXaW5kb3dDb25maWdMaXN0ID0gcmVmPEZsb2F0V2luZG93Q29uZmlnW10+KFtdKTtcblxuICAgIGZ1bmN0aW9uIG9uRmxvYXRXaW5kb3dDb25maWdDaGFuZ2VkKCkge1xuICAgICAgICB1cGRhdGVGbG9hdFdpbmRvd0NvbmZpZ3MoKS50aGVuKChjb25maWdzOiBGbG9hdFdpbmRvd0NvbmZpZ1tdKSA9PiB7XG4gICAgICAgICAgICBmbG9hdFdpbmRvd0NvbmZpZ0xpc3QudmFsdWUgPSBjb25maWdzO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkFzc2V0TG9hZGVkLCAoKSA9PiB7XG4gICAgICAgIGluaXRGbG9hdFdpbmRvd0NvbmZpZ3MoKTtcbiAgICB9KTtcblxuICAgIG9uTW91bnRlZCgoKSA9PiB7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UucmVnaXN0ZXIoW1xuICAgICAgICAgICAgTWVzc2FnZVR5cGUuRmxvYXRXaW5kb3dDb25maWdDaGFuZ2VkLFxuICAgICAgICBdLCBvbkZsb2F0V2luZG93Q29uZmlnQ2hhbmdlZCk7XG4gICAgfSk7XG5cbiAgICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UudW5yZWdpc3RlcihbXG4gICAgICAgICAgICBNZXNzYWdlVHlwZS5GbG9hdFdpbmRvd0NvbmZpZ0NoYW5nZWQsXG4gICAgICAgIF0sIG9uRmxvYXRXaW5kb3dDb25maWdDaGFuZ2VkKTtcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIGdldEZsb2F0V2luZG93QnlLZXkoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIGZsb2F0V2luZG93TWFwLmdldChrZXkpID8/IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0RmxvYXRXaW5kb3dDb25maWdzKCkge1xuICAgICAgICB1cGRhdGVGbG9hdFdpbmRvd0NvbmZpZ3MoKS50aGVuKChjb25maWdzOiBGbG9hdFdpbmRvd0NvbmZpZ1tdKSA9PiB7XG4gICAgICAgICAgICBmbG9hdFdpbmRvd0NvbmZpZ0xpc3QudmFsdWUgPSBjb25maWdzO1xuXG4gICAgICAgICAgICBuZXh0VGljaygoKSA9PiB7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWZzLnZhbHVlLmZvckVhY2goKGZsb2F0V2luZG93UmVmKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIEdyYXBoQ29uZmlnTWdyLkluc3RhbmNlLmFkZEZsb2F0V2luZG93KGZsb2F0V2luZG93UmVmLmNvbmZpZy5rZXksIGZsb2F0V2luZG93UmVmLiRlbCk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgZmxvYXRXaW5kb3dDb25maWdMaXN0LnZhbHVlLmZvckVhY2goKGNvbmZpZywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZy5iYXNlLmRlZmF1bHRTaG93IHx8IGNvbmZpZy5kZXRhaWxzPy5zaG93KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVzc1RhYih0YWJSZWZzLnZhbHVlW2luZGV4XSwgZmxvYXRXaW5kb3dSZWZzLnZhbHVlW2luZGV4XSwgY29uZmlnLmtleSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlVGFiKGZsb2F0V2luZG93UmVmcy52YWx1ZVtpbmRleF0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcHJlc3NUYWIodGFiUmVmOiBIVE1MRWxlbWVudCwgZmxvYXRXaW5kb3dSZWY6IHR5cGVvZiBGbG9hdFdpbmRvdywga2V5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRhYlJlZiAmJiBmbG9hdFdpbmRvd1JlZikge1xuICAgICAgICAgICAgZmxvYXRXaW5kb3dSZWYuc2hvdygpO1xuICAgICAgICAgICAgcHJlc3NUYWJSZWZzLnNldChrZXksIHRhYlJlZik7XG4gICAgICAgICAgICB0YWJSZWYuc2V0QXR0cmlidXRlKCdwcmVzc2VkJywgJycpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVsZWFzZVRhYihmbG9hdFdpbmRvd1JlZjogdHlwZW9mIEZsb2F0V2luZG93KSB7XG4gICAgICAgIGZsb2F0V2luZG93UmVmLmhpZGUoKTtcbiAgICAgICAgb25IaWRlRmxvYXRXaW5kb3coZmxvYXRXaW5kb3dSZWYuY29uZmlnLmtleSk7XG4gICAgfVxuXG4gICAgLy8vLy8g5Y+z6L65IHRhYiDoj5zljZVcbiAgICBmdW5jdGlvbiB0b2dnbGVQcmVzc1RhYihrZXk6IHN0cmluZywgaW5kZXg6IG51bWJlcikge1xuICAgICAgICAvLyDlvZPliY3mjInkuIvnmoQgdGFiXG4gICAgICAgIGNvbnN0IHRhYlJlZiA9IHRhYlJlZnMudmFsdWVbaW5kZXhdO1xuICAgICAgICBjb25zdCBmbG9hdFdpbmRvd1JlZiA9IGZsb2F0V2luZG93UmVmcy52YWx1ZVtpbmRleF07XG4gICAgICAgIGlmICh0YWJSZWYgJiYgZmxvYXRXaW5kb3dSZWYpIHtcbiAgICAgICAgICAgIGlmICh0YWJSZWYuZ2V0QXR0cmlidXRlKCdwcmVzc2VkJykgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZWxlYXNlVGFiKGZsb2F0V2luZG93UmVmKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcHJlc3NUYWIodGFiUmVmLCBmbG9hdFdpbmRvd1JlZiwga2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldFN0eWxlKHRhYjogRmxvYXRXaW5kb3dUYWIpIHtcbiAgICAgICAgY29uc3Qgc3R5bGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgaWYgKHRhYi5oZWlnaHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgc3R5bGUuaGVpZ2h0ID0gdGFiLmhlaWdodCArICdweCc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHN0eWxlO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIG9uSGlkZUZsb2F0V2luZG93KGtleTogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IHRhYlJlZiA9IHByZXNzVGFiUmVmcy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKHRhYlJlZikge1xuICAgICAgICAgICAgdGFiUmVmLnJlbW92ZUF0dHJpYnV0ZSgncHJlc3NlZCcpO1xuICAgICAgICAgICAgcHJlc3NUYWJSZWZzLmRlbGV0ZShrZXkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vLy8vXG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWJSZWZzLFxuICAgICAgICBmbG9hdFdpbmRvd1JlZnMsXG4gICAgICAgIGZsb2F0V2luZG93Q29uZmlnTGlzdCxcblxuICAgICAgICBvbkhpZGVGbG9hdFdpbmRvdyxcbiAgICAgICAgdG9nZ2xlUHJlc3NUYWIsXG4gICAgICAgIGdldEZsb2F0V2luZG93QnlLZXksXG5cbiAgICAgICAgZ2V0U3R5bGUsXG4gICAgfTtcbn07XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/index.js b/extensions/shader-graph/dist/panels/shader-graph/index.js new file mode 100644 index 0000000..2359b70 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/index.js @@ -0,0 +1,91 @@ +"use strict"; +'use state'; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +const fs_extra_1 = require("fs-extra"); +const path_1 = require("path"); +const vue_js_1 = tslib_1.__importDefault(require("vue/dist/vue.js")); +const view_1 = tslib_1.__importDefault(require("./view")); +const Shortcuts = tslib_1.__importStar(require("./shortcuts")); +const shader_graph_1 = require("../../shader-graph"); +const shader_graph_2 = require("../../shader-graph"); +let vm = null; +const options = { + listeners: {}, + style: (0, fs_extra_1.readFileSync)((0, path_1.join)(__dirname, '../../../static/shader-graph/style.css'), 'utf-8'), + template: (0, fs_extra_1.readFileSync)((0, path_1.join)(__dirname, '../../../static/shader-graph/index.html'), 'utf-8'), + $: { + forge: '#graph-forge', + shaderGraph: '#shader-graph', + }, + methods: { + async openAsset(assetUuid, lastAssetUuid) { + if (!vm) + return; + Editor.Panel.focus(shader_graph_1.PANEL_NAME); + await shader_graph_1.GraphConfigMgr.Instance.autoSave(lastAssetUuid); + await shader_graph_1.GraphAssetMgr.Instance.openAsset(); + }, + async onSceneReady() { + if (!vm) + return; + if (shader_graph_1.GraphDataMgr.Instance.getDirty()) { + await shader_graph_1.GraphAssetMgr.Instance.checkIfSave(); + } + shader_graph_1.MessageMgr.Instance.setSceneReady(true); + await (0, shader_graph_2.declareGraphBlock)(); + await shader_graph_1.GraphAssetMgr.Instance.load(); + shader_graph_1.MaskMgr.Instance.hide(shader_graph_2.MaskType.WaitLoad); + shader_graph_1.MaskMgr.Instance.hide(shader_graph_2.MaskType.WaitSceneReady); + }, + async onSceneClose() { + if (!vm) + return; + shader_graph_1.MessageMgr.Instance.setSceneReady(false); + shader_graph_1.MaskMgr.Instance.show(shader_graph_2.MaskType.WaitSceneReady); + }, + onPopupCreateMenu() { + if (!vm) + return; + shader_graph_1.Menu.Instance.popupCreateMenu(); + }, + onAssetAdd(uuid, info) { + if (!vm || info.importer !== 'shader-graph') + return; + shader_graph_1.GraphAssetMgr.Instance.assetAdd(uuid, info); + }, + onAssetDelete(uuid, info) { + if (!vm || info.importer !== 'shader-graph') + return; + shader_graph_1.GraphAssetMgr.Instance.assetDelete(uuid, info); + }, + onAssetChange(uuid, info) { + if (!vm || info.importer !== 'shader-graph') + return; + shader_graph_1.GraphAssetMgr.Instance.assetChange(uuid, info); + }, + ...Shortcuts, + }, + async ready() { + vm?.$destroy(); + vm = new vue_js_1.default({ + extends: view_1.default, + }); + // 创建 shader graph View + vm.$mount(this.$.shaderGraph); + }, + async beforeClose() { + await shader_graph_1.GraphConfigMgr.Instance.autoSave(); + if (shader_graph_1.GraphDataMgr.Instance.getDirty()) { + await shader_graph_1.GraphAssetMgr.Instance.checkIfSave(); + } + }, + close() { + shader_graph_1.MessageMgr.Instance.unregisterAll(); + vm?.$destroy(); + vm = null; + }, +}; +// @ts-ignore +module.exports = Editor.Panel.define(options); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGFuZWxzL3NoYWRlci1ncmFwaC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsV0FBVyxDQUFDOzs7QUFDWix1Q0FBd0M7QUFDeEMsK0JBQTRCO0FBQzVCLHFFQUFrQztBQUVsQywwREFBaUM7QUFFakMsK0RBQXlDO0FBQ3pDLHFEQVE0QjtBQUU1QixxREFBaUU7QUFFakUsSUFBSSxFQUFFLEdBQVEsSUFBSSxDQUFDO0FBRW5CLE1BQU0sT0FBTyxHQUFHO0lBQ1osU0FBUyxFQUFFLEVBQUU7SUFDYixLQUFLLEVBQUUsSUFBQSx1QkFBWSxFQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSx3Q0FBd0MsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN2RixRQUFRLEVBQUUsSUFBQSx1QkFBWSxFQUFDLElBQUEsV0FBSSxFQUFDLFNBQVMsRUFBRSx5Q0FBeUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUMzRixDQUFDLEVBQUU7UUFDQyxLQUFLLEVBQUUsY0FBYztRQUNyQixXQUFXLEVBQUUsZUFBZTtLQUMvQjtJQUNELE9BQU8sRUFBRTtRQUNMLEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBaUIsRUFBRSxhQUFxQjtZQUNwRCxJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLHlCQUFVLENBQUMsQ0FBQztZQUUvQixNQUFNLDZCQUFjLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUN0RCxNQUFNLDRCQUFhLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdDLENBQUM7UUFDRCxLQUFLLENBQUMsWUFBWTtZQUNkLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU87WUFFaEIsSUFBSSwyQkFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDbEMsTUFBTSw0QkFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUM5QztZQUVELHlCQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QyxNQUFNLElBQUEsZ0NBQWlCLEdBQUUsQ0FBQztZQUMxQixNQUFNLDRCQUFhLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BDLHNCQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLHNCQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxLQUFLLENBQUMsWUFBWTtZQUNkLElBQUksQ0FBQyxFQUFFO2dCQUFFLE9BQU87WUFFaEIseUJBQVUsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3pDLHNCQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyx1QkFBUSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxpQkFBaUI7WUFDYixJQUFJLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBRWhCLG1CQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFDRCxVQUFVLENBQUMsSUFBWSxFQUFFLElBQWU7WUFDcEMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGNBQWM7Z0JBQUUsT0FBTztZQUVwRCw0QkFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFDRCxhQUFhLENBQUMsSUFBWSxFQUFFLElBQWU7WUFDdkMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGNBQWM7Z0JBQUUsT0FBTztZQUVwRCw0QkFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxhQUFhLENBQUMsSUFBWSxFQUFFLElBQWU7WUFDdkMsSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLGNBQWM7Z0JBQUUsT0FBTztZQUVwRCw0QkFBYSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxHQUFHLFNBQVM7S0FDZjtJQUNELEtBQUssQ0FBQyxLQUFLO1FBQ1AsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDO1FBQ2YsRUFBRSxHQUFHLElBQUksZ0JBQUcsQ0FBQztZQUNULE9BQU8sRUFBRSxjQUFXO1NBQ3ZCLENBQUMsQ0FBQztRQUVILHVCQUF1QjtRQUN2QixFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUNELEtBQUssQ0FBQyxXQUFXO1FBQ2IsTUFBTSw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QyxJQUFJLDJCQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ2xDLE1BQU0sNEJBQWEsQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDOUM7SUFDTCxDQUFDO0lBQ0QsS0FBSztRQUNELHlCQUFVLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ3BDLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNmLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0osQ0FBQztBQUVGLGFBQWE7QUFDYixNQUFNLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdGF0ZSc7XG5pbXBvcnQgeyByZWFkRmlsZVN5bmMgfSBmcm9tICdmcy1leHRyYSc7XG5pbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG5pbXBvcnQgVnVlIGZyb20gJ3Z1ZS9kaXN0L3Z1ZS5qcyc7XG5cbmltcG9ydCBTaGFkZXJHcmFwaCBmcm9tICcuL3ZpZXcnO1xuXG5pbXBvcnQgKiBhcyBTaG9ydGN1dHMgZnJvbSAnLi9zaG9ydGN1dHMnO1xuaW1wb3J0IHtcbiAgICBHcmFwaEFzc2V0TWdyLFxuICAgIEdyYXBoRGF0YU1ncixcbiAgICBNYXNrTWdyLFxuICAgIE1lbnUsXG4gICAgTWVzc2FnZU1ncixcbiAgICBHcmFwaENvbmZpZ01ncixcbiAgICBQQU5FTF9OQU1FLFxufSBmcm9tICcuLi8uLi9zaGFkZXItZ3JhcGgnO1xuaW1wb3J0IHsgQXNzZXRJbmZvIH0gZnJvbSAnQGNvY29zL2NyZWF0b3ItdHlwZXMvZWRpdG9yL3BhY2thZ2VzL2Fzc2V0LWRiL0B0eXBlcy9wdWJsaWMnO1xuaW1wb3J0IHsgTWFza1R5cGUsIGRlY2xhcmVHcmFwaEJsb2NrIH0gZnJvbSAnLi4vLi4vc2hhZGVyLWdyYXBoJztcblxubGV0IHZtOiBhbnkgPSBudWxsO1xuXG5jb25zdCBvcHRpb25zID0ge1xuICAgIGxpc3RlbmVyczoge30sXG4gICAgc3R5bGU6IHJlYWRGaWxlU3luYyhqb2luKF9fZGlybmFtZSwgJy4uLy4uLy4uL3N0YXRpYy9zaGFkZXItZ3JhcGgvc3R5bGUuY3NzJyksICd1dGYtOCcpLFxuICAgIHRlbXBsYXRlOiByZWFkRmlsZVN5bmMoam9pbihfX2Rpcm5hbWUsICcuLi8uLi8uLi9zdGF0aWMvc2hhZGVyLWdyYXBoL2luZGV4Lmh0bWwnKSwgJ3V0Zi04JyksXG4gICAgJDoge1xuICAgICAgICBmb3JnZTogJyNncmFwaC1mb3JnZScsXG4gICAgICAgIHNoYWRlckdyYXBoOiAnI3NoYWRlci1ncmFwaCcsXG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIGFzeW5jIG9wZW5Bc3NldChhc3NldFV1aWQ6IHN0cmluZywgbGFzdEFzc2V0VXVpZDogc3RyaW5nKSB7XG4gICAgICAgICAgICBpZiAoIXZtKSByZXR1cm47XG4gICAgICAgICAgICBFZGl0b3IuUGFuZWwuZm9jdXMoUEFORUxfTkFNRSk7XG5cbiAgICAgICAgICAgIGF3YWl0IEdyYXBoQ29uZmlnTWdyLkluc3RhbmNlLmF1dG9TYXZlKGxhc3RBc3NldFV1aWQpO1xuICAgICAgICAgICAgYXdhaXQgR3JhcGhBc3NldE1nci5JbnN0YW5jZS5vcGVuQXNzZXQoKTtcbiAgICAgICAgfSxcbiAgICAgICAgYXN5bmMgb25TY2VuZVJlYWR5KCkge1xuICAgICAgICAgICAgaWYgKCF2bSkgcmV0dXJuO1xuXG4gICAgICAgICAgICBpZiAoR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdldERpcnR5KCkpIHtcbiAgICAgICAgICAgICAgICBhd2FpdCBHcmFwaEFzc2V0TWdyLkluc3RhbmNlLmNoZWNrSWZTYXZlKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2Uuc2V0U2NlbmVSZWFkeSh0cnVlKTtcbiAgICAgICAgICAgIGF3YWl0IGRlY2xhcmVHcmFwaEJsb2NrKCk7XG4gICAgICAgICAgICBhd2FpdCBHcmFwaEFzc2V0TWdyLkluc3RhbmNlLmxvYWQoKTtcbiAgICAgICAgICAgIE1hc2tNZ3IuSW5zdGFuY2UuaGlkZShNYXNrVHlwZS5XYWl0TG9hZCk7XG4gICAgICAgICAgICBNYXNrTWdyLkluc3RhbmNlLmhpZGUoTWFza1R5cGUuV2FpdFNjZW5lUmVhZHkpO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyBvblNjZW5lQ2xvc2UoKSB7XG4gICAgICAgICAgICBpZiAoIXZtKSByZXR1cm47XG5cbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2Uuc2V0U2NlbmVSZWFkeShmYWxzZSk7XG4gICAgICAgICAgICBNYXNrTWdyLkluc3RhbmNlLnNob3coTWFza1R5cGUuV2FpdFNjZW5lUmVhZHkpO1xuICAgICAgICB9LFxuICAgICAgICBvblBvcHVwQ3JlYXRlTWVudSgpIHtcbiAgICAgICAgICAgIGlmICghdm0pIHJldHVybjtcblxuICAgICAgICAgICAgTWVudS5JbnN0YW5jZS5wb3B1cENyZWF0ZU1lbnUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25Bc3NldEFkZCh1dWlkOiBzdHJpbmcsIGluZm86IEFzc2V0SW5mbykge1xuICAgICAgICAgICAgaWYgKCF2bSB8fCBpbmZvLmltcG9ydGVyICE9PSAnc2hhZGVyLWdyYXBoJykgcmV0dXJuO1xuXG4gICAgICAgICAgICBHcmFwaEFzc2V0TWdyLkluc3RhbmNlLmFzc2V0QWRkKHV1aWQsIGluZm8pO1xuICAgICAgICB9LFxuICAgICAgICBvbkFzc2V0RGVsZXRlKHV1aWQ6IHN0cmluZywgaW5mbzogQXNzZXRJbmZvKSB7XG4gICAgICAgICAgICBpZiAoIXZtIHx8IGluZm8uaW1wb3J0ZXIgIT09ICdzaGFkZXItZ3JhcGgnKSByZXR1cm47XG5cbiAgICAgICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2UuYXNzZXREZWxldGUodXVpZCwgaW5mbyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uQXNzZXRDaGFuZ2UodXVpZDogc3RyaW5nLCBpbmZvOiBBc3NldEluZm8pIHtcbiAgICAgICAgICAgIGlmICghdm0gfHwgaW5mby5pbXBvcnRlciAhPT0gJ3NoYWRlci1ncmFwaCcpIHJldHVybjtcblxuICAgICAgICAgICAgR3JhcGhBc3NldE1nci5JbnN0YW5jZS5hc3NldENoYW5nZSh1dWlkLCBpbmZvKTtcbiAgICAgICAgfSxcbiAgICAgICAgLi4uU2hvcnRjdXRzLFxuICAgIH0sXG4gICAgYXN5bmMgcmVhZHkoKSB7XG4gICAgICAgIHZtPy4kZGVzdHJveSgpO1xuICAgICAgICB2bSA9IG5ldyBWdWUoe1xuICAgICAgICAgICAgZXh0ZW5kczogU2hhZGVyR3JhcGgsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIOWIm+W7uiBzaGFkZXIgZ3JhcGggVmlld1xuICAgICAgICB2bS4kbW91bnQodGhpcy4kLnNoYWRlckdyYXBoKTtcbiAgICB9LFxuICAgIGFzeW5jIGJlZm9yZUNsb3NlKCkge1xuICAgICAgICBhd2FpdCBHcmFwaENvbmZpZ01nci5JbnN0YW5jZS5hdXRvU2F2ZSgpO1xuICAgICAgICBpZiAoR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdldERpcnR5KCkpIHtcbiAgICAgICAgICAgIGF3YWl0IEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2UuY2hlY2tJZlNhdmUoKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgY2xvc2UoKSB7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UudW5yZWdpc3RlckFsbCgpO1xuICAgICAgICB2bT8uJGRlc3Ryb3koKTtcbiAgICAgICAgdm0gPSBudWxsO1xuICAgIH0sXG59O1xuXG4vLyBAdHMtaWdub3JlXG5tb2R1bGUuZXhwb3J0cyA9IEVkaXRvci5QYW5lbC5kZWZpbmUob3B0aW9ucyk7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/mask.js b/extensions/shader-graph/dist/panels/shader-graph/mask.js new file mode 100644 index 0000000..f712e0b --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/mask.js @@ -0,0 +1,118 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.maskLogic = void 0; +const vue_js_1 = require("vue/dist/vue.js"); +const shader_graph_1 = require("../../shader-graph"); +/** + * 用于提示引导用户处理相关操作例如(打开,导入,覆盖) + * @param props + * @param ctx + */ +const maskLogic = (props, ctx) => { + const maskRef = (0, vue_js_1.ref)(); + const displayMaskType = (0, vue_js_1.ref)(shader_graph_1.MaskMgr.Instance.displayMaskType); + const createNewList = (0, vue_js_1.ref)([ + { + type: 'Surface', + label: Editor.I18n.t('shader-graph.buttons.new') + 'Surface', + }, + { + type: 'Unlit', + label: Editor.I18n.t('shader-graph.buttons.new') + 'Unlit', + }, + ]); + function onUpdateMask(nextMaskType) { + displayMaskType.value = nextMaskType; + changeMaskDisplay(); + } + function changeMaskDisplay() { + if (!maskRef.value) + return; + if (displayMaskType.value === shader_graph_1.MaskType.None) { + maskRef.value.removeAttribute('show'); + } + else { + maskRef.value.setAttribute('show', ''); + } + } + // Test Code + // document.addEventListener('keydown', (event) => { + // let nextMaskType = MaskType.None; + // switch (event.code) { + // case 'Digit1': + // nextMaskType = MaskType.WaitSceneReady; + // break; + // case 'Digit2': + // nextMaskType = MaskType.AssetMissing; + // break; + // case 'Digit3': + // nextMaskType = MaskType.AssetChange; + // break; + // case 'Digit4': + // nextMaskType = MaskType.NeedCreateNewAsset; + // break; + // case 'Digit5': + // nextMaskType = MaskType.NeedSaveBeReloadByRename; + // break; + // } + // onUpdateMask(nextMaskType); + // }); + (0, vue_js_1.onMounted)(() => { + changeMaskDisplay(); + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.UpdateMask, onUpdateMask); + }); + (0, vue_js_1.onUnmounted)(() => { + shader_graph_1.MessageMgr.Instance.unregister(shader_graph_1.MessageType.UpdateMask, onUpdateMask); + }); + async function onSaveAs() { + shader_graph_1.GraphAssetMgr.Instance.saveAs().then((done) => { + done && shader_graph_1.MaskMgr.Instance.updateMask(); + }); + } + async function onCreateNew(type) { + shader_graph_1.GraphAssetMgr.Instance.createNew(type).then((done) => { + done && shader_graph_1.MaskMgr.Instance.updateMask(); + }); + } + async function onOpen() { + shader_graph_1.GraphAssetMgr.Instance.open().then((done) => { + done && shader_graph_1.MaskMgr.Instance.updateMask(); + }); + } + async function onReload() { + shader_graph_1.GraphAssetMgr.Instance.load().then((done) => { + done && shader_graph_1.MaskMgr.Instance.updateMask(); + }); + } + async function onOverride() { + shader_graph_1.GraphAssetMgr.Instance.save().then((done) => { + done && shader_graph_1.MaskMgr.Instance.updateMask(); + }); + } + async function onSaveAndReloadByRename() { + shader_graph_1.GraphAssetMgr.Instance.save().then(() => { + shader_graph_1.GraphAssetMgr.Instance.load().then((done) => { + done && shader_graph_1.MaskMgr.Instance.updateMask(); + }); + }); + } + async function onCancel() { + shader_graph_1.MaskMgr.Instance.updateMask(); + } + return { + onOpen, + onSaveAs, + onCreateNew, + onReload, + onOverride, + onCancel, + onSaveAndReloadByRename, + maskRef, + createNewList, + // mask + MaskType: shader_graph_1.MaskType, + displayMaskType, + }; +}; +exports.maskLogic = maskLogic; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYW5lbHMvc2hhZGVyLWdyYXBoL21hc2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNENBQThEO0FBRzlELHFEQUErRjtBQUUvRjs7OztHQUlHO0FBQ0ksTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFVLEVBQUUsR0FBcUMsRUFBRSxFQUFFO0lBQzNFLE1BQU0sT0FBTyxHQUFHLElBQUEsWUFBRyxHQUFFLENBQUM7SUFDdEIsTUFBTSxlQUFlLEdBQUcsSUFBQSxZQUFHLEVBQVcsc0JBQU8sQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFeEUsTUFBTSxhQUFhLEdBQUcsSUFBQSxZQUFHLEVBQUM7UUFDdEI7WUFDSSxJQUFJLEVBQUUsU0FBUztZQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxHQUFHLFNBQVM7U0FDL0Q7UUFDRDtZQUNJLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEdBQUcsT0FBTztTQUM3RDtLQUNKLENBQUMsQ0FBQztJQUVILFNBQVMsWUFBWSxDQUFDLFlBQXNCO1FBQ3hDLGVBQWUsQ0FBQyxLQUFLLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLGlCQUFpQixFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVELFNBQVMsaUJBQWlCO1FBQ3RCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSztZQUFFLE9BQU87UUFFM0IsSUFBSSxlQUFlLENBQUMsS0FBSyxLQUFLLHVCQUFRLENBQUMsSUFBSSxFQUFFO1lBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3pDO2FBQU07WUFDSCxPQUFPLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFD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RUQsT0FBTztRQUNILE1BQU07UUFDTixRQUFRO1FBQ1IsV0FBVztRQUNYLFFBQVE7UUFDUixVQUFVO1FBQ1YsUUFBUTtRQUNSLHVCQUF1QjtRQUV2QixPQUFPO1FBQ1AsYUFBYTtRQUViLE9BQU87UUFDUCxRQUFRLEVBQVIsdUJBQVE7UUFDUixlQUFlO0tBQ2xCLENBQUM7QUFDTixDQUFDLENBQUM7QUF4SFcsUUFBQSxTQUFTLGFBd0hwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG9uTW91bnRlZCwgb25Vbm1vdW50ZWQsIHJlZiB9IGZyb20gJ3Z1ZS9kaXN0L3Z1ZS5qcyc7XG5pbXBvcnQgeyBTZXR1cENvbnRleHQgfSBmcm9tICd2dWUvdHlwZXMvdjMtc2V0dXAtY29udGV4dCc7XG5cbmltcG9ydCB7IEdyYXBoQXNzZXRNZ3IsIE1lc3NhZ2VUeXBlLCBNYXNrTWdyLCBNZXNzYWdlTWdyLCBNYXNrVHlwZSB9IGZyb20gJy4uLy4uL3NoYWRlci1ncmFwaCc7XG5cbi8qKlxuICog55So5LqO5o+Q56S65byV5a+855So5oi35aSE55CG55u45YWz5pON5L2c5L6L5aaC77yI5omT5byA77yM5a+85YWl77yM6KaG55uW77yJXG4gKiBAcGFyYW0gcHJvcHNcbiAqIEBwYXJhbSBjdHhcbiAqL1xuZXhwb3J0IGNvbnN0IG1hc2tMb2dpYyA9IChwcm9wczogeyB9LCBjdHg6IFNldHVwQ29udGV4dCB8IFNldHVwQ29udGV4dDxhbnk+KSA9PiB7XG4gICAgY29uc3QgbWFza1JlZiA9IHJlZigpO1xuICAgIGNvbnN0IGRpc3BsYXlNYXNrVHlwZSA9IHJlZjxNYXNrVHlwZT4oTWFza01nci5JbnN0YW5jZS5kaXNwbGF5TWFza1R5cGUpO1xuXG4gICAgY29uc3QgY3JlYXRlTmV3TGlzdCA9IHJlZihbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdTdXJmYWNlJyxcbiAgICAgICAgICAgIGxhYmVsOiBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGguYnV0dG9ucy5uZXcnKSArICdTdXJmYWNlJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgdHlwZTogJ1VubGl0JyxcbiAgICAgICAgICAgIGxhYmVsOiBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGguYnV0dG9ucy5uZXcnKSArICdVbmxpdCcsXG4gICAgICAgIH0sXG4gICAgXSk7XG5cbiAgICBmdW5jdGlvbiBvblVwZGF0ZU1hc2sobmV4dE1hc2tUeXBlOiBNYXNrVHlwZSkge1xuICAgICAgICBkaXNwbGF5TWFza1R5cGUudmFsdWUgPSBuZXh0TWFza1R5cGU7XG4gICAgICAgIGNoYW5nZU1hc2tEaXNwbGF5KCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hhbmdlTWFza0Rpc3BsYXkoKSB7XG4gICAgICAgIGlmICghbWFza1JlZi52YWx1ZSkgcmV0dXJuO1xuXG4gICAgICAgIGlmIChkaXNwbGF5TWFza1R5cGUudmFsdWUgPT09IE1hc2tUeXBlLk5vbmUpIHtcbiAgICAgICAgICAgIG1hc2tSZWYudmFsdWUucmVtb3ZlQXR0cmlidXRlKCdzaG93Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBtYXNrUmVmLnZhbHVlLnNldEF0dHJpYnV0ZSgnc2hvdycsICcnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRlc3QgQ29kZVxuICAgIC8vIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCAoZXZlbnQpID0+IHtcbiAgICAvLyAgICAgbGV0IG5leHRNYXNrVHlwZSA9IE1hc2tUeXBlLk5vbmU7XG4gICAgLy8gICAgIHN3aXRjaCAoZXZlbnQuY29kZSkge1xuICAgIC8vICAgICAgICAgY2FzZSAnRGlnaXQxJzpcbiAgICAvLyAgICAgICAgICAgICBuZXh0TWFza1R5cGUgPSBNYXNrVHlwZS5XYWl0U2NlbmVSZWFkeTtcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcbiAgICAvLyAgICAgICAgIGNhc2UgJ0RpZ2l0Mic6XG4gICAgLy8gICAgICAgICAgICAgbmV4dE1hc2tUeXBlID0gTWFza1R5cGUuQXNzZXRNaXNzaW5nO1xuICAgIC8vICAgICAgICAgICAgIGJyZWFrO1xuICAgIC8vICAgICAgICAgY2FzZSAnRGlnaXQzJzpcbiAgICAvLyAgICAgICAgICAgICBuZXh0TWFza1R5cGUgPSBNYXNrVHlwZS5Bc3NldENoYW5nZTtcbiAgICAvLyAgICAgICAgICAgICBicmVhaztcbiAgICAvLyAgICAgICAgIGNhc2UgJ0RpZ2l0NCc6XG4gICAgLy8gICAgICAgICAgICAgbmV4dE1hc2tUeXBlID0gTWFza1R5cGUuTmVlZENyZWF0ZU5ld0Fzc2V0O1xuICAgIC8vICAgICAgICAgICAgIGJyZWFrO1xuICAgIC8vICAgICAgICAgY2FzZSAnRGlnaXQ1JzpcbiAgICAvLyAgICAgICAgICAgICBuZXh0TWFza1R5cGUgPSBNYXNrVHlwZS5OZWVkU2F2ZUJlUmVsb2FkQnlSZW5hbWU7XG4gICAgLy8gICAgICAgICAgICAgYnJlYWs7XG4gICAgLy8gICAgIH1cbiAgICAvLyAgICAgb25VcGRhdGVNYXNrKG5leHRNYXNrVHlwZSk7XG4gICAgLy8gfSk7XG5cbiAgICBvbk1vdW50ZWQoKCkgPT4ge1xuICAgICAgICBjaGFuZ2VNYXNrRGlzcGxheSgpO1xuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLlVwZGF0ZU1hc2ssIG9uVXBkYXRlTWFzayk7XG4gICAgfSk7XG5cbiAgICBvblVubW91bnRlZCgoKSA9PiB7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UudW5yZWdpc3RlcihNZXNzYWdlVHlwZS5VcGRhdGVNYXNrLCBvblVwZGF0ZU1hc2spO1xuICAgIH0pO1xuXG4gICAgYXN5bmMgZnVuY3Rpb24gb25TYXZlQXMoKSB7XG4gICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2Uuc2F2ZUFzKCkudGhlbigoZG9uZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgZG9uZSAmJiBNYXNrTWdyLkluc3RhbmNlLnVwZGF0ZU1hc2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gb25DcmVhdGVOZXcodHlwZTogc3RyaW5nKSB7XG4gICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2UuY3JlYXRlTmV3KHR5cGUpLnRoZW4oKGRvbmU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGRvbmUgJiYgTWFza01nci5JbnN0YW5jZS51cGRhdGVNYXNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uT3BlbigpIHtcbiAgICAgICAgR3JhcGhBc3NldE1nci5JbnN0YW5jZS5vcGVuKCkudGhlbigoZG9uZTogYm9vbGVhbikgPT4ge1xuICAgICAgICAgICAgZG9uZSAmJiBNYXNrTWdyLkluc3RhbmNlLnVwZGF0ZU1hc2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgYXN5bmMgZnVuY3Rpb24gb25SZWxvYWQoKSB7XG4gICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2UubG9hZCgpLnRoZW4oKGRvbmU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGRvbmUgJiYgTWFza01nci5JbnN0YW5jZS51cGRhdGVNYXNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uT3ZlcnJpZGUoKSB7XG4gICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2Uuc2F2ZSgpLnRoZW4oKGRvbmU6IGJvb2xlYW4pID0+IHtcbiAgICAgICAgICAgIGRvbmUgJiYgTWFza01nci5JbnN0YW5jZS51cGRhdGVNYXNrKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uU2F2ZUFuZFJlbG9hZEJ5UmVuYW1lKCkge1xuICAgICAgICBHcmFwaEFzc2V0TWdyLkluc3RhbmNlLnNhdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2UubG9hZCgpLnRoZW4oKGRvbmUpID0+IHtcbiAgICAgICAgICAgICAgICBkb25lICYmIE1hc2tNZ3IuSW5zdGFuY2UudXBkYXRlTWFzaygpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGFzeW5jIGZ1bmN0aW9uIG9uQ2FuY2VsKCkge1xuICAgICAgICBNYXNrTWdyLkluc3RhbmNlLnVwZGF0ZU1hc2soKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICBvbk9wZW4sXG4gICAgICAgIG9uU2F2ZUFzLFxuICAgICAgICBvbkNyZWF0ZU5ldyxcbiAgICAgICAgb25SZWxvYWQsXG4gICAgICAgIG9uT3ZlcnJpZGUsXG4gICAgICAgIG9uQ2FuY2VsLFxuICAgICAgICBvblNhdmVBbmRSZWxvYWRCeVJlbmFtZSxcblxuICAgICAgICBtYXNrUmVmLFxuICAgICAgICBjcmVhdGVOZXdMaXN0LFxuXG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgTWFza1R5cGUsXG4gICAgICAgIGRpc3BsYXlNYXNrVHlwZSxcbiAgICB9O1xufTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/shortcuts.js b/extensions/shader-graph/dist/panels/shader-graph/shortcuts.js new file mode 100644 index 0000000..cf4157e --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/shortcuts.js @@ -0,0 +1,53 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.onRedo = exports.onUndo = exports.onDuplicate = exports.onPaste = exports.onCut = exports.onCopy = exports.onDelete = exports.onSave = void 0; +const shader_graph_1 = require("../../shader-graph"); +function onSave() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphAssetMgr.Instance.save(); +} +exports.onSave = onSave; +function onDelete() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.delete(); +} +exports.onDelete = onDelete; +function onCopy() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.copy(); +} +exports.onCopy = onCopy; +function onCut() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.cut(); +} +exports.onCut = onCut; +function onPaste() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.paste(); +} +exports.onPaste = onPaste; +function onDuplicate() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.duplicate(); +} +exports.onDuplicate = onDuplicate; +function onUndo() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.undo(); +} +exports.onUndo = onUndo; +function onRedo() { + if (!shader_graph_1.MaskMgr.Instance.ready) + return; + shader_graph_1.GraphEditorMgr.Instance.redo(); +} +exports.onRedo = onRedo; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcnRjdXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3BhbmVscy9zaGFkZXItZ3JhcGgvc2hvcnRjdXRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFEQUE0RTtBQUU1RSxTQUFnQixNQUFNO0lBQ2xCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVwQyw0QkFBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBSkQsd0JBSUM7QUFDRCxTQUFnQixRQUFRO0lBQ3BCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNyQyxDQUFDO0FBSkQsNEJBSUM7QUFDRCxTQUFnQixNQUFNO0lBQ2xCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBSkQsd0JBSUM7QUFDRCxTQUFnQixLQUFLO0lBQ2pCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUNsQyxDQUFDO0FBSkQsc0JBSUM7QUFDRCxTQUFnQixPQUFPO0lBQ25CLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztBQUNwQyxDQUFDO0FBSkQsMEJBSUM7QUFDRCxTQUFnQixXQUFXO0lBQ3ZCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUVwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUN4QyxDQUFDO0FBSkQsa0NBSUM7QUFFRCxTQUFnQixNQUFNO0lBQ2xCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUNwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBSEQsd0JBR0M7QUFFRCxTQUFnQixNQUFNO0lBQ2xCLElBQUksQ0FBQyxzQkFBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLO1FBQUUsT0FBTztJQUNwQyw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQyxDQUFDO0FBSEQsd0JBR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaEFzc2V0TWdyLCBHcmFwaEVkaXRvck1nciwgTWFza01nciB9IGZyb20gJy4uLy4uL3NoYWRlci1ncmFwaCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBvblNhdmUoKSB7XG4gICAgaWYgKCFNYXNrTWdyLkluc3RhbmNlLnJlYWR5KSByZXR1cm47XG5cbiAgICBHcmFwaEFzc2V0TWdyLkluc3RhbmNlLnNhdmUoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvbkRlbGV0ZSgpIHtcbiAgICBpZiAoIU1hc2tNZ3IuSW5zdGFuY2UucmVhZHkpIHJldHVybjtcblxuICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmRlbGV0ZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9uQ29weSgpIHtcbiAgICBpZiAoIU1hc2tNZ3IuSW5zdGFuY2UucmVhZHkpIHJldHVybjtcblxuICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmNvcHkoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBvbkN1dCgpIHtcbiAgICBpZiAoIU1hc2tNZ3IuSW5zdGFuY2UucmVhZHkpIHJldHVybjtcblxuICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmN1dCgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9uUGFzdGUoKSB7XG4gICAgaWYgKCFNYXNrTWdyLkluc3RhbmNlLnJlYWR5KSByZXR1cm47XG5cbiAgICBHcmFwaEVkaXRvck1nci5JbnN0YW5jZS5wYXN0ZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9uRHVwbGljYXRlKCkge1xuICAgIGlmICghTWFza01nci5JbnN0YW5jZS5yZWFkeSkgcmV0dXJuO1xuXG4gICAgR3JhcGhFZGl0b3JNZ3IuSW5zdGFuY2UuZHVwbGljYXRlKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBvblVuZG8oKSB7XG4gICAgaWYgKCFNYXNrTWdyLkluc3RhbmNlLnJlYWR5KSByZXR1cm47XG4gICAgR3JhcGhFZGl0b3JNZ3IuSW5zdGFuY2UudW5kbygpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gb25SZWRvKCkge1xuICAgIGlmICghTWFza01nci5JbnN0YW5jZS5yZWFkeSkgcmV0dXJuO1xuICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLnJlZG8oKTtcbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/panels/shader-graph/view.js b/extensions/shader-graph/dist/panels/shader-graph/view.js new file mode 100644 index 0000000..e58d3c9 --- /dev/null +++ b/extensions/shader-graph/dist/panels/shader-graph/view.js @@ -0,0 +1,95 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const vue_js_1 = require("vue/dist/vue.js"); +const mask_1 = require("./mask"); +const float_windows_1 = require("./float-windows"); +const shader_graph_1 = require("../../shader-graph"); +exports.default = (0, vue_js_1.defineComponent)({ + props: {}, + setup(props, ctx) { + // 遮罩逻辑 + const mask = (0, mask_1.maskLogic)(props, ctx); + const floatWindows = (0, float_windows_1.floatWindowsLogic)(props, ctx); + const showCreateNewMenu = (0, vue_js_1.ref)(false); + const dirtyRef = (0, vue_js_1.ref)(); + const shaderGraphRef = (0, vue_js_1.ref)(); + const forgeRef = (0, vue_js_1.ref)(); + const foregroundRef = (0, vue_js_1.ref)(); + const dragAreaRef = (0, vue_js_1.ref)(); + function onDirty(dirty) { + if (dirty) { + dirtyRef.value?.removeAttribute('hidden'); + } + else { + dirtyRef.value?.setAttribute('hidden', ''); + } + } + (0, vue_js_1.onMounted)(() => { + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.DirtyChanged, onDirty); + shader_graph_1.MessageMgr.Instance.register(shader_graph_1.MessageType.DraggingProperty, onDrag); + if (forgeRef.value && shaderGraphRef.value) { + const resizeObserver = new ResizeObserver(entries => { + // 在尺寸变化时执行的回调函数 + entries.forEach(entry => { + if (entry.target === forgeRef.value) { + shader_graph_1.MessageMgr.Instance.send(shader_graph_1.MessageType.Resize); + } + }); + }); + // 将 ResizeObserver 添加到要观察的元素上 + resizeObserver.observe(forgeRef.value); + shader_graph_1.GraphEditorMgr.Instance.setGraphForge(forgeRef.value); + // 用于获取鼠标的坐标 + shader_graph_1.GraphEditorMgr.Instance.addMousePointerListener(shaderGraphRef.value); + shader_graph_1.GraphDataMgr.Instance.setGraphForge(forgeRef.value); + shader_graph_1.GraphConfigMgr.Instance.setGraphForge(forgeRef.value); + shader_graph_1.ForgeMgr.Instance.setGraphForge(forgeRef.value); + } + shader_graph_1.GraphAssetMgr.Instance.openAsset(); + }); + (0, vue_js_1.onUnmounted)(() => { + shader_graph_1.MessageMgr.Instance.unregister(shader_graph_1.MessageType.DirtyChanged, onDirty); + shader_graph_1.MessageMgr.Instance.unregister(shader_graph_1.MessageType.DraggingProperty, onDrag); + }); + function onReset() { + shader_graph_1.GraphDataMgr.Instance.restore(); + } + function onSave() { + shader_graph_1.GraphAssetMgr.Instance.save(); + } + function onDrag() { + foregroundRef.value?.removeAttribute('disallowed-event'); + dragAreaRef.value?.removeAttribute('disallowed-event'); + } + function onDragEnd(event) { + foregroundRef.value?.setAttribute('disallowed-event', ''); + dragAreaRef.value?.setAttribute('disallowed-event', ''); + const value = event.dataTransfer?.getData('value'); + const options = value && JSON.parse(value); + if (options) { + const { x, y } = shader_graph_1.GraphEditorMgr.Instance.convertsMousePoint(event.x, event.y - 28); + options.x = x; + options.y = y; + shader_graph_1.GraphEditorMgr.Instance.add(options); + } + } + function onChangeCreateNewMenu(show) { + showCreateNewMenu.value = show; + } + return { + dirtyRef, + forgeRef, + foregroundRef, + dragAreaRef, + shaderGraphRef, + onReset, + onSave, + onDragEnd, + showCreateNewMenu, + onChangeCreateNewMenu, + ...mask, + ...floatWindows, + }; + }, +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wYW5lbHMvc2hhZGVyLWdyYXBoL3ZpZXcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw0Q0FBK0U7QUFHL0UsaUNBQW1DO0FBQ25DLG1EQUFvRDtBQUNwRCxxREFRNEI7QUFFNUIsa0JBQWUsSUFBQSx3QkFBZSxFQUFDO0lBRTNCLEtBQUssRUFBRSxFQUVOO0lBRUQsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHO1FBQ1osT0FBTztRQUNQLE1BQU0sSUFBSSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDbkMsTUFBTSxZQUFZLEdBQUcsSUFBQSxpQ0FBaUIsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbkQsTUFBTSxpQkFBaUIsR0FBRyxJQUFBLFlBQUcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUNyQyxNQUFNLFFBQVEsR0FBRyxJQUFBLFlBQUcsR0FBa0IsQ0FBQztRQUN2QyxNQUFNLGNBQWMsR0FBRyxJQUFBLFlBQUcsR0FBZSxDQUFDO1FBQzFDLE1BQU0sUUFBUSxHQUFHLElBQUEsWUFBRyxHQUF5QixDQUFDO1FBQzlDLE1BQU0sYUFBYSxHQUFHLElBQUEsWUFBRyxHQUFlLENBQUM7UUFDekMsTUFBTSxXQUFXLEdBQUcsSUFBQSxZQUFHLEdBQWUsQ0FBQztRQUV2QyxTQUFTLE9BQU8sQ0FBQyxLQUFjO1lBQzNCLElBQUksS0FBSyxFQUFFO2dCQUNQLFFBQVEsQ0FBQyxLQUFLLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzdDO2lCQUFNO2dCQUNILFFBQVEsQ0FBQyxLQUFLLEVBQUUsWUFBWSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUM5QztRQUNMLENBQUM7UUFFRCxJQUFBLGtCQUFTLEVBQUUsR0FBRyxFQUFFO1lBQ1oseUJBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxD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QUNuRixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDZCw2QkFBYyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEM7UUFDTCxDQUFDO1FBRUQsU0FBUyxxQkFBcUIsQ0FBQyxJQUFhO1lBQ3hDLGlCQUFpQixDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU87WUFDSCxRQUFRO1lBQ1IsUUFBUTtZQUNSLGFBQWE7WUFDYixXQUFXO1lBQ1gsY0FBYztZQUVkLE9BQU87WUFDUCxNQUFNO1lBRU4sU0FBUztZQUVULGlCQUFpQjtZQUNqQixxQkFBcUI7WUFFckIsR0FBRyxJQUFJO1lBQ1AsR0FBRyxZQUFZO1NBQ2xCLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVmaW5lQ29tcG9uZW50LCBvbk1vdW50ZWQsIG9uVW5tb3VudGVkLCByZWYgfSBmcm9tICd2dWUvZGlzdC92dWUuanMnO1xuXG5pbXBvcnQgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9ibG9jay1mb3JnZSc7XG5pbXBvcnQgeyBtYXNrTG9naWMgfSBmcm9tICcuL21hc2snO1xuaW1wb3J0IHsgZmxvYXRXaW5kb3dzTG9naWMgfSBmcm9tICcuL2Zsb2F0LXdpbmRvd3MnO1xuaW1wb3J0IHtcbiAgICBHcmFwaEVkaXRvck1ncixcbiAgICBHcmFwaERhdGFNZ3IsXG4gICAgRm9yZ2VNZ3IsXG4gICAgTWVzc2FnZU1ncixcbiAgICBHcmFwaEFzc2V0TWdyLFxuICAgIE1lc3NhZ2VUeXBlLFxuICAgIEdyYXBoQ29uZmlnTWdyLFxufSBmcm9tICcuLi8uLi9zaGFkZXItZ3JhcGgnO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVDb21wb25lbnQoe1xuXG4gICAgcHJvcHM6IHtcblxuICAgIH0sXG5cbiAgICBzZXR1cChwcm9wcywgY3R4KSB7XG4gICAgICAgIC8vIOmBrue9qemAu+i+kVxuICAgICAgICBjb25zdCBtYXNrID0gbWFza0xvZ2ljKHByb3BzLCBjdHgpO1xuICAgICAgICBjb25zdCBmbG9hdFdpbmRvd3MgPSBmbG9hdFdpbmRvd3NMb2dpYyhwcm9wcywgY3R4KTtcblxuICAgICAgICBjb25zdCBzaG93Q3JlYXRlTmV3TWVudSA9IHJlZihmYWxzZSk7XG4gICAgICAgIGNvbnN0IGRpcnR5UmVmID0gcmVmPEhUTUxEaXZFbGVtZW50PigpO1xuICAgICAgICBjb25zdCBzaGFkZXJHcmFwaFJlZiA9IHJlZjxIVE1MRWxlbWVudD4oKTtcbiAgICAgICAgY29uc3QgZm9yZ2VSZWYgPSByZWY8SFRNTEdyYXBoRm9yZ2VFbGVtZW50PigpO1xuICAgICAgICBjb25zdCBmb3JlZ3JvdW5kUmVmID0gcmVmPEhUTUxFbGVtZW50PigpO1xuICAgICAgICBjb25zdCBkcmFnQXJlYVJlZiA9IHJlZjxIVE1MRWxlbWVudD4oKTtcblxuICAgICAgICBmdW5jdGlvbiBvbkRpcnR5KGRpcnR5OiBib29sZWFuKSB7XG4gICAgICAgICAgICBpZiAoZGlydHkpIHtcbiAgICAgICAgICAgICAgICBkaXJ0eVJlZi52YWx1ZT8ucmVtb3ZlQXR0cmlidXRlKCdoaWRkZW4nKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZGlydHlSZWYudmFsdWU/LnNldEF0dHJpYnV0ZSgnaGlkZGVuJywgJycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgb25Nb3VudGVkKCAoKSA9PiB7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkRpcnR5Q2hhbmdlZCwgb25EaXJ0eSk7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkRyYWdnaW5nUHJvcGVydHksIG9uRHJhZyk7XG4gICAgICAgICAgICBpZiAoZm9yZ2VSZWYudmFsdWUgJiYgc2hhZGVyR3JhcGhSZWYudmFsdWUpIHtcblxuICAgICAgICAgICAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGVudHJpZXMgPT4ge1xuICAgICAgICAgICAgICAgICAgICAvLyDlnKjlsLrlr7jlj5jljJbml7bmiafooYznmoTlm57osIPlh73mlbBcbiAgICAgICAgICAgICAgICAgICAgZW50cmllcy5mb3JFYWNoKGVudHJ5ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS50YXJnZXQgPT09IGZvcmdlUmVmLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLlJlc2l6ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIC8vIOWwhiBSZXNpemVPYnNlcnZlciDmt7vliqDliLDopoHop4Llr5/nmoTlhYPntKDkuIpcbiAgICAgICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGZvcmdlUmVmLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLnNldEdyYXBoRm9yZ2UoZm9yZ2VSZWYudmFsdWUpO1xuICAgICAgICAgICAgICAgIC8vIOeUqOS6juiOt+WPlum8oOagh+eahOWdkOagh1xuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmFkZE1vdXNlUG9pbnRlckxpc3RlbmVyKHNoYWRlckdyYXBoUmVmLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBHcmFwaERhdGFNZ3IuSW5zdGFuY2Uuc2V0R3JhcGhGb3JnZShmb3JnZVJlZi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgR3JhcGhDb25maWdNZ3IuSW5zdGFuY2Uuc2V0R3JhcGhGb3JnZShmb3JnZVJlZi52YWx1ZSk7XG4gICAgICAgICAgICAgICAgRm9yZ2VNZ3IuSW5zdGFuY2Uuc2V0R3JhcGhGb3JnZShmb3JnZVJlZi52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEdyYXBoQXNzZXRNZ3IuSW5zdGFuY2Uub3BlbkFzc2V0KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIG9uVW5tb3VudGVkKCgpID0+IHtcbiAgICAgICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2UudW5yZWdpc3RlcihNZXNzYWdlVHlwZS5EaXJ0eUNoYW5nZWQsIG9uRGlydHkpO1xuICAgICAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS51bnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkRyYWdnaW5nUHJvcGVydHksIG9uRHJhZyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGZ1bmN0aW9uIG9uUmVzZXQoKSB7XG4gICAgICAgICAgICBHcmFwaERhdGFNZ3IuSW5zdGFuY2UucmVzdG9yZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb25TYXZlKCkge1xuICAgICAgICAgICAgR3JhcGhBc3NldE1nci5JbnN0YW5jZS5zYXZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBmdW5jdGlvbiBvbkRyYWcoKSB7XG4gICAgICAgICAgICBmb3JlZ3JvdW5kUmVmLnZhbHVlPy5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FsbG93ZWQtZXZlbnQnKTtcbiAgICAgICAgICAgIGRyYWdBcmVhUmVmLnZhbHVlPy5yZW1vdmVBdHRyaWJ1dGUoJ2Rpc2FsbG93ZWQtZXZlbnQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9uRHJhZ0VuZChldmVudDogRHJhZ0V2ZW50KSB7XG4gICAgICAgICAgICBmb3JlZ3JvdW5kUmVmLnZhbHVlPy5zZXRBdHRyaWJ1dGUoJ2Rpc2FsbG93ZWQtZXZlbnQnLCAnJyk7XG4gICAgICAgICAgICBkcmFnQXJlYVJlZi52YWx1ZT8uc2V0QXR0cmlidXRlKCdkaXNhbGxvd2VkLWV2ZW50JywgJycpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5kYXRhVHJhbnNmZXI/LmdldERhdGEoJ3ZhbHVlJyk7XG4gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gdmFsdWUgJiYgSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgICAgICAgICBpZiAob3B0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgeCwgeSB9ID0gR3JhcGhFZGl0b3JNZ3IuSW5zdGFuY2UuY29udmVydHNNb3VzZVBvaW50KGV2ZW50LngsIGV2ZW50LnkgLSAyOCk7XG4gICAgICAgICAgICAgICAgb3B0aW9ucy54ID0geDtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnkgPSB5O1xuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmFkZChvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGZ1bmN0aW9uIG9uQ2hhbmdlQ3JlYXRlTmV3TWVudShzaG93OiBib29sZWFuKSB7XG4gICAgICAgICAgICBzaG93Q3JlYXRlTmV3TWVudS52YWx1ZSA9IHNob3c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGlydHlSZWYsXG4gICAgICAgICAgICBmb3JnZVJlZixcbiAgICAgICAgICAgIGZvcmVncm91bmRSZWYsXG4gICAgICAgICAgICBkcmFnQXJlYVJlZixcbiAgICAgICAgICAgIHNoYWRlckdyYXBoUmVmLFxuXG4gICAgICAgICAgICBvblJlc2V0LFxuICAgICAgICAgICAgb25TYXZlLFxuXG4gICAgICAgICAgICBvbkRyYWdFbmQsXG5cbiAgICAgICAgICAgIHNob3dDcmVhdGVOZXdNZW51LFxuICAgICAgICAgICAgb25DaGFuZ2VDcmVhdGVOZXdNZW51LFxuXG4gICAgICAgICAgICAuLi5tYXNrLFxuICAgICAgICAgICAgLi4uZmxvYXRXaW5kb3dzLFxuICAgICAgICB9O1xuICAgIH0sXG59KTtcbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/base-mgr.js b/extensions/shader-graph/dist/shader-graph/base/base-mgr.js new file mode 100644 index 0000000..7c121f8 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/base-mgr.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BaseMgr = void 0; +const tslib_1 = require("tslib"); +const events_1 = tslib_1.__importDefault(require("events")); +class BaseMgr extends events_1.default { + constructor() { + super(...arguments); + this._graphForge = null; + } + get graphForge() { + return this._graphForge; + } + setGraphForge(forge) { + this._graphForge = forge; + } + getRootGraphData() { + return this.graphForge.rootGraph; + } + getCurrentGraphData() { + const currentGraphData = this.graphForge.getCurrentGraph(); + if (currentGraphData) { + if (!currentGraphData.details) { + currentGraphData.details = {}; + } + if (!Array.isArray(currentGraphData.details.properties)) { + currentGraphData.details.properties = []; + } + } + return currentGraphData; + } + setGraphDataToForge(graphData) { + this.graphForge.setCurrentGraph(graphData); + } + release() { + } +} +exports.BaseMgr = BaseMgr; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tZ3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2Jhc2UvYmFzZS1tZ3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDREQUFrQztBQUlsQyxNQUFhLE9BQVEsU0FBUSxnQkFBWTtJQUF6Qzs7UUFFYyxnQkFBVyxHQUFpQyxJQUFJLENBQUM7SUFpQy9ELENBQUM7SUFoQ0csSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVksQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQTRCO1FBQzdDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzdCLENBQUM7SUFFTSxnQkFBZ0I7UUFDbkIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVUsQ0FBQztJQUN0QyxDQUFDO0lBRU0sbUJBQW1CO1FBQ3RCLE1BQU0sZ0JBQWdCLEdBQWMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0RSxJQUFJLGdCQUFnQixFQUFFO1lBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7Z0JBQzNCLGdCQUFnQixDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7YUFDakM7WUFDRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7Z0JBQ3JELGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO2FBQzVDO1NBQ0o7UUFDRCxPQUFPLGdCQUFnQixDQUFDO0lBQzVCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxTQUFvQjtRQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRU0sT0FBTztJQUVkLENBQUM7Q0FDSjtBQW5DRCwwQkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXZlbnRFbWl0dGVyIGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9ibG9jay1mb3JnZSc7XG5pbXBvcnQgeyBHcmFwaERhdGEgfSBmcm9tICcuLi8uLi9ibG9jay1mb3JnZS9pbnRlcmZhY2UnO1xuXG5leHBvcnQgY2xhc3MgQmFzZU1nciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG5cbiAgICBwcm90ZWN0ZWQgX2dyYXBoRm9yZ2U6IEhUTUxHcmFwaEZvcmdlRWxlbWVudCB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBnZXQgZ3JhcGhGb3JnZSgpOiBIVE1MR3JhcGhGb3JnZUVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JhcGhGb3JnZSE7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEdyYXBoRm9yZ2UoZm9yZ2U6IEhUTUxHcmFwaEZvcmdlRWxlbWVudCkge1xuICAgICAgICB0aGlzLl9ncmFwaEZvcmdlID0gZm9yZ2U7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFJvb3RHcmFwaERhdGEoKTogR3JhcGhEYXRhIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhGb3JnZS5yb290R3JhcGghO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDdXJyZW50R3JhcGhEYXRhKCk6IEdyYXBoRGF0YSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRHcmFwaERhdGE6IEdyYXBoRGF0YSA9IHRoaXMuZ3JhcGhGb3JnZS5nZXRDdXJyZW50R3JhcGgoKTtcbiAgICAgICAgaWYgKGN1cnJlbnRHcmFwaERhdGEpIHtcbiAgICAgICAgICAgIGlmICghY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzID0ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzLnByb3BlcnRpZXMpKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzLnByb3BlcnRpZXMgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3VycmVudEdyYXBoRGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0R3JhcGhEYXRhVG9Gb3JnZShncmFwaERhdGE6IEdyYXBoRGF0YSkge1xuICAgICAgICB0aGlzLmdyYXBoRm9yZ2Uuc2V0Q3VycmVudEdyYXBoKGdyYXBoRGF0YSk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbGVhc2UoKSB7XG5cbiAgICB9XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/forge-mgr.js b/extensions/shader-graph/dist/shader-graph/base/forge-mgr.js new file mode 100644 index 0000000..740ca27 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/forge-mgr.js @@ -0,0 +1,38 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ForgeMgr = void 0; +const index_1 = require("./index"); +const block_forge_1 = require("../../block-forge"); +/** + * 用于把 shader-graph 数据转成具体的对象,方便操作跟获取,主要是二次封装 Forge 这个类 + */ +class ForgeMgr extends index_1.BaseMgr { + constructor() { + super(...arguments); + this._forge = null; + } + static get Instance() { + if (!this._instance) { + this._instance = new ForgeMgr(); + } + return this._instance; + } + get forge() { + this._forge = new block_forge_1.Forge(this.graphForge.getRootGraph()); + return this._forge; + } + getGraph() { + return this.forge.getGraph(); + } + getBlockMap() { + return this.getGraph().getBlockMap(); + } + getBlockByUuid(uuid) { + return this.getBlockMap()[uuid]; + } + release() { + } +} +exports.ForgeMgr = ForgeMgr; +ForgeMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZ2UtbWdyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NoYWRlci1ncmFwaC9iYXNlL2ZvcmdlLW1nci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBa0M7QUFDbEMsbURBQTBDO0FBRTFDOztHQUVHO0FBQ0gsTUFBYSxRQUFTLFNBQVEsZUFBTztJQUFyQzs7UUFXWSxXQUFNLEdBQWlCLElBQUksQ0FBQztJQXFCeEMsQ0FBQztJQTVCVSxNQUFNLEtBQUssUUFBUTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7U0FDbkM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUdELElBQVksS0FBSztRQUNiLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxtQkFBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFHLENBQUMsQ0FBQztRQUN6RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVNLFFBQVE7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVNLFdBQVc7UUFDZCxPQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELE9BQU87SUFFUCxDQUFDOztBQS9CTCw0QkFnQ0M7QUE5QlUsa0JBQVMsR0FBb0IsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZU1nciB9IGZyb20gJy4vaW5kZXgnO1xuaW1wb3J0IHsgRm9yZ2UgfSBmcm9tICcuLi8uLi9ibG9jay1mb3JnZSc7XG5cbi8qKlxuICog55So5LqO5oqKIHNoYWRlci1ncmFwaCDmlbDmja7ovazmiJDlhbfkvZPnmoTlr7nosaHvvIzmlrnkvr/mk43kvZzot5/ojrflj5bvvIzkuLvopoHmmK/kuozmrKHlsIHoo4UgRm9yZ2Ug6L+Z5Liq57G7XG4gKi9cbmV4cG9ydCBjbGFzcyBGb3JnZU1nciBleHRlbmRzIEJhc2VNZ3Ige1xuXG4gICAgc3RhdGljIF9pbnN0YW5jZTogRm9yZ2VNZ3IgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IEZvcmdlTWdyIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgRm9yZ2VNZ3IoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZm9yZ2U6IEZvcmdlIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSBnZXQgZm9yZ2UoKTogRm9yZ2Uge1xuICAgICAgICB0aGlzLl9mb3JnZSA9IG5ldyBGb3JnZSh0aGlzLmdyYXBoRm9yZ2UuZ2V0Um9vdEdyYXBoKCkhKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZvcmdlO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRHcmFwaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9yZ2UuZ2V0R3JhcGgoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QmxvY2tNYXAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEdyYXBoKCkuZ2V0QmxvY2tNYXAoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QmxvY2tCeVV1aWQodXVpZDogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJsb2NrTWFwKClbdXVpZF07XG4gICAgfVxuXG4gICAgcmVsZWFzZSgpIHtcblxuICAgIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/graph-asset-mgr.js b/extensions/shader-graph/dist/shader-graph/base/graph-asset-mgr.js new file mode 100644 index 0000000..01cdcd8 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/graph-asset-mgr.js @@ -0,0 +1,264 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphAssetMgr = void 0; +const path_1 = require("path"); +const fs_extra_1 = require("fs-extra"); +const internal_1 = require("./internal"); +const global_exports_1 = require("../global-exports"); +const utils_1 = require("../utils"); +const index_1 = require("./index"); +const declare_1 = require("../declare"); +/** + * 用于处理 shader-graph Asset 资源的存储 + */ +class GraphAssetMgr { + constructor() { + this.assetUuid = ''; + this.assetData = ''; + this.shaderGraphAssetInfo = null; + } + static get Instance() { + if (!this._instance) { + this._instance = new GraphAssetMgr(); + } + return this._instance; + } + get uuid() { + return this.assetUuid || ''; + } + async openAsset() { + await index_1.GraphConfigMgr.Instance.load(); + const isReady = await index_1.MessageMgr.Instance.checkSceneReady(); + if (isReady) { + index_1.MaskMgr.Instance.show(internal_1.MaskType.WaitLoad); + await (0, declare_1.declareGraphBlock)(); + await this.load(); + } + else { + index_1.MessageMgr.Instance.setSceneReady(false); + index_1.MaskMgr.Instance.show(internal_1.MaskType.WaitSceneReady); + } + } + async load(uuid) { + uuid = uuid || await Editor.Profile.getConfig(global_exports_1.PACKAGE_JSON.name, 'asset-uuid', 'local'); + if (!uuid) { + index_1.MaskMgr.Instance.show(internal_1.MaskType.NeedCreateNewAsset); + return false; + } + this.assetUuid = uuid; + this.shaderGraphAssetInfo = await Editor.Message.request('asset-db', 'query-asset-info', uuid); + if (!this.shaderGraphAssetInfo && index_1.GraphDataMgr.Instance.getGraphAssetData()) { + index_1.MaskMgr.Instance.show(internal_1.MaskType.AssetMissing); + return false; + } + if (this.shaderGraphAssetInfo) { + this.assetData = (0, fs_extra_1.readFileSync)(this.shaderGraphAssetInfo.file, 'utf8'); + index_1.GraphDataMgr.Instance.setGraphDataByAsset(this.shaderGraphAssetInfo, this.assetData); + } + else { + this.assetData = ''; + } + if (!this.assetData) { + index_1.MaskMgr.Instance.show(internal_1.MaskType.NeedCreateNewAsset); + return false; + } + index_1.MaskMgr.Instance.hide(internal_1.MaskType.AssetMissing); + index_1.MaskMgr.Instance.hide(internal_1.MaskType.NeedCreateNewAsset); + index_1.MessageMgr.Instance.send(index_1.MessageType.AssetLoaded); + return true; + } + /** + * 打开指定 Shader Graph 资源 + */ + async open() { + try { + const result = await Editor.Dialog.select({ + title: Editor.I18n.t('shader-graph.messages.titles.open'), + path: global_exports_1.PROJECT_PATH, + type: 'file', + multi: false, + filters: [{ name: 'Shader Graph', extensions: ['shadergraph'] }], + }); + const uuid = await (0, utils_1.getAssetUuidByPath)(result.filePaths[0]); + await Editor.Profile.setConfig(global_exports_1.PACKAGE_JSON.name, 'asset-uuid', uuid, 'local'); + return await this.load(uuid); + } + catch (err) { + console.error(err); + return false; + } + } + /** + * 新建 Shader Graph 资源 + */ + async createNew(type) { + try { + const result = await Editor.Dialog.save({ + title: Editor.I18n.t('shader-graph.messages.save.title'), + path: (0, path_1.join)(Editor.Project.path, 'assets', 'New Shader Graph'), + filters: [{ + name: 'New Shader Graph', + extensions: ['shadergraph'], + }], + }); + const url = (0, utils_1.convertToProjectDbUrl)(result.filePath); + const defaultShaderGraph = await index_1.GraphDataMgr.createDefaultShaderGraph(type); + const asset = await this.createAsset(url, defaultShaderGraph); + if (asset) { + return await this.load(asset.uuid); + } + return false; + } + catch (err) { + console.error(err); + return false; + } + } + /** + * 保存 + */ + async save() { + try { + if (!this.shaderGraphAssetInfo) + return false; + index_1.GraphDataMgr.Instance.syncLastGraphData(); + console.time('save'); + Editor.Message.request('asset-db', 'save-asset', this.shaderGraphAssetInfo.uuid, index_1.GraphDataMgr.Instance.getGraphAssetData()).then(() => { + console.timeEnd('save'); + }); + index_1.GraphDataMgr.Instance.setDirty(false); + return true; + } + catch (e) { + console.error(e); + return false; + } + } + /** + * 另存为 + */ + async saveAs() { + try { + const result = await Editor.Dialog.save({ + title: Editor.I18n.t('shader-graph.messages.save.title'), + path: (0, path_1.join)(Editor.Project.path, 'assets', this.shaderGraphAssetInfo?.name || global_exports_1.DEFAULT_NAME), + filters: [{ + name: 'Shader Graph', + extensions: ['shadergraph'], + }], + }); + const url = (0, utils_1.convertToProjectDbUrl)(result.filePath); + if (!url) { + console.debug('另存 Shader Graph 资源失败, 保存的 url 为 null'); + return false; + } + const asset = await this.createAsset(url, index_1.GraphDataMgr.Instance.getGraphAssetData()); + if (asset) { + return await this.load(asset.uuid); + } + return false; + } + catch (e) { + console.error('保存失败!', e); + return false; + } + } + /** + * 检查是否需要保存 + */ + async checkIfSave() { + if (this.shaderGraphAssetInfo && !(0, fs_extra_1.existsSync)(this.shaderGraphAssetInfo.file)) { + const result = await Editor.Dialog.warn(Editor.I18n.t('shader-graph.messages.missing_assets.detail'), { + title: Editor.I18n.t('shader-graph.messages.titles.normal'), + default: 0, + cancel: 1, + buttons: [ + Editor.I18n.t('shader-graph.buttons.save'), + Editor.I18n.t('shader-graph.buttons.unsaved'), + ], + }); + if (0 === result.response) { + // 另存为 + return await this.saveAs(); + } + return false; + } + else { + const result = await Editor.Dialog.warn(Editor.I18n.t('shader-graph.messages.save.detail'), { + title: Editor.I18n.t('shader-graph.messages.titles.normal'), + default: 0, + cancel: 1, + buttons: [ + Editor.I18n.t('shader-graph.buttons.save'), + Editor.I18n.t('shader-graph.buttons.unsaved'), + ], + }); + if (0 === result.response) { + // 另存为 + return await this.save(); + } + return false; + } + } + async createAsset(url, content) { + try { + if (!url || !content) + return; + // 强制覆盖 + return await Editor.Message.request('asset-db', 'create-asset', url, content, { overwrite: true }); + } + catch (e) { + console.error(e); + } + } + assetAdd(uuid, info) { + if (info && info.importer) { + index_1.MessageMgr.Instance.callSceneMethod('registerEffects', [uuid]); + } + } + async assetDelete(uuid, info) { + if (info && info.importer) { + index_1.MessageMgr.Instance.callSceneMethod('removeEffects', [uuid]); + } + if (this.uuid === uuid) { + await index_1.GraphConfigMgr.Instance.delete(uuid); + index_1.MaskMgr.Instance.show(internal_1.MaskType.AssetMissing); + } + } + assetChange(uuid, info) { + if (info && info.importer) { + index_1.MessageMgr.Instance.callSceneMethod('updateEffect', [uuid]); + } + if (this.uuid === uuid && index_1.GraphDataMgr.Instance.graphForge && index_1.GraphDataMgr.Instance.graphData) { + try { + // 更新名字 + const newName = (0, utils_1.getName)(info.name); + const needToRename = index_1.GraphDataMgr.Instance.graphForge.getCurrentGraph().name !== newName; + const dirty = index_1.GraphDataMgr.Instance.getDirty(); + if (dirty && needToRename) { + index_1.MaskMgr.Instance.show(internal_1.MaskType.NeedSaveBeReloadByRename); + return; + } + if (dirty) + return; + if (needToRename) { + this.load(); + return; + } + // const baseData = readFileSync(info.file, 'utf8'); + // const conflictA = this.graphForge.serialize() !== baseData; + // const conflictB = this.graphForge.serialize(this.graphData) !== baseData; + // + // if (conflictA && conflictB) { + // MaskMgr.Instance.show(MaskType.AssetChange); + // } + } + catch (e) { + console.error(e); + } + } + } +} +exports.GraphAssetMgr = GraphAssetMgr; +GraphAssetMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtYXNzZXQtbWdyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NoYWRlci1ncmFwaC9iYXNlL2dyYXBoLWFzc2V0LW1nci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQkFBNEI7QUFDNUIsdUNBQW9EO0FBSXBELHlDQUFzQztBQUV0QyxzREFBNkU7QUFDN0Usb0NBQThFO0FBQzlFLG1DQUF5RjtBQUN6Rix3Q0FBK0M7QUFFL0M7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFBMUI7UUFXWSxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLHlCQUFvQixHQUFxQixJQUFJLENBQUM7SUEwUDFELENBQUM7SUFuUVUsTUFBTSxLQUFLLFFBQVE7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLGFBQWEsRUFBRSxDQUFDO1NBQ3hDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFNRCxJQUFJLElBQUk7UUFDSixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUztRQUNsQixNQUFNLHNCQUFjLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJDLE1BQU0sT0FBTyxHQUFHLE1BQU0sa0JBQVUsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUQsSUFBSSxPQUFPLEVBQUU7WUFDVCxlQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3pDLE1BQU0sSUFBQSwyQkFBaUIsR0FBRSxDQUFDO1lBQzFCLE1BQU0sSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1NBQ3JCO2FBQU07WUFDSCxrQkFBVSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENB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bkMsTUFBTSxZQUFZLEdBQUcsb0JBQVksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGVBQWUsRUFBRSxDQUFDLElBQUksS0FBSyxPQUFPLENBQUM7Z0JBRXpGLE1BQU0sS0FBSyxHQUFHLG9CQUFZLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMvQyxJQUFJLEtBQUssSUFBSSxZQUFZLEVBQUU7b0JBQ3ZCLGVBQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFRLENBQUMsd0JBQXdCLENBQUMsQ0FBQztvQkFDekQsT0FBTztpQkFDVjtnQkFFRCxJQUFJLEtBQUs7b0JBQUUsT0FBTztnQkFFbEIsSUFBSSxZQUFZLEVBQUU7b0JBQ2QsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO29CQUNaLE9BQU87aUJBQ1Y7Z0JBRUQsb0RBQW9EO2dCQUNwRCw4REFBOEQ7Z0JBQzlELDRFQUE0RTtnQkFDNUUsRUFBRTtnQkFDRixnQ0FBZ0M7Z0JBQ2hDLG1EQUFtRDtnQkFDbkQsSUFBSTthQUNQO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNwQjtTQUNKO0lBQ0wsQ0FBQzs7QUF0UUwsc0NBdVFDO0FBclFVLHVCQUFTLEdBQXlCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGpvaW4gfSBmcm9tICdwYXRoJztcbmltcG9ydCB7IGV4aXN0c1N5bmMsIHJlYWRGaWxlU3luYyB9IGZyb20gJ2ZzLWV4dHJhJztcblxuaW1wb3J0IHR5cGUgeyBBc3NldEluZm8gfSBmcm9tICdAY29jb3MvY3JlYXRvci10eXBlcy9lZGl0b3IvcGFja2FnZXMvYXNzZXQtZGIvQHR5cGVzL3B1YmxpYyc7XG5cbmltcG9ydCB7IE1hc2tUeXBlIH0gZnJvbSAnLi9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IERFRkFVTFRfTkFNRSwgUEFDS0FHRV9KU09OLCBQUk9KRUNUX1BBVEggfSBmcm9tICcuLi9nbG9iYWwtZXhwb3J0cyc7XG5pbXBvcnQgeyBjb252ZXJ0VG9Qcm9qZWN0RGJVcmwsIGdldEFzc2V0VXVpZEJ5UGF0aCwgZ2V0TmFtZSB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IEdyYXBoQ29uZmlnTWdyLCBHcmFwaERhdGFNZ3IsIE1lc3NhZ2VNZ3IsIE1lc3NhZ2VUeXBlLCBNYXNrTWdyIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBkZWNsYXJlR3JhcGhCbG9jayB9IGZyb20gJy4uL2RlY2xhcmUnO1xuXG4vKipcbiAqIOeUqOS6juWkhOeQhiBzaGFkZXItZ3JhcGggQXNzZXQg6LWE5rqQ55qE5a2Y5YKoXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaEFzc2V0TWdyIHtcblxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IEdyYXBoQXNzZXRNZ3IgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IEdyYXBoQXNzZXRNZ3Ige1xuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBHcmFwaEFzc2V0TWdyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXNzZXRVdWlkID0gJyc7XG4gICAgcHJpdmF0ZSBhc3NldERhdGEgPSAnJztcbiAgICBwcml2YXRlIHNoYWRlckdyYXBoQXNzZXRJbmZvOiBBc3NldEluZm8gfCBudWxsID0gbnVsbDtcblxuICAgIGdldCB1dWlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFzc2V0VXVpZCB8fCAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgb3BlbkFzc2V0KCkge1xuICAgICAgICBhd2FpdCBHcmFwaENvbmZpZ01nci5JbnN0YW5jZS5sb2FkKCk7XG5cbiAgICAgICAgY29uc3QgaXNSZWFkeSA9IGF3YWl0IE1lc3NhZ2VNZ3IuSW5zdGFuY2UuY2hlY2tTY2VuZVJlYWR5KCk7XG4gICAgICAgIGlmIChpc1JlYWR5KSB7XG4gICAgICAgICAgICBNYXNrTWdyLkluc3RhbmNlLnNob3coTWFza1R5cGUuV2FpdExvYWQpO1xuICAgICAgICAgICAgYXdhaXQgZGVjbGFyZUdyYXBoQmxvY2soKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubG9hZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZXRTY2VuZVJlYWR5KGZhbHNlKTtcbiAgICAgICAgICAgIE1hc2tNZ3IuSW5zdGFuY2Uuc2hvdyhNYXNrVHlwZS5XYWl0U2NlbmVSZWFkeSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgbG9hZCh1dWlkPzogc3RyaW5nIHwgdW5kZWZpbmVkKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHV1aWQgPSB1dWlkIHx8IGF3YWl0IEVkaXRvci5Qcm9maWxlLmdldENvbmZpZyhQQUNLQUdFX0pTT04ubmFtZSwgJ2Fzc2V0LXV1aWQnLCAnbG9jYWwnKTtcbiAgICAgICAgaWYgKCF1dWlkKSB7XG4gICAgICAgICAgICBNYXNrTWdyLkluc3RhbmNlLnNob3coTWFza1R5cGUuTmVlZENyZWF0ZU5ld0Fzc2V0KTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmFzc2V0VXVpZCA9IHV1aWQ7XG4gICAgICAgIHRoaXMuc2hhZGVyR3JhcGhBc3NldEluZm8gPSBhd2FpdCBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdhc3NldC1kYicsICdxdWVyeS1hc3NldC1pbmZvJywgdXVpZCk7XG4gICAgICAgIGlmICghdGhpcy5zaGFkZXJHcmFwaEFzc2V0SW5mbyAmJiBHcmFwaERhdGFNZ3IuSW5zdGFuY2UuZ2V0R3JhcGhBc3NldERhdGEoKSkge1xuICAgICAgICAgICAgTWFza01nci5JbnN0YW5jZS5zaG93KE1hc2tUeXBlLkFzc2V0TWlzc2luZyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5zaGFkZXJHcmFwaEFzc2V0SW5mbykge1xuICAgICAgICAgICAgdGhpcy5hc3NldERhdGEgPSByZWFkRmlsZVN5bmModGhpcy5zaGFkZXJHcmFwaEFzc2V0SW5mby5maWxlLCAndXRmOCcpO1xuICAgICAgICAgICAgR3JhcGhEYXRhTWdyLkluc3RhbmNlLnNldEdyYXBoRGF0YUJ5QXNzZXQodGhpcy5zaGFkZXJHcmFwaEFzc2V0SW5mbywgdGhpcy5hc3NldERhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hc3NldERhdGEgPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5hc3NldERhdGEpIHtcbiAgICAgICAgICAgIE1hc2tNZ3IuSW5zdGFuY2Uuc2hvdyhNYXNrVHlwZS5OZWVkQ3JlYXRlTmV3QXNzZXQpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIE1hc2tNZ3IuSW5zdGFuY2UuaGlkZShNYXNrVHlwZS5Bc3NldE1pc3NpbmcpO1xuICAgICAgICBNYXNrTWdyLkluc3RhbmNlLmhpZGUoTWFza1R5cGUuTmVlZENyZWF0ZU5ld0Fzc2V0KTtcbiAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLkFzc2V0TG9hZGVkKTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5omT5byA5oyH5a6aIFNoYWRlciBHcmFwaCDotYTmupBcbiAgICAgKi9cbiAgICBwdWJsaWMgYXN5bmMgb3BlbigpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IEVkaXRvci5EaWFsb2cuc2VsZWN0KHtcbiAgICAgICAgICAgICAgICB0aXRsZTogRWRpdG9yLkkxOG4udCgnc2hhZGVyLWdyYXBoLm1lc3NhZ2VzLnRpdGxlcy5vcGVuJyksXG4gICAgICAgICAgICAgICAgcGF0aDogUFJPSkVDVF9QQVRILFxuICAgICAgICAgICAgICAgIHR5cGU6ICdmaWxlJyxcbiAgICAgICAgICAgICAgICBtdWx0aTogZmFsc2UsXG4gICAgICAgICAgICAgICAgZmlsdGVyczogW3sgbmFtZTogJ1NoYWRlciBHcmFwaCcsIGV4dGVuc2lvbnM6IFsnc2hhZGVyZ3JhcGgnXSB9XSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCB1dWlkID0gYXdhaXQgZ2V0QXNzZXRVdWlkQnlQYXRoKHJlc3VsdC5maWxlUGF0aHNbMF0pO1xuICAgICAgICAgICAgYXdhaXQgRWRpdG9yLlByb2ZpbGUuc2V0Q29uZmlnKFBBQ0tBR0VfSlNPTi5uYW1lLCAnYXNzZXQtdXVpZCcsIHV1aWQsICdsb2NhbCcpO1xuICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubG9hZCh1dWlkKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmlrDlu7ogU2hhZGVyIEdyYXBoIOi1hOa6kFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBjcmVhdGVOZXcodHlwZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBFZGl0b3IuRGlhbG9nLnNhdmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGgubWVzc2FnZXMuc2F2ZS50aXRsZScpLFxuICAgICAgICAgICAgICAgIHBhdGg6IGpvaW4oRWRpdG9yLlByb2plY3QucGF0aCwgJ2Fzc2V0cycsICdOZXcgU2hhZGVyIEdyYXBoJyksXG4gICAgICAgICAgICAgICAgZmlsdGVyczogW3tcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ05ldyBTaGFkZXIgR3JhcGgnLFxuICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zOiBbJ3NoYWRlcmdyYXBoJ10sXG4gICAgICAgICAgICAgICAgfV0sXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgdXJsID0gY29udmVydFRvUHJvamVjdERiVXJsKHJlc3VsdC5maWxlUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBkZWZhdWx0U2hhZGVyR3JhcGggPSBhd2FpdCBHcmFwaERhdGFNZ3IuY3JlYXRlRGVmYXVsdFNoYWRlckdyYXBoKHR5cGUpO1xuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmNyZWF0ZUFzc2V0KHVybCwgZGVmYXVsdFNoYWRlckdyYXBoKTtcbiAgICAgICAgICAgIGlmIChhc3NldCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmxvYWQoYXNzZXQudXVpZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnIpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5L+d5a2YXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIHNhdmUoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMuc2hhZGVyR3JhcGhBc3NldEluZm8pIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIEdyYXBoRGF0YU1nci5JbnN0YW5jZS5zeW5jTGFzdEdyYXBoRGF0YSgpO1xuICAgICAgICAgICAgY29uc29sZS50aW1lKCdzYXZlJyk7XG4gICAgICAgICAgICBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdhc3NldC1kYicsICdzYXZlLWFzc2V0JywgdGhpcy5zaGFkZXJHcmFwaEFzc2V0SW5mby51dWlkLCBHcmFwaERhdGFNZ3IuSW5zdGFuY2UuZ2V0R3JhcGhBc3NldERhdGEoKSkudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc29sZS50aW1lRW5kKCdzYXZlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIEdyYXBoRGF0YU1nci5JbnN0YW5jZS5zZXREaXJ0eShmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWPpuWtmOS4ulxuICAgICAqL1xuICAgIHB1YmxpYyBhc3luYyBzYXZlQXMoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBFZGl0b3IuRGlhbG9nLnNhdmUoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGgubWVzc2FnZXMuc2F2ZS50aXRsZScpLFxuICAgICAgICAgICAgICAgIHBhdGg6IGpvaW4oRWRpdG9yLlByb2plY3QucGF0aCwgJ2Fzc2V0cycsIHRoaXMuc2hhZGVyR3JhcGhBc3NldEluZm8/Lm5hbWUgfHwgREVGQVVMVF9OQU1FKSxcbiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnU2hhZGVyIEdyYXBoJyxcbiAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uczogWydzaGFkZXJncmFwaCddLFxuICAgICAgICAgICAgICAgIH1dLFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGNvbnZlcnRUb1Byb2plY3REYlVybChyZXN1bHQuZmlsZVBhdGgpO1xuICAgICAgICAgICAgaWYgKCF1cmwpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmRlYnVnKCflj6blrZggU2hhZGVyIEdyYXBoIOi1hOa6kOWksei0pSwg5L+d5a2Y55qEIHVybCDkuLogbnVsbCcpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgYXNzZXQgPSBhd2FpdCB0aGlzLmNyZWF0ZUFzc2V0KHVybCwgR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdldEdyYXBoQXNzZXREYXRhKCkpO1xuICAgICAgICAgICAgaWYgKGFzc2V0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubG9hZChhc3NldC51dWlkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcign5L+d5a2Y5aSx6LSlIScsIGUpO1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog5qOA5p+l5piv5ZCm6ZyA6KaB5L+d5a2YXG4gICAgICovXG4gICAgcHVibGljIGFzeW5jIGNoZWNrSWZTYXZlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgICAgICBpZiAodGhpcy5zaGFkZXJHcmFwaEFzc2V0SW5mbyAmJiAhZXhpc3RzU3luYyh0aGlzLnNoYWRlckdyYXBoQXNzZXRJbmZvLmZpbGUpKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBFZGl0b3IuRGlhbG9nLndhcm4oRWRpdG9yLkkxOG4udCgnc2hhZGVyLWdyYXBoLm1lc3NhZ2VzLm1pc3NpbmdfYXNzZXRzLmRldGFpbCcpLCB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5tZXNzYWdlcy50aXRsZXMubm9ybWFsJyksXG4gICAgICAgICAgICAgICAgZGVmYXVsdDogMCxcbiAgICAgICAgICAgICAgICBjYW5jZWw6IDEsXG4gICAgICAgICAgICAgICAgYnV0dG9uczogW1xuICAgICAgICAgICAgICAgICAgICBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGguYnV0dG9ucy5zYXZlJyksXG4gICAgICAgICAgICAgICAgICAgIEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5idXR0b25zLnVuc2F2ZWQnKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBpZiAoMCA9PT0gcmVzdWx0LnJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgICAgLy8g5Y+m5a2Y5Li6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2F2ZUFzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBFZGl0b3IuRGlhbG9nLndhcm4oRWRpdG9yLkkxOG4udCgnc2hhZGVyLWdyYXBoLm1lc3NhZ2VzLnNhdmUuZGV0YWlsJyksIHtcbiAgICAgICAgICAgICAgICB0aXRsZTogRWRpdG9yLkkxOG4udCgnc2hhZGVyLWdyYXBoLm1lc3NhZ2VzLnRpdGxlcy5ub3JtYWwnKSxcbiAgICAgICAgICAgICAgICBkZWZhdWx0OiAwLFxuICAgICAgICAgICAgICAgIGNhbmNlbDogMSxcbiAgICAgICAgICAgICAgICBidXR0b25zOiBbXG4gICAgICAgICAgICAgICAgICAgIEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5idXR0b25zLnNhdmUnKSxcbiAgICAgICAgICAgICAgICAgICAgRWRpdG9yLkkxOG4udCgnc2hhZGVyLWdyYXBoLmJ1dHRvbnMudW5zYXZlZCcpLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICgwID09PSByZXN1bHQucmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAvLyDlj6blrZjkuLpcbiAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zYXZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgY3JlYXRlQXNzZXQodXJsOiBzdHJpbmcgfCB1bmRlZmluZWQsIGNvbnRlbnQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IFByb21pc2U8QXNzZXRJbmZvIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoIXVybCB8fCAhY29udGVudCkgcmV0dXJuO1xuXG4gICAgICAgICAgICAvLyDlvLrliLbopobnm5ZcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdhc3NldC1kYicsICdjcmVhdGUtYXNzZXQnLCB1cmwsIGNvbnRlbnQsIHsgb3ZlcndyaXRlOiB0cnVlIH0pIGFzIEFzc2V0SW5mbztcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3NldEFkZCh1dWlkOiBzdHJpbmcsIGluZm86IEFzc2V0SW5mbykge1xuICAgICAgICBpZiAoaW5mbyAmJiBpbmZvLmltcG9ydGVyKSB7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLmNhbGxTY2VuZU1ldGhvZCgncmVnaXN0ZXJFZmZlY3RzJywgW3V1aWRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBhc3NldERlbGV0ZSh1dWlkOiBzdHJpbmcsIGluZm86IEFzc2V0SW5mbykge1xuICAgICAgICBpZiAoaW5mbyAmJiBpbmZvLmltcG9ydGVyKSB7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLmNhbGxTY2VuZU1ldGhvZCgncmVtb3ZlRWZmZWN0cycsIFt1dWlkXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMudXVpZCA9PT0gdXVpZCkge1xuICAgICAgICAgICAgYXdhaXQgR3JhcGhDb25maWdNZ3IuSW5zdGFuY2UuZGVsZXRlKHV1aWQpO1xuICAgICAgICAgICAgTWFza01nci5JbnN0YW5jZS5zaG93KE1hc2tUeXBlLkFzc2V0TWlzc2luZyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXNzZXRDaGFuZ2UodXVpZDogc3RyaW5nLCBpbmZvOiBBc3NldEluZm8pIHtcblxuICAgICAgICBpZiAoaW5mbyAmJiBpbmZvLmltcG9ydGVyKSB7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLmNhbGxTY2VuZU1ldGhvZCgndXBkYXRlRWZmZWN0JywgW3V1aWRdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLnV1aWQgPT09IHV1aWQgJiYgR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdyYXBoRm9yZ2UgJiYgR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdyYXBoRGF0YSkge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAvLyDmm7TmlrDlkI3lrZdcbiAgICAgICAgICAgICAgICBjb25zdCBuZXdOYW1lID0gZ2V0TmFtZShpbmZvLm5hbWUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5lZWRUb1JlbmFtZSA9IEdyYXBoRGF0YU1nci5JbnN0YW5jZS5ncmFwaEZvcmdlLmdldEN1cnJlbnRHcmFwaCgpLm5hbWUgIT09IG5ld05hbWU7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBkaXJ0eSA9IEdyYXBoRGF0YU1nci5JbnN0YW5jZS5nZXREaXJ0eSgpO1xuICAgICAgICAgICAgICAgIGlmIChkaXJ0eSAmJiBuZWVkVG9SZW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgTWFza01nci5JbnN0YW5jZS5zaG93KE1hc2tUeXBlLk5lZWRTYXZlQmVSZWxvYWRCeVJlbmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoZGlydHkpIHJldHVybjtcblxuICAgICAgICAgICAgICAgIGlmIChuZWVkVG9SZW5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBjb25zdCBiYXNlRGF0YSA9IHJlYWRGaWxlU3luYyhpbmZvLmZpbGUsICd1dGY4Jyk7XG4gICAgICAgICAgICAgICAgLy8gY29uc3QgY29uZmxpY3RBID0gdGhpcy5ncmFwaEZvcmdlLnNlcmlhbGl6ZSgpICE9PSBiYXNlRGF0YTtcbiAgICAgICAgICAgICAgICAvLyBjb25zdCBjb25mbGljdEIgPSB0aGlzLmdyYXBoRm9yZ2Uuc2VyaWFsaXplKHRoaXMuZ3JhcGhEYXRhKSAhPT0gYmFzZURhdGE7XG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBpZiAoY29uZmxpY3RBICYmIGNvbmZsaWN0Qikge1xuICAgICAgICAgICAgICAgIC8vICAgICBNYXNrTWdyLkluc3RhbmNlLnNob3coTWFza1R5cGUuQXNzZXRDaGFuZ2UpO1xuICAgICAgICAgICAgICAgIC8vIH1cbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/graph-config-mgr.js b/extensions/shader-graph/dist/shader-graph/base/graph-config-mgr.js new file mode 100644 index 0000000..212399f --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/graph-config-mgr.js @@ -0,0 +1,113 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphConfigMgr = void 0; +const lodash_1 = require("lodash"); +const global_exports_1 = require("../global-exports"); +const base_mgr_1 = require("./base-mgr"); +const float_window_1 = require("../../panels/shader-graph/components/float-window"); +const CONFIG_KEY = 'shader-graph.graph-configs'; +/** + * 用于处理 shader-graph 配置存储 + */ +class GraphConfigMgr extends base_mgr_1.BaseMgr { + constructor() { + super(...arguments); + this.uuid = ''; + this.floatWindows = {}; + this.graphConfigs = {}; + } + static get Instance() { + if (!this._instance) { + this._instance = new GraphConfigMgr(); + } + return this._instance; + } + getFloatingWindowConfig(name, floatWindowConfig) { + const { top, left, right, bottom, width, height } = this.floatWindows[name].style; + const show = (this.floatWindows[name].getAttribute('hidden') === null); + floatWindowConfig = floatWindowConfig || {}; + if (!floatWindowConfig.position) { + floatWindowConfig.position = {}; + } + if (left) { + floatWindowConfig.position.left = left; + } + else { + delete floatWindowConfig.position.left; + } + if (right) { + floatWindowConfig.position.right = right; + } + else { + delete floatWindowConfig.position.right; + } + if (top) { + floatWindowConfig.position.top = top; + } + else { + delete floatWindowConfig.position.top; + } + if (bottom) { + floatWindowConfig.position.bottom = bottom; + } + else { + delete floatWindowConfig.position.bottom; + } + if (Object.keys(floatWindowConfig.position).length === 0) { + delete floatWindowConfig.position; + } + floatWindowConfig.show = show; + floatWindowConfig.width = width; + floatWindowConfig.height = height; + return floatWindowConfig; + } + getConfig(uuid) { + return this.graphConfigs[uuid || this.uuid] || { offset: { x: 0, y: 0 }, scale: 1, floatWindows: {} }; + } + async load() { + this.uuid = await Editor.Profile.getConfig(global_exports_1.PACKAGE_JSON.name, 'asset-uuid', 'local'); + this.graphConfigs = await Editor.Profile.getConfig(global_exports_1.PACKAGE_JSON.name, CONFIG_KEY, 'local') || {}; + console.debug('load config: ', this.uuid, this.graphConfigs); + } + async delete(uuid) { + delete this.graphConfigs[uuid || this.uuid]; + await Editor.Profile.setConfig(global_exports_1.PACKAGE_JSON.name, CONFIG_KEY, this.graphConfigs, 'local'); + } + async sync() { + this.graphForge.setGraphInfo(await this.getConfig()); + } + async autoSave(assetUuid) { + const uuid = assetUuid || this.uuid; + const graphConfig = this.getConfig(uuid); + const graphInfo = this.graphForge.getGraphInfo(); + graphConfig.scale = graphInfo.scale; + graphConfig.offset = graphInfo.offset; + for (const name in this.floatWindows) { + const config = (0, float_window_1.getFloatWindowConfigByName)(name); + if (!config?.dontSave) { + graphConfig.floatWindows[name] = this.getFloatingWindowConfig(name, graphConfig.floatWindows[name]); + } + if (graphConfig.floatWindows[name] && 0 === Object.keys(graphConfig.floatWindows[name]).length) { + delete graphConfig.floatWindows[name]; + } + } + this.graphConfigs[uuid] = graphConfig; + console.debug('Auto save config: ', uuid, this.graphConfigs); + await Editor.Profile.setConfig(global_exports_1.PACKAGE_JSON.name, CONFIG_KEY, this.graphConfigs, 'local'); + } + getFloatingWindowConfigByName(name) { + return this.getConfig().floatWindows[name]; + } + async saveDetails(name, details) { + const graphConfig = this.getConfig(); + graphConfig.floatWindows[name] = (0, lodash_1.merge)({}, graphConfig.floatWindows[name], details); + this.graphConfigs[this.uuid] = graphConfig; + await Editor.Profile.setConfig(global_exports_1.PACKAGE_NAME, CONFIG_KEY, this.graphConfigs, 'local'); + } + addFloatWindow(name, floatWindow) { + this.floatWindows[name] = floatWindow; + } +} +exports.GraphConfigMgr = GraphConfigMgr; +GraphConfigMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtY29uZmlnLW1nci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXItZ3JhcGgvYmFzZS9ncmFwaC1jb25maWctbWdyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1DQUErQjtBQUcvQixzREFBK0Q7QUFDL0QseUNBQXFDO0FBQ3JDLG9GQUErRjtBQUUvRixNQUFNLFVBQVUsR0FBRyw0QkFBNEIsQ0FBQztBQUVoRDs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLGtCQUFPO0lBQTNDOztRQVdZLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixpQkFBWSxHQUFtQyxFQUFFLENBQUM7UUFDbEQsaUJBQVksR0FBa0IsRUFBRSxDQUFDO0lBbUc3QyxDQUFDO0lBNUdVLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxjQUFjLEVBQUUsQ0FBQztTQUN6QztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBTVMsdUJBQXVCLENBQUMsSUFBWSxFQUFFLGlCQUFxQztRQUNqRixNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUNsRixNQUFNLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxDQUFDO1FBRXZFLGlCQUFpQixHQUFHLGlCQUFpQixJQUFJLEVBQUUsQ0FBQztRQUM1QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO1lBQzdCLGlCQUFpQixDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7U0FD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LFdBQVcsQ0FBQyxJQUFZLEVBQUUsT0FBOEI7UUFDakUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBQSxjQUFLLEVBQUMsRUFBRSxFQUFFLFdBQVcsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE1BQU0sTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsNkJBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU0sY0FBYyxDQUFDLElBQVksRUFBRSxXQUF3QjtRQUN4RCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLFdBQVcsQ0FBQztJQUMxQyxDQUFDOztBQS9HTCx3Q0FnSEM7QUE5R1Usd0JBQVMsR0FBMEIsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWVyZ2UgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBJRmxvYXRXaW5kb3dDb25maWcsIElHcmFwaENvbmZpZ3MgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IFBBQ0tBR0VfSlNPTiwgUEFDS0FHRV9OQU1FIH0gZnJvbSAnLi4vZ2xvYmFsLWV4cG9ydHMnO1xuaW1wb3J0IHsgQmFzZU1nciB9IGZyb20gJy4vYmFzZS1tZ3InO1xuaW1wb3J0IHsgZ2V0RmxvYXRXaW5kb3dDb25maWdCeU5hbWUgfSBmcm9tICcuLi8uLi9wYW5lbHMvc2hhZGVyLWdyYXBoL2NvbXBvbmVudHMvZmxvYXQtd2luZG93JztcblxuY29uc3QgQ09ORklHX0tFWSA9ICdzaGFkZXItZ3JhcGguZ3JhcGgtY29uZmlncyc7XG5cbi8qKlxuICog55So5LqO5aSE55CGIHNoYWRlci1ncmFwaCDphY3nva7lrZjlgqhcbiAqL1xuZXhwb3J0IGNsYXNzIEdyYXBoQ29uZmlnTWdyIGV4dGVuZHMgQmFzZU1nciB7XG5cbiAgICBzdGF0aWMgX2luc3RhbmNlOiBHcmFwaENvbmZpZ01nciB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogR3JhcGhDb25maWdNZ3Ige1xuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBHcmFwaENvbmZpZ01ncigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHV1aWQgPSAnJztcbiAgICBwcml2YXRlIGZsb2F0V2luZG93czogeyBba2V5OiBzdHJpbmddOiBIVE1MRWxlbWVudCB9ID0ge307XG4gICAgcHJpdmF0ZSBncmFwaENvbmZpZ3M6IElHcmFwaENvbmZpZ3MgPSB7fTtcblxuICAgIHByb3RlY3RlZCBnZXRGbG9hdGluZ1dpbmRvd0NvbmZpZyhuYW1lOiBzdHJpbmcsIGZsb2F0V2luZG93Q29uZmlnOiBJRmxvYXRXaW5kb3dDb25maWcpOiBJRmxvYXRXaW5kb3dDb25maWcge1xuICAgICAgICBjb25zdCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5mbG9hdFdpbmRvd3NbbmFtZV0uc3R5bGU7XG4gICAgICAgIGNvbnN0IHNob3cgPSAodGhpcy5mbG9hdFdpbmRvd3NbbmFtZV0uZ2V0QXR0cmlidXRlKCdoaWRkZW4nKSA9PT0gbnVsbCk7XG5cbiAgICAgICAgZmxvYXRXaW5kb3dDb25maWcgPSBmbG9hdFdpbmRvd0NvbmZpZyB8fCB7fTtcbiAgICAgICAgaWYgKCFmbG9hdFdpbmRvd0NvbmZpZy5wb3NpdGlvbikge1xuICAgICAgICAgICAgZmxvYXRXaW5kb3dDb25maWcucG9zaXRpb24gPSB7fTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsZWZ0KSB7XG4gICAgICAgICAgICBmbG9hdFdpbmRvd0NvbmZpZy5wb3NpdGlvbi5sZWZ0ID0gbGVmdDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBmbG9hdFdpbmRvd0NvbmZpZy5wb3NpdGlvbi5sZWZ0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJpZ2h0KSB7XG4gICAgICAgICAgICBmbG9hdFdpbmRvd0NvbmZpZy5wb3NpdGlvbi5yaWdodCA9IHJpZ2h0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGZsb2F0V2luZG93Q29uZmlnLnBvc2l0aW9uLnJpZ2h0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRvcCkge1xuICAgICAgICAgICAgZmxvYXRXaW5kb3dDb25maWcucG9zaXRpb24udG9wID0gdG9wO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVsZXRlIGZsb2F0V2luZG93Q29uZmlnLnBvc2l0aW9uLnRvcDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChib3R0b20pIHtcbiAgICAgICAgICAgIGZsb2F0V2luZG93Q29uZmlnLnBvc2l0aW9uLmJvdHRvbSA9IGJvdHRvbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlbGV0ZSBmbG9hdFdpbmRvd0NvbmZpZy5wb3NpdGlvbi5ib3R0b207XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoT2JqZWN0LmtleXMoZmxvYXRXaW5kb3dDb25maWcucG9zaXRpb24pLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgZGVsZXRlIGZsb2F0V2luZG93Q29uZmlnLnBvc2l0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgZmxvYXRXaW5kb3dDb25maWcuc2hvdyA9IHNob3c7XG4gICAgICAgIGZsb2F0V2luZG93Q29uZmlnLndpZHRoID0gd2lkdGg7XG4gICAgICAgIGZsb2F0V2luZG93Q29uZmlnLmhlaWdodCA9IGhlaWdodDtcblxuICAgICAgICByZXR1cm4gZmxvYXRXaW5kb3dDb25maWc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENvbmZpZyh1dWlkPzogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdyYXBoQ29uZmlnc1t1dWlkIHx8IHRoaXMudXVpZF0gfHwgeyBvZmZzZXQ6IHsgeDogMCwgeTogMCB9LCBzY2FsZTogMSwgZmxvYXRXaW5kb3dzOiB7fSB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBsb2FkKCkge1xuICAgICAgICB0aGlzLnV1aWQgPSBhd2FpdCBFZGl0b3IuUHJvZmlsZS5nZXRDb25maWcoUEFDS0FHRV9KU09OLm5hbWUsICdhc3NldC11dWlkJywgJ2xvY2FsJyk7XG4gICAgICAgIHRoaXMuZ3JhcGhDb25maWdzID0gYXdhaXQgRWRpdG9yLlByb2ZpbGUuZ2V0Q29uZmlnKFBBQ0tBR0VfSlNPTi5uYW1lLCBDT05GSUdfS0VZLCAnbG9jYWwnKSB8fCB7fTtcbiAgICAgICAgY29uc29sZS5kZWJ1ZygnbG9hZCBjb25maWc6ICcsIHRoaXMudXVpZCwgdGhpcy5ncmFwaENvbmZpZ3MpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBkZWxldGUodXVpZD86IHN0cmluZykge1xuICAgICAgICBkZWxldGUgdGhpcy5ncmFwaENvbmZpZ3NbdXVpZCB8fCB0aGlzLnV1aWRdO1xuICAgICAgICBhd2FpdCBFZGl0b3IuUHJvZmlsZS5zZXRDb25maWcoUEFDS0FHRV9KU09OLm5hbWUsIENPTkZJR19LRVksIHRoaXMuZ3JhcGhDb25maWdzLCAnbG9jYWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc3luYygpIHtcbiAgICAgICAgdGhpcy5ncmFwaEZvcmdlLnNldEdyYXBoSW5mbyhhd2FpdCB0aGlzLmdldENvbmZpZygpKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgYXV0b1NhdmUoYXNzZXRVdWlkPzogc3RyaW5nICkge1xuICAgICAgICBjb25zdCB1dWlkID0gYXNzZXRVdWlkIHx8IHRoaXMudXVpZDtcbiAgICAgICAgY29uc3QgZ3JhcGhDb25maWcgPSB0aGlzLmdldENvbmZpZyh1dWlkKTtcbiAgICAgICAgY29uc3QgZ3JhcGhJbmZvID0gdGhpcy5ncmFwaEZvcmdlLmdldEdyYXBoSW5mbygpO1xuICAgICAgICBncmFwaENvbmZpZy5zY2FsZSA9IGdyYXBoSW5mby5zY2FsZTtcbiAgICAgICAgZ3JhcGhDb25maWcub2Zmc2V0ID0gZ3JhcGhJbmZvLm9mZnNldDtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIGluIHRoaXMuZmxvYXRXaW5kb3dzKSB7XG4gICAgICAgICAgICBjb25zdCBjb25maWcgPSBnZXRGbG9hdFdpbmRvd0NvbmZpZ0J5TmFtZShuYW1lKTtcbiAgICAgICAgICAgIGlmICghY29uZmlnPy5kb250U2F2ZSkge1xuICAgICAgICAgICAgICAgIGdyYXBoQ29uZmlnLmZsb2F0V2luZG93c1tuYW1lXSA9IHRoaXMuZ2V0RmxvYXRpbmdXaW5kb3dDb25maWcobmFtZSwgZ3JhcGhDb25maWcuZmxvYXRXaW5kb3dzW25hbWVdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChncmFwaENvbmZpZy5mbG9hdFdpbmRvd3NbbmFtZV0gJiYgMCA9PT0gT2JqZWN0LmtleXMoZ3JhcGhDb25maWcuZmxvYXRXaW5kb3dzW25hbWVdKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgZ3JhcGhDb25maWcuZmxvYXRXaW5kb3dzW25hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGhDb25maWdzW3V1aWRdID0gZ3JhcGhDb25maWc7XG4gICAgICAgIGNvbnNvbGUuZGVidWcoJ0F1dG8gc2F2ZSBjb25maWc6ICcsIHV1aWQsIHRoaXMuZ3JhcGhDb25maWdzKTtcbiAgICAgICAgYXdhaXQgRWRpdG9yLlByb2ZpbGUuc2V0Q29uZmlnKFBBQ0tBR0VfSlNPTi5uYW1lLCBDT05GSUdfS0VZLCB0aGlzLmdyYXBoQ29uZmlncywgJ2xvY2FsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEZsb2F0aW5nV2luZG93Q29uZmlnQnlOYW1lKG5hbWU6IHN0cmluZyk6IElGbG9hdFdpbmRvd0NvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbmZpZygpLmZsb2F0V2luZG93c1tuYW1lXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2F2ZURldGFpbHMobmFtZTogc3RyaW5nLCBkZXRhaWxzOiB7IFtrZXk6IHN0cmluZ106IGFueX0pIHtcbiAgICAgICAgY29uc3QgZ3JhcGhDb25maWcgPSB0aGlzLmdldENvbmZpZygpO1xuICAgICAgICBncmFwaENvbmZpZy5mbG9hdFdpbmRvd3NbbmFtZV0gPSBtZXJnZSh7fSwgZ3JhcGhDb25maWcuZmxvYXRXaW5kb3dzW25hbWVdLCBkZXRhaWxzKTtcbiAgICAgICAgdGhpcy5ncmFwaENvbmZpZ3NbdGhpcy51dWlkXSA9IGdyYXBoQ29uZmlnO1xuICAgICAgICBhd2FpdCBFZGl0b3IuUHJvZmlsZS5zZXRDb25maWcoUEFDS0FHRV9OQU1FLCBDT05GSUdfS0VZLCB0aGlzLmdyYXBoQ29uZmlncywgJ2xvY2FsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZEZsb2F0V2luZG93KG5hbWU6IHN0cmluZywgZmxvYXRXaW5kb3c6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuZmxvYXRXaW5kb3dzW25hbWVdID0gZmxvYXRXaW5kb3c7XG4gICAgfVxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/graph-data-mgr.js b/extensions/shader-graph/dist/shader-graph/base/graph-data-mgr.js new file mode 100644 index 0000000..2d70558 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/graph-data-mgr.js @@ -0,0 +1,233 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphDataMgr = void 0; +const tslib_1 = require("tslib"); +const js_yaml_1 = tslib_1.__importDefault(require("js-yaml")); +const lodash_1 = require("lodash"); +const declare_1 = require("../declare"); +const block_forge_1 = require("../../block-forge"); +const index_1 = require("./index"); +const utils_1 = require("../utils"); +/** + * 用于处理 shader-graph 数据 + */ +class GraphDataMgr extends index_1.BaseMgr { + constructor() { + super(...arguments); + /** + * 表示是否设置 Graph + * @private + */ + this._dirty = false; + this.graphData = null; + /** + * 存储面板一些主要配置 + * 例如缩放,偏移 + * @private + */ + this.graphConfig = undefined; + } + static get Instance() { + if (!this._instance) { + this._instance = new GraphDataMgr(); + } + return this._instance; + } + static async createDefaultShaderGraph(type = 'SurfaceMasterNode', graphType = 'Graph', graphName = 'New Shader Graph') { + switch (type) { + case 'Surface': + type = 'SurfaceMasterNode'; + break; + case 'Unlit': + type = 'UnlitMasterNode'; + break; + } + const graphGraphData = { + type: graphType, + name: graphName, + nodes: {}, + graphs: {}, + lines: {}, + details: { + properties: [], + }, + }; + const blockData = await (0, declare_1.getBlockDataByType)(type); + if (!blockData) { + console.log(`create default shader graph failed, MasterNode: ${type}`); + } + else { + blockData.position = { x: 347, y: -280 }; + graphGraphData.nodes[(0, block_forge_1.generateUUID)()] = blockData; + } + return js_yaml_1.default.dump(graphGraphData); + } + setDirty(val, type) { + this._dirty = val; + index_1.MessageMgr.Instance.send(index_1.MessageType.DirtyChanged, val, type); + } + getDirty() { + return this._dirty; + } + release() { + if (this.onDirtyDebounce) { + this.graphForge.removeEventListener('dirty', this.onDirtyDebounce); + this.graphForge.removeEventListener('undo', this.onDirtyDebounce); + this.graphForge.removeEventListener('redo', this.onDirtyDebounce); + index_1.MessageMgr.Instance.register(index_1.MessageType.Dirty, this.onDirtyDebounce); + } + this.onEnterGraphBind && this.graphForge.removeEventListener('enter-graph', this.onEnterGraphBind); + this.onAssetLoadedBind && index_1.MessageMgr.Instance.unregister(index_1.MessageType.AssetLoaded, this.onAssetLoadedBind); + } + setGraphForge(forge) { + super.setGraphForge(forge); + this.onDirtyDebounce = (0, lodash_1.debounce)(this.onDirty.bind(this), 100); + forge.addEventListener('dirty', this.onDirtyDebounce); + forge.addEventListener('undo', this.onDirtyDebounce); + forge.addEventListener('redo', this.onDirtyDebounce); + this.onEnterGraphBind = this.onEnterGraph.bind(this); + forge.addEventListener('enter-graph', this.onEnterGraphBind); + this.onAssetLoadedBind = this.onAssetLoaded.bind(this); + index_1.MessageMgr.Instance.register(index_1.MessageType.AssetLoaded, this.onAssetLoadedBind); + index_1.MessageMgr.Instance.register(index_1.MessageType.Dirty, this.onDirtyDebounce); + } + reset() { + this.setDirty(false); + } + onAssetLoaded() { + this.reset(); + this.reload(); + } + onDirty(event) { + if (!this.graphForge) + return; + index_1.GraphConfigMgr.Instance.autoSave().then(() => { }); + const customEvent = event; + this.setDirty(true, customEvent && customEvent.detail?.dirtyType); + } + onEnterGraph() { + if (!this.graphForge) + return; + this.graphData = this.graphForge.getCurrentGraph(); + index_1.MessageMgr.Instance.send(index_1.MessageType.EnterGraph); + } + async restore() { + if (this.lastGraphData) { + this.setGraphDataToForge(this.lastGraphData); + } + this.graphData = this.graphForge.getCurrentGraph(); + this.lastGraphData = JSON.parse(JSON.stringify(this.graphData)); + this.setDirty(false); + index_1.MessageMgr.Instance.send(index_1.MessageType.Restore); + } + setGraphDataByAsset(assetInfo, asset) { + if (!this.graphForge) + return; + if (asset) { + this.graphData = this.validateGraphData(assetInfo, this.graphForge.deserialize(asset)); + } + else { + console.warn('reload failed, graph data asset is null.'); + return; + } + } + async reload() { + if (!this.graphForge || !this.graphData) + return; + this.lastGraphData = JSON.parse(JSON.stringify(this.graphData)); + this.setGraphDataToForge(this.graphData); + await index_1.GraphConfigMgr.Instance.sync(); + index_1.MaskMgr.Instance.hideAll(); + index_1.MessageMgr.Instance.send(index_1.MessageType.SetGraphDataToForge); + } + syncLastGraphData() { + this.lastGraphData = JSON.parse(JSON.stringify(this.graphData)); + } + /** + * 存储到 Asset 的字符串数据 + */ + getGraphAssetData() { + if (!this.graphForge) + return ''; + return this.graphForge.serialize(); + } + /** + * 还原成原始节点 + * @private + */ + reduceToBaseNode(property) { + const graphData = this.getCurrentGraphData(); + for (const nodeID in graphData.nodes) { + const node = graphData.nodes[nodeID]; + const details = node && node.details; + if (!details) + continue; + if (details && details.propertyID === property.id) { + details.title = property.name; + details.outputPins = property.outputPins; + // 重置 + const block = (0, declare_1.getBlockTemplateByType)(details.baseType); + node.type = details.baseType; + const inputPins = []; + block?.data.details.inputPins?.forEach((pin, index) => { + const rawPinData = details.inputPins?.[index]; + if (rawPinData) { + pin.value = rawPinData.value; + } + inputPins.push(pin); + }); + node.details.inputPins = inputPins; + const outputPins = []; + block?.data.details.outputPins?.forEach((pin, index) => { + const rawPinData = details.outputPins?.[index]; + if (rawPinData) { + pin.value = rawPinData.value; + } + outputPins.push(pin); + }); + node.details.outputPins = outputPins; + } + } + this.setGraphDataToForge(graphData); + } + /** + * 验证数据 + * @private + */ + validateGraphData(assetInfo, graphData) { + let dirty = false; + const newName = (0, utils_1.getName)(assetInfo.path); + if (graphData.name !== newName) { + graphData.name = newName; + dirty = true; + } + for (const uuid in graphData.nodes) { + const block = graphData.nodes[uuid]; + const blockTemplate = (0, declare_1.getBlockTemplateByType)(block.type); + if (blockTemplate) { + // 1.新增 slot 需要补全数据 + const inputPins = block.details.inputPins; + if (inputPins && blockTemplate.data.details.inputPins) { + blockTemplate.data.details.inputPins.forEach((pin, index) => { + const inputPinData = inputPins[index]; + if (!inputPinData) { + inputPins[index] = pin; + dirty = true; + } + }); + } + } + } + // 初始化 + if (!graphData.details.properties) { + graphData.details.properties = []; + } + if (dirty && this.graphForge) { + Editor.Message.request('asset-db', 'save-asset', assetInfo.uuid, this.graphForge.serialize(graphData)); + } + return graphData; + } +} +exports.GraphDataMgr = GraphDataMgr; +GraphDataMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtZGF0YS1tZ3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2Jhc2UvZ3JhcGgtZGF0YS1tZ3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDhEQUEyQjtBQUMzQixtQ0FBa0M7QUFNbEMsd0NBQXdFO0FBQ3hFLG1EQUF3RTtBQUV4RSxtQ0FBa0c7QUFFbEcsb0NBQW1DO0FBRW5DOztHQUVHO0FBQ0gsTUFBYSxZQUFhLFNBQVEsZUFBTztJQUF6Qzs7UUF5Q0k7OztXQUdHO1FBQ08sV0FBTSxHQUFHLEtBQUssQ0FBQztRQUlsQixjQUFTLEdBQXFCLElBQUksQ0FBQztRQUUxQzs7OztXQUlHO1FBQ0ssZ0JBQVcsR0FBNkIsU0FBUyxDQUFDO0lBZ005RCxDQUFDO0lBcFBVLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztTQUN2QztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRU0sTUFBTSxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLEVBQUUsU0FBUyxHQUFHLE9BQU8sRUFBRSxTQUFTLEdBQUcsa0JBQWtCO1FBQ3hILFFBQVEsSUFBSSxFQUFFO1lBQ1YsS0FBSyxTQUFTO2dCQUNWLElBQUksR0FBRyxtQkFBbUIsQ0FBQztnQkFDM0IsTUFBTTtZQUNWLEtBQUssT0FBTztnQkFDUixJQUFJLEdBQUcsaUJBQWlCLENBQUM7Z0JBQ3pCLE1BQU07U0FDYjtRQUVELE1BQU0sY0FBYyxHQUFjO1lBQzlCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixLQUFLLEVBQUUsRUFBRTtZQUNULE1BQU0sRUFBRSxFQUFFO1lBQ1YsS0FBSyxFQUFFLEVBQUU7WUFDVCxPQUFPLEVB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UEwsb0NBd1BDO0FBdFBVLHNCQUFTLEdBQXdCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB5YW1sIGZyb20gJ2pzLXlhbWwnO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgdHlwZSB7IEdyYXBoRGF0YSwgUGluRGF0YSwgQmxvY2tEYXRhIH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgQmxvY2tUZW1wbGF0ZURhdGEgfSBmcm9tICcuLi9pbnRlcm5hbCc7XG5cbmltcG9ydCB7IGdldEJsb2NrRGF0YUJ5VHlwZSwgZ2V0QmxvY2tUZW1wbGF0ZUJ5VHlwZSB9IGZyb20gJy4uL2RlY2xhcmUnO1xuaW1wb3J0IHsgZ2VuZXJhdGVVVUlELCBIVE1MR3JhcGhGb3JnZUVsZW1lbnQgfSBmcm9tICcuLi8uLi9ibG9jay1mb3JnZSc7XG5cbmltcG9ydCB7IEJhc2VNZ3IsIE1lc3NhZ2VNZ3IsIE1lc3NhZ2VUeXBlLCBNYXNrTWdyLCBHcmFwaENvbmZpZ01nciwgSUdyYXBoQ29uZmlnIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBBc3NldEluZm8gfSBmcm9tICdAY29jb3MvY3JlYXRvci10eXBlcy9lZGl0b3IvcGFja2FnZXMvYXNzZXQtZGIvQHR5cGVzL3B1YmxpYyc7XG5pbXBvcnQgeyBnZXROYW1lIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIOeUqOS6juWkhOeQhiBzaGFkZXItZ3JhcGgg5pWw5o2uXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaERhdGFNZ3IgZXh0ZW5kcyBCYXNlTWdyIHtcblxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IEdyYXBoRGF0YU1nciB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogR3JhcGhEYXRhTWdyIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgR3JhcGhEYXRhTWdyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgYXN5bmMgY3JlYXRlRGVmYXVsdFNoYWRlckdyYXBoKHR5cGUgPSAnU3VyZmFjZU1hc3Rlck5vZGUnLCBncmFwaFR5cGUgPSAnR3JhcGgnLCBncmFwaE5hbWUgPSAnTmV3IFNoYWRlciBHcmFwaCcpIHtcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgICAgICBjYXNlICdTdXJmYWNlJzpcbiAgICAgICAgICAgICAgICB0eXBlID0gJ1N1cmZhY2VNYXN0ZXJOb2RlJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1VubGl0JzpcbiAgICAgICAgICAgICAgICB0eXBlID0gJ1VubGl0TWFzdGVyTm9kZSc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncmFwaEdyYXBoRGF0YTogR3JhcGhEYXRhID0ge1xuICAgICAgICAgICAgdHlwZTogZ3JhcGhUeXBlLFxuICAgICAgICAgICAgbmFtZTogZ3JhcGhOYW1lLFxuICAgICAgICAgICAgbm9kZXM6IHt9LFxuICAgICAgICAgICAgZ3JhcGhzOiB7fSxcbiAgICAgICAgICAgIGxpbmVzOiB7fSxcbiAgICAgICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGJsb2NrRGF0YSA9IGF3YWl0IGdldEJsb2NrRGF0YUJ5VHlwZSh0eXBlKTtcbiAgICAgICAgaWYgKCFibG9ja0RhdGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBjcmVhdGUgZGVmYXVsdCBzaGFkZXIgZ3JhcGggZmFpbGVkLCBNYXN0ZXJOb2RlOiAke3R5cGV9YCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBibG9ja0RhdGEucG9zaXRpb24gPSB7IHg6IDM0NywgeTogLTI4MCB9O1xuICAgICAgICAgICAgZ3JhcGhHcmFwaERhdGEubm9kZXNbZ2VuZXJhdGVVVUlEKCldID0gYmxvY2tEYXRhO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB5YW1sLmR1bXAoZ3JhcGhHcmFwaERhdGEpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOihqOekuuaYr+WQpuiuvue9riBHcmFwaFxuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJvdGVjdGVkIF9kaXJ0eSA9IGZhbHNlO1xuXG4gICAgLy8g5Zu+5pWw5o2uXG4gICAgcHJvdGVjdGVkIGxhc3RHcmFwaERhdGE6IEdyYXBoRGF0YSB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgZ3JhcGhEYXRhOiBHcmFwaERhdGEgfCBudWxsID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIOWtmOWCqOmdouadv+S4gOS6m+S4u+imgemFjee9rlxuICAgICAqIOS+i+Wmgue8qeaUvu+8jOWBj+enu1xuICAgICAqIEBwcml2YXRlXG4gICAgICovXG4gICAgcHJpdmF0ZSBncmFwaENvbmZpZzogSUdyYXBoQ29uZmlnIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIHNldERpcnR5KHZhbDogYm9vbGVhbiwgdHlwZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kaXJ0eSA9IHZhbDtcbiAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLkRpcnR5Q2hhbmdlZCwgdmFsLCB0eXBlKTtcbiAgICB9XG4gICAgcHVibGljIGdldERpcnR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlydHk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbkFzc2V0TG9hZGVkQmluZD86ICh1dWlkOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgcHJpdmF0ZSBvbkRpcnR5RGVib3VuY2U/OiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xuICAgIHByaXZhdGUgb25FbnRlckdyYXBoQmluZD86ICgpID0+IHZvaWQ7XG5cbiAgICByZWxlYXNlKCkge1xuICAgICAgICBpZiAodGhpcy5vbkRpcnR5RGVib3VuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuZ3JhcGhGb3JnZS5yZW1vdmVFdmVudExpc3RlbmVyKCdkaXJ0eScsIHRoaXMub25EaXJ0eURlYm91bmNlKTtcbiAgICAgICAgICAgIHRoaXMuZ3JhcGhGb3JnZS5yZW1vdmVFdmVudExpc3RlbmVyKCd1bmRvJywgdGhpcy5vbkRpcnR5RGVib3VuY2UpO1xuICAgICAgICAgICAgdGhpcy5ncmFwaEZvcmdlLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZG8nLCB0aGlzLm9uRGlydHlEZWJvdW5jZSk7XG4gICAgICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkRpcnR5LCB0aGlzLm9uRGlydHlEZWJvdW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5vbkVudGVyR3JhcGhCaW5kICYmIHRoaXMuZ3JhcGhGb3JnZS5yZW1vdmVFdmVudExpc3RlbmVyKCdlbnRlci1ncmFwaCcsIHRoaXMub25FbnRlckdyYXBoQmluZCk7XG4gICAgICAgIHRoaXMub25Bc3NldExvYWRlZEJpbmQgJiYgTWVzc2FnZU1nci5JbnN0YW5jZS51bnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkFzc2V0TG9hZGVkLCB0aGlzLm9uQXNzZXRMb2FkZWRCaW5kKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0R3JhcGhGb3JnZShmb3JnZTogSFRNTEdyYXBoRm9yZ2VFbGVtZW50KSB7XG4gICAgICAgIHN1cGVyLnNldEdyYXBoRm9yZ2UoZm9yZ2UpO1xuICAgICAgICB0aGlzLm9uRGlydHlEZWJvdW5jZSA9IGRlYm91bmNlKHRoaXMub25EaXJ0eS5iaW5kKHRoaXMpLCAxMDApO1xuICAgICAgICBmb3JnZS5hZGRFdmVudExpc3RlbmVyKCdkaXJ0eScsIHRoaXMub25EaXJ0eURlYm91bmNlKTtcbiAgICAgICAgZm9yZ2UuYWRkRXZlbnRMaXN0ZW5lcigndW5kbycsIHRoaXMub25EaXJ0eURlYm91bmNlKTtcbiAgICAgICAgZm9yZ2UuYWRkRXZlbnRMaXN0ZW5lcigncmVkbycsIHRoaXMub25EaXJ0eURlYm91bmNlKTtcblxuICAgICAgICB0aGlzLm9uRW50ZXJHcmFwaEJpbmQgPSB0aGlzLm9uRW50ZXJHcmFwaC5iaW5kKHRoaXMpO1xuICAgICAgICBmb3JnZS5hZGRFdmVudExpc3RlbmVyKCdlbnRlci1ncmFwaCcsIHRoaXMub25FbnRlckdyYXBoQmluZCk7XG5cbiAgICAgICAgdGhpcy5vbkFzc2V0TG9hZGVkQmluZCA9IHRoaXMub25Bc3NldExvYWRlZC5iaW5kKHRoaXMpO1xuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnJlZ2lzdGVyKE1lc3NhZ2VUeXBlLkFzc2V0TG9hZGVkLCB0aGlzLm9uQXNzZXRMb2FkZWRCaW5kKTtcbiAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5yZWdpc3RlcihNZXNzYWdlVHlwZS5EaXJ0eSwgdGhpcy5vbkRpcnR5RGVib3VuY2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuc2V0RGlydHkoZmFsc2UpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25Bc3NldExvYWRlZCgpIHtcbiAgICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgICB0aGlzLnJlbG9hZCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgb25EaXJ0eShldmVudDogRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdyYXBoRm9yZ2UpIHJldHVybjtcblxuICAgICAgICBHcmFwaENvbmZpZ01nci5JbnN0YW5jZS5hdXRvU2F2ZSgpLnRoZW4oKCkgPT4ge30pO1xuICAgICAgICBjb25zdCBjdXN0b21FdmVudCA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50O1xuICAgICAgICB0aGlzLnNldERpcnR5KHRydWUsIGN1c3RvbUV2ZW50ICYmIGN1c3RvbUV2ZW50LmRldGFpbD8uZGlydHlUeXBlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FbnRlckdyYXBoKCkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JhcGhGb3JnZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuZ3JhcGhEYXRhID0gdGhpcy5ncmFwaEZvcmdlLmdldEN1cnJlbnRHcmFwaCgpO1xuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnNlbmQoTWVzc2FnZVR5cGUuRW50ZXJHcmFwaCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlc3RvcmUoKSB7XG4gICAgICAgIGlmICh0aGlzLmxhc3RHcmFwaERhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0R3JhcGhEYXRhVG9Gb3JnZSh0aGlzLmxhc3RHcmFwaERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGhEYXRhID0gdGhpcy5ncmFwaEZvcmdlLmdldEN1cnJlbnRHcmFwaCgpO1xuICAgICAgICB0aGlzLmxhc3RHcmFwaERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZ3JhcGhEYXRhKSk7XG5cbiAgICAgICAgdGhpcy5zZXREaXJ0eShmYWxzZSk7XG5cbiAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLlJlc3RvcmUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRHcmFwaERhdGFCeUFzc2V0KGFzc2V0SW5mbzogQXNzZXRJbmZvLCBhc3NldDogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdGhpcy5ncmFwaEZvcmdlKSByZXR1cm47XG5cbiAgICAgICAgaWYgKGFzc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmdyYXBoRGF0YSA9IHRoaXMudmFsaWRhdGVHcmFwaERhdGEoYXNzZXRJbmZvLCB0aGlzLmdyYXBoRm9yZ2UuZGVzZXJpYWxpemUoYXNzZXQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybigncmVsb2FkIGZhaWxlZCwgZ3JhcGggZGF0YSBhc3NldCBpcyBudWxsLicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlbG9hZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmdyYXBoRm9yZ2UgfHwgIXRoaXMuZ3JhcGhEYXRhKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5sYXN0R3JhcGhEYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmdyYXBoRGF0YSkpO1xuICAgICAgICB0aGlzLnNldEdyYXBoRGF0YVRvRm9yZ2UodGhpcy5ncmFwaERhdGEpO1xuXG4gICAgICAgIGF3YWl0IEdyYXBoQ29uZmlnTWdyLkluc3RhbmNlLnN5bmMoKTtcbiAgICAgICAgTWFza01nci5JbnN0YW5jZS5oaWRlQWxsKCk7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2Uuc2VuZChNZXNzYWdlVHlwZS5TZXRHcmFwaERhdGFUb0ZvcmdlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3luY0xhc3RHcmFwaERhdGEoKSB7XG4gICAgICAgIHRoaXMubGFzdEdyYXBoRGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5ncmFwaERhdGEpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlrZjlgqjliLAgQXNzZXQg55qE5a2X56ym5Liy5pWw5o2uXG4gICAgICovXG4gICAgcHVibGljIGdldEdyYXBoQXNzZXREYXRhKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5ncmFwaEZvcmdlKSByZXR1cm4gJyc7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JhcGhGb3JnZS5zZXJpYWxpemUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDov5jljp/miJDljp/lp4voioLngrlcbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHB1YmxpYyByZWR1Y2VUb0Jhc2VOb2RlKHByb3BlcnR5OiBQcm9wZXJ0eURhdGEpIHtcbiAgICAgICAgY29uc3QgZ3JhcGhEYXRhID0gdGhpcy5nZXRDdXJyZW50R3JhcGhEYXRhKCk7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZUlEIGluIGdyYXBoRGF0YS5ub2Rlcykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZTogQmxvY2tEYXRhID0gZ3JhcGhEYXRhLm5vZGVzW25vZGVJRF07XG4gICAgICAgICAgICBjb25zdCBkZXRhaWxzID0gbm9kZSAmJiBub2RlLmRldGFpbHM7XG4gICAgICAgICAgICBpZiAoIWRldGFpbHMpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICBpZiAoZGV0YWlscyAmJiBkZXRhaWxzLnByb3BlcnR5SUQgPT09IHByb3BlcnR5LmlkKSB7XG4gICAgICAgICAgICAgICAgZGV0YWlscy50aXRsZSA9IHByb3BlcnR5Lm5hbWU7XG4gICAgICAgICAgICAgICAgZGV0YWlscy5vdXRwdXRQaW5zID0gcHJvcGVydHkub3V0cHV0UGlucztcbiAgICAgICAgICAgICAgICAvLyDph43nva5cbiAgICAgICAgICAgICAgICBjb25zdCBibG9jayA9IGdldEJsb2NrVGVtcGxhdGVCeVR5cGUoZGV0YWlscy5iYXNlVHlwZSk7XG4gICAgICAgICAgICAgICAgbm9kZS50eXBlID0gZGV0YWlscy5iYXNlVHlwZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0UGluczogUGluRGF0YVtdID0gW107XG4gICAgICAgICAgICAgICAgYmxvY2s/LmRhdGEuZGV0YWlscy5pbnB1dFBpbnM/LmZvckVhY2goKHBpbjogUGluRGF0YSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByYXdQaW5EYXRhID0gZGV0YWlscy5pbnB1dFBpbnM/LltpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdQaW5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaW4udmFsdWUgPSByYXdQaW5EYXRhLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlucHV0UGlucy5wdXNoKHBpbik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgbm9kZS5kZXRhaWxzLmlucHV0UGlucyA9IGlucHV0UGlucztcblxuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dFBpbnM6IFBpbkRhdGFbXSA9IFtdO1xuICAgICAgICAgICAgICAgIGJsb2NrPy5kYXRhLmRldGFpbHMub3V0cHV0UGlucz8uZm9yRWFjaCgocGluOiBQaW5EYXRhLCBpbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJhd1BpbkRhdGEgPSBkZXRhaWxzLm91dHB1dFBpbnM/LltpbmRleF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChyYXdQaW5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaW4udmFsdWUgPSByYXdQaW5EYXRhLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFBpbnMucHVzaChwaW4pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIG5vZGUuZGV0YWlscy5vdXRwdXRQaW5zID0gb3V0cHV0UGlucztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNldEdyYXBoRGF0YVRvRm9yZ2UoZ3JhcGhEYXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDpqozor4HmlbDmja5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCB2YWxpZGF0ZUdyYXBoRGF0YShhc3NldEluZm86IEFzc2V0SW5mbywgZ3JhcGhEYXRhOiBHcmFwaERhdGEpIHtcbiAgICAgICAgbGV0IGRpcnR5ID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3QgbmV3TmFtZSA9IGdldE5hbWUoYXNzZXRJbmZvLnBhdGgpO1xuICAgICAgICBpZiAoZ3JhcGhEYXRhLm5hbWUgIT09IG5ld05hbWUpIHtcbiAgICAgICAgICAgIGdyYXBoRGF0YS5uYW1lID0gbmV3TmFtZTtcbiAgICAgICAgICAgIGRpcnR5ID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgdXVpZCBpbiBncmFwaERhdGEubm9kZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGJsb2NrOiBCbG9ja0RhdGEgPSBncmFwaERhdGEubm9kZXNbdXVpZF07XG4gICAgICAgICAgICBjb25zdCBibG9ja1RlbXBsYXRlOiBCbG9ja1RlbXBsYXRlRGF0YSB8IHVuZGVmaW5lZCA9IGdldEJsb2NrVGVtcGxhdGVCeVR5cGUoYmxvY2sudHlwZSk7XG4gICAgICAgICAgICBpZiAoYmxvY2tUZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIC8vIDEu5paw5aKeIHNsb3Qg6ZyA6KaB6KGl5YWo5pWw5o2uXG4gICAgICAgICAgICAgICAgY29uc3QgaW5wdXRQaW5zID0gYmxvY2suZGV0YWlscy5pbnB1dFBpbnM7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0UGlucyAmJiBibG9ja1RlbXBsYXRlLmRhdGEuZGV0YWlscy5pbnB1dFBpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgYmxvY2tUZW1wbGF0ZS5kYXRhLmRldGFpbHMuaW5wdXRQaW5zLmZvckVhY2goKHBpbjogUGluRGF0YSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW5wdXRQaW5EYXRhOiBQaW5EYXRhIHwgdW5kZWZpbmVkID0gaW5wdXRQaW5zW2luZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaW5wdXRQaW5EYXRhKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRQaW5zW2luZGV4XSA9IHBpbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJ0eSA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyDliJ3lp4vljJZcbiAgICAgICAgaWYgKCFncmFwaERhdGEuZGV0YWlscy5wcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgICBncmFwaERhdGEuZGV0YWlscy5wcm9wZXJ0aWVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRpcnR5ICYmIHRoaXMuZ3JhcGhGb3JnZSkge1xuICAgICAgICAgICAgRWRpdG9yLk1lc3NhZ2UucmVxdWVzdCgnYXNzZXQtZGInLCAnc2F2ZS1hc3NldCcsIGFzc2V0SW5mby51dWlkLCB0aGlzLmdyYXBoRm9yZ2Uuc2VyaWFsaXplKGdyYXBoRGF0YSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBncmFwaERhdGE7XG4gICAgfVxufVxuXG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/graph-editor-mgr.js b/extensions/shader-graph/dist/shader-graph/base/graph-editor-mgr.js new file mode 100644 index 0000000..d9c8d95 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/graph-editor-mgr.js @@ -0,0 +1,282 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphEditorMgr = void 0; +const declare_1 = require("../declare"); +const block_forge_1 = require("../../block-forge"); +const utils_1 = require("../utils"); +const index_1 = require("./index"); +/** + * shader graph 的基础操作,增、删 + */ +class GraphEditorMgr extends index_1.BaseMgr { + constructor() { + super(...arguments); + this.clipboardData = []; + this.lastMousePoint = { x: 0, y: 0 }; + this.shaderGraphPanel = null; + } + static get Instance() { + if (!this._instance) { + this._instance = new GraphEditorMgr(); + } + return this._instance; + } + get mousePoint() { + return this.lastMousePoint; + } + get mousePointInPanel() { + return this.convertsMousePoint(this.lastMousePoint.x, this.lastMousePoint.y); + } + convertsMousePoint(x, y) { + const rect = this.shaderGraphPanel.getBoundingClientRect(); + return { + x: x - rect.x, + y: y - rect.y, + }; + } + addMousePointerListener(shaderGraphPanel) { + this.shaderGraphPanel = shaderGraphPanel; + document.body.addEventListener('mousemove', (event) => { + this.lastMousePoint = { x: event.clientX, y: event.clientY }; + }); + } + /** + * 剪切板是否为空 + */ + get clipboardIsNull() { + return this.clipboardData.length === 0; + } + add(options) { + options = JSON.parse(JSON.stringify(options)); + const blockTemplate = (0, declare_1.getBlockTemplateByType)(options.type); + const data = blockTemplate && blockTemplate.data; + if (!data) + return; + if (!options.details.outputPins || options.details.outputPins.length === 0) { + options.details.outputPins = data.details.outputPins || []; + } + if (!options.details.inputPins || options.details.inputPins.length === 0) { + options.details.inputPins = data.details.inputPins || []; + } + let position = { x: options.x || 0, y: options.y || 0 }; + if (options.x === undefined && options.y === undefined) { + position = this.graphForge.convertCoordinate(this.mousePointInPanel); + } + else if (!options.dontConvertPos) { + position = this.graphForge.convertCoordinate(position); + } + this.graphForge.addBlock({ + type: options.type, + position: position, + details: options.details, + }, options.uuid); + index_1.MessageMgr.Instance.send(index_1.MessageType.Dirty); + } + deleteLinesByDuplicateOutput(lines, line) { + Object.keys(lines).forEach(key => { + const otherLine = lines[key]; + if (otherLine.output.node === line.output.node && + otherLine.output.param === line.output.param) { + this.graphForge.removeLine(key); + } + }); + } + async delete(options = []) { + const list = (0, utils_1.mergeGraphEditorOtherOptions)(options, this.getSelectedItems()); + this.graphForge?.startRecording(); + for (const item of list) { + if (item.blockData) { + const data = item.blockData; + if (this.isMaster(data.type)) + continue; + await this.graphForge?.removeBlock(item.uuid); + if (data.details.inputPins) { + await this.removeRegisterMenuByInputPins(data.details.inputPins); + } + } + } + for (const item of list) { + if (item.lineData) { + await this.graphForge?.removeLine(item.uuid); + } + } + this.graphForge?.stopRecording(); + index_1.MessageMgr.Instance.send(index_1.MessageType.Dirty); + } + cut(options = []) { + const list = (0, utils_1.mergeGraphEditorOtherOptions)(options, this.getSelectedItems()); + if (list.length > 0) { + this.clipboardData = []; + for (const item of list) { + if (item.lineData) + continue; + const data = item.blockData; + if (!data) + continue; + if (this.isMaster(data.type)) + continue; + this.graphForge.removeBlock(item.uuid); + if (data.details.inputPins) { + this.removeRegisterMenuByInputPins(data.details.inputPins); + } + this.clipboardData.push(item); + } + } + } + copy(options = []) { + const list = (0, utils_1.mergeGraphEditorOtherOptions)(options, this.getSelectedItems()); + if (list.length > 0) { + this.clipboardData = []; + for (const item of list) { + if (item.lineData) + continue; + const data = item.blockData; + if (!data) + continue; + if (this.isMaster(data.type)) + continue; + this.clipboardData.push(JSON.parse(JSON.stringify(item))); + } + } + } + paste() { + const mousePoint = this.graphForge.convertCoordinate({ + x: this.mousePointInPanel.x, + y: this.mousePointInPanel.y, + }); + this.usePaste(mousePoint, this.clipboardData); + index_1.MessageMgr.Instance.send(index_1.MessageType.Dirty); + } + undo() { + this.graphForge?.undo(); + } + redo() { + this.graphForge?.redo(); + } + usePaste(mousePoint, list) { + const offsetPoint = (0, utils_1.getOffsetPointByMousePoint)(list, mousePoint); + const blockIDMap = new Map(); + list.forEach((item) => { + const newBlockID = (0, block_forge_1.generateUUID)(); + const data = JSON.parse(JSON.stringify(item.blockData)); + data.position.x += offsetPoint.x; + data.position.y += offsetPoint.y; + this.graphForge.addBlock(data, newBlockID); + blockIDMap.set(item.uuid, newBlockID); + }); + const blockMap = index_1.ForgeMgr.Instance.getBlockMap(); + // 为了用于去重 + const noDuplicatesArray = []; + const newLines = []; + list.forEach((item) => { + const block = blockMap[item.uuid]; + block.getOutputPinsList().forEach((pin) => { + pin.connectPins.forEach((connectPin) => { + // 如果拷贝输出的 block 没有包含在选中的 block 中就不需要添加 line + const outputNode = blockIDMap.get(connectPin.block.uuid); + if (!outputNode) + return; + const newLineInfo = { + type: 'curve', + input: { + node: blockIDMap.get(pin.block.uuid) || pin.block.uuid, + param: pin.desc.tag, + }, + output: { + node: blockIDMap.get(connectPin.block.uuid) || connectPin.block.uuid, + param: connectPin.desc.tag, + }, + details: {}, + }; + const tag = newLineInfo.input.node + newLineInfo.input.param + + newLineInfo.output.node + newLineInfo.output.param; + if (!noDuplicatesArray.includes(tag)) { + noDuplicatesArray.push(tag); + newLines.push(newLineInfo); + } + }); + }); + block.getInputPinsList().forEach((pin) => { + pin.connectPins.forEach((connectPin) => { + const newLineInfo = { + type: 'curve', + input: { + node: blockIDMap.get(connectPin.block.uuid) || connectPin.block.uuid, + param: connectPin.desc.tag, + }, + output: { + node: blockIDMap.get(pin.block.uuid) || pin.block.uuid, + param: pin.desc.tag, + }, + details: {}, + }; + const tag = newLineInfo.input.node + newLineInfo.input.param + + newLineInfo.output.node + newLineInfo.output.param; + if (!noDuplicatesArray.includes(tag)) { + noDuplicatesArray.push(tag); + newLines.push(newLineInfo); + } + }); + }); + }); + // TODO 这里是 hack 如果不加 500 线条会无法添加 + setTimeout(() => { + newLines.forEach((line) => { + this.graphForge.addLine(line); + }); + }, 500); + } + duplicate(options = []) { + const list = (0, utils_1.mergeGraphEditorOtherOptions)(options, this.getSelectedItems()).filter((item) => item.blockData !== null); + const mousePoint = this.graphForge.convertCoordinate({ + x: this.mousePointInPanel.x, + y: this.mousePointInPanel.y, + }); + this.usePaste(mousePoint, list); + index_1.MessageMgr.Instance.send(index_1.MessageType.Dirty); + } + zoomToFit() { + this.graphForge.zoomToFit(); + } + /** + * 重置,回原点 + */ + reset() { + this.graphForge.setGraphInfo({ + scale: 1, + offset: { x: 0, y: 0 }, + }); + } + isMaster(type) { + return (0, declare_1.getBlockTemplateByType)(type)?.isMaster || false; + } + /** + * 获取当前选择的对象列表 + */ + getSelectedItems() { + const list = []; + this.graphForge.getSelectedLineList().forEach((item) => { + list.push({ + uuid: item.id, + lineData: item.target, + }); + }); + this.graphForge.getSelectedBlockList().forEach((item) => { + list.push({ + uuid: item.id, + blockData: item.target, + }); + }); + return list; + } + removeRegisterMenuByInputPins(inputPinDataList) { + inputPinDataList.forEach((pin) => { + if (pin.details.registerEnumType) { + (0, block_forge_1.removeDynamicEnumToType)(pin.details.registerEnumType, pin.value); + } + }); + } +} +exports.GraphEditorMgr = GraphEditorMgr; +GraphEditorMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtZWRpdG9yLW1nci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zaGFkZXItZ3JhcGgvYmFzZS9ncmFwaC1lZGl0b3ItbWdyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBLHdDQUFvRDtBQUNwRCxtREFBK0U7QUFDL0Usb0NBR2tCO0FBRWxCLG1DQUFxRTtBQUdyRTs7R0FFRztBQUNILE1BQWEsY0FBZSxTQUFRLGVBQU87SUFBM0M7O1FBVVksa0JBQWEsR0FBOEIsRUFBRSxDQUFDO1FBRTlDLG1CQUFjLEdBQTZCLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7UUFTbEUscUJBQWdCLEdBQXVCLElBQUksQ0FBQztJQTBSaEQsQ0FBQztJQTVTVSxNQUFNLEtBQUssUUFBUTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksY0FBYyxFQUFFLENBQUM7U0FDekM7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUtELElBQVcsVUFBVTtRQUNqQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQVcsaUJBQWlCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakYsQ0FBQztJQUdELGtCQUFrQixDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ25DLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBaUIsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzVELE9BQU87WUFDSCxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztTQUNo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SUFBSSxDQUFDLE1BQWtCO2FBQ3BDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQW9CLEVBQUUsRUFBRTtZQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUNOLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRTtnQkFDYixTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQW1CO2FBQ3RDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVPLDZCQUE2QixDQUFDLGdCQUEyQjtRQUM3RCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFZLEVBQUUsRUFBRTtZQUN0QyxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUU7Z0JBQzlCLElBQUEscUNBQXVCLEVBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEU7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O0FBOVNMLHdDQStTQztBQTdTVSx3QkFBUyxHQUEwQixJQUFJLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJsb2NrRGF0YSwgSVBpbkRlc2NyaXB0aW9uLCBMaW5lRGF0YSwgUGluRGF0YSB9IGZyb20gJy4uLy4uL2Jsb2NrLWZvcmdlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdExpbmVJbmZvLCBTZWxlY3ROb2RlSW5mbyB9IGZyb20gJ0BpdGhhcmJvcnMvdWktZ3JhcGgvZGlzdC9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBJTm9kZURldGFpbHMsIFByb3BlcnR5RGF0YSB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5cbmltcG9ydCB7IGdldEJsb2NrVGVtcGxhdGVCeVR5cGUgfSBmcm9tICcuLi9kZWNsYXJlJztcbmltcG9ydCB7IGdlbmVyYXRlVVVJRCwgUGluLCByZW1vdmVEeW5hbWljRW51bVRvVHlwZSB9IGZyb20gJy4uLy4uL2Jsb2NrLWZvcmdlJztcbmltcG9ydCB7XG4gICAgZ2V0T2Zmc2V0UG9pbnRCeU1vdXNlUG9pbnQsXG4gICAgbWVyZ2VHcmFwaEVkaXRvck90aGVyT3B0aW9ucyxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuXG5pbXBvcnQgeyBCYXNlTWdyLCBGb3JnZU1nciwgTWVzc2FnZU1nciwgTWVzc2FnZVR5cGUgfSBmcm9tICcuL2luZGV4JztcbmltcG9ydCB7IEdyYXBoRWRpdG9yQWRkT3B0aW9ucywgR3JhcGhFZGl0b3JPdGhlck9wdGlvbnMgfSBmcm9tICcuL2ludGVybmFsJztcblxuLyoqXG4gKiBzaGFkZXIgZ3JhcGgg55qE5Z+656GA5pON5L2c77yM5aKe44CB5YigXG4gKi9cbmV4cG9ydCBjbGFzcyBHcmFwaEVkaXRvck1nciBleHRlbmRzIEJhc2VNZ3Ige1xuXG4gICAgc3RhdGljIF9pbnN0YW5jZTogR3JhcGhFZGl0b3JNZ3IgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBHcmFwaEVkaXRvck1nciB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IEdyYXBoRWRpdG9yTWdyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2xpcGJvYXJkRGF0YTogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnNbXSA9IFtdO1xuXG4gICAgcHJpdmF0ZSBsYXN0TW91c2VQb2ludDogeyB4OiBudW1iZXI7IHk6IG51bWJlciB9ID0geyB4OiAwLCB5OiAwIH07XG4gICAgcHVibGljIGdldCBtb3VzZVBvaW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5sYXN0TW91c2VQb2ludDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG1vdXNlUG9pbnRJblBhbmVsKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0c01vdXNlUG9pbnQodGhpcy5sYXN0TW91c2VQb2ludC54LCB0aGlzLmxhc3RNb3VzZVBvaW50LnkpO1xuICAgIH1cblxuICAgIHNoYWRlckdyYXBoUGFuZWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGw7XG4gICAgY29udmVydHNNb3VzZVBvaW50KHg6IG51bWJlciwgeTogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSB0aGlzLnNoYWRlckdyYXBoUGFuZWwhLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgeDogeCAtIHJlY3QueCxcbiAgICAgICAgICAgIHk6IHkgLSByZWN0LnksXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE1vdXNlUG9pbnRlckxpc3RlbmVyKHNoYWRlckdyYXBoUGFuZWw6IEhUTUxFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuc2hhZGVyR3JhcGhQYW5lbCA9IHNoYWRlckdyYXBoUGFuZWw7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxhc3RNb3VzZVBvaW50ID0geyB4OiBldmVudC5jbGllbnRYLCB5OiBldmVudC5jbGllbnRZIH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOWJquWIh+adv+aYr+WQpuS4uuepulxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY2xpcGJvYXJkSXNOdWxsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5jbGlwYm9hcmREYXRhLmxlbmd0aCA9PT0gMDtcbiAgICB9XG4gICAgcHVibGljIGFkZChvcHRpb25zOiBHcmFwaEVkaXRvckFkZE9wdGlvbnMpIHtcbiAgICAgICAgb3B0aW9ucyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkob3B0aW9ucykpO1xuXG4gICAgICAgIGNvbnN0IGJsb2NrVGVtcGxhdGUgPSBnZXRCbG9ja1RlbXBsYXRlQnlUeXBlKG9wdGlvbnMudHlwZSk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBibG9ja1RlbXBsYXRlICYmIGJsb2NrVGVtcGxhdGUuZGF0YTtcblxuICAgICAgICBpZiAoIWRhdGEpIHJldHVybjtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuZGV0YWlscy5vdXRwdXRQaW5zIHx8IG9wdGlvbnMuZGV0YWlscy5vdXRwdXRQaW5zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgb3B0aW9ucy5kZXRhaWxzLm91dHB1dFBpbnMgPSBkYXRhLmRldGFpbHMub3V0cHV0UGlucyB8fCBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIW9wdGlvbnMuZGV0YWlscy5pbnB1dFBpbnMgfHwgb3B0aW9ucy5kZXRhaWxzLmlucHV0UGlucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIG9wdGlvbnMuZGV0YWlscy5pbnB1dFBpbnMgPSBkYXRhLmRldGFpbHMuaW5wdXRQaW5zIHx8IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBvc2l0aW9uID0geyB4OiBvcHRpb25zLnggfHwgMCwgeTogb3B0aW9ucy55IHx8IDAgfTtcbiAgICAgICAgaWYgKG9wdGlvbnMueCA9PT0gdW5kZWZpbmVkICYmIG9wdGlvbnMueSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBwb3NpdGlvbiA9IHRoaXMuZ3JhcGhGb3JnZS5jb252ZXJ0Q29vcmRpbmF0ZSh0aGlzLm1vdXNlUG9pbnRJblBhbmVsKTtcbiAgICAgICAgfSBlbHNlIGlmICghb3B0aW9ucy5kb250Q29udmVydFBvcykge1xuICAgICAgICAgICAgcG9zaXRpb24gPSB0aGlzLmdyYXBoRm9yZ2UuY29udmVydENvb3JkaW5hdGUocG9zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5ncmFwaEZvcmdlLmFkZEJsb2NrKHtcbiAgICAgICAgICAgIHR5cGU6IG9wdGlvbnMudHlwZSxcbiAgICAgICAgICAgIHBvc2l0aW9uOiBwb3NpdGlvbixcbiAgICAgICAgICAgIGRldGFpbHM6IG9wdGlvbnMuZGV0YWlscyxcbiAgICAgICAgfSwgb3B0aW9ucy51dWlkKTtcblxuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnNlbmQoTWVzc2FnZVR5cGUuRGlydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVMaW5lc0J5RHVwbGljYXRlT3V0cHV0KGxpbmVzOiB7IFtrZXk6IHN0cmluZ106IExpbmVEYXRhIH0sIGxpbmU6IExpbmVEYXRhKSB7XG4gICAgICAgIE9iamVjdC5rZXlzKGxpbmVzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBvdGhlckxpbmUgPSBsaW5lc1trZXldO1xuICAgICAgICAgICAgaWYgKG90aGVyTGluZS5vdXRwdXQubm9kZSA9PT0gbGluZS5vdXRwdXQubm9kZSAmJlxuICAgICAgICAgICAgICAgIG90aGVyTGluZS5vdXRwdXQucGFyYW0gPT09IGxpbmUub3V0cHV0LnBhcmFtKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ncmFwaEZvcmdlLnJlbW92ZUxpbmUoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGRlbGV0ZShvcHRpb25zOiBHcmFwaEVkaXRvck90aGVyT3B0aW9uc1tdID0gW10pIHtcbiAgICAgICAgY29uc3QgbGlzdCA9IG1lcmdlR3JhcGhFZGl0b3JPdGhlck9wdGlvbnMob3B0aW9ucywgdGhpcy5nZXRTZWxlY3RlZEl0ZW1zKCkpO1xuXG4gICAgICAgIHRoaXMuZ3JhcGhGb3JnZT8uc3RhcnRSZWNvcmRpbmcoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgbGlzdCkge1xuICAgICAgICAgICAgaWYgKGl0ZW0uYmxvY2tEYXRhKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0uYmxvY2tEYXRhITtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01hc3RlcihkYXRhLnR5cGUpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ3JhcGhGb3JnZT8ucmVtb3ZlQmxvY2soaXRlbS51dWlkKTtcblxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmRldGFpbHMuaW5wdXRQaW5zKSB7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMucmVtb3ZlUmVnaXN0ZXJNZW51QnlJbnB1dFBpbnMoZGF0YS5kZXRhaWxzLmlucHV0UGlucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICAgICAgICBpZiAoaXRlbS5saW5lRGF0YSkge1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ3JhcGhGb3JnZT8ucmVtb3ZlTGluZShpdGVtLnV1aWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuZ3JhcGhGb3JnZT8uc3RvcFJlY29yZGluZygpO1xuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnNlbmQoTWVzc2FnZVR5cGUuRGlydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjdXQob3B0aW9uczogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnNbXSA9IFtdKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBtZXJnZUdyYXBoRWRpdG9yT3RoZXJPcHRpb25zKG9wdGlvbnMsIHRoaXMuZ2V0U2VsZWN0ZWRJdGVtcygpKTtcblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZERhdGEgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGluZURhdGEpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0uYmxvY2tEYXRhO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01hc3RlcihkYXRhLnR5cGUpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZ3JhcGhGb3JnZS5yZW1vdmVCbG9jayhpdGVtLnV1aWQpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGRhdGEuZGV0YWlscy5pbnB1dFBpbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVSZWdpc3Rlck1lbnVCeUlucHV0UGlucyhkYXRhLmRldGFpbHMuaW5wdXRQaW5zKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jbGlwYm9hcmREYXRhLnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHVibGljIGNvcHkob3B0aW9uczogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnNbXSA9IFtdKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBtZXJnZUdyYXBoRWRpdG9yT3RoZXJPcHRpb25zKG9wdGlvbnMsIHRoaXMuZ2V0U2VsZWN0ZWRJdGVtcygpKTtcblxuICAgICAgICBpZiAobGlzdC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLmNsaXBib2FyZERhdGEgPSBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaXRlbSBvZiBsaXN0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0ubGluZURhdGEpIGNvbnRpbnVlO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGl0ZW0uYmxvY2tEYXRhO1xuICAgICAgICAgICAgICAgIGlmICghZGF0YSkgY29udGludWU7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01hc3RlcihkYXRhLnR5cGUpKSBjb250aW51ZTtcblxuICAgICAgICAgICAgICAgIHRoaXMuY2xpcGJvYXJkRGF0YS5wdXNoKEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoaXRlbSkpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgcGFzdGUoKSB7XG4gICAgICAgIGNvbnN0IG1vdXNlUG9pbnQgPSB0aGlzLmdyYXBoRm9yZ2UuY29udmVydENvb3JkaW5hdGUoe1xuICAgICAgICAgICAgeDogdGhpcy5tb3VzZVBvaW50SW5QYW5lbC54LFxuICAgICAgICAgICAgeTogdGhpcy5tb3VzZVBvaW50SW5QYW5lbC55LFxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy51c2VQYXN0ZShtb3VzZVBvaW50LCB0aGlzLmNsaXBib2FyZERhdGEpO1xuXG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2Uuc2VuZChNZXNzYWdlVHlwZS5EaXJ0eSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVuZG8oKSB7XG4gICAgICAgIHRoaXMuZ3JhcGhGb3JnZT8udW5kbygpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWRvKCkge1xuICAgICAgICB0aGlzLmdyYXBoRm9yZ2U/LnJlZG8oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVzZVBhc3RlKG1vdXNlUG9pbnQ6IHsgeDogbnVtYmVyOyB5OiBudW1iZXIgfSwgbGlzdDogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnNbXSkge1xuICAgICAgICBjb25zdCBvZmZzZXRQb2ludCA9IGdldE9mZnNldFBvaW50QnlNb3VzZVBvaW50KGxpc3QsIG1vdXNlUG9pbnQpO1xuXG4gICAgICAgIGNvbnN0IGJsb2NrSURNYXA6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbTogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Jsb2NrSUQgPSBnZW5lcmF0ZVVVSUQoKTtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGl0ZW0uYmxvY2tEYXRhKSk7XG4gICAgICAgICAgICBkYXRhLnBvc2l0aW9uLnggKz0gb2Zmc2V0UG9pbnQueDtcbiAgICAgICAgICAgIGRhdGEucG9zaXRpb24ueSArPSBvZmZzZXRQb2ludC55O1xuICAgICAgICAgICAgdGhpcy5ncmFwaEZvcmdlLmFkZEJsb2NrKGRhdGEsIG5ld0Jsb2NrSUQpO1xuICAgICAgICAgICAgYmxvY2tJRE1hcC5zZXQoaXRlbS51dWlkLCBuZXdCbG9ja0lEKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYmxvY2tNYXAgPSBGb3JnZU1nci5JbnN0YW5jZS5nZXRCbG9ja01hcCgpO1xuXG4gICAgICAgIC8vIOS4uuS6hueUqOS6juWOu+mHjVxuICAgICAgICBjb25zdCBub0R1cGxpY2F0ZXNBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgbmV3TGluZXM6IExpbmVEYXRhW10gPSBbXTtcbiAgICAgICAgbGlzdC5mb3JFYWNoKChpdGVtOiBHcmFwaEVkaXRvck90aGVyT3B0aW9ucykgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmxvY2sgPSBibG9ja01hcFtpdGVtLnV1aWRdO1xuICAgICAgICAgICAgYmxvY2suZ2V0T3V0cHV0UGluc0xpc3QoKS5mb3JFYWNoKChwaW46IFBpbikgPT4ge1xuICAgICAgICAgICAgICAgIHBpbi5jb25uZWN0UGlucy5mb3JFYWNoKChjb25uZWN0UGluOiBQaW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgLy8g5aaC5p6c5ou36LSd6L6T5Ye655qEIGJsb2NrIOayoeacieWMheWQq+WcqOmAieS4reeahCBibG9jayDkuK3lsLHkuI3pnIDopoHmt7vliqAgbGluZVxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXROb2RlID0gYmxvY2tJRE1hcC5nZXQoY29ubmVjdFBpbi5ibG9jay51dWlkKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvdXRwdXROb2RlKSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZUluZm86IExpbmVEYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1cnZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogYmxvY2tJRE1hcC5nZXQocGluLmJsb2NrLnV1aWQpIHx8IHBpbi5ibG9jay51dWlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiBwaW4uZGVzYy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogYmxvY2tJRE1hcC5nZXQoY29ubmVjdFBpbi5ibG9jay51dWlkKSB8fCBjb25uZWN0UGluLmJsb2NrLnV1aWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW06IGNvbm5lY3RQaW4uZGVzYy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsczoge30sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHRhZyA9IG5ld0xpbmVJbmZvLmlucHV0Lm5vZGUgKyBuZXdMaW5lSW5mby5pbnB1dC5wYXJhbSArXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXdMaW5lSW5mby5vdXRwdXQubm9kZSArIG5ld0xpbmVJbmZvLm91dHB1dC5wYXJhbTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIW5vRHVwbGljYXRlc0FycmF5LmluY2x1ZGVzKHRhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vRHVwbGljYXRlc0FycmF5LnB1c2godGFnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVzLnB1c2gobmV3TGluZUluZm8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJsb2NrLmdldElucHV0UGluc0xpc3QoKS5mb3JFYWNoKChwaW46IFBpbikgPT4ge1xuICAgICAgICAgICAgICAgIHBpbi5jb25uZWN0UGlucy5mb3JFYWNoKChjb25uZWN0UGluOiBQaW4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV3TGluZUluZm86IExpbmVEYXRhID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ2N1cnZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogYmxvY2tJRE1hcC5nZXQoY29ubmVjdFBpbi5ibG9jay51dWlkKSB8fCBjb25uZWN0UGluLmJsb2NrLnV1aWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW06IGNvbm5lY3RQaW4uZGVzYy50YWcsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTogYmxvY2tJRE1hcC5nZXQocGluLmJsb2NrLnV1aWQpIHx8IHBpbi5ibG9jay51dWlkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtOiBwaW4uZGVzYy50YWcsXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzOiB7fSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGFnID0gbmV3TGluZUluZm8uaW5wdXQubm9kZSArIG5ld0xpbmVJbmZvLmlucHV0LnBhcmFtICtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpbmVJbmZvLm91dHB1dC5ub2RlICsgbmV3TGluZUluZm8ub3V0cHV0LnBhcmFtO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICghbm9EdXBsaWNhdGVzQXJyYXkuaW5jbHVkZXModGFnKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbm9EdXBsaWNhdGVzQXJyYXkucHVzaCh0YWcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGluZXMucHVzaChuZXdMaW5lSW5mbyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvLyBUT0RPIOi/memHjOaYryBoYWNrIOWmguaenOS4jeWKoCA1MDAg57q/5p2h5Lya5peg5rOV5re75YqgXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgbmV3TGluZXMuZm9yRWFjaCgobGluZTogTGluZURhdGEpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmdyYXBoRm9yZ2UuYWRkTGluZShsaW5lKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCA1MDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkdXBsaWNhdGUob3B0aW9uczogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnNbXSA9IFtdKSB7XG4gICAgICAgIGNvbnN0IGxpc3QgPSBtZXJnZUdyYXBoRWRpdG9yT3RoZXJPcHRpb25zKG9wdGlvbnMsIHRoaXMuZ2V0U2VsZWN0ZWRJdGVtcygpKS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYmxvY2tEYXRhICE9PSBudWxsKTtcbiAgICAgICAgY29uc3QgbW91c2VQb2ludCA9IHRoaXMuZ3JhcGhGb3JnZS5jb252ZXJ0Q29vcmRpbmF0ZSh7XG4gICAgICAgICAgICB4OiB0aGlzLm1vdXNlUG9pbnRJblBhbmVsLngsXG4gICAgICAgICAgICB5OiB0aGlzLm1vdXNlUG9pbnRJblBhbmVsLnksXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVzZVBhc3RlKG1vdXNlUG9pbnQsIGxpc3QpO1xuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnNlbmQoTWVzc2FnZVR5cGUuRGlydHkpO1xuICAgIH1cblxuICAgIHB1YmxpYyB6b29tVG9GaXQoKSB7XG4gICAgICAgIHRoaXMuZ3JhcGhGb3JnZS56b29tVG9GaXQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDph43nva7vvIzlm57ljp/ngrlcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgICAgIHRoaXMuZ3JhcGhGb3JnZS5zZXRHcmFwaEluZm8oe1xuICAgICAgICAgICAgc2NhbGU6IDEsXG4gICAgICAgICAgICBvZmZzZXQ6IHsgeDogMCwgeTogMH0sXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNYXN0ZXIodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBnZXRCbG9ja1RlbXBsYXRlQnlUeXBlKHR5cGUpPy5pc01hc3RlciB8fCBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDojrflj5blvZPliY3pgInmi6nnmoTlr7nosaHliJfooahcbiAgICAgKi9cbiAgICBwcml2YXRlIGdldFNlbGVjdGVkSXRlbXMoKSB7XG4gICAgICAgIGNvbnN0IGxpc3Q6IEdyYXBoRWRpdG9yT3RoZXJPcHRpb25zW10gPSBbXTtcbiAgICAgICAgdGhpcy5ncmFwaEZvcmdlLmdldFNlbGVjdGVkTGluZUxpc3QoKS5mb3JFYWNoKChpdGVtOiBTZWxlY3RMaW5lSW5mbykgPT4ge1xuICAgICAgICAgICAgbGlzdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB1dWlkOiBpdGVtLmlkLFxuICAgICAgICAgICAgICAgIGxpbmVEYXRhOiBpdGVtLnRhcmdldCBhcyBMaW5lRGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5ncmFwaEZvcmdlLmdldFNlbGVjdGVkQmxvY2tMaXN0KCkuZm9yRWFjaCgoaXRlbTogU2VsZWN0Tm9kZUluZm8pID0+IHtcbiAgICAgICAgICAgIGxpc3QucHVzaCh7XG4gICAgICAgICAgICAgICAgdXVpZDogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICBibG9ja0RhdGE6IGl0ZW0udGFyZ2V0IGFzIEJsb2NrRGF0YSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZW1vdmVSZWdpc3Rlck1lbnVCeUlucHV0UGlucyhpbnB1dFBpbkRhdGFMaXN0OiBQaW5EYXRhW10pIHtcbiAgICAgICAgaW5wdXRQaW5EYXRhTGlzdC5mb3JFYWNoKChwaW46IFBpbkRhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChwaW4uZGV0YWlscy5yZWdpc3RlckVudW1UeXBlKSB7XG4gICAgICAgICAgICAgICAgcmVtb3ZlRHluYW1pY0VudW1Ub1R5cGUocGluLmRldGFpbHMucmVnaXN0ZXJFbnVtVHlwZSwgcGluLnZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/graph-property-mgr.js b/extensions/shader-graph/dist/shader-graph/base/graph-property-mgr.js new file mode 100644 index 0000000..3f1bcd9 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/graph-property-mgr.js @@ -0,0 +1,151 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphPropertyMgr = void 0; +const interface_1 = require("../interface"); +const index_1 = require("./index"); +const declare_1 = require("../declare"); +/** + * 用于处理 Property + */ +class GraphPropertyMgr { + static get Instance() { + if (!this._instance) { + this._instance = new GraphPropertyMgr(); + } + return this._instance; + } + getPropertyByID(id) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + return currentGraphData.details.properties.find((property) => property.id === id); + } + updateProperty(id, newPropertyData) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + currentGraphData.details.properties = currentGraphData.details.properties.map((item) => { + if (item.id === id) { + return newPropertyData; + } + return item; + }); + this.updatePropertyToGraphNode(newPropertyData); + index_1.GraphDataMgr.Instance.setDirty(true); + } + updatePropertyValue(id, value) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + if (!currentGraphData) + return; + currentGraphData.details.properties = currentGraphData.details.properties.map((item) => { + if (item.id === id) { + item = value; + } + return item; + }); + this.updatePropertyToGraphNode(value); + index_1.GraphDataMgr.Instance.setDirty(true); + } + async iterateProperties(handle) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + if (!currentGraphData) + return; + for (const property of currentGraphData.details.properties) { + await handle(property, (0, declare_1.getPropertyDefineByType)(property.type)); + } + } + exitsProperty(name) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + for (const property of currentGraphData.details.properties) { + if (property.name === name) { + return true; + } + } + return false; + } + createProperty(type, name) { + let propertyDefine; + if (typeof type === 'string') { + propertyDefine = (0, declare_1.getPropertyDefineByType)(type); + } + else { + propertyDefine = type; + } + const propertyData = new interface_1.PropertyData(); + propertyData.name = name; + propertyData.type = propertyDefine?.type; + propertyData.declareType = propertyDefine?.declareType; + propertyData.outputPins = []; + propertyDefine?.outputs.forEach((slot, index) => { + propertyData.outputPins.push({ + dataType: slot.type, + value: slot.default, + details: { + connectType: slot.connectType, + }, + }); + }); + return propertyData; + } + addProperty(propertyDefine) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + // name 是唯一标识,如果存在 name 就重命名 + const existingNames = new Set(currentGraphData.details.properties.map((item) => item.name)); + let newName = propertyDefine.name; + let counter = 1; + while (existingNames.has(newName)) { + newName = `${propertyDefine.name}_${counter}`; + counter++; + } + const propertyData = this.createProperty(propertyDefine, newName); + const properties = currentGraphData.details.properties; + if (properties) { + currentGraphData.details.properties.push(propertyData); + index_1.GraphDataMgr.Instance.setDirty(true); + } + return propertyData; + } + removeProperty(index) { + const currentGraphData = index_1.GraphDataMgr.Instance.getCurrentGraphData(); + const property = currentGraphData.details.properties.splice(index, 1)[0]; + index_1.GraphDataMgr.Instance.reduceToBaseNode(property); + const rootGraphData = index_1.GraphDataMgr.Instance.getRootGraphData(); + this.removePropertyPinInSubGraphNode(rootGraphData, property.id); + for (const graphID in rootGraphData.graphs) { + this.removePropertyPinInSubGraphNode(rootGraphData.graphs[graphID], property.id); + } + index_1.GraphDataMgr.Instance.setDirty(true); + return property; + } + removePropertyPinInSubGraphNode(graphData, propertyID) { + for (const nodeID in graphData.nodes) { + const node = graphData.nodes[nodeID]; + if (node.type === 'SubGraphNode') { + const index = node.details.inputPins?.findIndex((pin) => pin.details.propertyID === propertyID); + if (index !== -1 && index !== undefined) { + node.details.inputPins?.splice(index, 1); + node.details.inputDescription?.splice(index, 1); + } + } + } + } + /** + * 更新 PropertyNode 数据(title、output) + * @param property + * @private + */ + updatePropertyToGraphNode(property) { + if (!index_1.GraphDataMgr.Instance.graphData) { + console.debug('updatePropertyToGraphNode failed, the graph data is null'); + return; + } + for (const nodeID in index_1.GraphDataMgr.Instance.graphData.nodes) { + const node = index_1.GraphDataMgr.Instance.graphData.nodes[nodeID]; + const details = node && node.details; + if (details && details.propertyID === property.id) { + details.title = property.name; + details.outputPins = property.outputPins; + } + } + index_1.GraphDataMgr.Instance.reload(); + } +} +exports.GraphPropertyMgr = GraphPropertyMgr; +GraphPropertyMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGgtcHJvcGVydHktbWdyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3NoYWRlci1ncmFwaC9iYXNlL2dyYXBoLXByb3BlcnR5LW1nci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSw0Q0FBNEM7QUFFNUMsbUNBQXVDO0FBQ3ZDLHdDQUFxRDtBQUVyRDs7R0FFRztBQUNILE1BQWEsZ0JBQWdCO0lBSWxCLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDO1NBQzNDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFTSxlQUFlLENBQUMsRUFBVTtRQUM3QixNQUFNLGdCQUFnQixHQUFHLG9CQUFZLENBQUMsUUFBUSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFFckUsT0FBTyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQXNCLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVNLGNBQWMsQ0FBQyxFQUFVLEVBQUUsZUFBNkI7UUFDM0QsTUFBTSxnQkFBZ0IsR0FBRyxvQkFBWSxDQUFDLFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRXJFLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxVQUFVLEdBQUcsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFrQixFQUFFLEVBQUU7WUFDakcsSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDaEIsT0FBTyxlQUFlLENBQUM7YUFDMUI7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyx5QkFB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QyxRQUFzQjtRQUNwRCxJQUFJLENBQUMsb0JBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxFQUFFO1lBQ2xDLE9BQU8sQ0FBQyxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUMxRSxPQUFPO1NBQ1Y7UUFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLG9CQUFZLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDeEQsTUFBTSxJQUFJLEdBQUcsb0JBQVksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMzRCxNQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQXVCLENBQUM7WUFDckQsSUFBSSxPQUFPLElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRLENBQUMsRUFBRSxFQUFFO2dCQUMvQyxPQUFPLENBQUMsS0FBSyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQzlCLE9BQU8sQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQzthQUM1QztTQUNKO1FBRUQsb0JBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7QUEvSkwsNENBZ0tDO0FBOUpVLDBCQUFTLEdBQTRCLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgSU5vZGVEZXRhaWxzIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlEZWZpbmUsIFNsb3REZWZpbmUgfSBmcm9tICcuLi8uLi8uLi9AdHlwZXMvc2hhZGVyLW5vZGUtdHlwZSc7XG5pbXBvcnQgdHlwZSB7IEJsb2NrRGF0YSwgR3JhcGhEYXRhIH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgUHJvcGVydHlEYXRhIH0gZnJvbSAnLi4vaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgR3JhcGhEYXRhTWdyIH0gZnJvbSAnLi9pbmRleCc7XG5pbXBvcnQgeyBnZXRQcm9wZXJ0eURlZmluZUJ5VHlwZSB9IGZyb20gJy4uL2RlY2xhcmUnO1xuXG4vKipcbiAqIOeUqOS6juWkhOeQhiBQcm9wZXJ0eVxuICovXG5leHBvcnQgY2xhc3MgR3JhcGhQcm9wZXJ0eU1nciB7XG5cbiAgICBzdGF0aWMgX2luc3RhbmNlOiBHcmFwaFByb3BlcnR5TWdyIHwgbnVsbCA9IG51bGw7XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldCBJbnN0YW5jZSgpOiBHcmFwaFByb3BlcnR5TWdyIHtcbiAgICAgICAgaWYgKCF0aGlzLl9pbnN0YW5jZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zdGFuY2UgPSBuZXcgR3JhcGhQcm9wZXJ0eU1ncigpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0UHJvcGVydHlCeUlEKGlkOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEdyYXBoRGF0YSA9IEdyYXBoRGF0YU1nci5JbnN0YW5jZS5nZXRDdXJyZW50R3JhcGhEYXRhKCk7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnRHcmFwaERhdGEuZGV0YWlscy5wcm9wZXJ0aWVzLmZpbmQoKHByb3BlcnR5OiBQcm9wZXJ0eURhdGEpID0+IHByb3BlcnR5LmlkID09PSBpZCk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVByb3BlcnR5KGlkOiBzdHJpbmcsIG5ld1Byb3BlcnR5RGF0YTogUHJvcGVydHlEYXRhKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRHcmFwaERhdGEgPSBHcmFwaERhdGFNZ3IuSW5zdGFuY2UuZ2V0Q3VycmVudEdyYXBoRGF0YSgpO1xuXG4gICAgICAgIGN1cnJlbnRHcmFwaERhdGEuZGV0YWlscy5wcm9wZXJ0aWVzID0gY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzLnByb3BlcnRpZXMubWFwKChpdGVtOiBQcm9wZXJ0eURhdGEpID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSBpZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXdQcm9wZXJ0eURhdGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMudXBkYXRlUHJvcGVydHlUb0dyYXBoTm9kZShuZXdQcm9wZXJ0eURhdGEpO1xuICAgICAgICBHcmFwaERhdGFNZ3IuSW5zdGFuY2Uuc2V0RGlydHkodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZVByb3BlcnR5VmFsdWUoaWQ6IHN0cmluZywgdmFsdWU6IFByb3BlcnR5RGF0YSkge1xuICAgICAgICBjb25zdCBjdXJyZW50R3JhcGhEYXRhID0gR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdldEN1cnJlbnRHcmFwaERhdGEoKTtcbiAgICAgICAgaWYgKCFjdXJyZW50R3JhcGhEYXRhKSByZXR1cm47XG5cbiAgICAgICAgY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzLnByb3BlcnRpZXMgPSBjdXJyZW50R3JhcGhEYXRhLmRldGFpbHMucHJvcGVydGllcy5tYXAoKGl0ZW06IFByb3BlcnR5RGF0YSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IGlkKSB7XG4gICAgICAgICAgICAgICAgaXRlbSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnVwZGF0ZVByb3BlcnR5VG9HcmFwaE5vZGUodmFsdWUpO1xuICAgICAgICBHcmFwaERhdGFNZ3IuSW5zdGFuY2Uuc2V0RGlydHkodHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGl0ZXJhdGVQcm9wZXJ0aWVzKGhhbmRsZTogKHByb3BlcnR5OiBQcm9wZXJ0eURhdGEsIHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZSB8IHVuZGVmaW5lZCkgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBjdXJyZW50R3JhcGhEYXRhID0gR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdldEN1cnJlbnRHcmFwaERhdGEoKTtcbiAgICAgICAgaWYgKCFjdXJyZW50R3JhcGhEYXRhKSByZXR1cm47XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBjdXJyZW50R3JhcGhEYXRhLmRldGFpbHMucHJvcGVydGllcykge1xuICAgICAgICAgICAgYXdhaXQgaGFuZGxlKHByb3BlcnR5LCBnZXRQcm9wZXJ0eURlZmluZUJ5VHlwZShwcm9wZXJ0eS50eXBlKSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZXhpdHNQcm9wZXJ0eShuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgY3VycmVudEdyYXBoRGF0YSA9IEdyYXBoRGF0YU1nci5JbnN0YW5jZS5nZXRDdXJyZW50R3JhcGhEYXRhKCk7XG5cbiAgICAgICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBjdXJyZW50R3JhcGhEYXRhLmRldGFpbHMucHJvcGVydGllcykge1xuICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZVByb3BlcnR5KHR5cGU6IHN0cmluZyB8IFByb3BlcnR5RGVmaW5lLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAgICAgbGV0IHByb3BlcnR5RGVmaW5lOiBQcm9wZXJ0eURlZmluZTtcbiAgICAgICAgaWYgKHR5cGVvZiB0eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcHJvcGVydHlEZWZpbmUgPSBnZXRQcm9wZXJ0eURlZmluZUJ5VHlwZSh0eXBlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHByb3BlcnR5RGVmaW5lID0gdHlwZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBwcm9wZXJ0eURhdGE6IFByb3BlcnR5RGF0YSA9IG5ldyBQcm9wZXJ0eURhdGEoKTtcbiAgICAgICAgcHJvcGVydHlEYXRhLm5hbWUgPSBuYW1lO1xuICAgICAgICBwcm9wZXJ0eURhdGEudHlwZSA9IHByb3BlcnR5RGVmaW5lPy50eXBlO1xuICAgICAgICBwcm9wZXJ0eURhdGEuZGVjbGFyZVR5cGUgPSBwcm9wZXJ0eURlZmluZT8uZGVjbGFyZVR5cGU7XG4gICAgICAgIHByb3BlcnR5RGF0YS5vdXRwdXRQaW5zID0gW107XG5cbiAgICAgICAgcHJvcGVydHlEZWZpbmU/Lm91dHB1dHMuZm9yRWFjaCgoc2xvdDogU2xvdERlZmluZSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgcHJvcGVydHlEYXRhLm91dHB1dFBpbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6IHNsb3QudHlwZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogc2xvdC5kZWZhdWx0LFxuICAgICAgICAgICAgICAgIGRldGFpbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdFR5cGU6IHNsb3QuY29ubmVjdFR5cGUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5RGF0YTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUHJvcGVydHkocHJvcGVydHlEZWZpbmU6IFByb3BlcnR5RGVmaW5lKTogUHJvcGVydHlEYXRhIHtcbiAgICAgICAgY29uc3QgY3VycmVudEdyYXBoRGF0YSA9IEdyYXBoRGF0YU1nci5JbnN0YW5jZS5nZXRDdXJyZW50R3JhcGhEYXRhKCk7XG5cbiAgICAgICAgLy8gbmFtZSDmmK/llK/kuIDmoIfor4bvvIzlpoLmnpzlrZjlnKggbmFtZSDlsLHph43lkb3lkI1cbiAgICAgICAgY29uc3QgZXhpc3RpbmdOYW1lcyA9IG5ldyBTZXQoY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzLnByb3BlcnRpZXMubWFwKChpdGVtOiBQcm9wZXJ0eURhdGEpID0+IGl0ZW0ubmFtZSkpO1xuICAgICAgICBsZXQgbmV3TmFtZSA9IHByb3BlcnR5RGVmaW5lLm5hbWU7XG4gICAgICAgIGxldCBjb3VudGVyID0gMTtcbiAgICAgICAgd2hpbGUgKGV4aXN0aW5nTmFtZXMuaGFzKG5ld05hbWUpKSB7XG4gICAgICAgICAgICBuZXdOYW1lID0gYCR7cHJvcGVydHlEZWZpbmUubmFtZX1fJHtjb3VudGVyfWA7XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgcHJvcGVydHlEYXRhOiBQcm9wZXJ0eURhdGEgfCB1bmRlZmluZWQgPSB0aGlzLmNyZWF0ZVByb3BlcnR5KHByb3BlcnR5RGVmaW5lLCBuZXdOYW1lKTtcbiAgICAgICAgY29uc3QgcHJvcGVydGllcyA9IGN1cnJlbnRHcmFwaERhdGEuZGV0YWlscy5wcm9wZXJ0aWVzIGFzIFByb3BlcnR5RGF0YVtdO1xuICAgICAgICBpZiAocHJvcGVydGllcykge1xuICAgICAgICAgICAgY3VycmVudEdyYXBoRGF0YS5kZXRhaWxzLnByb3BlcnRpZXMucHVzaChwcm9wZXJ0eURhdGEpO1xuICAgICAgICAgICAgR3JhcGhEYXRhTWdyLkluc3RhbmNlLnNldERpcnR5KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBwcm9wZXJ0eURhdGE7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZVByb3BlcnR5KGluZGV4OiBudW1iZXIpOiBQcm9wZXJ0eURhdGEge1xuICAgICAgICBjb25zdCBjdXJyZW50R3JhcGhEYXRhID0gR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdldEN1cnJlbnRHcmFwaERhdGEoKTtcblxuICAgICAgICBjb25zdCBwcm9wZXJ0eSA9IGN1cnJlbnRHcmFwaERhdGEuZGV0YWlscy5wcm9wZXJ0aWVzLnNwbGljZShpbmRleCwgMSlbMF07XG5cbiAgICAgICAgR3JhcGhEYXRhTWdyLkluc3RhbmNlLnJlZHVjZVRvQmFzZU5vZGUocHJvcGVydHkpO1xuXG4gICAgICAgIGNvbnN0IHJvb3RHcmFwaERhdGEgPSBHcmFwaERhdGFNZ3IuSW5zdGFuY2UuZ2V0Um9vdEdyYXBoRGF0YSgpO1xuICAgICAgICB0aGlzLnJlbW92ZVByb3BlcnR5UGluSW5TdWJHcmFwaE5vZGUocm9vdEdyYXBoRGF0YSwgcHJvcGVydHkuaWQpO1xuICAgICAgICBmb3IgKGNvbnN0IGdyYXBoSUQgaW4gcm9vdEdyYXBoRGF0YS5ncmFwaHMpIHtcbiAgICAgICAgICAgIHRoaXMucmVtb3ZlUHJvcGVydHlQaW5JblN1YkdyYXBoTm9kZShyb290R3JhcGhEYXRhLmdyYXBoc1tncmFwaElEXSwgcHJvcGVydHkuaWQpO1xuICAgICAgICB9XG4gICAgICAgIEdyYXBoRGF0YU1nci5JbnN0YW5jZS5zZXREaXJ0eSh0cnVlKTtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVtb3ZlUHJvcGVydHlQaW5JblN1YkdyYXBoTm9kZShncmFwaERhdGE6IEdyYXBoRGF0YSwgcHJvcGVydHlJRDogc3RyaW5nKSB7XG4gICAgICAgIGZvciAoY29uc3Qgbm9kZUlEIGluIGdyYXBoRGF0YS5ub2Rlcykge1xuICAgICAgICAgICAgY29uc3Qgbm9kZTogQmxvY2tEYXRhID0gZ3JhcGhEYXRhLm5vZGVzW25vZGVJRF07XG4gICAgICAgICAgICBpZiAobm9kZS50eXBlID09PSAnU3ViR3JhcGhOb2RlJykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gbm9kZS5kZXRhaWxzLmlucHV0UGlucz8uZmluZEluZGV4KChwaW4pID0+IHBpbi5kZXRhaWxzLnByb3BlcnR5SUQgPT09IHByb3BlcnR5SUQpO1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCAhPT0gLTEgJiYgaW5kZXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLmRldGFpbHMuaW5wdXRQaW5zPy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgICAgICAgICBub2RlLmRldGFpbHMuaW5wdXREZXNjcmlwdGlvbj8uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDmm7TmlrAgUHJvcGVydHlOb2RlIOaVsOaNru+8iHRpdGxl44CBb3V0cHV077yJXG4gICAgICogQHBhcmFtIHByb3BlcnR5XG4gICAgICogQHByaXZhdGVcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVByb3BlcnR5VG9HcmFwaE5vZGUocHJvcGVydHk6IFByb3BlcnR5RGF0YSkge1xuICAgICAgICBpZiAoIUdyYXBoRGF0YU1nci5JbnN0YW5jZS5ncmFwaERhdGEpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ3VwZGF0ZVByb3BlcnR5VG9HcmFwaE5vZGUgZmFpbGVkLCB0aGUgZ3JhcGggZGF0YSBpcyBudWxsJyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IG5vZGVJRCBpbiBHcmFwaERhdGFNZ3IuSW5zdGFuY2UuZ3JhcGhEYXRhLm5vZGVzKSB7XG4gICAgICAgICAgICBjb25zdCBub2RlID0gR3JhcGhEYXRhTWdyLkluc3RhbmNlLmdyYXBoRGF0YS5ub2Rlc1tub2RlSURdO1xuICAgICAgICAgICAgY29uc3QgZGV0YWlscyA9IG5vZGUgJiYgbm9kZS5kZXRhaWxzIGFzIElOb2RlRGV0YWlscztcbiAgICAgICAgICAgIGlmIChkZXRhaWxzICYmIGRldGFpbHMucHJvcGVydHlJRCA9PT0gcHJvcGVydHkuaWQpIHtcbiAgICAgICAgICAgICAgICBkZXRhaWxzLnRpdGxlID0gcHJvcGVydHkubmFtZTtcbiAgICAgICAgICAgICAgICBkZXRhaWxzLm91dHB1dFBpbnMgPSBwcm9wZXJ0eS5vdXRwdXRQaW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgR3JhcGhEYXRhTWdyLkluc3RhbmNlLnJlbG9hZCgpO1xuICAgIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/index.js b/extensions/shader-graph/dist/shader-graph/base/index.js new file mode 100644 index 0000000..5c1a0b9 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/index.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GraphConfigMgr = exports.GraphAssetMgr = exports.MessageMgr = exports.MaskMgr = exports.ForgeMgr = exports.GraphPropertyMgr = exports.GraphDataMgr = exports.GraphEditorMgr = exports.BaseMgr = void 0; +const tslib_1 = require("tslib"); +var base_mgr_1 = require("./base-mgr"); +Object.defineProperty(exports, "BaseMgr", { enumerable: true, get: function () { return base_mgr_1.BaseMgr; } }); +var graph_editor_mgr_1 = require("./graph-editor-mgr"); +Object.defineProperty(exports, "GraphEditorMgr", { enumerable: true, get: function () { return graph_editor_mgr_1.GraphEditorMgr; } }); +var graph_data_mgr_1 = require("./graph-data-mgr"); +Object.defineProperty(exports, "GraphDataMgr", { enumerable: true, get: function () { return graph_data_mgr_1.GraphDataMgr; } }); +var graph_property_mgr_1 = require("./graph-property-mgr"); +Object.defineProperty(exports, "GraphPropertyMgr", { enumerable: true, get: function () { return graph_property_mgr_1.GraphPropertyMgr; } }); +var forge_mgr_1 = require("./forge-mgr"); +Object.defineProperty(exports, "ForgeMgr", { enumerable: true, get: function () { return forge_mgr_1.ForgeMgr; } }); +var mask_mgr_1 = require("./mask-mgr"); +Object.defineProperty(exports, "MaskMgr", { enumerable: true, get: function () { return mask_mgr_1.MaskMgr; } }); +var message_mgr_1 = require("./message-mgr"); +Object.defineProperty(exports, "MessageMgr", { enumerable: true, get: function () { return message_mgr_1.MessageMgr; } }); +var graph_asset_mgr_1 = require("./graph-asset-mgr"); +Object.defineProperty(exports, "GraphAssetMgr", { enumerable: true, get: function () { return graph_asset_mgr_1.GraphAssetMgr; } }); +var graph_config_mgr_1 = require("./graph-config-mgr"); +Object.defineProperty(exports, "GraphConfigMgr", { enumerable: true, get: function () { return graph_config_mgr_1.GraphConfigMgr; } }); +tslib_1.__exportStar(require("./internal"), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2Jhc2UvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLHVDQUFxQztBQUE1QixtR0FBQSxPQUFPLE9BQUE7QUFDaEIsdURBQW9EO0FBQTNDLGtIQUFBLGNBQWMsT0FBQTtBQUN2QixtREFBZ0Q7QUFBdkMsOEdBQUEsWUFBWSxPQUFBO0FBQ3JCLDJEQUF3RDtBQUEvQyxzSEFBQSxnQkFBZ0IsT0FBQTtBQUN6Qix5Q0FBdUM7QUFBOUIscUdBQUEsUUFBUSxPQUFBO0FBQ2pCLHVDQUFxQztBQUE1QixtR0FBQSxPQUFPLE9BQUE7QUFDaEIsNkNBQTJDO0FBQWxDLHlHQUFBLFVBQVUsT0FBQTtBQUNuQixxREFBa0Q7QUFBekMsZ0hBQUEsYUFBYSxPQUFBO0FBQ3RCLHVEQUFvRDtBQUEzQyxrSEFBQSxjQUFjLE9BQUE7QUFDdkIscURBQTJCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQmFzZU1nciB9IGZyb20gJy4vYmFzZS1tZ3InO1xuZXhwb3J0IHsgR3JhcGhFZGl0b3JNZ3IgfSBmcm9tICcuL2dyYXBoLWVkaXRvci1tZ3InO1xuZXhwb3J0IHsgR3JhcGhEYXRhTWdyIH0gZnJvbSAnLi9ncmFwaC1kYXRhLW1ncic7XG5leHBvcnQgeyBHcmFwaFByb3BlcnR5TWdyIH0gZnJvbSAnLi9ncmFwaC1wcm9wZXJ0eS1tZ3InO1xuZXhwb3J0IHsgRm9yZ2VNZ3IgfSBmcm9tICcuL2ZvcmdlLW1ncic7XG5leHBvcnQgeyBNYXNrTWdyIH0gZnJvbSAnLi9tYXNrLW1ncic7XG5leHBvcnQgeyBNZXNzYWdlTWdyIH0gZnJvbSAnLi9tZXNzYWdlLW1ncic7XG5leHBvcnQgeyBHcmFwaEFzc2V0TWdyIH0gZnJvbSAnLi9ncmFwaC1hc3NldC1tZ3InO1xuZXhwb3J0IHsgR3JhcGhDb25maWdNZ3IgfSBmcm9tICcuL2dyYXBoLWNvbmZpZy1tZ3InO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcm5hbCc7XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/internal.js b/extensions/shader-graph/dist/shader-graph/base/internal.js new file mode 100644 index 0000000..c69da90 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/internal.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MessageType = exports.MaskType = void 0; +var MaskType; +(function (MaskType) { + MaskType[MaskType["None"] = 0] = "None"; + /** + * 等待加载 + */ + MaskType[MaskType["WaitLoad"] = 1] = "WaitLoad"; + /** + * 资源发生变化的时候 + */ + MaskType[MaskType["AssetChange"] = 10] = "AssetChange"; + /** + * 资源丢失 + */ + MaskType[MaskType["AssetMissing"] = 30] = "AssetMissing"; + /** + * 没有选择 shader graph 时,需要提示用户去创建 + */ + MaskType[MaskType["NeedCreateNewAsset"] = 50] = "NeedCreateNewAsset"; + /** + * 是否需要保存并重新加载 + */ + MaskType[MaskType["NeedSaveBeReloadByRename"] = 51] = "NeedSaveBeReloadByRename"; + /** + * 等待场景加载完成 + */ + MaskType[MaskType["WaitSceneReady"] = 100] = "WaitSceneReady"; +})(MaskType = exports.MaskType || (exports.MaskType = {})); +var MessageType; +(function (MessageType) { + // --- assets --- + MessageType["AssetLoaded"] = "asset-loaded"; + MessageType["SceneReady"] = "scene-ready"; + MessageType["SceneClose"] = "scene-closed"; + MessageType["EnterGraph"] = "enter-graph"; + MessageType["SetGraphDataToForge"] = "set-graph-data-to-forge"; + MessageType["Restore"] = "restore"; + MessageType["Loaded"] = "load-completed"; + MessageType["Declared"] = "declare-completed"; + MessageType["Dirty"] = "dirty"; + MessageType["DirtyChanged"] = "dirty-changed"; + MessageType["DraggingProperty"] = "dragging-property"; + // mask + MessageType["UpdateMask"] = "update-mask"; + // menu + MessageType["ShowCreateNodeWindow"] = "show-create-node"; + MessageType["CreateMenuChange"] = "create-menu-change"; + // float window + MessageType["FloatWindowConfigChanged"] = "float-window-config-changed"; + // window + MessageType["Resize"] = "resize"; +})(MessageType = exports.MessageType || (exports.MessageType = {})); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2Jhc2UvaW50ZXJuYWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBR0EsSUFBWSxRQTBCWDtBQTFCRCxXQUFZLFFBQVE7SUFDaEIsdUNBQVEsQ0FBQTtJQUNSOztPQUVHO0lBQ0gsK0NBQVksQ0FBQTtJQUNaOztPQUVHO0lBQ0gsc0RBQWdCLENBQUE7SUFDaEI7O09BRUc7SUFDSCx3REFBaUIsQ0FBQTtJQUNqQjs7T0FFRztJQUNILG9FQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gsZ0ZBQTZCLENBQUE7SUFDN0I7O09BRUc7SUFDSCw2REFBb0IsQ0FBQTtBQUN4QixDQUFDLEVBMUJXLFFBQVEsR0FBUixnQkFBUSxLQUFSLGdCQUFRLFFBMEJuQjtBQXVCRCxJQUFZLFdBOEJYO0FBOUJELFdBQVksV0FBVztJQUVuQixpQkFBaUI7SUFDakIsMkNBQTRCLENBQUE7SUFFNUIseUNBQTBCLENBQUE7SUFDMUIsMENBQTJCLENBQUE7SUFFM0IseUNBQTBCLENBQUE7SUFFMUIsOERBQStDLENBQUE7SUFDL0Msa0NBQW1CLENBQUE7SUFDbkIsd0NBQXlCLENBQUE7SUFDekIsNkNBQThCLENBQUE7SUFDOUIsOEJBQWUsQ0FBQTtJQUNmLDZDQUE4QixDQUFBO0lBQzlCLHFEQUFzQyxDQUFBO0lBRXRDLE9BQU87SUFDUCx5Q0FBMEIsQ0FBQTtJQUUxQixPQUFPO0lBQ1Asd0RBQXlDLENBQUE7SUFDekMsc0RBQXVDLENBQUE7SUFFdkMsZUFBZTtJQUNmLHVFQUF3RCxDQUFBO0lBRXhELFNBQVM7SUFDVCxnQ0FBaUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBOEJ0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOb2RlRGV0YWlscyB9IGZyb20gJy4uL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBCbG9ja0RhdGEsIExpbmVEYXRhIH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcblxuZXhwb3J0IGVudW0gTWFza1R5cGUge1xuICAgIE5vbmUgPSAwLFxuICAgIC8qKlxuICAgICAqIOetieW+heWKoOi9vVxuICAgICAqL1xuICAgIFdhaXRMb2FkID0gMSxcbiAgICAvKipcbiAgICAgKiDotYTmupDlj5HnlJ/lj5jljJbnmoTml7blgJlcbiAgICAgKi9cbiAgICBBc3NldENoYW5nZSA9IDEwLFxuICAgIC8qKlxuICAgICAqIOi1hOa6kOS4ouWksVxuICAgICAqL1xuICAgIEFzc2V0TWlzc2luZyA9IDMwLFxuICAgIC8qKlxuICAgICAqIOayoeaciemAieaLqSBzaGFkZXIgZ3JhcGgg5pe277yM6ZyA6KaB5o+Q56S655So5oi35Y675Yib5bu6XG4gICAgICovXG4gICAgTmVlZENyZWF0ZU5ld0Fzc2V0ID0gNTAsXG4gICAgLyoqXG4gICAgICog5piv5ZCm6ZyA6KaB5L+d5a2Y5bm26YeN5paw5Yqg6L29XG4gICAgICovXG4gICAgTmVlZFNhdmVCZVJlbG9hZEJ5UmVuYW1lID0gNTEsXG4gICAgLyoqXG4gICAgICog562J5b6F5Zy65pmv5Yqg6L295a6M5oiQXG4gICAgICovXG4gICAgV2FpdFNjZW5lUmVhZHkgPSAxMDAsXG59XG5cbi8qKlxuICog55So5LqO5re75YqgIGJsb2NrIOWxnuaAp1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEdyYXBoRWRpdG9yQWRkT3B0aW9ucyB7XG4gICAgdXVpZD86IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgeD86IG51bWJlcjtcbiAgICB5PzogbnVtYmVyO1xuICAgIGRvbnRDb252ZXJ0UG9zPzogYm9vbGVhbjtcbiAgICBkZXRhaWxzOiBJTm9kZURldGFpbHM7XG59XG5cbi8qKlxuICog5YW25LuW5a2Y5YKo5pWw5o2u5L6L5aaC5ou36LSd77yM57KY6LS0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFZGl0b3JPdGhlck9wdGlvbnMge1xuICAgIHV1aWQ6IHN0cmluZztcbiAgICBsaW5lRGF0YT86IExpbmVEYXRhO1xuICAgIGJsb2NrRGF0YT86IEJsb2NrRGF0YTtcbn1cblxuZXhwb3J0IGVudW0gTWVzc2FnZVR5cGUge1xuXG4gICAgLy8gLS0tIGFzc2V0cyAtLS1cbiAgICBBc3NldExvYWRlZCA9ICdhc3NldC1sb2FkZWQnLFxuXG4gICAgU2NlbmVSZWFkeSA9ICdzY2VuZS1yZWFkeScsXG4gICAgU2NlbmVDbG9zZSA9ICdzY2VuZS1jbG9zZWQnLFxuXG4gICAgRW50ZXJHcmFwaCA9ICdlbnRlci1ncmFwaCcsXG5cbiAgICBTZXRHcmFwaERhdGFUb0ZvcmdlID0gJ3NldC1ncmFwaC1kYXRhLXRvLWZvcmdlJyxcbiAgICBSZXN0b3JlID0gJ3Jlc3RvcmUnLFxuICAgIExvYWRlZCA9ICdsb2FkLWNvbXBsZXRlZCcsXG4gICAgRGVjbGFyZWQgPSAnZGVjbGFyZS1jb21wbGV0ZWQnLFxuICAgIERpcnR5ID0gJ2RpcnR5JyxcbiAgICBEaXJ0eUNoYW5nZWQgPSAnZGlydHktY2hhbmdlZCcsXG4gICAgRHJhZ2dpbmdQcm9wZXJ0eSA9ICdkcmFnZ2luZy1wcm9wZXJ0eScsXG5cbiAgICAvLyBtYXNrXG4gICAgVXBkYXRlTWFzayA9ICd1cGRhdGUtbWFzaycsXG5cbiAgICAvLyBtZW51XG4gICAgU2hvd0NyZWF0ZU5vZGVXaW5kb3cgPSAnc2hvdy1jcmVhdGUtbm9kZScsXG4gICAgQ3JlYXRlTWVudUNoYW5nZSA9ICdjcmVhdGUtbWVudS1jaGFuZ2UnLFxuXG4gICAgLy8gZmxvYXQgd2luZG93XG4gICAgRmxvYXRXaW5kb3dDb25maWdDaGFuZ2VkID0gJ2Zsb2F0LXdpbmRvdy1jb25maWctY2hhbmdlZCcsXG5cbiAgICAvLyB3aW5kb3dcbiAgICBSZXNpemUgPSAncmVzaXplJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRmxvYXRXaW5kb3dDb25maWcge1xuICAgIHBvc2l0aW9uPzoge1xuICAgICAgICB0b3A/OiBzdHJpbmc7XG4gICAgICAgIGxlZnQ/OiBzdHJpbmc7XG4gICAgICAgIHJpZ2h0Pzogc3RyaW5nO1xuICAgICAgICBib3R0b20/OiBzdHJpbmc7XG4gICAgfVxuXG4gICAgc2hvdz86IGJvb2xlYW47XG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gICAgaGVpZ2h0Pzogc3RyaW5nO1xuXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElGbG9hdFdpbmRvd0NvbmZpZ3Mge1xuICAgIFtuYW1lOiBzdHJpbmddOiBJRmxvYXRXaW5kb3dDb25maWcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUdyYXBoQ29uZmlnIHtcbiAgICBvZmZzZXQ6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSxcbiAgICBzY2FsZTogbnVtYmVyLFxuICAgIGZsb2F0V2luZG93czogSUZsb2F0V2luZG93Q29uZmlncyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJR3JhcGhDb25maWdzIHtcbiAgICBbdXVpZDogc3RyaW5nXTogSUdyYXBoQ29uZmlnXG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/mask-mgr.js b/extensions/shader-graph/dist/shader-graph/base/mask-mgr.js new file mode 100644 index 0000000..f1aa284 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/mask-mgr.js @@ -0,0 +1,55 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MaskMgr = void 0; +const tslib_1 = require("tslib"); +const events_1 = tslib_1.__importDefault(require("events")); +const internal_1 = require("./internal"); +const index_1 = require("./index"); +class MaskMgr extends events_1.default { + constructor() { + super(...arguments); + this.maskQueue = []; + this.displayMaskType = internal_1.MaskType.WaitLoad; + } + get ready() { + return this.displayMaskType === internal_1.MaskType.None; + } + static get Instance() { + if (!this._instance) { + this._instance = new MaskMgr(); + } + return this._instance; + } + show(type) { + if (!this.maskQueue.includes(type)) { + this.maskQueue.push(type); + this.maskQueue.sort((a, b) => { + // 根据枚举值大小进行排序,从大到小 + return b - a; + }); + } + this.updateMask(); + } + hide(type) { + const jumpToNextMask = this.displayMaskType === type; + const index = this.maskQueue.indexOf(type); + if (index !== -1) { + this.maskQueue.splice(index, 1); + } + if (jumpToNextMask) { + this.updateMask(); + } + } + hideAll() { + this.maskQueue = []; + this.updateMask(); + } + updateMask() { + const nextMaskType = this.maskQueue.shift(); + this.displayMaskType = nextMaskType ?? internal_1.MaskType.None; + index_1.MessageMgr.Instance.send(index_1.MessageType.UpdateMask, this.displayMaskType); + } +} +exports.MaskMgr = MaskMgr; +MaskMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1tZ3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2Jhc2UvbWFzay1tZ3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDREQUFrQztBQUNsQyx5Q0FBc0M7QUFDdEMsbUNBQWtEO0FBRWxELE1BQWEsT0FBUSxTQUFRLGdCQUFZO0lBQXpDOztRQUlJLGNBQVMsR0FBZSxFQUFFLENBQUM7UUFFM0Isb0JBQWUsR0FBYSxtQkFBUSxDQUFDLFFBQVEsQ0FBQztJQTZDbEQsQ0FBQztJQTNDRyxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssbUJBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbEQsQ0FBQztJQUVNLE1BQU0sS0FBSyxRQUFRO1FBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztTQUNsQztRQUNELE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxDQUFDLElBQWM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFXLEVBQUUsQ0FBVyxFQUFFLEVBQUU7Z0JBQzdDLG1CQUFtQjtnQkFDbkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pCLENBQUMsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksQ0FBQyxJQUFjO1FBQ2YsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUM7UUFDckQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLEVBQUU7WUFDZCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDbkM7UUFDRCxJQUFJLGNBQWMsRUFBRTtZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsT0FBTztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGVBQWUsR0FBRyxZQUFZLElBQUksbUJBQVEsQ0FBQyxJQUFJLENBQUM7UUFDckQsa0JBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG1CQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUMzRSxDQUFDOztBQWxETCwwQkFtREM7QUFqRFUsaUJBQVMsR0FBbUIsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgTWFza1R5cGUgfSBmcm9tICcuL2ludGVybmFsJztcbmltcG9ydCB7IE1lc3NhZ2VNZ3IsIE1lc3NhZ2VUeXBlIH0gZnJvbSAnLi9pbmRleCc7XG5cbmV4cG9ydCBjbGFzcyBNYXNrTWdyIGV4dGVuZHMgRXZlbnRFbWl0dGVyIHtcblxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IE1hc2tNZ3IgfCBudWxsID0gbnVsbDtcblxuICAgIG1hc2tRdWV1ZTogTWFza1R5cGVbXSA9IFtdO1xuXG4gICAgZGlzcGxheU1hc2tUeXBlOiBNYXNrVHlwZSA9IE1hc2tUeXBlLldhaXRMb2FkO1xuXG4gICAgZ2V0IHJlYWR5KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TWFza1R5cGUgPT09IE1hc2tUeXBlLk5vbmU7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogTWFza01nciB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IE1hc2tNZ3IoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgc2hvdyh0eXBlOiBNYXNrVHlwZSkge1xuICAgICAgICBpZiAoIXRoaXMubWFza1F1ZXVlLmluY2x1ZGVzKHR5cGUpKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tRdWV1ZS5wdXNoKHR5cGUpO1xuICAgICAgICAgICAgdGhpcy5tYXNrUXVldWUuc29ydCgoYTogTWFza1R5cGUsIGI6IE1hc2tUeXBlKSA9PiB7XG4gICAgICAgICAgICAgICAgLy8g5qC55o2u5p6a5Li+5YC85aSn5bCP6L+b6KGM5o6S5bqP77yM5LuO5aSn5Yiw5bCPXG4gICAgICAgICAgICAgICAgcmV0dXJuIGIgLSBhO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy51cGRhdGVNYXNrKCk7XG4gICAgfVxuXG4gICAgaGlkZSh0eXBlOiBNYXNrVHlwZSkge1xuICAgICAgICBjb25zdCBqdW1wVG9OZXh0TWFzayA9IHRoaXMuZGlzcGxheU1hc2tUeXBlID09PSB0eXBlO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMubWFza1F1ZXVlLmluZGV4T2YodHlwZSk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubWFza1F1ZXVlLnNwbGljZShpbmRleCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGp1bXBUb05leHRNYXNrKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1hc2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGhpZGVBbGwoKSB7XG4gICAgICAgIHRoaXMubWFza1F1ZXVlID0gW107XG4gICAgICAgIHRoaXMudXBkYXRlTWFzaygpO1xuICAgIH1cblxuICAgIHVwZGF0ZU1hc2soKSB7XG4gICAgICAgIGNvbnN0IG5leHRNYXNrVHlwZSA9IHRoaXMubWFza1F1ZXVlLnNoaWZ0KCk7XG4gICAgICAgIHRoaXMuZGlzcGxheU1hc2tUeXBlID0gbmV4dE1hc2tUeXBlID8/IE1hc2tUeXBlLk5vbmU7XG4gICAgICAgIE1lc3NhZ2VNZ3IuSW5zdGFuY2Uuc2VuZChNZXNzYWdlVHlwZS5VcGRhdGVNYXNrLCB0aGlzLmRpc3BsYXlNYXNrVHlwZSk7XG4gICAgfVxufVxuXG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/base/message-mgr.js b/extensions/shader-graph/dist/shader-graph/base/message-mgr.js new file mode 100644 index 0000000..218c1e5 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/base/message-mgr.js @@ -0,0 +1,122 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.MessageMgr = void 0; +/** + * 这里统一处理消息的发送,普通的,场景的,DB 的 + */ +const internal_1 = require("./internal"); +class MessageMgr { + constructor() { + this.eventCallbacks = new Map(); + // --- Scene --- + this.isSceneReady = undefined; + this.sceneMessages = []; + } + static get Instance() { + if (!this._instance) { + this._instance = new MessageMgr(); + } + return this._instance; + } + send(eventNames, ...args) { + // 模拟发送消息的操作 + const events = Array.isArray(eventNames) ? eventNames : [eventNames]; + for (const eventName of events) { + console.debug(`发送消息 (${eventName}) ${args.length > 0 ? ':' + JSON.stringify(args) : ''}`); + // 触发特定事件的注册的回调函数来处理消息 + const callbacks = this.eventCallbacks.get(eventName); + if (callbacks) { + callbacks.forEach((callback) => { + callback(...args); + }); + } + } + } + unregisterAll() { + this.eventCallbacks.clear(); + this.sceneMessages = []; + } + /** + * 注册一个或多个事件的消息回调函数 + * @param eventNames + * @param callback + */ + register(eventNames, callback) { + const events = Array.isArray(eventNames) ? eventNames : [eventNames]; + for (const eventName of events) { + if (!this.eventCallbacks.has(eventName)) { + this.eventCallbacks.set(eventName, []); + } + this.eventCallbacks.get(eventName)?.push(callback); + } + } + /** + * 取消注册一个或多个事件的消息回调函数 + * @param eventNames + * @param callback + */ + unregister(eventNames, callback) { + const events = Array.isArray(eventNames) ? eventNames : [eventNames]; + for (const eventName of events) { + const callbacks = this.eventCallbacks.get(eventName); + if (callbacks) { + const index = callbacks.indexOf(callback); + if (index !== -1) { + callbacks.splice(index, 1); + } + } + } + } + async checkSceneReady() { + if (!this.isSceneReady) { + this.isSceneReady = await Editor.Message.request('scene', 'query-is-ready'); + } + return this.isSceneReady; + } + setSceneReady(ready) { + this.isSceneReady = ready; + for (let i = 0; i < this.sceneMessages.length; i++) { + const options = this.sceneMessages[i]; + Editor.Message.request('scene', 'execute-scene-script', { + name: 'shader-graph', + method: options.method, + args: options.args, + }).then((response) => { + options.callback(null, response); + }); + } + if (ready) { + MessageMgr.Instance.send(internal_1.MessageType.SceneReady); + } + } + async callSceneMethod(method, args) { + return new Promise((resolve, reject) => { + const callback = function (error, data) { + if (error) { + reject(error); + return; + } + resolve(data); + }; + this.checkSceneReady().then(() => { + if (!this.isSceneReady) { + return this.sceneMessages.push({ + method, + args: args || [], + callback, + }); + } + Editor.Message.request('scene', 'execute-scene-script', { + name: 'shader-graph', + method, + args: args || [], + }).then((response) => { + callback(null, response); + }); + }); + }); + } +} +exports.MessageMgr = MessageMgr; +MessageMgr._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1tZ3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2Jhc2UvbWVzc2FnZS1tZ3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCx5Q0FBeUM7QUFVekMsTUFBYSxVQUFVO0lBQXZCO1FBV1ksbUJBQWMsR0FBbUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQXdEbkUsZ0JBQWdCO1FBRWhCLGlCQUFZLEdBQXdCLFNBQVMsQ0FBQztRQUU5QyxrQkFBYSxHQUFvQixFQUFFLENBQUM7SUF1RHhDLENBQUM7SUExSFUsTUFBTSxLQUFLLFFBQVE7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDakIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLFVBQVUsRUFBRSxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFJTSxJQUFJLENBQUMsVUFBNkIsRUFBRSxHQUFHLElBQVc7UUFDckQsWUFBWTtRQUNaLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNyRSxLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sRUFBRTtZQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsU0FBUyxLQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUUxRixzQkFBc0I7WUFDdEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckQsSUFBSSxTQUFTLEVBQUU7Z0JB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VUFBVSxDQUFDLENBQUM7U0FDcEQ7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFjLEVBQUUsSUFBWTtRQUM5QyxPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ25DLE1BQU0sUUFBUSxHQUFHLFVBQVMsS0FBVSxFQUFFLElBQVM7Z0JBQzNDLElBQUksS0FBSyxFQUFFO29CQUNQLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDZCxPQUFPO2lCQUNWO2dCQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQixDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtnQkFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3BCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUM7d0JBQzNCLE1BQU07d0JBQ04sSUFBSSxFQUFFLElBQUksSUFBSSxFQUFFO3dCQUNoQixRQUFRO3FCQUNYLENBQUMsQ0FBQztpQkFDTjtnQkFDRCxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ3BELElBQUksRUFBRSxjQUFjO29CQUNwQixNQUFNO29CQUNOLElBQUksRUFBRSxJQUFJLElBQUksRUFBRTtpQkFDbkIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUN0QixRQUFRLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUMsQ0FBQztZQUNQLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOztBQTdITCxnQ0E4SEM7QUE1SFUsb0JBQVMsR0FBc0IsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiDov5nph4znu5/kuIDlpITnkIbmtojmga/nmoTlj5HpgIHvvIzmma7pgJrnmoTvvIzlnLrmma/nmoTvvIxEQiDnmoRcbiAqL1xuaW1wb3J0IHsgTWVzc2FnZVR5cGUgfSBmcm9tICcuL2ludGVybmFsJztcblxuaW50ZXJmYWNlIElTY2VuZU1lc3NhZ2Uge1xuICAgIG1ldGhvZDogc3RyaW5nO1xuICAgIGFyZ3M6IGFueVtdLFxuICAgIGNhbGxiYWNrOiBGdW5jdGlvbjtcbn1cblxudHlwZSBNZXNzYWdlQ2FsbGJhY2sgPSAoLi4uYXJnczogYW55W10pID0+IHZvaWQ7XG5cbmV4cG9ydCBjbGFzcyBNZXNzYWdlTWdyIHtcblxuICAgIHN0YXRpYyBfaW5zdGFuY2U6IE1lc3NhZ2VNZ3IgfCBudWxsID0gbnVsbDtcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0IEluc3RhbmNlKCk6IE1lc3NhZ2VNZ3Ige1xuICAgICAgICBpZiAoIXRoaXMuX2luc3RhbmNlKSB7XG4gICAgICAgICAgICB0aGlzLl9pbnN0YW5jZSA9IG5ldyBNZXNzYWdlTWdyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2luc3RhbmNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZXZlbnRDYWxsYmFja3M6IE1hcDxzdHJpbmcsIE1lc3NhZ2VDYWxsYmFja1tdPiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBzZW5kKGV2ZW50TmFtZXM6IHN0cmluZyB8IHN0cmluZ1tdLCAuLi5hcmdzOiBhbnlbXSk6IHZvaWQge1xuICAgICAgICAvLyDmqKHmi5/lj5HpgIHmtojmga/nmoTmk43kvZxcbiAgICAgICAgY29uc3QgZXZlbnRzID0gQXJyYXkuaXNBcnJheShldmVudE5hbWVzKSA/IGV2ZW50TmFtZXMgOiBbZXZlbnROYW1lc107XG4gICAgICAgIGZvciAoY29uc3QgZXZlbnROYW1lIG9mIGV2ZW50cykge1xuICAgICAgICAgICAgY29uc29sZS5kZWJ1Zyhg5Y+R6YCB5raI5oGvICgke2V2ZW50TmFtZX0pICR7YXJncy5sZW5ndGggPiAwID8gJzonICsgSlNPTi5zdHJpbmdpZnkoYXJncykgOiAnJ31gKTtcblxuICAgICAgICAgICAgLy8g6Kem5Y+R54m55a6a5LqL5Lu255qE5rOo5YaM55qE5Zue6LCD5Ye95pWw5p2l5aSE55CG5raI5oGvXG4gICAgICAgICAgICBjb25zdCBjYWxsYmFja3MgPSB0aGlzLmV2ZW50Q2FsbGJhY2tzLmdldChldmVudE5hbWUpO1xuICAgICAgICAgICAgaWYgKGNhbGxiYWNrcykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrcy5mb3JFYWNoKChjYWxsYmFjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB1bnJlZ2lzdGVyQWxsKCkge1xuICAgICAgICB0aGlzLmV2ZW50Q2FsbGJhY2tzLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuc2NlbmVNZXNzYWdlcyA9IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIOazqOWGjOS4gOS4quaIluWkmuS4quS6i+S7tueahOa2iOaBr+Wbnuiwg+WHveaVsFxuICAgICAqIEBwYXJhbSBldmVudE5hbWVzXG4gICAgICogQHBhcmFtIGNhbGxiYWNrXG4gICAgICovXG4gICAgcHVibGljIHJlZ2lzdGVyKGV2ZW50TmFtZXM6IHN0cmluZyB8IHN0cmluZ1tdLCBjYWxsYmFjazogTWVzc2FnZUNhbGxiYWNrKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnROYW1lcykgPyBldmVudE5hbWVzIDogW2V2ZW50TmFtZXNdO1xuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBvZiBldmVudHMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ldmVudENhbGxiYWNrcy5oYXMoZXZlbnROYW1lKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYWxsYmFja3Muc2V0KGV2ZW50TmFtZSwgW10pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5ldmVudENhbGxiYWNrcy5nZXQoZXZlbnROYW1lKT8ucHVzaChjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDlj5bmtojms6jlhozkuIDkuKrmiJblpJrkuKrkuovku7bnmoTmtojmga/lm57osIPlh73mlbBcbiAgICAgKiBAcGFyYW0gZXZlbnROYW1lc1xuICAgICAqIEBwYXJhbSBjYWxsYmFja1xuICAgICAqL1xuICAgIHB1YmxpYyB1bnJlZ2lzdGVyKGV2ZW50TmFtZXM6IHN0cmluZyB8IHN0cmluZ1tdLCBjYWxsYmFjazogTWVzc2FnZUNhbGxiYWNrKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGV2ZW50cyA9IEFycmF5LmlzQXJyYXkoZXZlbnROYW1lcykgPyBldmVudE5hbWVzIDogW2V2ZW50TmFtZXNdO1xuICAgICAgICBmb3IgKGNvbnN0IGV2ZW50TmFtZSBvZiBldmVudHMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrcyA9IHRoaXMuZXZlbnRDYWxsYmFja3MuZ2V0KGV2ZW50TmFtZSk7XG4gICAgICAgICAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaW5kZXggPSBjYWxsYmFja3MuaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3Muc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyAtLS0gU2NlbmUgLS0tXG5cbiAgICBpc1NjZW5lUmVhZHk6IGJvb2xlYW4gfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgICBzY2VuZU1lc3NhZ2VzOiBJU2NlbmVNZXNzYWdlW10gPSBbXTtcblxuICAgIGFzeW5jIGNoZWNrU2NlbmVSZWFkeSgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICAgICAgaWYgKCF0aGlzLmlzU2NlbmVSZWFkeSkge1xuICAgICAgICAgICAgdGhpcy5pc1NjZW5lUmVhZHkgPSBhd2FpdCBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdzY2VuZScsICdxdWVyeS1pcy1yZWFkeScpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmlzU2NlbmVSZWFkeTtcbiAgICB9XG5cbiAgICBzZXRTY2VuZVJlYWR5KHJlYWR5OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaXNTY2VuZVJlYWR5ID0gcmVhZHk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnNjZW5lTWVzc2FnZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLnNjZW5lTWVzc2FnZXNbaV07XG4gICAgICAgICAgICBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdzY2VuZScsICdleGVjdXRlLXNjZW5lLXNjcmlwdCcsIHtcbiAgICAgICAgICAgICAgICBuYW1lOiAnc2hhZGVyLWdyYXBoJyxcbiAgICAgICAgICAgICAgICBtZXRob2Q6IG9wdGlvbnMubWV0aG9kLFxuICAgICAgICAgICAgICAgIGFyZ3M6IG9wdGlvbnMuYXJncyxcbiAgICAgICAgICAgIH0pLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmNhbGxiYWNrKG51bGwsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWFkeSkge1xuICAgICAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLlNjZW5lUmVhZHkpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgYXN5bmMgY2FsbFNjZW5lTWV0aG9kKG1ldGhvZDogc3RyaW5nLCBhcmdzPzogYW55W10pOiBQcm9taXNlPGFueT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBmdW5jdGlvbihlcnJvcjogYW55LCBkYXRhOiBhbnkpIHtcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXNvbHZlKGRhdGEpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgdGhpcy5jaGVja1NjZW5lUmVhZHkoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTY2VuZVJlYWR5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNjZW5lTWVzc2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmdzOiBhcmdzIHx8IFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdzY2VuZScsICdleGVjdXRlLXNjZW5lLXNjcmlwdCcsIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ3NoYWRlci1ncmFwaCcsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgYXJnczogYXJncyB8fCBbXSxcbiAgICAgICAgICAgICAgICB9KS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG51bGwsIHJlc3BvbnNlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/declare/block.js b/extensions/shader-graph/dist/shader-graph/declare/block.js new file mode 100644 index 0000000..0432971 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/declare/block.js @@ -0,0 +1,190 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.declareShaderNodeBlock = exports.registerDynamicEnum = exports.createPin = exports.createPinTag = exports.pinMap = exports.normalBlockCacheMap = void 0; +const block_forge_1 = require("../../block-forge"); +const utils_1 = require("../utils"); +exports.normalBlockCacheMap = new Map(); +exports.pinMap = new Map(); +function createPinTag(blockType, slotTag, slot) { + return (0, utils_1.generatePinID)(slotTag, blockType, slot.type, slot.display); +} +exports.createPinTag = createPinTag; +function createPin(blockType, slotTag, slot, details) { + const tag = createPinTag(blockType, slotTag, slot); + const pinDescription = { + tag: tag, + dataType: slot.type, + value: slot.default, + name: slot.display, + hidePin: slotTag === 'prop', + details: {}, + }; + const pinData = { + dataType: pinDescription.dataType, + value: pinDescription.value, + details: details || {}, + }; + if (slot.type === 'enum' && slot.enum) { + // 注册枚举 + const type = slot.enum._name || `${blockType}_${slot.display}`; + (0, block_forge_1.declareEnum)(type, slot.enum); + pinData.value = slot.default; + pinDescription.details.type = type; + } + else if (slot.type === 'dynamicEnum' && slot.registerEnum) { + (0, block_forge_1.declareEnum)(slot.registerEnum.type, {}); + pinData.value = ''; + pinDescription.details.type = slot.registerEnum.type; + pinDescription.details.defaultValue = slot.default; + } + if ('registerEnumType' in slot) { + pinDescription.details.registerEnumType = slot.registerEnumType; + } + // 用于判断连线 + if ('connectType' in slot) { + pinDescription.details.connectType = slot.connectType; + } + return { + tag: tag, + data: pinData, + description: pinDescription, + }; +} +exports.createPin = createPin; +function createBlockByNodeDefine(nodeDefine) { + const description = { + type: nodeDefine.type, + title: nodeDefine.details?.title || '', + inputPins: [], + outputPins: [], + style: { + headerColor: '#227F9B80', + }, + }; + if (nodeDefine.details?.style !== undefined) { + // 合并 style,已 dump 的 style 为主 + description.style = { ...description.style, ...nodeDefine.details?.style }; + } + const blockData = { + type: nodeDefine.type, + position: { x: 0, y: 0 }, + details: { + inputPins: [], + outputPins: [], + }, + }; + return { + isMaster: nodeDefine.details?.master, + details: nodeDefine.details, + type: blockData.type, + data: blockData, + description: description, + }; +} +/** + * 注册到动态枚举中,如果 value 重复就递增 1 + * 例如 test test_1 + * @param pinData + * @param pinDesc + */ +function registerDynamicEnum(pinData, pinDesc) { + let value = pinData.value; + let index = 1; + let done = false; + while (!done) { + done = (0, block_forge_1.declareDynamicEnumToType)({ + type: pinDesc.details.registerEnumType, + name: value, + }); + if (!done) { + value = pinData.value + `_${index}`; + index++; + } + } + return value; +} +exports.registerDynamicEnum = registerDynamicEnum; +function createDynamicInputPins(blockDesc, details) { + if (details.inputPinDescriptions) { + return details.inputPinDescriptions.map((desc, index) => { + const pinData = details.inputPins[index]; + if (desc.details.registerEnumType) { + pinData.details.registerEnumType = desc.details.registerEnumType; + pinData.value = registerDynamicEnum(pinData, desc); + } + return desc; + }); + } + else { + return blockDesc.inputPins.map((desc, index) => { + const newDesc = JSON.parse(JSON.stringify(desc)); + const pinData = details.inputPins[index]; + if (pinData) { + if (newDesc.dataType === 'any') { + newDesc.dataType = pinData.dataType; + newDesc.value = pinData.value; + } + if (desc.details.registerEnumType) { + pinData.details.registerEnumType = desc.details.registerEnumType; + pinData.value = registerDynamicEnum(pinData, desc); + } + } + return newDesc; + }); + } +} +function createDynamicOutputPins(blockDesc, details) { + if (details.outputPinDescriptions) { + return details.outputPinDescriptions; + } + return blockDesc.outputPins.map((desc, index) => { + const newDesc = JSON.parse(JSON.stringify(desc)); + const pinData = details.outputPins[index]; + if (pinData && newDesc.dataType === 'any') { + newDesc.dataType = pinData.dataType; + newDesc.value = pinData.value; + } + return newDesc; + }); +} +function declareShaderNodeBlock(shaderNodeMap) { + // 清空缓存 + exports.normalBlockCacheMap.clear(); + exports.pinMap.clear(); + for (const [blockType, item] of shaderNodeMap) { + const inputPins = []; + const inputPinDescriptions = []; + item.node.inputs?.forEach((slot) => { + const pin = createPin(blockType, 'input', slot); + inputPins.push(pin.data); + inputPinDescriptions.push(pin.description); + exports.pinMap.set(pin.tag, pin); + }); + item.node.props?.forEach((slot) => { + const pin = createPin(blockType, 'prop', slot); + inputPins.push(pin.data); + inputPinDescriptions.push(pin.description); + exports.pinMap.set(pin.tag, pin); + }); + const outputPins = []; + const outputPinDescriptions = []; + item.node.outputs?.forEach((slot) => { + const pin = createPin(blockType, 'out', slot); + outputPins.push(pin.data); + outputPinDescriptions.push(pin.description); + exports.pinMap.set(pin.tag, pin); + }); + const block = createBlockByNodeDefine(item); + block.data.details.inputPins = inputPins; + block.data.details.outputPins = outputPins; + block.description.inputPins = inputPinDescriptions; + block.description.outputPins = outputPinDescriptions; + block.description.createDynamicInputPins = createDynamicInputPins; + block.description.createDynamicOutputPins = createDynamicOutputPins; + exports.normalBlockCacheMap.set(block.type, block); + // 注册 + (0, block_forge_1.declareBlock)(block.description); + } +} +exports.declareShaderNodeBlock = declareShaderNodeBlock; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2RlY2xhcmUvYmxvY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsbURBQXdGO0FBQ3hGLG9DQUF5QztBQUk1QixRQUFBLG1CQUFtQixHQUFtQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRWhFLFFBQUEsTUFBTSxHQUFpRSxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBRTlGLFNBQWdCLFlBQVksQ0FBQyxTQUFpQixFQUFFLE9BQWdCLEVBQUUsSUFBZ0I7SUFDOUUsT0FBTyxJQUFBLHFCQUFhLEVBQUMsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0RSxDQUFDO0FBRkQsb0NBRUM7QUFDRCxTQUFnQixTQUFTLENBQUMsU0FBaUIsRUFBRSxPQUFnQixFQUFFLElBQWdCLEVBQUUsT0FBZ0M7SUFDN0csTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDbkQsTUFBTSxjQUFjLEdBQW9CO1FBQ3BDLEdBQUcsRUFBRSxHQUFHO1FBQ1IsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJO1FBQ25CLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTztRQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU87UUFDbEIsT0FBTyxFQUFFLE9BQU8sS0FBSyxNQUFNO1FBQzNCLE9BQU8sRUFBRSxFQUFFO0tBQ2QsQ0FBQztJQUNGLE1BQU0sT0FBTyxHQUFZO1FBQ3JCLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTtRQUNqQyxLQUFLLEVBQUUsY0FBYyxDQUFDLEtBQUs7UUFDM0IsT0FBTyxFQUFFLE9BQU8sSUFBSSxFQUFFO0tBQ3pCLENBQUM7SUFFRixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxJQUFJLElBQUksQ0FB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IHR5cGUgeyBCbG9ja1RlbXBsYXRlRGF0YSB9IGZyb20gJy4uL2ludGVybmFsJztcbmltcG9ydCB0eXBlIHsgQmxvY2tEYXRhLCBJQmxvY2tEZXNjcmlwdGlvbiwgSVBpbkRlc2NyaXB0aW9uLCBQaW5EYXRhIH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlEZWZpbmUsIE5vZGVEZWZpbmUsIFNsb3REZWZpbmUgfSBmcm9tICcuLi8uLi8uLi9AdHlwZXMvc2hhZGVyLW5vZGUtdHlwZSc7XG5cbmltcG9ydCB7IGRlY2xhcmVCbG9jaywgZGVjbGFyZUVudW0sIGRlY2xhcmVEeW5hbWljRW51bVRvVHlwZSB9IGZyb20gJy4uLy4uL2Jsb2NrLWZvcmdlJztcbmltcG9ydCB7IGdlbmVyYXRlUGluSUQgfSBmcm9tICcuLi91dGlscyc7XG5cbnR5cGUgU2xvdFRhZyA9ICdpbnB1dCcgfCAnb3V0JyB8ICdwcm9wJztcblxuZXhwb3J0IGNvbnN0IG5vcm1hbEJsb2NrQ2FjaGVNYXA6IE1hcDxzdHJpbmcsIEJsb2NrVGVtcGxhdGVEYXRhPiA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGNvbnN0IHBpbk1hcDogTWFwPHN0cmluZywgeyBkYXRhOiBQaW5EYXRhLCBkZXNjcmlwdGlvbjogSVBpbkRlc2NyaXB0aW9uIH0+ID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGluVGFnKGJsb2NrVHlwZTogc3RyaW5nLCBzbG90VGFnOiBTbG90VGFnLCBzbG90OiBTbG90RGVmaW5lKSB7XG4gICAgcmV0dXJuIGdlbmVyYXRlUGluSUQoc2xvdFRhZywgYmxvY2tUeXBlLCBzbG90LnR5cGUsIHNsb3QuZGlzcGxheSk7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUGluKGJsb2NrVHlwZTogc3RyaW5nLCBzbG90VGFnOiBTbG90VGFnLCBzbG90OiBTbG90RGVmaW5lLCBkZXRhaWxzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfSkge1xuICAgIGNvbnN0IHRhZyA9IGNyZWF0ZVBpblRhZyhibG9ja1R5cGUsIHNsb3RUYWcsIHNsb3QpO1xuICAgIGNvbnN0IHBpbkRlc2NyaXB0aW9uOiBJUGluRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIHRhZzogdGFnLFxuICAgICAgICBkYXRhVHlwZTogc2xvdC50eXBlLFxuICAgICAgICB2YWx1ZTogc2xvdC5kZWZhdWx0LFxuICAgICAgICBuYW1lOiBzbG90LmRpc3BsYXksXG4gICAgICAgIGhpZGVQaW46IHNsb3RUYWcgPT09ICdwcm9wJyxcbiAgICAgICAgZGV0YWlsczoge30sXG4gICAgfTtcbiAgICBjb25zdCBwaW5EYXRhOiBQaW5EYXRhID0ge1xuICAgICAgICBkYXRhVHlwZTogcGluRGVzY3JpcHRpb24uZGF0YVR5cGUsXG4gICAgICAgIHZhbHVlOiBwaW5EZXNjcmlwdGlvbi52YWx1ZSxcbiAgICAgICAgZGV0YWlsczogZGV0YWlscyB8fCB7fSxcbiAgICB9O1xuXG4gICAgaWYgKHNsb3QudHlwZSA9PT0gJ2VudW0nICYmIHNsb3QuZW51bSkge1xuICAgICAgICAvLyDms6jlhozmnprkuL5cbiAgICAgICAgY29uc3QgdHlwZSA9IHNsb3QuZW51bS5fbmFtZSB8fCBgJHtibG9ja1R5cGV9XyR7c2xvdC5kaXNwbGF5fWA7XG4gICAgICAgIGRlY2xhcmVFbnVtKHR5cGUsIHNsb3QuZW51bSk7XG4gICAgICAgIHBpbkRhdGEudmFsdWUgPSBzbG90LmRlZmF1bHQ7XG4gICAgICAgIHBpbkRlc2NyaXB0aW9uLmRldGFpbHMudHlwZSA9IHR5cGU7XG4gICAgfSBlbHNlIGlmIChzbG90LnR5cGUgPT09ICdkeW5hbWljRW51bScgJiYgc2xvdC5yZWdpc3RlckVudW0pIHtcbiAgICAgICAgZGVjbGFyZUVudW0oc2xvdC5yZWdpc3RlckVudW0udHlwZSwge30pO1xuICAgICAgICBwaW5EYXRhLnZhbHVlID0gJyc7XG4gICAgICAgIHBpbkRlc2NyaXB0aW9uLmRldGFpbHMudHlwZSA9IHNsb3QucmVnaXN0ZXJFbnVtLnR5cGU7XG4gICAgICAgIHBpbkRlc2NyaXB0aW9uLmRldGFpbHMuZGVmYXVsdFZhbHVlID0gc2xvdC5kZWZhdWx0O1xuICAgIH1cblxuICAgIGlmICgncmVnaXN0ZXJFbnVtVHlwZScgaW4gc2xvdCkge1xuICAgICAgICBwaW5EZXNjcmlwdGlvbi5kZXRhaWxzLnJlZ2lzdGVyRW51bVR5cGUgPSBzbG90LnJlZ2lzdGVyRW51bVR5cGU7XG4gICAgfVxuXG4gICAgLy8g55So5LqO5Yik5pat6L+e57q/XG4gICAgaWYgKCdjb25uZWN0VHlwZScgaW4gc2xvdCkge1xuICAgICAgICBwaW5EZXNjcmlwdGlvbi5kZXRhaWxzLmNvbm5lY3RUeXBlID0gc2xvdC5jb25uZWN0VHlwZTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgICB0YWc6IHRhZyxcbiAgICAgICAgZGF0YTogcGluRGF0YSxcbiAgICAgICAgZGVzY3JpcHRpb246IHBpbkRlc2NyaXB0aW9uLFxuICAgIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJsb2NrQnlOb2RlRGVmaW5lKG5vZGVEZWZpbmU6IE5vZGVEZWZpbmUpIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbjogSUJsb2NrRGVzY3JpcHRpb24gPSB7XG4gICAgICAgIHR5cGU6IG5vZGVEZWZpbmUudHlwZSxcbiAgICAgICAgdGl0bGU6IG5vZGVEZWZpbmUuZGV0YWlscz8udGl0bGUgfHwgJycsXG4gICAgICAgIGlucHV0UGluczogW10sXG4gICAgICAgIG91dHB1dFBpbnM6IFtdLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgaGVhZGVyQ29sb3I6ICcjMjI3RjlCODAnLFxuICAgICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAobm9kZURlZmluZS5kZXRhaWxzPy5zdHlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIOWQiOW5tiBzdHlsZe+8jOW3siBkdW1wIOeahCBzdHlsZSDkuLrkuLtcbiAgICAgICAgZGVzY3JpcHRpb24uc3R5bGUgPSB7IC4uLmRlc2NyaXB0aW9uLnN0eWxlLCAuLi5ub2RlRGVmaW5lLmRldGFpbHM/LnN0eWxlIH07XG4gICAgfVxuXG4gICAgY29uc3QgYmxvY2tEYXRhOiBCbG9ja0RhdGEgPSB7XG4gICAgICAgIHR5cGU6IG5vZGVEZWZpbmUudHlwZSxcbiAgICAgICAgcG9zaXRpb246IHsgeDogMCwgeTogMCB9LFxuICAgICAgICBkZXRhaWxzOiB7XG4gICAgICAgICAgICBpbnB1dFBpbnM6IFtdLFxuICAgICAgICAgICAgb3V0cHV0UGluczogW10sXG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4ge1xuICAgICAgICBpc01hc3Rlcjogbm9kZURlZmluZS5kZXRhaWxzPy5tYXN0ZXIsXG4gICAgICAgIGRldGFpbHM6IG5vZGVEZWZpbmUuZGV0YWlscyxcbiAgICAgICAgdHlwZTogYmxvY2tEYXRhLnR5cGUsXG4gICAgICAgIGRhdGE6IGJsb2NrRGF0YSxcbiAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLFxuICAgIH07XG59XG5cbi8qKlxuICog5rOo5YaM5Yiw5Yqo5oCB5p6a5Li+5Lit77yM5aaC5p6cIHZhbHVlIOmHjeWkjeWwsemAkuWiniAxXG4gKiDkvovlpoIgdGVzdCB0ZXN0XzFcbiAqIEBwYXJhbSBwaW5EYXRhXG4gKiBAcGFyYW0gcGluRGVzY1xuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEeW5hbWljRW51bShwaW5EYXRhOiBQaW5EYXRhLCBwaW5EZXNjOiBJUGluRGVzY3JpcHRpb24pIHtcbiAgICBsZXQgdmFsdWUgPSBwaW5EYXRhLnZhbHVlO1xuICAgIGxldCBpbmRleCA9IDE7XG4gICAgbGV0IGRvbmUgPSBmYWxzZTtcbiAgICB3aGlsZSAoIWRvbmUpIHtcbiAgICAgICAgZG9uZSA9IGRlY2xhcmVEeW5hbWljRW51bVRvVHlwZSh7XG4gICAgICAgICAgICB0eXBlOiBwaW5EZXNjLmRldGFpbHMucmVnaXN0ZXJFbnVtVHlwZSxcbiAgICAgICAgICAgIG5hbWU6IHZhbHVlLFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgICAgICB2YWx1ZSA9IHBpbkRhdGEudmFsdWUgKyBgXyR7aW5kZXh9YDtcbiAgICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEeW5hbWljSW5wdXRQaW5zKGJsb2NrRGVzYzogSUJsb2NrRGVzY3JpcHRpb24sIGRldGFpbHM6IHtcbiAgICBpbnB1dFBpbnM6IFBpbkRhdGFbXTtcbiAgICBpbnB1dFBpbkRlc2NyaXB0aW9ucz86IElQaW5EZXNjcmlwdGlvbltdO1xuICAgIFtrZXk6IHN0cmluZ106IGFueVxufSk6IElQaW5EZXNjcmlwdGlvbltdIHtcbiAgICBpZiAoZGV0YWlscy5pbnB1dFBpbkRlc2NyaXB0aW9ucykge1xuICAgICAgICByZXR1cm4gZGV0YWlscy5pbnB1dFBpbkRlc2NyaXB0aW9ucy5tYXAoKGRlc2M6IElQaW5EZXNjcmlwdGlvbiwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGluRGF0YSA9IGRldGFpbHMuaW5wdXRQaW5zW2luZGV4XTtcbiAgICAgICAgICAgIGlmIChkZXNjLmRldGFpbHMucmVnaXN0ZXJFbnVtVHlwZSkge1xuICAgICAgICAgICAgICAgIHBpbkRhdGEuZGV0YWlscy5yZWdpc3RlckVudW1UeXBlID0gZGVzYy5kZXRhaWxzLnJlZ2lzdGVyRW51bVR5cGU7XG4gICAgICAgICAgICAgICAgcGluRGF0YS52YWx1ZSA9IHJlZ2lzdGVyRHluYW1pY0VudW0ocGluRGF0YSwgZGVzYyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZGVzYztcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGJsb2NrRGVzYy5pbnB1dFBpbnMubWFwKChkZXNjOiBJUGluRGVzY3JpcHRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0Rlc2MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRlc2MpKTtcbiAgICAgICAgICAgIGNvbnN0IHBpbkRhdGEgPSBkZXRhaWxzLmlucHV0UGluc1tpbmRleF07XG4gICAgICAgICAgICBpZiAocGluRGF0YSkge1xuICAgICAgICAgICAgICAgIGlmIChuZXdEZXNjLmRhdGFUeXBlID09PSAnYW55Jykge1xuICAgICAgICAgICAgICAgICAgICBuZXdEZXNjLmRhdGFUeXBlID0gcGluRGF0YS5kYXRhVHlwZTtcbiAgICAgICAgICAgICAgICAgICAgbmV3RGVzYy52YWx1ZSA9IHBpbkRhdGEudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChkZXNjLmRldGFpbHMucmVnaXN0ZXJFbnVtVHlwZSkge1xuICAgICAgICAgICAgICAgICAgICBwaW5EYXRhLmRldGFpbHMucmVnaXN0ZXJFbnVtVHlwZSA9IGRlc2MuZGV0YWlscy5yZWdpc3RlckVudW1UeXBlO1xuICAgICAgICAgICAgICAgICAgICBwaW5EYXRhLnZhbHVlID0gcmVnaXN0ZXJEeW5hbWljRW51bShwaW5EYXRhLCBkZXNjKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gbmV3RGVzYztcbiAgICAgICAgfSk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVEeW5hbWljT3V0cHV0UGlucyhibG9ja0Rlc2M6IElCbG9ja0Rlc2NyaXB0aW9uLCBkZXRhaWxzOiB7XG4gICAgb3V0cHV0UGluczogUGluRGF0YVtdO1xuICAgIG91dHB1dFBpbkRlc2NyaXB0aW9uczogSVBpbkRlc2NyaXB0aW9uW107XG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufSk6IElQaW5EZXNjcmlwdGlvbltdIHtcbiAgICBpZiAoZGV0YWlscy5vdXRwdXRQaW5EZXNjcmlwdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIGRldGFpbHMub3V0cHV0UGluRGVzY3JpcHRpb25zO1xuICAgIH1cbiAgICByZXR1cm4gYmxvY2tEZXNjLm91dHB1dFBpbnMubWFwKChkZXNjOiBJUGluRGVzY3JpcHRpb24sIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3RGVzYyA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGVzYykpO1xuICAgICAgICBjb25zdCBwaW5EYXRhID0gZGV0YWlscy5vdXRwdXRQaW5zW2luZGV4XTtcbiAgICAgICAgaWYgKHBpbkRhdGEgJiYgbmV3RGVzYy5kYXRhVHlwZSA9PT0gJ2FueScpIHtcbiAgICAgICAgICAgIG5ld0Rlc2MuZGF0YVR5cGUgPSBwaW5EYXRhLmRhdGFUeXBlO1xuICAgICAgICAgICAgbmV3RGVzYy52YWx1ZSA9IHBpbkRhdGEudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0Rlc2M7XG4gICAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkZWNsYXJlU2hhZGVyTm9kZUJsb2NrKHNoYWRlck5vZGVNYXA6IE1hcDxzdHJpbmcsIE5vZGVEZWZpbmU+KSB7XG4gICAgLy8g5riF56m657yT5a2YXG4gICAgbm9ybWFsQmxvY2tDYWNoZU1hcC5jbGVhcigpO1xuICAgIHBpbk1hcC5jbGVhcigpO1xuICAgIGZvciAoY29uc3QgW2Jsb2NrVHlwZSwgaXRlbV0gb2Ygc2hhZGVyTm9kZU1hcCkge1xuICAgICAgICBjb25zdCBpbnB1dFBpbnM6IFBpbkRhdGFbXSA9IFtdO1xuICAgICAgICBjb25zdCBpbnB1dFBpbkRlc2NyaXB0aW9uczogSVBpbkRlc2NyaXB0aW9uW10gPSBbXTtcbiAgICAgICAgaXRlbS5ub2RlLmlucHV0cz8uZm9yRWFjaCgoc2xvdDogU2xvdERlZmluZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcGluID0gY3JlYXRlUGluKGJsb2NrVHlwZSwgJ2lucHV0Jywgc2xvdCk7XG4gICAgICAgICAgICBpbnB1dFBpbnMucHVzaChwaW4uZGF0YSk7XG4gICAgICAgICAgICBpbnB1dFBpbkRlc2NyaXB0aW9ucy5wdXNoKHBpbi5kZXNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgIHBpbk1hcC5zZXQocGluLnRhZywgcGluKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXRlbS5ub2RlLnByb3BzPy5mb3JFYWNoKChzbG90OiBTbG90RGVmaW5lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwaW4gPSBjcmVhdGVQaW4oYmxvY2tUeXBlLCAncHJvcCcsIHNsb3QpO1xuXG4gICAgICAgICAgICBpbnB1dFBpbnMucHVzaChwaW4uZGF0YSk7XG4gICAgICAgICAgICBpbnB1dFBpbkRlc2NyaXB0aW9ucy5wdXNoKHBpbi5kZXNjcmlwdGlvbik7XG5cbiAgICAgICAgICAgIHBpbk1hcC5zZXQocGluLnRhZywgcGluKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgb3V0cHV0UGluczogUGluRGF0YVtdID0gW107XG4gICAgICAgIGNvbnN0IG91dHB1dFBpbkRlc2NyaXB0aW9uczogSVBpbkRlc2NyaXB0aW9uW10gPSBbXTtcbiAgICAgICAgaXRlbS5ub2RlLm91dHB1dHM/LmZvckVhY2goKHNsb3Q6IFNsb3REZWZpbmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHBpbiA9IGNyZWF0ZVBpbihibG9ja1R5cGUsICdvdXQnLCBzbG90KTtcbiAgICAgICAgICAgIG91dHB1dFBpbnMucHVzaChwaW4uZGF0YSk7XG4gICAgICAgICAgICBvdXRwdXRQaW5EZXNjcmlwdGlvbnMucHVzaChwaW4uZGVzY3JpcHRpb24pO1xuXG4gICAgICAgICAgICBwaW5NYXAuc2V0KHBpbi50YWcsIHBpbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGJsb2NrID0gY3JlYXRlQmxvY2tCeU5vZGVEZWZpbmUoaXRlbSk7XG4gICAgICAgIGJsb2NrLmRhdGEuZGV0YWlscy5pbnB1dFBpbnMgPSBpbnB1dFBpbnM7XG4gICAgICAgIGJsb2NrLmRhdGEuZGV0YWlscy5vdXRwdXRQaW5zID0gb3V0cHV0UGlucztcbiAgICAgICAgYmxvY2suZGVzY3JpcHRpb24uaW5wdXRQaW5zID0gaW5wdXRQaW5EZXNjcmlwdGlvbnM7XG4gICAgICAgIGJsb2NrLmRlc2NyaXB0aW9uLm91dHB1dFBpbnMgPSBvdXRwdXRQaW5EZXNjcmlwdGlvbnM7XG4gICAgICAgIGJsb2NrLmRlc2NyaXB0aW9uLmNyZWF0ZUR5bmFtaWNJbnB1dFBpbnMgPSBjcmVhdGVEeW5hbWljSW5wdXRQaW5zO1xuICAgICAgICBibG9jay5kZXNjcmlwdGlvbi5jcmVhdGVEeW5hbWljT3V0cHV0UGlucyA9IGNyZWF0ZUR5bmFtaWNPdXRwdXRQaW5zO1xuICAgICAgICBub3JtYWxCbG9ja0NhY2hlTWFwLnNldChibG9jay50eXBlLCBibG9jayk7XG4gICAgICAgIC8vIOazqOWGjFxuICAgICAgICBkZWNsYXJlQmxvY2soYmxvY2suZGVzY3JpcHRpb24pO1xuICAgIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/declare/graph.js b/extensions/shader-graph/dist/shader-graph/declare/graph.js new file mode 100644 index 0000000..5f8e71b --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/declare/graph.js @@ -0,0 +1,118 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createDefaultGraph = void 0; +const menu_1 = require("../menu"); +const base_1 = require("../base"); +function createDefaultGraph() { + return { + type: 'Graph', + style: { + showOriginPoint: true, + originPointColor: 'rgba(68,68,68,0.3)', + gridColor: 'rgba(68,68,68,0.3)', + backgroundColor: '#050505', + }, + validator: { + dataLink(nodes, lines, line, input, output) { + const inputBlock = base_1.ForgeMgr.Instance.getBlockByUuid(line.input.node); + let inputConnectType = '', outputConnectType = ''; + const inputTag = input.name || input.tag; + if (input.direction === 'input') { + const inputPinData = inputBlock.getInputPin(inputTag); + inputConnectType = inputPinData?.desc.details.connectType; + } + else if (input.direction === 'output') { + const inputPinData = inputBlock.getOutputPin(inputTag); + if (inputBlock.block.type === 'PropertyNode') { + inputConnectType = inputPinData?.value.details.connectType; + } + else { + inputConnectType = inputPinData?.desc.details.connectType; + } + } + const outputBlock = base_1.ForgeMgr.Instance.getBlockByUuid(line.output.node); + const outputTag = output.name || output.tag; + if (output.direction === 'input') { + const outputPinData = outputBlock.getInputPin(outputTag); + outputConnectType = outputPinData?.desc.details.connectType; + } + else if (output.direction === 'output') { + const outputPinData = outputBlock.getOutputPin(outputTag); + outputConnectType = outputPinData?.desc.details.connectType; + } + // 删除同一个 output 的线条 + base_1.GraphEditorMgr.Instance.deleteLinesByDuplicateOutput(lines, line); + return (inputConnectType === outputConnectType) || (input.type === output.type); + }, + execLink(nodes, lines, line, input, output) { + return true; + }, + deleteLine(...args) { + return true; + }, + // 节点 + createNode(...args) { + return true; + }, + deleteNode(...args) { + return true; + }, + }, + event: { + // Block 选中事件 + onBlockSelected(event) { + return true; + }, + onBlockUnselected(event) { + return true; + }, + // Line 选中事件 + onLineSelected(event) { + return true; + }, + onLineUnselected(event) { + return true; + }, + // Block 点击事件 + onBlockClick(event) { + return true; + }, + onBlockRightClick(event) { + return menu_1.Menu.Instance.popupMenu(event); + }, + onBlockDblClick(event) { + return true; + }, + // Line 点击事件 + onLineClick(event) { + return true; + }, + onLineRightClick(event) { + return menu_1.Menu.Instance.popupMenu(event); + }, + onLineDblClick(event) { + return true; + }, + // Graph 点击事件 + onGraphRightClick(event) { + return menu_1.Menu.Instance.popupMenu(event); + }, + // 连线 + onLineCreated(event) { + return true; + }, + onLineDeleted(event) { + return true; + }, + // 节点 + onBlockCreated(event) { + return true; + }, + onBlockDeleted(event) { + return true; + }, + }, + }; +} +exports.createDefaultGraph = createDefaultGraph; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2RlY2xhcmUvZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBT0Esa0NBQStCO0FBQy9CLGtDQUFtRDtBQUVuRCxTQUFnQixrQkFBa0I7SUFDOUIsT0FBTztRQUNILElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFO1lBQ0gsZUFBZSxFQUFFLElBQUk7WUFDckIsZ0JBQWdCLEVBQUUsb0JBQW9CO1lBQ3RDLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsZUFBZSxFQUFFLFNBQVM7U0FDN0I7UUFDRCxTQUFTLEVBQUU7WUFDUCxRQUFRLENBQUMsS0FBbUMsRUFBRSxLQUFrQyxFQUFFLElBQWMsRUFBRSxLQUFVLEVBQUUsTUFBVztnQkFDckgsTUFBTSxVQUFVLEdBQUcsZUFBUSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDckUsSUFBSSxnQkFBZ0IsR0FBRyxFQUFFLEVBQUUsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO2dCQUNsRCxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUM7Z0JBQ3pDLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxPQUFPLEVBQUU7b0JBQzdCLE1BQU0sWUFBWSxHQUFHLFVBQVUsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3RELGdCQUFnQixHQUFHLFlBQVksRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztpQkFDN0Q7cUJBQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtvQkFDckMsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdkQsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksS0FB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QUFzQjtnQkFDcEMsT0FBTyxXQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUMxQyxDQUFDO1lBRUQsS0FBSztZQUNMLGFBQWEsQ0FBQyxLQUFnQjtnQkFDMUIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUNELGFBQWEsQ0FBQyxLQUFnQjtnQkFDMUIsT0FBTyxJQUFJLENBQUM7WUFDaEIsQ0FBQztZQUVELEtBQUs7WUFDTCxjQUFjLENBQUMsS0FBaUI7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7WUFDRCxjQUFjLENBQUMsS0FBaUI7Z0JBQzVCLE9BQU8sSUFBSSxDQUFDO1lBQ2hCLENBQUM7U0FDSjtLQUNKLENBQUM7QUFDTixDQUFDO0FBbkhELGdEQW1IQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmxvY2tEYXRhLCBMaW5lRGF0YSwgUGluRGF0YSB9IGZyb20gJy4uLy4uL2Jsb2NrLWZvcmdlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IElHcmFwaERlc2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcblxuaW1wb3J0IHtcbiAgICBCbG9ja0V2ZW50LCBCbG9ja01vdXNlRXZlbnQsIEdyYXBoTW91c2VFdmVudCwgTGluZUV2ZW50LCBMaW5lTW91c2VFdmVudCxcbn0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvZXZlbnQnO1xuXG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi4vbWVudSc7XG5pbXBvcnQgeyBHcmFwaEVkaXRvck1nciwgRm9yZ2VNZ3IgfSBmcm9tICcuLi9iYXNlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRHcmFwaCgpOiBJR3JhcGhEZXNjcmlwdGlvbiB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ0dyYXBoJyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHNob3dPcmlnaW5Qb2ludDogdHJ1ZSxcbiAgICAgICAgICAgIG9yaWdpblBvaW50Q29sb3I6ICdyZ2JhKDY4LDY4LDY4LDAuMyknLFxuICAgICAgICAgICAgZ3JpZENvbG9yOiAncmdiYSg2OCw2OCw2OCwwLjMpJyxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMwNTA1MDUnLFxuICAgICAgICB9LFxuICAgICAgICB2YWxpZGF0b3I6IHtcbiAgICAgICAgICAgIGRhdGFMaW5rKG5vZGVzOiB7IFtrZXk6IHN0cmluZ106IEJsb2NrRGF0YSB9LCBsaW5lczogeyBba2V5OiBzdHJpbmddOiBMaW5lRGF0YSB9LCBsaW5lOiBMaW5lRGF0YSwgaW5wdXQ6IGFueSwgb3V0cHV0OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpbnB1dEJsb2NrID0gRm9yZ2VNZ3IuSW5zdGFuY2UuZ2V0QmxvY2tCeVV1aWQobGluZS5pbnB1dC5ub2RlKTtcbiAgICAgICAgICAgICAgICBsZXQgaW5wdXRDb25uZWN0VHlwZSA9ICcnLCBvdXRwdXRDb25uZWN0VHlwZSA9ICcnO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlucHV0VGFnID0gaW5wdXQubmFtZSB8fCBpbnB1dC50YWc7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmRpcmVjdGlvbiA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dFBpbkRhdGEgPSBpbnB1dEJsb2NrLmdldElucHV0UGluKGlucHV0VGFnKTtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25uZWN0VHlwZSA9IGlucHV0UGluRGF0YT8uZGVzYy5kZXRhaWxzLmNvbm5lY3RUeXBlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuZGlyZWN0aW9uID09PSAnb3V0cHV0Jykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnB1dFBpbkRhdGEgPSBpbnB1dEJsb2NrLmdldE91dHB1dFBpbihpbnB1dFRhZyk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dEJsb2NrLmJsb2NrLnR5cGUgPT09ICdQcm9wZXJ0eU5vZGUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbm5lY3RUeXBlID0gaW5wdXRQaW5EYXRhPy52YWx1ZS5kZXRhaWxzLmNvbm5lY3RUeXBlO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25uZWN0VHlwZSA9IGlucHV0UGluRGF0YT8uZGVzYy5kZXRhaWxzLmNvbm5lY3RUeXBlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IG91dHB1dEJsb2NrID0gRm9yZ2VNZ3IuSW5zdGFuY2UuZ2V0QmxvY2tCeVV1aWQobGluZS5vdXRwdXQubm9kZSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgb3V0cHV0VGFnID0gb3V0cHV0Lm5hbWUgfHwgb3V0cHV0LnRhZztcbiAgICAgICAgICAgICAgICBpZiAob3V0cHV0LmRpcmVjdGlvbiA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQaW5EYXRhID0gb3V0cHV0QmxvY2suZ2V0SW5wdXRQaW4ob3V0cHV0VGFnKTtcbiAgICAgICAgICAgICAgICAgICAgb3V0cHV0Q29ubmVjdFR5cGUgPSBvdXRwdXRQaW5EYXRhPy5kZXNjLmRldGFpbHMuY29ubmVjdFR5cGU7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvdXRwdXQuZGlyZWN0aW9uID09PSAnb3V0cHV0Jykge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQaW5EYXRhID0gb3V0cHV0QmxvY2suZ2V0T3V0cHV0UGluKG91dHB1dFRhZyk7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dENvbm5lY3RUeXBlID0gb3V0cHV0UGluRGF0YT8uZGVzYy5kZXRhaWxzLmNvbm5lY3RUeXBlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vIOWIoOmZpOWQjOS4gOS4qiBvdXRwdXQg55qE57q/5p2hXG4gICAgICAgICAgICAgICAgR3JhcGhFZGl0b3JNZ3IuSW5zdGFuY2UuZGVsZXRlTGluZXNCeUR1cGxpY2F0ZU91dHB1dChsaW5lcywgbGluZSk7XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gKGlucHV0Q29ubmVjdFR5cGUgPT09IG91dHB1dENvbm5lY3RUeXBlKSB8fCAoaW5wdXQudHlwZSA9PT0gb3V0cHV0LnR5cGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGV4ZWNMaW5rKG5vZGVzOiBhbnksIGxpbmVzOiBhbnksIGxpbmU6IGFueSwgaW5wdXQ6IGFueSwgb3V0cHV0OiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkZWxldGVMaW5lKC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgLy8g6IqC54K5XG4gICAgICAgICAgICBjcmVhdGVOb2RlKC4uLmFyZ3M6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZGVsZXRlTm9kZSguLi5hcmdzOiBhbnlbXSk6IGJvb2xlYW4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZXZlbnQ6IHtcbiAgICAgICAgICAgIC8vIEJsb2NrIOmAieS4reS6i+S7tlxuICAgICAgICAgICAgb25CbG9ja1NlbGVjdGVkKGV2ZW50OiBCbG9ja0V2ZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25CbG9ja1Vuc2VsZWN0ZWQoZXZlbnQ6IEJsb2NrRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vIExpbmUg6YCJ5Lit5LqL5Lu2XG4gICAgICAgICAgICBvbkxpbmVTZWxlY3RlZChldmVudDogTGluZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25MaW5lVW5zZWxlY3RlZChldmVudDogTGluZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBCbG9jayDngrnlh7vkuovku7ZcbiAgICAgICAgICAgIG9uQmxvY2tDbGljayhldmVudDogQmxvY2tNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25CbG9ja1JpZ2h0Q2xpY2soZXZlbnQ6IEJsb2NrTW91c2VFdmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNZW51Lkluc3RhbmNlLnBvcHVwTWVudShldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25CbG9ja0RibENsaWNrKGV2ZW50OiBCbG9ja01vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vIExpbmUg54K55Ye75LqL5Lu2XG4gICAgICAgICAgICBvbkxpbmVDbGljayhldmVudDogTGluZU1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkxpbmVSaWdodENsaWNrKGV2ZW50OiBMaW5lTW91c2VFdmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBNZW51Lkluc3RhbmNlLnBvcHVwTWVudShldmVudCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgb25MaW5lRGJsQ2xpY2soZXZlbnQ6IExpbmVNb3VzZUV2ZW50KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAvLyBHcmFwaCDngrnlh7vkuovku7ZcbiAgICAgICAgICAgIG9uR3JhcGhSaWdodENsaWNrKGV2ZW50OiBHcmFwaE1vdXNlRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gTWVudS5JbnN0YW5jZS5wb3B1cE1lbnUoZXZlbnQpO1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgLy8g6L+e57q/XG4gICAgICAgICAgICBvbkxpbmVDcmVhdGVkKGV2ZW50OiBMaW5lRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkxpbmVEZWxldGVkKGV2ZW50OiBMaW5lRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgIC8vIOiKgueCuVxuICAgICAgICAgICAgb25CbG9ja0NyZWF0ZWQoZXZlbnQ6IEJsb2NrRXZlbnQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvbkJsb2NrRGVsZXRlZChldmVudDogQmxvY2tFdmVudCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xufVxuXG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/declare/index.js b/extensions/shader-graph/dist/shader-graph/declare/index.js new file mode 100644 index 0000000..83be007 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/declare/index.js @@ -0,0 +1,69 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.applyBlockToMenu = exports.declareGraphBlock = exports.iteratePropertyDefines = exports.getBlockDataByType = exports.getPropertyDefineByType = exports.getBlockTemplateByType = exports.declareShaderNodeBlock = exports.declareShaderGraph = void 0; +const block_1 = require("./block"); +Object.defineProperty(exports, "declareShaderNodeBlock", { enumerable: true, get: function () { return block_1.declareShaderNodeBlock; } }); +const menu_1 = require("../menu"); +const block_forge_1 = require("../../block-forge"); +const graph_1 = require("./graph"); +const base_1 = require("../base"); +let shaderNodeMap = new Map(); +let shaderPropertyMap = new Map(); +function getPropertyDefineByType(type) { + return shaderPropertyMap.get(type); +} +exports.getPropertyDefineByType = getPropertyDefineByType; +async function declareGraphBlock() { + const { shaderNodeList, shaderPropertyList } = await base_1.MessageMgr.Instance.callSceneMethod('queryShaderNode'); + shaderNodeMap = new Map(shaderNodeList); + shaderPropertyMap = new Map(shaderPropertyList); + declareShaderGraph(); + (0, block_1.declareShaderNodeBlock)(shaderNodeMap); + applyBlockToMenu(); + base_1.MessageMgr.Instance.send(base_1.MessageType.Declared); +} +exports.declareGraphBlock = declareGraphBlock; +function iteratePropertyDefines(handle) { + shaderPropertyMap.forEach((define) => handle(define)); +} +exports.iteratePropertyDefines = iteratePropertyDefines; +async function getBlockDataByType(type) { + let block = getBlockTemplateByType(type); + if (!block) { + await declareGraphBlock(); + } + block = getBlockTemplateByType(type); + if (!block) { + console.log(`create default shader graph failed, MasterNode: ${type}`); + return; + } + return JSON.parse(JSON.stringify(block.data)); +} +exports.getBlockDataByType = getBlockDataByType; +function declareShaderGraph() { + const defaultGraph = (0, graph_1.createDefaultGraph)(); + if ((0, block_forge_1.hasDeclareGraph)(defaultGraph.type)) + return; + (0, block_forge_1.declareGraph)(defaultGraph); +} +exports.declareShaderGraph = declareShaderGraph; +function applyBlockToMenu() { + block_1.normalBlockCacheMap.forEach((block) => { + if (block.details?.menu) { + menu_1.Menu.Instance.addItemPath(block.details.menu, { + type: block.data.type, + details: {}, + }); + } + }); +} +exports.applyBlockToMenu = applyBlockToMenu; +function getBlockTemplateByType(type) { + const blockTemplate = block_1.normalBlockCacheMap.get(type); + if (blockTemplate) { + return JSON.parse(JSON.stringify(blockTemplate)); + } + console.debug(`get block templates not available by type: ${type}`); +} +exports.getBlockTemplateByType = getBlockTemplateByType; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2RlY2xhcmUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsbUNBR2lCO0FBd0ViLHVHQXpFQSw4QkFBc0IsT0F5RUE7QUF2RTFCLGtDQUErQjtBQUMvQixtREFBa0U7QUFDbEUsbUNBQTZDO0FBQzdDLGtDQUFrRDtBQUlsRCxJQUFJLGFBQWEsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzlCLElBQUksaUJBQWlCLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUVsQyxTQUFTLHVCQUF1QixDQUFDLElBQVk7SUFDekMsT0FBTyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQTZERywwREFBdUI7QUEzRDNCLEtBQUssVUFBVSxpQkFBaUI7SUFDNUIsTUFBTSxFQUFFLGNBQWMsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLE1BQU0saUJBQVUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLGlCQUFpQixDQUFDLENBQUM7SUFDNUcsYUFBYSxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3hDLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFaEQsa0JBQWtCLEVBQUUsQ0FBQztJQUNyQixJQUFBLDhCQUFzQixFQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RDLGdCQUFnQixFQUFFLENBQUM7SUFFbkIsaUJBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGtCQUFXLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbkQsQ0FBQztBQW9ERyw4Q0FBaUI7QUFsRHJCLFNBQVMsc0JBQXNCLENBQUMsTUFBd0M7SUFDcEUsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBc0IsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDMUUsQ0FBQztBQStDRyx3REFBc0I7QUE3QzFCLEtBQUssVUFBVSxrQkFBa0IsQ0FBQyxJQUFZO0lBQzFDLElBQUksS0FBSyxHQUFHLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3pDLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDUixNQUFNLGlCQUFpQixFQUFFLENBQUM7S0FDN0I7SUFDRCxLQUFLLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNSLE9BQU8sQ0FBQyxHQUFHLENBQUMsbURBQW1ELElBQUksRUFBRSxDQUFDLENBQUM7UUFDdkUsT0FBTztLQUNWO0lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQztBQWlDRyxnREFBa0I7QUEvQnRCLFNBQVMsa0JBQWtCO0lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUEsMEJBQWtCLEdBQUUsQ0FBQztJQUMxQyxJQUFJLElBQUEsNkJBQWUsRUFBQyxZQUFZLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTztJQUUvQyxJQUFBLDBCQUFZLEVBQUMsWUFBWSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQXNCRyxnREFBa0I7QUFwQnRCLFNBQVMsZ0JBQWdCO0lBQ3JCLDJCQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQXdCLEVBQUUsRUFBRTtRQUNyRCxJQUFJLEtBQUssQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFO1lBQ3JCLFdBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFO2dCQUMxQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJO2dCQUNyQixPQUFPLEVBQUUsRUFBRTthQUNkLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBa0JHLDRDQUFnQjtBQWhCcEIsU0FBUyxzQkFBc0IsQ0FBQyxJQUFZO0lBQ3hDLE1BQU0sYUFBYSxHQUFHLDJCQUFtQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwRCxJQUFJLGFBQWEsRUFBRTtRQUNmLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7S0FDcEQ7SUFDRCxPQUFPLENBQUMsS0FBSyxDQUFDLDhDQUE4QyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0FBQ3hFLENBQUM7QUFLRyx3REFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJsb2NrVGVtcGxhdGVEYXRhIH0gZnJvbSAnLi4vaW50ZXJuYWwnO1xuXG5pbXBvcnQge1xuICAgIG5vcm1hbEJsb2NrQ2FjaGVNYXAsXG4gICAgZGVjbGFyZVNoYWRlck5vZGVCbG9jayxcbn0gZnJvbSAnLi9ibG9jayc7XG5pbXBvcnQgeyBNZW51IH0gZnJvbSAnLi4vbWVudSc7XG5pbXBvcnQgeyBkZWNsYXJlR3JhcGgsIGhhc0RlY2xhcmVHcmFwaCB9IGZyb20gJy4uLy4uL2Jsb2NrLWZvcmdlJztcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRHcmFwaCB9IGZyb20gJy4vZ3JhcGgnO1xuaW1wb3J0IHsgTWVzc2FnZU1nciwgTWVzc2FnZVR5cGUgfSBmcm9tICcuLi9iYXNlJztcbmltcG9ydCB7IFByb3BlcnR5RGVmaW5lIH0gZnJvbSAnLi4vLi4vLi4vQHR5cGVzL3NoYWRlci1ub2RlLXR5cGUnO1xuaW1wb3J0IHsgQmxvY2tEYXRhIH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcblxubGV0IHNoYWRlck5vZGVNYXAgPSBuZXcgTWFwKCk7XG5sZXQgc2hhZGVyUHJvcGVydHlNYXAgPSBuZXcgTWFwKCk7XG5cbmZ1bmN0aW9uIGdldFByb3BlcnR5RGVmaW5lQnlUeXBlKHR5cGU6IHN0cmluZykge1xuICAgIHJldHVybiBzaGFkZXJQcm9wZXJ0eU1hcC5nZXQodHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGRlY2xhcmVHcmFwaEJsb2NrKCkge1xuICAgIGNvbnN0IHsgc2hhZGVyTm9kZUxpc3QsIHNoYWRlclByb3BlcnR5TGlzdCB9ID0gYXdhaXQgTWVzc2FnZU1nci5JbnN0YW5jZS5jYWxsU2NlbmVNZXRob2QoJ3F1ZXJ5U2hhZGVyTm9kZScpO1xuICAgIHNoYWRlck5vZGVNYXAgPSBuZXcgTWFwKHNoYWRlck5vZGVMaXN0KTtcbiAgICBzaGFkZXJQcm9wZXJ0eU1hcCA9IG5ldyBNYXAoc2hhZGVyUHJvcGVydHlMaXN0KTtcblxuICAgIGRlY2xhcmVTaGFkZXJHcmFwaCgpO1xuICAgIGRlY2xhcmVTaGFkZXJOb2RlQmxvY2soc2hhZGVyTm9kZU1hcCk7XG4gICAgYXBwbHlCbG9ja1RvTWVudSgpO1xuXG4gICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLkRlY2xhcmVkKTtcbn1cblxuZnVuY3Rpb24gaXRlcmF0ZVByb3BlcnR5RGVmaW5lcyhoYW5kbGU6IChkZWZpbmU6IFByb3BlcnR5RGVmaW5lKSA9PiB2b2lkKSB7XG4gICAgc2hhZGVyUHJvcGVydHlNYXAuZm9yRWFjaCgoZGVmaW5lOiBQcm9wZXJ0eURlZmluZSkgPT4gaGFuZGxlKGRlZmluZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRCbG9ja0RhdGFCeVR5cGUodHlwZTogc3RyaW5nKTogUHJvbWlzZTxCbG9ja0RhdGEgfCB1bmRlZmluZWQ+IHtcbiAgICBsZXQgYmxvY2sgPSBnZXRCbG9ja1RlbXBsYXRlQnlUeXBlKHR5cGUpO1xuICAgIGlmICghYmxvY2spIHtcbiAgICAgICAgYXdhaXQgZGVjbGFyZUdyYXBoQmxvY2soKTtcbiAgICB9XG4gICAgYmxvY2sgPSBnZXRCbG9ja1RlbXBsYXRlQnlUeXBlKHR5cGUpO1xuICAgIGlmICghYmxvY2spIHtcbiAgICAgICAgY29uc29sZS5sb2coYGNyZWF0ZSBkZWZhdWx0IHNoYWRlciBncmFwaCBmYWlsZWQsIE1hc3Rlck5vZGU6ICR7dHlwZX1gKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShibG9jay5kYXRhKSk7XG59XG5cbmZ1bmN0aW9uIGRlY2xhcmVTaGFkZXJHcmFwaCgpIHtcbiAgICBjb25zdCBkZWZhdWx0R3JhcGggPSBjcmVhdGVEZWZhdWx0R3JhcGgoKTtcbiAgICBpZiAoaGFzRGVjbGFyZUdyYXBoKGRlZmF1bHRHcmFwaC50eXBlKSkgcmV0dXJuO1xuXG4gICAgZGVjbGFyZUdyYXBoKGRlZmF1bHRHcmFwaCk7XG59XG5cbmZ1bmN0aW9uIGFwcGx5QmxvY2tUb01lbnUoKSB7XG4gICAgbm9ybWFsQmxvY2tDYWNoZU1hcC5mb3JFYWNoKChibG9jazogQmxvY2tUZW1wbGF0ZURhdGEpID0+IHtcbiAgICAgICAgaWYgKGJsb2NrLmRldGFpbHM/Lm1lbnUpIHtcbiAgICAgICAgICAgIE1lbnUuSW5zdGFuY2UuYWRkSXRlbVBhdGgoYmxvY2suZGV0YWlscy5tZW51LCB7XG4gICAgICAgICAgICAgICAgdHlwZTogYmxvY2suZGF0YS50eXBlLFxuICAgICAgICAgICAgICAgIGRldGFpbHM6IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9KTtcbn1cblxuZnVuY3Rpb24gZ2V0QmxvY2tUZW1wbGF0ZUJ5VHlwZSh0eXBlOiBzdHJpbmcpOiBCbG9ja1RlbXBsYXRlRGF0YSB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgYmxvY2tUZW1wbGF0ZSA9IG5vcm1hbEJsb2NrQ2FjaGVNYXAuZ2V0KHR5cGUpO1xuICAgIGlmIChibG9ja1RlbXBsYXRlKSB7XG4gICAgICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGJsb2NrVGVtcGxhdGUpKTtcbiAgICB9XG4gICAgY29uc29sZS5kZWJ1ZyhgZ2V0IGJsb2NrIHRlbXBsYXRlcyBub3QgYXZhaWxhYmxlIGJ5IHR5cGU6ICR7dHlwZX1gKTtcbn1cblxuZXhwb3J0IHtcbiAgICBkZWNsYXJlU2hhZGVyR3JhcGgsXG4gICAgZGVjbGFyZVNoYWRlck5vZGVCbG9jayxcbiAgICBnZXRCbG9ja1RlbXBsYXRlQnlUeXBlLFxuICAgIGdldFByb3BlcnR5RGVmaW5lQnlUeXBlLFxuICAgIGdldEJsb2NrRGF0YUJ5VHlwZSxcbiAgICBpdGVyYXRlUHJvcGVydHlEZWZpbmVzLFxuICAgIGRlY2xhcmVHcmFwaEJsb2NrLFxuICAgIGFwcGx5QmxvY2tUb01lbnUsXG59O1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/global-exports.js b/extensions/shader-graph/dist/shader-graph/global-exports.js new file mode 100644 index 0000000..f05dd7e --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/global-exports.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PACKAGE_NAME = exports.PANEL_NAME = exports.SUB_GRAPH_NODE_TYPE = exports.DEFAULT_ASSET_NAME = exports.DEFAULT_NAME = exports.PROJECT_PATH = exports.PACKAGE_JSON = void 0; +const tslib_1 = require("tslib"); +const path_1 = require("path"); +// @ts-ignore +const package_json_1 = tslib_1.__importDefault(require("../../package.json")); +exports.PACKAGE_JSON = package_json_1.default; +const PROJECT_PATH = (0, path_1.join)(Editor.Project.path, 'assets'); +exports.PROJECT_PATH = PROJECT_PATH; +const PACKAGE_NAME = package_json_1.default.name; +exports.PACKAGE_NAME = PACKAGE_NAME; +const PANEL_NAME = `${PACKAGE_NAME}.shader-graph`; +exports.PANEL_NAME = PANEL_NAME; +const DEFAULT_NAME = 'New Shader Graph'; +exports.DEFAULT_NAME = DEFAULT_NAME; +const DEFAULT_ASSET_NAME = `${DEFAULT_NAME}.shadergraph`; +exports.DEFAULT_ASSET_NAME = DEFAULT_ASSET_NAME; +const SUB_GRAPH_NODE_TYPE = 'SubGraphNode'; +exports.SUB_GRAPH_NODE_TYPE = SUB_GRAPH_NODE_TYPE; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLWV4cG9ydHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2dsb2JhbC1leHBvcnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBNEI7QUFDNUIsYUFBYTtBQUNiLDhFQUE4QztBQWUxQyx1QkFmRyxzQkFBWSxDQWVIO0FBYmhCLE1BQU0sWUFBWSxHQUFHLElBQUEsV0FBSSxFQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBY3JELG9DQUFZO0FBWmhCLE1BQU0sWUFBWSxHQUFHLHNCQUFZLENBQUMsSUFBSSxDQUFDO0FBaUJuQyxvQ0FBWTtBQWZoQixNQUFNLFVBQVUsR0FBRyxHQUFHLFlBQVksZUFBZSxDQUFDO0FBYzlDLGdDQUFVO0FBWmQsTUFBTSxZQUFZLEdBQUcsa0JBQWtCLENBQUM7QUFTcEMsb0NBQVk7QUFQaEIsTUFBTSxrQkFBa0IsR0FBRyxHQUFHLFlBQVksY0FBYyxDQUFDO0FBUXJELGdEQUFrQjtBQU50QixNQUFNLG1CQUFtQixHQUFHLGNBQWMsQ0FBQztBQU92QyxrREFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBqb2luIH0gZnJvbSAncGF0aCc7XG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgUEFDS0FHRV9KU09OIGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbic7XG5cbmNvbnN0IFBST0pFQ1RfUEFUSCA9IGpvaW4oRWRpdG9yLlByb2plY3QucGF0aCwgJ2Fzc2V0cycpO1xuXG5jb25zdCBQQUNLQUdFX05BTUUgPSBQQUNLQUdFX0pTT04ubmFtZTtcblxuY29uc3QgUEFORUxfTkFNRSA9IGAke1BBQ0tBR0VfTkFNRX0uc2hhZGVyLWdyYXBoYDtcblxuY29uc3QgREVGQVVMVF9OQU1FID0gJ05ldyBTaGFkZXIgR3JhcGgnO1xuXG5jb25zdCBERUZBVUxUX0FTU0VUX05BTUUgPSBgJHtERUZBVUxUX05BTUV9LnNoYWRlcmdyYXBoYDtcblxuY29uc3QgU1VCX0dSQVBIX05PREVfVFlQRSA9ICdTdWJHcmFwaE5vZGUnO1xuXG5leHBvcnQge1xuICAgIFBBQ0tBR0VfSlNPTixcbiAgICBQUk9KRUNUX1BBVEgsXG4gICAgREVGQVVMVF9OQU1FLFxuICAgIERFRkFVTFRfQVNTRVRfTkFNRSxcbiAgICBTVUJfR1JBUEhfTk9ERV9UWVBFLFxuICAgIFBBTkVMX05BTUUsXG4gICAgUEFDS0FHRV9OQU1FLFxufTtcblxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/index.js b/extensions/shader-graph/dist/shader-graph/index.js new file mode 100644 index 0000000..8718dc1 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/index.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Menu = void 0; +const tslib_1 = require("tslib"); +var menu_1 = require("./menu"); +Object.defineProperty(exports, "Menu", { enumerable: true, get: function () { return menu_1.Menu; } }); +tslib_1.__exportStar(require("./declare"), exports); +tslib_1.__exportStar(require("./base"), exports); +tslib_1.__exportStar(require("./internal"), exports); +tslib_1.__exportStar(require("./interface"), exports); +tslib_1.__exportStar(require("./global-exports"), exports); +tslib_1.__exportStar(require("./utils"), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSwrQkFBZ0Q7QUFBdkMsNEZBQUEsSUFBSSxPQUFBO0FBQ2Isb0RBQTBCO0FBQzFCLGlEQUF1QjtBQUN2QixxREFBMkI7QUFDM0Isc0RBQTRCO0FBQzVCLDJEQUFpQztBQUNqQyxrREFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBNZW51LCBNZW51VGVtcGxhdGVJdGVtIH0gZnJvbSAnLi9tZW51JztcbmV4cG9ydCAqIGZyb20gJy4vZGVjbGFyZSc7XG5leHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcm5hbCc7XG5leHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZSc7XG5leHBvcnQgKiBmcm9tICcuL2dsb2JhbC1leHBvcnRzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/interface.js b/extensions/shader-graph/dist/shader-graph/interface.js new file mode 100644 index 0000000..ba02fa5 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/interface.js @@ -0,0 +1,21 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PropertyData = void 0; +const utils_1 = require("./utils"); +/** + * 用存储 Graph Property 数据 + */ +class PropertyData { + constructor() { + this.id = (0, utils_1.generateUUID)(); + this.type = ''; + this.name = ''; + /** + * 声明的类型,目前是 PropertyNode + */ + this.declareType = 'PropertyNode'; + this.outputPins = []; + } +} +exports.PropertyData = PropertyData; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYWRlci1ncmFwaC9pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbUNBQXVDO0FBRXZDOztHQUVHO0FBQ0gsTUFBYSxZQUFZO0lBQXpCO1FBQ0ksT0FBRSxHQUFXLElBQUEsb0JBQVksR0FBRSxDQUFDO1FBQzVCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1Y7O1dBRUc7UUFDSCxnQkFBVyxHQUFHLGNBQWMsQ0FBQztRQUM3QixlQUFVLEdBQWMsRUFBRSxDQUFDO0lBQy9CLENBQUM7Q0FBQTtBQVRELG9DQVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQaW5EYXRhIH0gZnJvbSAnLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcbmltcG9ydCB7IGdlbmVyYXRlVVVJRCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIOeUqOWtmOWCqCBHcmFwaCBQcm9wZXJ0eSDmlbDmja5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb3BlcnR5RGF0YSB7XG4gICAgaWQ6IHN0cmluZyA9IGdlbmVyYXRlVVVJRCgpO1xuICAgIHR5cGUgPSAnJztcbiAgICBuYW1lID0gJyc7XG4gICAgLyoqXG4gICAgICog5aOw5piO55qE57G75Z6L77yM55uu5YmN5pivIFByb3BlcnR5Tm9kZVxuICAgICAqL1xuICAgIGRlY2xhcmVUeXBlID0gJ1Byb3BlcnR5Tm9kZSc7XG4gICAgb3V0cHV0UGluczogUGluRGF0YVtdID0gW107XG59XG5cbi8qKlxuICog6IqC54K555qE5LiA5Lqb6ZmE5bim5L+h5oGvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVEZXRhaWxzIHtcbiAgICBwcm9wZXJ0eUlEPzogc3RyaW5nO1xuICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIHN1YkdyYXBoPzogc3RyaW5nO1xuICAgIGlucHV0UGlucz86IFBpbkRhdGFbXSxcbiAgICBvdXRwdXRQaW5zPzogUGluRGF0YVtdLFxuXG4gICAgW2tleTogc3RyaW5nXTogYW55O1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/internal.js b/extensions/shader-graph/dist/shader-graph/internal.js new file mode 100644 index 0000000..3cc9174 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/internal.js @@ -0,0 +1,3 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJuYWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhZGVyLWdyYXBoL2ludGVybmFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJsb2NrRGF0YSwgSUJsb2NrRGVzY3JpcHRpb24gfSBmcm9tICcuLi9ibG9jay1mb3JnZS9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBOb2RlRGVmaW5lLCBQcm9wZXJ0eURlZmluZSB9IGZyb20gJy4uLy4uL0B0eXBlcy9zaGFkZXItbm9kZS10eXBlJztcblxuLyoqXG4gKiBCbG9jayDmqKHniYjmlbDmja5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCbG9ja1RlbXBsYXRlRGF0YSB7XG4gICAgLy8g5piv5ZCm5Li76IqC54K577yM6K+l6IqC54K55LiN5Y+v6KKr5Yig6Zmk77yM5LiN5Y+v6KKr5aSN5Yi277yM5ZSv5LiA5LiA5Lu9XG4gICAgaXNNYXN0ZXI/OiBib29sZWFuO1xuICAgIGRlc2NyaXB0aW9uOiBJQmxvY2tEZXNjcmlwdGlvbjtcbiAgICBkYXRhOiBCbG9ja0RhdGE7XG4gICAgZGV0YWlscz86IHtcbiAgICAgICAgW2tleTogc3RyaW5nXTogYW55XG4gICAgfTtcbn1cblxuLyoqXG4gKiDlrZjlgqggU2hhZGVyIE5vZGUg5LiOIFNoYWRlciBQcm9wZXJ0eVxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNb2R1bGVPcHRpb25zIHtcbiAgICBzaGFkZXJOb2RlTWFwOiBNYXA8c3RyaW5nLCBOb2RlRGVmaW5lPjtcbiAgICBzaGFkZXJQcm9wZXJ0eU1hcDogTWFwPHN0cmluZywgUHJvcGVydHlEZWZpbmU+O1xuICAgIHNoYWRlck5vZGVDbGFzc01hcDogTWFwPHN0cmluZywgYW55PjsvLyBjbGFzc1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/menu/index.js b/extensions/shader-graph/dist/shader-graph/menu/index.js new file mode 100644 index 0000000..16c0d87 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/menu/index.js @@ -0,0 +1,103 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Menu = void 0; +const tslib_1 = require("tslib"); +const events_1 = tslib_1.__importDefault(require("events")); +const remote_1 = require("@electron/remote"); +const utils_1 = require("../utils"); +const base_menu_1 = require("./template/base-menu"); +const base_1 = require("../base"); +class Menu extends events_1.default { + constructor() { + super(...arguments); + this.setTimeoutId = null; + this.nodeMenuItems = []; + this.nodeMenuItemDataMap = new Map(); + this.popupCreateMenu = () => { + // 如果在面板内才弹菜单 + const window = (0, remote_1.getCurrentWindow)(); + const point = remote_1.screen.getCursorScreenPoint(); + if (!(0, utils_1.contains)(point, window.getBounds())) + return; + base_1.MessageMgr.Instance.send(base_1.MessageType.ShowCreateNodeWindow); + }; + } + static get Instance() { + if (!this._instance) { + this._instance = new Menu(); + } + return this._instance; + } + emitMenuItemChange() { + this.setTimeoutId && clearTimeout(this.setTimeoutId); + this.setTimeoutId = setTimeout(() => { + base_1.MessageMgr.Instance.send(base_1.MessageType.CreateMenuChange); + }, 50); + } + addItemPath(path, data) { + if (!this.nodeMenuItems.includes(path)) { + this.nodeMenuItems.push(path); + } + this.nodeMenuItemDataMap.set(path, data); + this.emitMenuItemChange(); + } + removeItemPath(path) { + const index = this.nodeMenuItems.indexOf(path); + if (index !== -1) { + this.nodeMenuItems.splice(index, 1); + this.nodeMenuItemDataMap.delete(path); + this.emitMenuItemChange(); + } + } + getShaderNodeMenu(onClick) { + const menuItems = []; + const menu = (menuPath) => { + // 解析菜单路径字符串为菜单项数组 + function parseMenuPath(menuPath) { + return menuPath.split('/').map((label) => ({ label })); + } + // 循环迭代方式构建菜单项 + const buildMenuIteratively = (paths, currentMenuItems, baseMenuPath, fullMenuPath) => { + const label = paths.shift(); + if (!label) + return; + if (!fullMenuPath) { + fullMenuPath = label; + } + else { + fullMenuPath += '/' + label; + } + let menuItem = currentMenuItems.find(item => item.label === label); + if (!menuItem) { + menuItem = { label, submenu: [] }; + currentMenuItems.push(menuItem); + } + if (paths.length === 0) { + const addOptions = this.nodeMenuItemDataMap.get(baseMenuPath); + menuItem.addOptions = addOptions; + if (onClick) { + delete menuItem.submenu; + menuItem.click = () => { + onClick(addOptions); + }; + } + } + buildMenuIteratively(paths, menuItem.submenu, baseMenuPath, fullMenuPath); + }; + // 传入菜单路径字符串,构建相应的菜单项 + const menuPathItems = parseMenuPath(menuPath); + // 使用循环迭代方式构建菜单项 + buildMenuIteratively(menuPath.split('/'), menuItems, menuPath, ''); + }; + this.nodeMenuItems.forEach((menuPath) => menu(menuPath)); + return menuItems; + } + popupMenu(event) { + const menu = (0, base_menu_1.getBaseMenuItem)(event, this.popupCreateMenu); + Editor.Menu.popup({ menu }); + return true; + } +} +exports.Menu = Menu; +Menu._instance = null; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2hhZGVyLWdyYXBoL21lbnUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLDREQUFrQztBQUNsQyw2Q0FBNEQ7QUFJNUQsb0NBQW9DO0FBQ3BDLG9EQUF1RDtBQUN2RCxrQ0FBeUU7QUFNekUsTUFBYSxJQUFLLFNBQVEsZ0JBQVk7SUFBdEM7O1FBV1ksaUJBQVksR0FBMEIsSUFBSSxDQUFDO1FBRTNDLGtCQUFhLEdBQWEsRUFBRSxDQUFDO1FBQzdCLHdCQUFtQixHQUF1QyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBMkU1RSxvQkFBZSxHQUFHLEdBQUcsRUFBRTtZQUNuQixhQUFhO1lBQ2IsTUFBTSxNQUFNLEdBQUcsSUFBQSx5QkFBZ0IsR0FBRSxDQUFDO1lBQ2xDLE1BQU0sS0FBSyxHQUFHLGVBQU0sQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFBLGdCQUFRLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFBRSxPQUFPO1lBRWpELGlCQUFVLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxrQkFBVyxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDL0QsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQTdGVSxNQUFNLEtBQUssUUFBUTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7U0FDL0I7UUFDRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQU9ELGtCQUFrQjtRQUNkLElBQUksQ0FBQyxZQUFZLElBQUksWUFBWSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNyRCxJQUFJLENBQUMsWUFBWSxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDaEMsaUJBQVUsQ0FB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QjtZQUNyQixNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDOUMsZ0JBQWdCO1lBQ2hCLG9CQUFvQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDekQsT0FBTyxTQUFTLENBQUM7SUFDckIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUF5RDtRQUMvRCxNQUFNLElBQUksR0FBRyxJQUFBLDJCQUFlLEVBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUIsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQzs7QUF2Rkwsb0JBaUdDO0FBL0ZVLGNBQVMsR0FBZ0IsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEV2ZW50RW1pdHRlciBmcm9tICdldmVudHMnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFdpbmRvdywgc2NyZWVuIH0gZnJvbSAnQGVsZWN0cm9uL3JlbW90ZSc7XG5cbmltcG9ydCB0eXBlIHsgQmxvY2tNb3VzZUV2ZW50LCBHcmFwaE1vdXNlRXZlbnQsIExpbmVNb3VzZUV2ZW50IH0gZnJvbSAnLi4vLi4vYmxvY2stZm9yZ2UvZXZlbnQnO1xuXG5pbXBvcnQgeyBjb250YWlucyB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7IGdldEJhc2VNZW51SXRlbSB9IGZyb20gJy4vdGVtcGxhdGUvYmFzZS1tZW51JztcbmltcG9ydCB7IE1lc3NhZ2VNZ3IsIE1lc3NhZ2VUeXBlLCBHcmFwaEVkaXRvckFkZE9wdGlvbnMgfSBmcm9tICcuLi9iYXNlJztcblxuZXhwb3J0IGludGVyZmFjZSBNZW51VGVtcGxhdGVJdGVtIGV4dGVuZHMgRWRpdG9yLk1lbnUuTWVudVRlbXBsYXRlSXRlbSB7XG4gICAgYWRkT3B0aW9ucz86IEdyYXBoRWRpdG9yQWRkT3B0aW9ucztcbn1cblxuZXhwb3J0IGNsYXNzIE1lbnUgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xuXG4gICAgc3RhdGljIF9pbnN0YW5jZTogTWVudSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXQgSW5zdGFuY2UoKTogTWVudSB7XG4gICAgICAgIGlmICghdGhpcy5faW5zdGFuY2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2luc3RhbmNlID0gbmV3IE1lbnUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRUaW1lb3V0SWQ6IE5vZGVKUy5UaW1lb3V0IHwgbnVsbCA9IG51bGw7XG5cbiAgICBwcml2YXRlIG5vZGVNZW51SXRlbXM6IHN0cmluZ1tdID0gW107XG4gICAgcHJpdmF0ZSBub2RlTWVudUl0ZW1EYXRhTWFwOiBNYXA8c3RyaW5nLCBHcmFwaEVkaXRvckFkZE9wdGlvbnM+ID0gbmV3IE1hcCgpO1xuXG4gICAgZW1pdE1lbnVJdGVtQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNldFRpbWVvdXRJZCAmJiBjbGVhclRpbWVvdXQodGhpcy5zZXRUaW1lb3V0SWQpO1xuICAgICAgICB0aGlzLnNldFRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgTWVzc2FnZU1nci5JbnN0YW5jZS5zZW5kKE1lc3NhZ2VUeXBlLkNyZWF0ZU1lbnVDaGFuZ2UpO1xuICAgICAgICB9LCA1MCk7XG4gICAgfVxuXG4gICAgYWRkSXRlbVBhdGgocGF0aDogc3RyaW5nLCBkYXRhOiBHcmFwaEVkaXRvckFkZE9wdGlvbnMpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5vZGVNZW51SXRlbXMuaW5jbHVkZXMocGF0aCkpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZU1lbnVJdGVtcy5wdXNoKHBhdGgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubm9kZU1lbnVJdGVtRGF0YU1hcC5zZXQocGF0aCwgZGF0YSk7XG4gICAgICAgIHRoaXMuZW1pdE1lbnVJdGVtQ2hhbmdlKCk7XG4gICAgfVxuXG4gICAgcmVtb3ZlSXRlbVBhdGgocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5ub2RlTWVudUl0ZW1zLmluZGV4T2YocGF0aCk7XG4gICAgICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgICAgICAgIHRoaXMubm9kZU1lbnVJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICAgICAgdGhpcy5ub2RlTWVudUl0ZW1EYXRhTWFwLmRlbGV0ZShwYXRoKTtcbiAgICAgICAgICAgIHRoaXMuZW1pdE1lbnVJdGVtQ2hhbmdlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRTaGFkZXJOb2RlTWVudShvbkNsaWNrPzogKG9wdGlvbnM6IEdyYXBoRWRpdG9yQWRkT3B0aW9ucykgPT4gdm9pZCkge1xuICAgICAgICBjb25zdCBtZW51SXRlbXM6IE1lbnVUZW1wbGF0ZUl0ZW1bXSA9IFtdO1xuXG4gICAgICAgIGNvbnN0IG1lbnUgPSAobWVudVBhdGg6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgLy8g6Kej5p6Q6I+c5Y2V6Lev5b6E5a2X56ym5Liy5Li66I+c5Y2V6aG55pWw57uEXG4gICAgICAgICAgICBmdW5jdGlvbiBwYXJzZU1lbnVQYXRoKG1lbnVQYXRoOiBzdHJpbmcpOiBNZW51VGVtcGxhdGVJdGVtW10ge1xuICAgICAgICAgICAgICAgIHJldHVybiBtZW51UGF0aC5zcGxpdCgnLycpLm1hcCgobGFiZWwpID0+ICh7IGxhYmVsIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOW+queOr+i/reS7o+aWueW8j+aehOW7uuiPnOWNlemhuVxuICAgICAgICAgICAgY29uc3QgYnVpbGRNZW51SXRlcmF0aXZlbHkgPSAocGF0aHM6IHN0cmluZ1tdLCBjdXJyZW50TWVudUl0ZW1zOiBNZW51VGVtcGxhdGVJdGVtW10sIGJhc2VNZW51UGF0aDogc3RyaW5nLCBmdWxsTWVudVBhdGg6IHN0cmluZyk6IHZvaWQgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gcGF0aHMuc2hpZnQoKTtcbiAgICAgICAgICAgICAgICBpZiAoIWxhYmVsKSByZXR1cm47XG4gICAgICAgICAgICAgICAgaWYgKCFmdWxsTWVudVBhdGgpIHtcbiAgICAgICAgICAgICAgICAgICAgZnVsbE1lbnVQYXRoID0gbGFiZWw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZnVsbE1lbnVQYXRoICs9ICcvJyArIGxhYmVsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsZXQgbWVudUl0ZW06IE1lbnVUZW1wbGF0ZUl0ZW0gfCB1bmRlZmluZWQgPSBjdXJyZW50TWVudUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmxhYmVsID09PSBsYWJlbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFtZW51SXRlbSkge1xuICAgICAgICAgICAgICAgICAgICBtZW51SXRlbSA9IHsgbGFiZWwsIHN1Ym1lbnU6IFtdIH07XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNZW51SXRlbXMucHVzaChtZW51SXRlbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChwYXRocy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWRkT3B0aW9ucyA9IHRoaXMubm9kZU1lbnVJdGVtRGF0YU1hcC5nZXQoYmFzZU1lbnVQYXRoKSE7XG4gICAgICAgICAgICAgICAgICAgIG1lbnVJdGVtLmFkZE9wdGlvbnMgPSBhZGRPcHRpb25zO1xuICAgICAgICAgICAgICAgICAgICBpZiAob25DbGljaykge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG1lbnVJdGVtLnN1Ym1lbnU7XG4gICAgICAgICAgICAgICAgICAgICAgICBtZW51SXRlbS5jbGljayA9ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrKGFkZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWlsZE1lbnVJdGVyYXRpdmVseShwYXRocywgbWVudUl0ZW0uc3VibWVudSEsIGJhc2VNZW51UGF0aCwgZnVsbE1lbnVQYXRoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyDkvKDlhaXoj5zljZXot6/lvoTlrZfnrKbkuLLvvIzmnoTlu7rnm7jlupTnmoToj5zljZXpoblcbiAgICAgICAgICAgIGNvbnN0IG1lbnVQYXRoSXRlbXMgPSBwYXJzZU1lbnVQYXRoKG1lbnVQYXRoKTtcbiAgICAgICAgICAgIC8vIOS9v+eUqOW+queOr+i/reS7o+aWueW8j+aehOW7uuiPnOWNlemhuVxuICAgICAgICAgICAgYnVpbGRNZW51SXRlcmF0aXZlbHkobWVudVBhdGguc3BsaXQoJy8nKSwgbWVudUl0ZW1zLCBtZW51UGF0aCwgJycpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLm5vZGVNZW51SXRlbXMuZm9yRWFjaCgobWVudVBhdGgpID0+IG1lbnUobWVudVBhdGgpKTtcbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtcztcbiAgICB9XG5cbiAgICBwb3B1cE1lbnUoZXZlbnQ6IEJsb2NrTW91c2VFdmVudCB8IEdyYXBoTW91c2VFdmVudCB8IExpbmVNb3VzZUV2ZW50KTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IG1lbnUgPSBnZXRCYXNlTWVudUl0ZW0oZXZlbnQsIHRoaXMucG9wdXBDcmVhdGVNZW51KTtcbiAgICAgICAgRWRpdG9yLk1lbnUucG9wdXAoeyBtZW51IH0pO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBwb3B1cENyZWF0ZU1lbnUgPSAoKSA9PiB7XG4gICAgICAgIC8vIOWmguaenOWcqOmdouadv+WGheaJjeW8ueiPnOWNlVxuICAgICAgICBjb25zdCB3aW5kb3cgPSBnZXRDdXJyZW50V2luZG93KCk7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gc2NyZWVuLmdldEN1cnNvclNjcmVlblBvaW50KCk7XG4gICAgICAgIGlmICghY29udGFpbnMocG9pbnQsIHdpbmRvdy5nZXRCb3VuZHMoKSkpIHJldHVybjtcblxuICAgICAgICBNZXNzYWdlTWdyLkluc3RhbmNlLnNlbmQoTWVzc2FnZVR5cGUuU2hvd0NyZWF0ZU5vZGVXaW5kb3cpO1xuICAgIH07XG59XG4iXX0= \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/menu/template/base-menu.js b/extensions/shader-graph/dist/shader-graph/menu/template/base-menu.js new file mode 100644 index 0000000..14aa199 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/menu/template/base-menu.js @@ -0,0 +1,96 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getBaseMenuItem = void 0; +const event_1 = require("../../../block-forge/event"); +const base_1 = require("../../base"); +const global_exports_1 = require("../../global-exports"); +function getBaseMenuItem(event, popupCreateMenu) { + let uuid = ''; + let data; + let isLine = false; + const isMulti = false; + let isGroup = false; + const options = []; + if (event instanceof event_1.BlockMouseEvent) { + isGroup = event.block.type === global_exports_1.SUB_GRAPH_NODE_TYPE; + uuid = event.target.getAttribute('node-uuid') || ''; + options.push({ + uuid: uuid, + blockData: event.block, + }); + } + else if (event instanceof event_1.LineMouseEvent) { + uuid = event.target.parentElement?.getAttribute('line-uuid') || ''; + options.push({ + uuid: uuid, + lineData: event.line, + }); + isLine = true; + } + return [ + { + label: Editor.I18n.t('shader-graph.right_menu.create_node'), + enabled: !uuid, + visible: !isLine, + accelerator: 'Space', + click: () => { + popupCreateMenu(); + }, + }, + { type: 'separator' }, + { + label: Editor.I18n.t('shader-graph.right_menu.paste'), + enabled: !base_1.GraphEditorMgr.Instance.clipboardIsNull && uuid === '' && !isLine, + accelerator: 'CmdOrCtrl+V', + visible: !isLine, + click: () => { + base_1.GraphEditorMgr.Instance.paste(); + }, + }, + { + label: Editor.I18n.t('shader-graph.right_menu.delete'), + accelerator: 'Delete', + enabled: uuid !== '', + click: () => { + base_1.GraphEditorMgr.Instance.delete(options); + }, + }, + { + label: Editor.I18n.t('shader-graph.right_menu.copy'), + accelerator: 'CmdOrCtrl+C', + enabled: uuid !== '' && !isLine, + visible: !isLine, + click: () => { + base_1.GraphEditorMgr.Instance.copy(options); + }, + }, + { + label: Editor.I18n.t('shader-graph.right_menu.duplicate'), + accelerator: 'CmdOrCtrl+D', + enabled: uuid !== '' && !isLine, + visible: !isLine, + click: () => { + base_1.GraphEditorMgr.Instance.duplicate(options); + }, + }, + { type: 'separator' }, + { + label: Editor.I18n.t('shader-graph.right_menu.zoom_to_fit'), + enabled: uuid === '', + visible: !isLine, + click: () => { + base_1.GraphEditorMgr.Instance.zoomToFit(); + }, + }, + { + label: Editor.I18n.t('shader-graph.right_menu.reset'), + enabled: uuid === '', + visible: !isLine, + click: () => { + base_1.GraphEditorMgr.Instance.reset(); + }, + }, + ]; +} +exports.getBaseMenuItem = getBaseMenuItem; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1tZW51LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NoYWRlci1ncmFwaC9tZW51L3RlbXBsYXRlL2Jhc2UtbWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxzREFBOEY7QUFDOUYscUNBQXFFO0FBQ3JFLHlEQUEyRDtBQUUzRCxTQUFnQixlQUFlLENBQUMsS0FBeUQsRUFBRSxlQUEyQjtJQUNsSCxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7SUFDZCxJQUFJLElBQWUsQ0FBQztJQUNwQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDbkIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztJQUVwQixNQUFNLE9BQU8sR0FBOEIsRUFBRSxDQUFDO0lBQzlDLElBQUksS0FBSyxZQUFZLHVCQUFlLEVBQUU7UUFDbEMsT0FBTyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLG9DQUFtQixDQUFDO1FBQ25ELElBQUksR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQztZQUNULElBQUksRUFBRSxJQUFJO1lBQ1YsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLO1NBQ3pCLENBQUMsQ0FBQztLQUNOO1NBQU0sSUFBSSxLQUFLLFlBQVksc0JBQWMsRUFBRTtRQUN4QyxJQUFJLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNuRSxPQUFPLENBQUMsSUFBSSxDQUFDO1lBQ1QsSUFBSSxFQUFFLElBQUk7WUFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDdkIsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxHQUFHLElBQUksQ0FBQztLQUNqQjtJQUVELE9BQU87UUFDSDtZQUNJLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxxQ0FBcUMsQ0FBQztZQUMzRCxPQUFPLEVBQUUsQ0FBQyxJQUFJO1lBQ2QsT0FBTyxFQUFFLENBQUMsTUFBTTtZQUNoQixXQUFXLEVBQUUsT0FBTztZQUNwQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLGVBQWUsRUFBRSxDQUFDO1lBQ3RCLENBQUM7U0FDSjtRQUNELEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtRQUNyQjtZQUNJLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQztZQUNyRCxPQUFPLEVBQUUsQ0FBQyxxQkFBYyxDQUFDLFFBQVEsQ0FBQyxlQUFlLElBQUksSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDM0UsV0FBVyxFQUFFLGFBQWE7WUFDMUIsT0FBTyxFQUFFLENBQUMsTUFBTTtZQUNoQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLHFCQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BDLENBQUM7U0FDSjtRQUNEO1lBQ0ksS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1lBQ3RELFdBQVcsRUFBRSxRQUFRO1lBQ3JCLE9BQU8sRUFBRSxJQUFJLEtBQUssRUFBRTtZQUNwQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLHFCQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBRSxPQUFPLENBQUMsQ0FBQztZQUM3QyxDQUFDO1NBQ0o7UUFDRDtZQUNJLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztZQUNwRCxXQUFXLEVBQUUsYUFBYTtZQUMxQixPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDL0IsT0FBTyxFQUFFLENBQUMsTUFBTTtZQUNoQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLHFCQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMxQyxDQUFDO1NBQ0o7UUFDRDtZQUNJLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxtQ0FBbUMsQ0FBQztZQUN6RCxXQUFXLEVBQUUsYUFBYTtZQUMxQixPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDL0IsT0FBTyxFQUFFLENBQUMsTUFBTTtZQUNoQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLHFCQUFjLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxDQUFDO1NBQ0o7UUFDRCxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7UUFDckI7WUFDSSxLQUFLLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUM7WUFDM0QsT0FBTyxFQUFFLElBQUksS0FBSyxFQUFFO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLE1BQU07WUFDaEIsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDUixxQkFBYyxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN4QyxDQUFDO1NBQ0o7UUFDRDtZQUNJLEtBQUssRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQztZQUNyRCxPQUFPLEVBQUUsSUFBSSxLQUFLLEVBQUU7WUFDcEIsT0FBTyxFQUFFLENBQUMsTUFBTTtZQUNoQixLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNSLHFCQUFjLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3BDLENBQUM7U0FDSjtLQUNKLENBQUM7QUFDTixDQUFDO0FBeEZELDBDQXdGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmxvY2tEYXRhIH0gZnJvbSAnLi4vLi4vLi4vYmxvY2stZm9yZ2UvaW50ZXJmYWNlJztcblxuaW1wb3J0IHsgQmxvY2tNb3VzZUV2ZW50LCBHcmFwaE1vdXNlRXZlbnQsIExpbmVNb3VzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vYmxvY2stZm9yZ2UvZXZlbnQnO1xuaW1wb3J0IHsgR3JhcGhFZGl0b3JNZ3IsIEdyYXBoRWRpdG9yT3RoZXJPcHRpb25zIH0gZnJvbSAnLi4vLi4vYmFzZSc7XG5pbXBvcnQgeyBTVUJfR1JBUEhfTk9ERV9UWVBFIH0gZnJvbSAnLi4vLi4vZ2xvYmFsLWV4cG9ydHMnO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmFzZU1lbnVJdGVtKGV2ZW50OiBCbG9ja01vdXNlRXZlbnQgfCBHcmFwaE1vdXNlRXZlbnQgfCBMaW5lTW91c2VFdmVudCwgcG9wdXBDcmVhdGVNZW51OiAoKSA9PiB2b2lkKTogRWRpdG9yLk1lbnUuQ29udGV4dE1lbnVJdGVtW10ge1xuICAgIGxldCB1dWlkID0gJyc7XG4gICAgbGV0IGRhdGE6IEJsb2NrRGF0YTtcbiAgICBsZXQgaXNMaW5lID0gZmFsc2U7XG4gICAgY29uc3QgaXNNdWx0aSA9IGZhbHNlO1xuICAgIGxldCBpc0dyb3VwID0gZmFsc2U7XG5cbiAgICBjb25zdCBvcHRpb25zOiBHcmFwaEVkaXRvck90aGVyT3B0aW9uc1tdID0gW107XG4gICAgaWYgKGV2ZW50IGluc3RhbmNlb2YgQmxvY2tNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlzR3JvdXAgPSBldmVudC5ibG9jay50eXBlID09PSBTVUJfR1JBUEhfTk9ERV9UWVBFO1xuICAgICAgICB1dWlkID0gZXZlbnQudGFyZ2V0LmdldEF0dHJpYnV0ZSgnbm9kZS11dWlkJykgfHwgJyc7XG4gICAgICAgIG9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICB1dWlkOiB1dWlkLFxuICAgICAgICAgICAgYmxvY2tEYXRhOiBldmVudC5ibG9jayxcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChldmVudCBpbnN0YW5jZW9mIExpbmVNb3VzZUV2ZW50KSB7XG4gICAgICAgIHV1aWQgPSBldmVudC50YXJnZXQucGFyZW50RWxlbWVudD8uZ2V0QXR0cmlidXRlKCdsaW5lLXV1aWQnKSB8fCAnJztcbiAgICAgICAgb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgIHV1aWQ6IHV1aWQsXG4gICAgICAgICAgICBsaW5lRGF0YTogZXZlbnQubGluZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGlzTGluZSA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5yaWdodF9tZW51LmNyZWF0ZV9ub2RlJyksXG4gICAgICAgICAgICBlbmFibGVkOiAhdXVpZCxcbiAgICAgICAgICAgIHZpc2libGU6ICFpc0xpbmUsXG4gICAgICAgICAgICBhY2NlbGVyYXRvcjogJ1NwYWNlJyxcbiAgICAgICAgICAgIGNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcG9wdXBDcmVhdGVNZW51KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7IHR5cGU6ICdzZXBhcmF0b3InIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGgucmlnaHRfbWVudS5wYXN0ZScpLFxuICAgICAgICAgICAgZW5hYmxlZDogIUdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmNsaXBib2FyZElzTnVsbCAmJiB1dWlkID09PSAnJyAmJiAhaXNMaW5lLFxuICAgICAgICAgICAgYWNjZWxlcmF0b3I6ICdDbWRPckN0cmwrVicsXG4gICAgICAgICAgICB2aXNpYmxlOiAhaXNMaW5lLFxuICAgICAgICAgICAgY2xpY2s6ICgpID0+IHtcbiAgICAgICAgICAgICAgICBHcmFwaEVkaXRvck1nci5JbnN0YW5jZS5wYXN0ZSgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5yaWdodF9tZW51LmRlbGV0ZScpLFxuICAgICAgICAgICAgYWNjZWxlcmF0b3I6ICdEZWxldGUnLFxuICAgICAgICAgICAgZW5hYmxlZDogdXVpZCAhPT0gJycsXG4gICAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmRlbGV0ZSggb3B0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBsYWJlbDogRWRpdG9yLkkxOG4udCgnc2hhZGVyLWdyYXBoLnJpZ2h0X21lbnUuY29weScpLFxuICAgICAgICAgICAgYWNjZWxlcmF0b3I6ICdDbWRPckN0cmwrQycsXG4gICAgICAgICAgICBlbmFibGVkOiB1dWlkICE9PSAnJyAmJiAhaXNMaW5lLFxuICAgICAgICAgICAgdmlzaWJsZTogIWlzTGluZSxcbiAgICAgICAgICAgIGNsaWNrOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgR3JhcGhFZGl0b3JNZ3IuSW5zdGFuY2UuY29weShvcHRpb25zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsOiBFZGl0b3IuSTE4bi50KCdzaGFkZXItZ3JhcGgucmlnaHRfbWVudS5kdXBsaWNhdGUnKSxcbiAgICAgICAgICAgIGFjY2VsZXJhdG9yOiAnQ21kT3JDdHJsK0QnLFxuICAgICAgICAgICAgZW5hYmxlZDogdXVpZCAhPT0gJycgJiYgIWlzTGluZSxcbiAgICAgICAgICAgIHZpc2libGU6ICFpc0xpbmUsXG4gICAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLmR1cGxpY2F0ZShvcHRpb25zKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHsgdHlwZTogJ3NlcGFyYXRvcicgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5yaWdodF9tZW51Lnpvb21fdG9fZml0JyksXG4gICAgICAgICAgICBlbmFibGVkOiB1dWlkID09PSAnJyxcbiAgICAgICAgICAgIHZpc2libGU6ICFpc0xpbmUsXG4gICAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLnpvb21Ub0ZpdCgpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbGFiZWw6IEVkaXRvci5JMThuLnQoJ3NoYWRlci1ncmFwaC5yaWdodF9tZW51LnJlc2V0JyksXG4gICAgICAgICAgICBlbmFibGVkOiB1dWlkID09PSAnJyxcbiAgICAgICAgICAgIHZpc2libGU6ICFpc0xpbmUsXG4gICAgICAgICAgICBjbGljazogKCkgPT4ge1xuICAgICAgICAgICAgICAgIEdyYXBoRWRpdG9yTWdyLkluc3RhbmNlLnJlc2V0KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgIF07XG59XG5cbiJdfQ== \ No newline at end of file diff --git a/extensions/shader-graph/dist/shader-graph/utils.js b/extensions/shader-graph/dist/shader-graph/utils.js new file mode 100644 index 0000000..60a2a91 --- /dev/null +++ b/extensions/shader-graph/dist/shader-graph/utils.js @@ -0,0 +1,80 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getName = exports.mergeGraphEditorOtherOptions = exports.getOffsetPointByMousePoint = exports.getAssetUuidByPath = exports.convertToProjectDbUrl = exports.generatePinID = exports.contains = exports.generateUUID = void 0; +const path_1 = require("path"); +const global_exports_1 = require("./global-exports"); +function generateUUID() { + return 'p_' + Date.now() + (Math.random() + '').substring(10); +} +exports.generateUUID = generateUUID; +/** + * 是否坐标包含在里面 + * @param point + * @param bounds + */ +function contains(point, bounds) { + return point.x >= bounds.x && point.x <= bounds.x + bounds.width && point.y >= bounds.y && point.y <= bounds.y + bounds.height; +} +exports.contains = contains; +function generatePinID(tag, blockType, slotType, slotDisplayName) { + return `${tag}_${blockType}_${slotType}_${slotDisplayName}`; +} +exports.generatePinID = generatePinID; +/** + * 转成在项目 assets 目录下 + * @param path + */ +function convertToProjectDbUrl(path) { + if (!path) + return ''; + return `db://assets/${(0, path_1.relative)(global_exports_1.PROJECT_PATH, path)}`; +} +exports.convertToProjectDbUrl = convertToProjectDbUrl; +async function getAssetUuidByPath(path) { + if (!path) + return ''; + const url = convertToProjectDbUrl(path); + const uuid = await Editor.Message.request('asset-db', 'query-uuid', url); + if (!uuid) { + console.error(`loadByUrl failed, can't get uuid by ${url}`); + return ''; + } + return uuid; +} +exports.getAssetUuidByPath = getAssetUuidByPath; +function getOffsetPointByMousePoint(list, mousePoint) { + let sumX = 0; + let sumY = 0; + list.forEach((item) => { + if (item.blockData) { + sumX += item.blockData.position.x; + sumY += item.blockData.position.y; + } + }); + return { + x: mousePoint.x - sumX / list.length, + y: mousePoint.y - sumY / list.length, + }; +} +exports.getOffsetPointByMousePoint = getOffsetPointByMousePoint; +function mergeGraphEditorOtherOptions(arr1, arr2) { + const mergedSet = new Set(); + const array = []; + for (const obj of arr1) { + mergedSet.add(obj.uuid); + array.push(obj); + } + for (const obj of arr2) { + if (!mergedSet.has(obj.uuid)) { + mergedSet.add(obj.uuid); + array.push(obj); + } + } + return array; +} +exports.mergeGraphEditorOtherOptions = mergeGraphEditorOtherOptions; +function getName(path) { + return (0, path_1.basename)(path, (0, path_1.extname)(path)); +} +exports.getName = getName; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2hhZGVyLWdyYXBoL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUFtRDtBQUVuRCxxREFBZ0Q7QUFHaEQsU0FBZ0IsWUFBWTtJQUN4QixPQUFPLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLENBQUM7QUFGRCxvQ0FFQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixRQUFRLENBQUMsS0FBK0IsRUFBRSxNQUErRDtJQUNySCxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDbkksQ0FBQztBQUZELDRCQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLEdBQVcsRUFBRSxTQUFpQixFQUFFLFFBQWdCLEVBQUUsZUFBdUI7SUFDbkcsT0FBTyxHQUFHLEdBQUcsSUFBSSxTQUFTLElBQUksUUFBUSxJQUFJLGVBQWUsRUFBRSxDQUFDO0FBQ2hFLENBQUM7QUFGRCxzQ0FFQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLElBQXlCO0lBQzNELElBQUksQ0FBQyxJQUFJO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFFckIsT0FBTyxlQUFlLElBQUEsZUFBUSxFQUFDLDZCQUFZLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQztBQUN6RCxDQUFDO0FBSkQsc0RBSUM7QUFFTSxLQUFLLFVBQVUsa0JBQWtCLENBQUMsSUFBeUI7SUFDOUQsSUFBSSxDQUFDLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUVyQixNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekUsSUFBSSxDQUFDLElBQUksRUFBRTtRQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsdUNBQXVDLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDNUQsT0FBTyxFQUFFLENBQUM7S0FDYjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFWRCxnREFVQztBQUVELFNBQWdCLDBCQUEwQixDQUFDLElBQStCLEVBQUUsVUFBb0M7SUFDNUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQTZCLEVBQUUsRUFBRTtRQUMzQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDaEIsSUFBSSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1NBQ3JDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPO1FBQ0gsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNO1FBQ3BDLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTTtLQUN2QyxDQUFDO0FBQ04sQ0FBQztBQWRELGdFQWNDO0FBRUQsU0FBZ0IsNEJBQTRCLENBQUMsSUFBK0IsRUFBRSxJQUErQjtJQUN6RyxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO0lBQ3BDLE1BQU0sS0FBSyxHQUE4QixFQUFFLENBQUM7SUFFNUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7UUFDcEIsU0FBUyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUNuQjtJQUVELEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQixTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN4QixLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25CO0tBQ0o7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBakJELG9FQWlCQztBQUVELFNBQWdCLE9BQU8sQ0FBQyxJQUFZO0lBQ2hDLE9BQU8sSUFBQSxlQUFRLEVBQUMsSUFBSSxFQUFFLElBQUEsY0FBTyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDekMsQ0FBQztBQUZELDBCQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYmFzZW5hbWUsIGV4dG5hbWUsIHJlbGF0aXZlIH0gZnJvbSAncGF0aCc7XG5cbmltcG9ydCB7IFBST0pFQ1RfUEFUSCB9IGZyb20gJy4vZ2xvYmFsLWV4cG9ydHMnO1xuaW1wb3J0IHR5cGUgeyBHcmFwaEVkaXRvck90aGVyT3B0aW9ucyB9IGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVVVSUQoKSB7XG4gICAgcmV0dXJuICdwXycgKyBEYXRlLm5vdygpICsgKE1hdGgucmFuZG9tKCkgKyAnJykuc3Vic3RyaW5nKDEwKTtcbn1cblxuLyoqXG4gKiDmmK/lkKblnZDmoIfljIXlkKvlnKjph4zpnaJcbiAqIEBwYXJhbSBwb2ludFxuICogQHBhcmFtIGJvdW5kc1xuICovXG5leHBvcnQgZnVuY3Rpb24gY29udGFpbnMocG9pbnQ6IHsgeDogbnVtYmVyLCB5OiBudW1iZXIgfSwgYm91bmRzOiB7IHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciB9KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHBvaW50LnggPj0gYm91bmRzLnggJiYgcG9pbnQueCA8PSBib3VuZHMueCArIGJvdW5kcy53aWR0aCAmJiBwb2ludC55ID49IGJvdW5kcy55ICYmIHBvaW50LnkgPD0gYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVQaW5JRCh0YWc6IHN0cmluZywgYmxvY2tUeXBlOiBzdHJpbmcsIHNsb3RUeXBlOiBzdHJpbmcsIHNsb3REaXNwbGF5TmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGAke3RhZ31fJHtibG9ja1R5cGV9XyR7c2xvdFR5cGV9XyR7c2xvdERpc3BsYXlOYW1lfWA7XG59XG5cbi8qKlxuICog6L2s5oiQ5Zyo6aG555uuIGFzc2V0cyDnm67lvZXkuItcbiAqIEBwYXJhbSBwYXRoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Qcm9qZWN0RGJVcmwocGF0aD86IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gICAgaWYgKCFwYXRoKSByZXR1cm4gJyc7XG5cbiAgICByZXR1cm4gYGRiOi8vYXNzZXRzLyR7cmVsYXRpdmUoUFJPSkVDVF9QQVRILCBwYXRoKX1gO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXNzZXRVdWlkQnlQYXRoKHBhdGg/OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGlmICghcGF0aCkgcmV0dXJuICcnO1xuXG4gICAgY29uc3QgdXJsID0gY29udmVydFRvUHJvamVjdERiVXJsKHBhdGgpO1xuICAgIGNvbnN0IHV1aWQgPSBhd2FpdCBFZGl0b3IuTWVzc2FnZS5yZXF1ZXN0KCdhc3NldC1kYicsICdxdWVyeS11dWlkJywgdXJsKTtcbiAgICBpZiAoIXV1aWQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgbG9hZEJ5VXJsIGZhaWxlZCwgY2FuJ3QgZ2V0IHV1aWQgYnkgJHt1cmx9YCk7XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHV1aWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPZmZzZXRQb2ludEJ5TW91c2VQb2ludChsaXN0OiBHcmFwaEVkaXRvck90aGVyT3B0aW9uc1tdLCBtb3VzZVBvaW50OiB7IHg6IG51bWJlciwgeTogbnVtYmVyIH0pIHtcbiAgICBsZXQgc3VtWCA9IDA7XG4gICAgbGV0IHN1bVkgPSAwO1xuICAgIGxpc3QuZm9yRWFjaCgoaXRlbTogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnMpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uYmxvY2tEYXRhKSB7XG4gICAgICAgICAgICBzdW1YICs9IGl0ZW0uYmxvY2tEYXRhLnBvc2l0aW9uLng7XG4gICAgICAgICAgICBzdW1ZICs9IGl0ZW0uYmxvY2tEYXRhLnBvc2l0aW9uLnk7XG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIHg6IG1vdXNlUG9pbnQueCAtIHN1bVggLyBsaXN0Lmxlbmd0aCxcbiAgICAgICAgeTogbW91c2VQb2ludC55IC0gc3VtWSAvIGxpc3QubGVuZ3RoLFxuICAgIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZUdyYXBoRWRpdG9yT3RoZXJPcHRpb25zKGFycjE6IEdyYXBoRWRpdG9yT3RoZXJPcHRpb25zW10sIGFycjI6IEdyYXBoRWRpdG9yT3RoZXJPcHRpb25zW10pOiBHcmFwaEVkaXRvck90aGVyT3B0aW9uc1tdIHtcbiAgICBjb25zdCBtZXJnZWRTZXQgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBhcnJheTogR3JhcGhFZGl0b3JPdGhlck9wdGlvbnNbXSA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBvYmogb2YgYXJyMSkge1xuICAgICAgICBtZXJnZWRTZXQuYWRkKG9iai51dWlkKTtcbiAgICAgICAgYXJyYXkucHVzaChvYmopO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgb2JqIG9mIGFycjIpIHtcbiAgICAgICAgaWYgKCFtZXJnZWRTZXQuaGFzKG9iai51dWlkKSkge1xuICAgICAgICAgICAgbWVyZ2VkU2V0LmFkZChvYmoudXVpZCk7XG4gICAgICAgICAgICBhcnJheS5wdXNoKG9iaik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGJhc2VuYW1lKHBhdGgsIGV4dG5hbWUocGF0aCkpO1xufVxuIl19 \ No newline at end of file diff --git a/extensions/shader-graph/i18n/en.js b/extensions/shader-graph/i18n/en.js new file mode 100644 index 0000000..c1577ee --- /dev/null +++ b/extensions/shader-graph/i18n/en.js @@ -0,0 +1,112 @@ +'use strict'; + +module.exports = { + description: 'shader graph', + + title: 'Shader Graph', + + buttons: { + open: 'Open', + new: 'New', + save: 'Save', + save_as: 'Save as', + unsaved: 'Do not Save', + cancel: 'Cancel', + reset: 'Reset', + ok: 'Ok', + load: 'Load', + override: 'Override', + saveAndReload: 'Save & Load', + }, + + messages: { + titles: { + normal: 'Information', + warning: 'Warning', + open: 'Open Shader Graph', + }, + reset: { + detail: 'Are you sure to ignore all unsaved changes, revert to previous saved version?', + }, + save: { + title: 'Save Shader Graph Asset', + detail: 'Are you sure to save current updates?', + }, + scene_ready: { + mask_tips: 'Waiting for scene loading...', + }, + wait_load: { + mask_tips: 'Waiting for loading...', + }, + // The source file has changed for the current Shader Graph editing. It might result unexpected conflicts. Do you want to Load or Override + assets_change: { + mask_tips: 'The source file has changed for the current Shader Graph editing. It might result unexpected conflicts. Do you want to ', + }, + // There is no Shader Graph to Edit. Do you want to Create and Open or Open + need_create_new_asset: { + mask_tips: 'There is no Shader Graph to Edit. Do you want to ', + }, + // The original Shader Graph asset source file has lost. Do you want to Create and Open or Save as and Open + missing_assets: { + detail: 'The original Shader Graph asset source file has lost. Do you want to save again?', + mask_tips: 'The original Shader Graph asset file has lost. Do you want to ', + }, + save_and_reload_by_rename: { + mask_tips: 'Shader Graph asset name has been changed, you need to save the current operation and reload it ', + }, + }, + + menu: { + import: 'Shader Graph', + name: 'Shader Graph', + open: 'Open', + }, + + right_menu: { + create_node: 'Create Node', + paste: 'Paste', + delete: 'Delete', + copy: 'Copy', + cut: 'Cut', + duplicate: 'Duplicate', + convert_to_variable: 'Convert to Variable', + expand_group_node: 'Expand Group Node', + create_subgraph_from_selection: 'Create Subgraph from Selection', + create_group_from_selection: 'Create Group from Selection', + create_annotation_for_selection: 'Create Annotation for Selection', + zoom_to_fit: 'Zoom to Fit', + reset: 'Reset', + }, + + graph_property: { + menu_name: 'Variables', + title: 'Graph Variables', + add: 'Add Variables', + delete: 'Delete Variable', + }, + + create_node: { + title: 'Create Node', + menu_name: 'Create Node', + close: { + tooltip: 'Close Create Node Window', + }, + search_input: { + placeholder: 'Search Node Names', + }, + }, + + preview: { + title: 'Preview', + menu_name: 'Preview', + mesh: 'Mesh', + close: { + tooltip: 'Close Preview Window', + }, + }, + + custom_nodes: { + menu_name: 'Custom Nodes', + title: 'Custom Nodes', + }, +}; diff --git a/extensions/shader-graph/i18n/zh.js b/extensions/shader-graph/i18n/zh.js new file mode 100644 index 0000000..895f645 --- /dev/null +++ b/extensions/shader-graph/i18n/zh.js @@ -0,0 +1,112 @@ +'use strict'; + +module.exports = { + description: '材质编辑器', + + title: 'Shader Graph', + + buttons: { + open: '打开', + new: '新建', + save: '保存', + save_as: '另存为', + unsaved: '不保存', + cancel: '取消', + reset: '重置', + ok: '确定', + load: '加载', + override: '覆盖', + saveAndReload: '保存并加载', + }, + + messages: { + titles: { + normal: '温馨提示', + warning: '警告', + open: '打开 Shader Graph', + }, + reset: { + detail: '是否撤回当前所有操作,还原到上一次修改?', + }, + save: { + title: '保存 Shader Graph 资源', + detail: '是否保存当前所有操作?', + }, + scene_ready: { + mask_tips: '等待场景加载完成...', + }, + wait_load: { + mask_tips: '等待加载完成...', + }, + // 当前编辑的 Shader Graph 源文件发生变化,可能会发生冲突,需要重新 加载 或者 覆盖 + assets_change: { + mask_tips: '当前编辑的 Shader Graph 源文件发生变化,可能会发生冲突,请处理是否需要重新 ', + }, + // 目前没有 Shader Graph 可编辑,是否 新建并打开 或 打开 + need_create_new_asset: { + mask_tips: '目前没有 Shader Graph 可编辑,是否 ', + }, + // 检查到当前 Shader Graph 的原始资源文件丢失,需要重新 新建并打开 或 另存为并打开 + missing_assets: { + detail: '原始 Shader Graph 资源文件已经丢失,是否重新保存?', + mask_tips: '检查到当前 Shader Graph 的原始资源文件丢失,需要 ', + }, + save_and_reload_by_rename: { + mask_tips: '资源名已变更,需要保存当前操作并重新加载 ', + }, + }, + + menu: { + import: 'Shader Graph', + name: 'Shader Graph', + open: '打开', + }, + + right_menu: { + create_node: '创建节点', + paste: '粘贴', + delete: '删除', + copy: '拷贝', + cut: '剪切', + duplicate: '生成副本', + convert_to_variable: '转换为变量', + expand_group_node: '展开组节点', + create_subgraph_from_selection: '为选中创建子图', + create_group_from_selection: '为选中创建组节点', + create_annotation_for_selection: '为选中创建标注', + zoom_to_fit: '缩放至合适位置', + reset: '复位', + }, + + graph_property: { + menu_name: '变量', + title: '变量', + add: '添加变量', + delete: '删除变量', + }, + + create_node: { + title: '创建节点', + menu_name: '创建节点', + close: { + tooltip: '关闭创建节点窗口', + }, + search_input: { + placeholder: '搜索名称', + }, + }, + + preview: { + title: '预览', + menu_name: '预览', + mesh: '网格', + close: { + tooltip: '关闭预览窗口', + }, + }, + + custom_nodes: { + menu_name: 'Custom Nodes', + title: 'Custom Nodes', + }, +}; diff --git a/extensions/shader-graph/package.json b/extensions/shader-graph/package.json new file mode 100644 index 0000000..586c4a0 --- /dev/null +++ b/extensions/shader-graph/package.json @@ -0,0 +1,271 @@ +{ + "author": "Cocos Creator", + "package_version": 2, + "version": "1.0.0", + "editor": ">=3.8.2", + "name": "shader-graph", + "description": "i18n:shader-graph.description", + "main": "./dist/main.js", + "scripts": { + "build": "npm run build-less && tsc", + "watch": "tsc -w", + "build-less": "lessc ./static/shader-graph/style.less > ./static/shader-graph/style.css", + "pack": "npx ts-node ./build/pack.ts", + "test": "node --test ./tests" + }, + "dependencies": { + "@cocos/creator-types": "^3.8.1", + "@electron/remote": "^2.0.11", + "@itharbors/structures": "^0.0.6", + "@itharbors/ui-graph": "^0.3.2", + "@types/js-yaml": "^4.0.5", + "@types/lodash": "^4.14.200", + "@types/semver": "^7.5.4", + "fs-extra": "^10.0.0", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21", + "semver": "^7.5.4", + "vue": "2.7.14" + }, + "devDependencies": { + "@types/adm-zip": "^0.5.4", + "@types/fs-extra": "^9.0.5", + "@types/node": "^16.0.1", + "adm-zip": "^0.5.10", + "ts-node": "^10.9.1", + "tslib": "^2.5.3", + "typescript": "^4.3.4" + }, + "panels": { + "shader-graph": { + "title": "i18n:shader-graph.title", + "type": "dockable", + "main": "dist/panels/shader-graph/index.js", + "icon": "./static/icon.png", + "size": { + "min-width": 400, + "min-height": 300, + "width": 1024, + "height": 600 + } + } + }, + "creator": { + "hookScript": "./dist/hooks.js" + }, + "contributions": { + "assets": { + "menu": { + "methods": "./dist/contributions/assets-menu.js", + "createMenu": "createMenu" + } + }, + "asset-db": { + "mount": { + "path": "./shader-node/assets", + "readonly": true, + "visible": "visibleshaderNode", + "enable": "enableShaderNode" + }, + "importer": { + "script": "./dist/importer/index.js", + "priority": [], + "list": [ + "registerShaderGraphImporter380" + ] + }, + "script": "./dist/importer/index.js", + "asset-handler": [ + { + "handler": "registerShaderGraphImporter", + "name": "shader-graph", + "extnames": [ + ".shadergraph" + ] + } + ] + }, + "scene": { + "script": "./dist/contributions/scene.js" + }, + "menu": [ + { + "path": "i18n:menu.panel/i18n:shader-graph.menu.name", + "label": "i18n:shader-graph.menu.open", + "message": "open" + } + ], + "shortcuts": [ + { + "message": "popup-create-menu", + "mac": "space", + "win": "space" + }, + { + "message": "save", + "mac": "cmd+s", + "win": "ctrl+s" + }, + { + "message": "delete", + "win": "backspace", + "mac": "backspace" + }, + { + "message": "delete", + "win": "delete", + "mac": "delete" + }, + { + "message": "copy", + "win": "ctrl+c", + "mac": "cmd+c" + }, + { + "message": "cut", + "win": "ctrl+x", + "mac": "cmd+x" + }, + { + "message": "paste", + "win": "ctrl+v", + "mac": "cmd+v" + }, + { + "message": "duplicate", + "win": "ctrl+d", + "mac": "cmd+d" + }, + { + "message": "undo", + "mac": "cmd+z", + "win": "ctrl+z" + }, + { + "message": "redo", + "mac": "cmd+shift+z", + "win": "ctrl+shift+z" + }, + { + "message": "create-group-node", + "mac": "cmd+g", + "win": "ctrl+g" + }, + { + "message": "restore-group-node", + "mac": "cmd+shift+g", + "win": "ctrl+shift+g" + } + ], + "messages": { + "open-panel": { + "methods": [ + "openPanel" + ] + }, + "open": { + "methods": [ + "openShaderGraph" + ] + }, + "open-asset": { + "methods": [ + "shader-graph.openAsset" + ] + }, + "popup-create-menu": { + "methods": [ + "shader-graph.onPopupCreateMenu" + ] + }, + "scene:ready": { + "methods": [ + "shader-graph.onSceneReady" + ] + }, + "scene:close": { + "methods": [ + "shader-graph.onSceneClose" + ] + }, + "asset-db:asset-add": { + "methods": [ + "shader-graph.onAssetAdd" + ] + }, + "asset-db:asset-delete": { + "methods": [ + "shader-graph.onAssetDelete" + ] + }, + "asset-db:asset-change": { + "methods": [ + "shader-graph.onAssetChange" + ] + }, + "save": { + "methods": [ + "shader-graph.onSave" + ] + }, + "delete": { + "methods": [ + "shader-graph.onDelete" + ] + }, + "copy": { + "methods": [ + "shader-graph.onCopy" + ] + }, + "cut": { + "methods": [ + "shader-graph.onCut" + ] + }, + "paste": { + "methods": [ + "shader-graph.onPaste" + ] + }, + "duplicate": { + "methods": [ + "shader-graph.onDuplicate" + ] + }, + "undo": { + "methods": [ + "shader-graph.onUndo" + ] + }, + "redo": { + "methods": [ + "shader-graph.onRedo" + ] + }, + "create-group-node": { + "methods": [ + "shader-graph.onCreateGroupNode" + ] + }, + "restore-group-node": { + "methods": [ + "shader-graph.onRestoreGroupNode" + ] + } + }, + "profile": { + "project": { + "readOnlyShaderNode": { + "default": false + }, + "enableShaderNode": { + "default": true + }, + "visibleshaderNode": { + "default": true + } + } + } + } +} diff --git a/extensions/shader-graph/readme/使用属性节点.png b/extensions/shader-graph/readme/使用属性节点.png new file mode 100644 index 0000000000000000000000000000000000000000..75e61015e65b365d972e2eb929a4844f1f0c19af GIT binary patch literal 271803 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%0A0YU%={_z-?V|^!v0gw@2~dTevDS07 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 @7$SPZOl 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 literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/使用普通节点.png b/extensions/shader-graph/readme/使用普通节点.png new file mode 100644 index 0000000000000000000000000000000000000000..c15134604efc93c8dce48ea08fbe01dde2c33b9e GIT binary patch literal 262058 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 I<^0S40LDPaC;$Ke literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/右键创建资源.png b/extensions/shader-graph/readme/右键创建资源.png new file mode 100644 index 0000000000000000000000000000000000000000..512bbaa8a3756a4e91a0d30d07bccb351b9c93fe GIT binary patch literal 410300 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

W;J8^;raNo= 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%0A|2sTbP$` ziYryAxnIE{x+}oQdG^KvNXQj~vi{g==`zOpX`sZEzgSU0fv%f3#nlhK2e-sBQCDsY*TDFqc z8uYj$TjT9pBtt$ca$*pnsSI#rtWw%#ZhqmFj%6%1=s zGD?YU29D@rrBBpMleW*C8#MBYC+Y^H8J7XrrNRT`Ty-TzTi0@%sH}k=@kjO29hUup zs?)w0`?-i8t-=$=3tigZ;bqh1{y=~3?$v}gX_GZsC>o*^NHPzsEo+@c0+EN8{m!dk zY>_vUbLiu}@|wN@o?=4zciBjA`TT_KqbMQ3M;syIPF4(1+7gzi856@wY7>yI%UAKX zoNB4jeX&M>USz9KI5sA?(=3zL9$NjktkRYWpzdLIuyJ!uTI=YGve8?{pT$E!=s74j z^=t2@-koJi}I<8AXn;Cym-|YlIr7GGdf>^-r0A%JyLWeN5 z5E>clYCp(Be$w^dF^$k%Yw(pUyWPV8yu1!^mOoZPc;Y^+V$$Qf%m*4p@t2uA(QCe) z*5)QQ)8aeUZdYyAsvhpo#nV>a`lV|HuOCsSb@_O7Xwv;okBCcf`A!s2ZsL0k^_7Tu zf*SYbKd`rLBkoVNnj*tjjhc{)64$*afJOW)P4B5)$Uaa8wAstm!zjVT9cHzE?BG#U zH4Tpd^PW1|kAR4>K#*oYtJBGd^^++$@06Db`A;y8?D5bQ`^<3$`*ElI5nwZeOtX{T z!}x?Y>j}piM6OaUkdbpr`=%@6LwQClAhhPzy!Ep?Jx>C9+M5IEoGJjJA!PpcE%V|g zgo4OTqHdFKF5Jj$sW)Bq3~X;7myE+ka`TP61|MPrYU-vnsTG;0N5FPmv|pIy^VhItLpej?!7gFl73zVso$zZtcPGvbqdcHELg|hO;qP8t3CVJ z=X}q4*SP^oA|mP9aLMcIpXHXH=#J9bjZxw(#`1Iov(FcadysD47|jhBOF&?Y-`1o9 zI%ksaa|8TMc&0&1gfKnQSnzDavr~?e_Jf%xg_T8Klv(JLhZq9}5nUS}3CDs7Unczo znl3UQ?EH@}s}?f_nX*;vd|{J|EP%-=1g_exPoC^|?v*iEhRYOogBFaS7*F-`GJv~q zEkh4Bw9UGcB)>zDouvSZ?yVYUhi0m}5#SKg%QUZ9_(n{PdS7R*1fyPus=rWP9?Q1d zs98mmJm6!sr@kvBg?g+mLZB$mw0GuI%-T_y@OU*cL4y37Sj28HH>UBx=RzS#q_gYbf%OvC~ag#M^s9n0}Oj!Su3imOf1hH&yD7iHVu*xa~6> zwgZ`WG&XMS_4_`kgk$ftY7}ba*@`wOIF=kp+Nu8-9!M z)%2qi_m#o(Nbjg&@fSKO$}qpRaoSX{GYGLB`Q_AHPwN<8)oTqsB+LOF3Zbh6t~GbW zFdaMWsPEyGe@gxyeE)u`q}E&xlHlr+E)|oxHCFMILJYV@JFBR-0V(ejA^nS)d?XQ1 z_BS(GEF8L8E<-w;-bs-c8z9ApOE$nMUv_)jIrAFxTtniomHSo3%c9RQQ~Y+^_NsHh z#3DEQ%I(#CYF7F#%m_^jg*YGI9F`2l@wpvI%{ir1rB>eN8PMRcRaeK*1Y}q%>k^AX zDdiX{w>w5+oF;cC-UNYJte!erO>|w)u~ephXx?4Ps{2A9pd`n?m^AYyRI#Ew|E!wz zX$qM2%*g;9smQb2w0@mjSlA$VdN7SwhW0Ix>fMG&Q~Z==6Xm>|(BaI=_s$Lfrn)CU z<0}Q~J{oBkc2CI8r%xO6Dr;IP_U-AZlYm9plld~xHQ$G_}@!ZK*wmJ&!EE@=*3 zE&L&$5mOoOZza`Y>zmNg!eg8=c;6si z>;<$4ent#7c$)fr-#&bAI+(hvY&`3ZLrh;&(Y97I?e9|5ih;C}I2^I|vAz;WM%6wF zE^_{Y_kBKW`glg9PnbT>@{tcT(&WKTsE){aSa(nh9rOHGEb-px38ApX+&_rYn$DQxyvQGip7@b+(ti_p zBRn6+9Jea-t0_2*)>YJ+X&7hmW8EZ$fvNQF&7+m2quhJ3m=!`ppU%E4+cm2x`6n1yL35^Oa>LIwr_a)GJ~eGQLEO> zQ_I;5Z7H;?`9B9-PHHQTN7t=@&R_PES-Y|F!!37a)L_07?}YnY?#1Gj+hb^(+VKkojvLCyh`RGjYrv=WTc^{@aj45@f0f0@}D7ix4sx=gXfl5NnhF{k9e_(PiD-mqiE zUUJ&|N?giP>=jQtc9_;H_a5gHRI>cmlI5i9W0QQULAeuMzn)B^2JhML$9q{V0v?HQ z{ubHi=svvRx<@;U&P5|fyUQa0|BHeQ^!9ej#+JJ*CD6VU0>;E?1E*{`x-M1lPS??Q zdFO7>FIB1;9&#hTPT-2mh8y)k6WpL9I)Z|hlT+gA=aW503D0=ltI6o-(GGs^sk#$9 zQ`VJ|$T2iFvubUZ`wuTGn!MSJcf+&VAAf@UR?8*?+;+F)4%n&R+>f7WiSQkNrRnO= zeAZOk)Zch*mue_=4W9rUJot2N-#?^kr`u-@1df(@Dp~T*!K?l{JisXjTDpl%loYzz zT6%z{sFb|4%``8618X@X5Z;%}%u-|xYcr43%;cgD89LVjXqKQqi;Ihn#?qAPKE939 z)1BDmPAd5aCWyj*SbQ+|wc8AniE@vSEpuDs*-G@wxA)%=-(lu7A6Qb!!wG_CQr_z= zLW_f|#oTAmOHJw%1d#VAXyL1w+4y{u&#f-81q`6f1sOVQ1s&~q>uKTNIaHhbXyy2=DL~78_-hNWrWFCg!>kxBrm@gNcbl#b-PV9yIE=|`D6ioJ zq|$7GTbShF-?G_J4d&6@Ma!5pYYrHp(Pk$`Cjv;i&GJAtOw1EcmMW7#xu+G^wH=)vV9Q1HdQy)|`Bu5PVbu!pL7v!1frtU44Qmtbd zopkS@B&3HaM$Gzz z=KsQU99GpbG>GBP=t1aj&%D-AGd5aRsxNH&25u&uO2sQgJ_&az&ub&V%cVn2?y@Oq zSkSHsL@ea&8O?GbMInl1zwhszN9gaGzQic<`E%e$sAwWXQ{-d1vI2xwOPQX;oBEKi zs!1<78-J+)Y0)p?3^^*d=ov0@qh7+}Gzx~6zl3xTZPM$acNFmd4`**373KGa{Q@E( zF@%6fqasM7g2T|Ds30LKAl)DhGDtUr(hULvBB68*-Q6h7kkZ{`fXuzvt1VRF z*OWlff4_9r6Y*RN9Q5S+Hwpf^@-56_3qTK|YhM0YE9M@{n>f<1!=K2Oq2dt!cNGrH zI&|`Js>tM)g!9b48jtwi2^wU=>Eok%6&ktLRp_A39GPAIw<+o)l1*QI8IuDG?}MW+ zAquO^(KkSeO0WIkonkiHSKsr%_FSSSL$5hECbkN#N?9O#16dj5+sdhcEx`&+Z5)at zLJ$c+bQvh^*6>sLiNZxQM+Ecm9y-T86IvCC9GaYNGn-m_oO`_w%LvVJS-xI~R}Mf= z_UcEZSz96n;IeAwfR8}GkF`9JvN;6l|N$q;ZMF{7L^OnP{;4(TnwaFBQmz{}(YC`?+Jhth!loRTa ziXh;*UHqC~Jh$g}`x_7Vdfj5Jc~Iw7fW$RNWWTIp7y?;XdMT7NQR>;2<@L9;^z_OIBzQaT}#;S7de2aVa`V!qbTt}rb3XjBe3eY8`B#)V53nsFH8 zoXXGVu^puZWB594ISjn~XDvR#%z0Oh@Wr0B&~EEz0jPxtS>b1#9WH6vr5C&NCB~$1 zZE{D=bRE1ixBa_WTW{dZ!S=kc{s38?IEuHdCM$C~E8->sS+15Ur_3@Tk$&~{kAHmo zgq{MQJ;S-uYugW@R;_7uy#00X*0MXCbN3AWo&}0V zo)Un)&wp3>Z~xOrB>rYK;8oN+V2nHHg-cGd&-K6%wVak_pvTtp$!0nz zIk`aS$M)YvSow&aSJBE$Po0hQP+P`fIw-euSNjAWu3oaHs2U}JRdK89lYiM}$mO+OD^%uDoLNjTw8YOwLRB?>Wv`-GG^O9S>I}Fjy02 zy$H@5RFpzf|J@m0UYjSCRx_;}3zBiaAO5x(21qEDH}UGvM~(^Ue~ldXLagV%HzMWr zPrmrq4BNaa84*|Eq6KGgxjATdZWgyZ{qLZ(7remJ=g`(Z2C5;>f|gV~r(OTNkc$&Z zL=x0yqHTMd!>4=lw}dm7M@&skqf5CdQT#B@J#IrkWA%!$Y^BaUaHF8Ty1#G`zfTz_ zS2R$YlTM&*-PCgBFx^`4GA+@(VS$h~ja|gUr7ApH1+~==O)ZRe$tcOp=xk zs>iWgQE@I@083BuxokwDgUuZ7-u9phs-6^Hb_2ZM&h*0c~puCfBSnDoKKas z3V;DfgP0wR3b_GfzO>48!+cLx{^p@Bbm^xVVTS0@QbcC#pBR#cpfCkIs=hVM*L zX!6AxaK+hX$H=|>kOkAQOQ0iSr9B;}^9m~ez9q&a=<&C`Y*blwV|AiKMU_%x;fba~ zPR6LAnFX@tSB^vXi|^YE+bXWw-n5zt3H`^Wc3U1pN#bgL5ROf8vDPQ=z?JsU)v&*P zpbzv!ofT=;LdhV?L#2_nX-TRavNs6L=D*H+I+p!F7D%J!jpa0R86AI7fc~6Em6FvQ zj7s{S0+yLKz^rdhHW(1AhZ<9x8ATyW)l{X1 zMwhtf^S;}OUnXarx@~-M%7O6B2J;HLNO$Mu%Qn%Z-hGLFycu@`hw=#QoSZx|zg>(n zFcJ|}8;jQ-T)o3hdC9{te}y@w#!$nm{d~yO10unjG7o*m@iJ12k5lt^td-ecD!sV722)aT?er?!`?Qn zu)EpQCm&)$-9W9+Fe7A55=PFNcw6P4tM|Zss(jC4QdBy8@CV{zP=Uxz_4mA1D)}$~ zv%RJTX37PVI!-e^MaVdL+URl)y|ZbFd8;1xQl_H&T1hX2Kp59%aQh$c)A?}B+RI`Y zw5`h+bz)CKRpN4_$8#DGJ94r%7r))@0XpogaaJCQFilG>^b+(!YB?zO20oGT$hw)6 zyvO?Ll>KFG)#ljDuaVV1Pd@<|Lx|S6H7x!?A+HQkSRrf3>B{+@KDju+z`)#`%xt%G zj7KI#It02{;9IC1mos{}^37^yO|e&}JKR~ZR4P3zVfpXcmq?%>26*l6TVzRy%aX&N z>xNUqdra{BpRN4aK-~j4>omS_nHhmr0bOkyQRR^L7H?p_IKl(}r7O&q~r&l17)0D5eba5Zg<6-xIB5{7V|DQ;l zPV4_O5?7viO6LLI#pzoe%sEP6j_@DcZ^cJ63Zml2|ED0V;(89pg&*&oU%|N9gMWi@ zg~gT%9740NH#^eJztyWEQ8>&wY4LwGwC7_8@|eYc#9t2{mi6H-X*DHs4BNbudi>;K zi8RXs@mF`jx%dm9;r@!h_>+W6Ow&Q)!)gWQoX95IuCwMuJxu(cAATJj%r!;ZwKsA+ zFoFGF$h&f9oS%$0r0A&dk)>bn6PK0kGiuVlD)V0KGPx8c)5QgXM>`K_qU4xL7CHWS zS7*6t|8D~G3`ga*H++RQ))`+tmItrMdN_Z-UtDN&<-HA>inqwsHdiLn|DN@HCZ;x? zyTx}`V}xJ)J#uc?yth+=j2fzu2leAH_#&q}JSQ->`$ogQ8V@PMR8lx}xl4BB%?>UP z%x4WBB99vT@0)3=9O`t!ZUu_24fQ`a;~O)p1TSo2VdISI&;O{{&Yu)EhN^T97(r&1 zYGcjS6aF7YGrc(d$SAOgouQ`M^q@gyKw1;bZRCnf(;{Q^2li}j-fs+LQjKP+yeht- zKxh#CiIFpT+|C}q^s1_z4VhBAucZIQ4uj!rFAa396i)@vz(35Cm7-t5DprFJHQc{< zZ(5D*s+bmQKpeMIFWfhGO&`Al%M0aJ%fYu@G-l&kVYj#Hl0R4OAl-a$Crqn zNZ<4UVSe{<#J%W?iKhS%yq?VqG#rP@fG(ncJL zlIn>6YW&u`L^|q?sufooXHk~b_)zIE0RfzoR>iCOGocyF4(iE(xwQH7|LUc(w=HTe zQ~ZJkFg*70q^c&M;@wZE@qh?j15Fj6JF8eyTeAW~GhN7RjjFM8Q^i%_miF?MJ|51h z+Pg_FLO0PAP{}NL=u2Lbo?SVdsb29>JKkkcA>K-o+S1db)3$PpW=|Fvj0(v$QuREG z;Vm)FDrrpi-vG)s+qqcl0MH7J+Cwb82A0A=Qn-4mxdT9pil|IN|5;1M12ouEap# z^t`o7v-VDMxAbF7%%~J+#WZknd~|l=$!oL&M$y);95UyR4mar@Y-h6Xn9w3^^-lnS z!WL-ESW0~B2x0BO$@)vk%9{qw^D?|QmDzfo-IPDysPO4jxf@Lj0o*{_NGOM zw6-y9g)a`4#O8G~Wz6*?opm#r3zo!3g)hGrU>(YBe*4<$aT_djk3)U5G)p@Pd!!t{jRdVfsScxA~x~xs{zse*k0uvuvrpD zs5w0@uMy8N0yTcZvN6Eqi?rqjj26jJhq0|s83a^X9;3d1X86Tn!VR0+-Ao#1)d@h9 zYzB!9NKF8)WX|*yfN5Y3buiQ6d*j}@G{A32NW{=whN071c+!*9vAYW^+9I=DA7(bF zS#%@IyzkpfAy6S+?)m1C%JU!CqVQuvhc~a!bvb)gXQL38?RoiA zIyC#mLc@{sgQGhVXJYIp5@oh^c8#)gXo4svrbl;jBsRt1fLupsr>FH@{?8+K(s=9= z-n}v1$e*+=Wn_rkFv>tP)>YTY0-+q04Os$@A0KaV2D@VT-ogm|mDq!t+ZDFmc5~{Q zqNzaPF~})El-P_P&+?5v;~Sk;e>ZvA7CfHAiC*x17gxcFWm3HcgcDZhhVw-=t3{w^ zK6En6SG56K-+#yDu8&i#Wk65j{sKpnF%5CgVb^32HGbMJc)VUGq~xP{4Z{`ZBk;^} zQpa}DEMgocdf@>X)Z&{4j_-@MPZ=Nh6m$t46`yN}cuuRQMl_Cw2g+&OW2kSyv47fg z@$NTF^>zttN%wPTO!{gZe=e%)tN|3hxmCdD*`9La+^_fNZyn5i@40jkc(xz7oF$4m zmsPrW2Qlj1{Sb|uZ{i#pSO!kZeAof#{6E-pgE&?nRTFle8!bC4&bEfLj(&L(TFzd{ z=cqBb(=0*dhb}6zjCQh$Q6;W!h^iHtjjY_hb?&Zi&(|fm7kdtS{D^Vp@zk=8##oxxf;sIwI)~{vB<@y_+yP zx~K3*cU~e~cb#7$lFI)SPeh&(S96FkVb&1Eii(L4?LeI7#ZOZ#_SYwe==*_gXwfF& zi1TcdQyB`UVl?zlpc=#T(Y)&Z;xSm~CcBopBkhduTDAeoru*FWc{gy9Q3OE~k~?aN zV=~kfIZ0Im#jL7LXp|J%BzCFuqZ&Fp?mF8ReXxx{+Xu^Sl@9ljFt76D3mp9h@i35$9~ZElHZAj_abBn{(u! z*{y;`BWS-Zt&NTLt7iGS!@;bUsKhN65Q&m-u>47cM7roTZOh|aP7esz7N)Z9EwAcu zeNgmpnR(PrgbTyV6x7Axbp|Ay-5Q~z$Lm1d=c~Vl!Xm5SI=BQoSPu}pxg1u0c6#JA zbn2#t&=Ly@DqG1p@Y-0Qoa!V>t^x?3!stb5j$5|qn?H14A8NK;X+Wdw>1{|Mi zYFaAf+9O@GzTx$cT8L49@OeTvndO^bIG0J{W8u zm~hvm$fAICL|uC!aY9kGf4O0Zy5=Wn4fX^Qmx=iju+_S$Nhh>le%yb6#MlvoE*>mv z9||gauNfRzl|TR7A&l&-GH6gIg@0!3_OHS|Fu_}JgPyAM@tMmw`ftFzd}+iPDuC9n zZOyUKO>94t^>?x8Ed)3L%{Zzo8g5?3hpx@_uoPCw(E&R@TdBFreNeky!R1XuRL?F}lm)k+WG0GBkq>oQ-$~rVXJZ_s#A?$txfFv##Iun@zD>0RfpJA!JOjRYTKDg}0Cel|su1-n zkGPKyMzBOHt4>zToy&JegDl)fBOk*lk|?5tHH}HL;&97YHcp$lvPLjMi;pr z8|g9M&GDIFCUyTJt+8KAq14_&yf5+7Hmc{^i{)BRFl$`<5dT>wtzNs%0KgRpXF`wz z+5vH&i^lkG9Ka%v9-r2~4-J{vGdfjEfRF4utcPbi_W5=~=jxuQ&k>`7mDcNAt$(=7zfZyoT9odfW`KFN|cdE5{n zUHKf{e{hB0VfW-TE+JC=FmBrNbZG<#GUNPM@{=fFuBp<{Zm0b^gCm+&Xu!)qf#VB| z+>#J$?k#O>&AE4jR-gdrD4(rV)v!1kk4df)iZEUDz0WLaZufJ?zjW6jWtwqhVw&#E zn<<{5Wud1T!L(*c{jquD(FQ7{DTNg6)^_*a3o@l;hw+lE-?)YZ2vIdl-MiS`yYUCo zn;gZHr`|+vtd8qZH{c?Z^4bDOUtLJdV?51BO@f z+Ql21ucS4J15G?g-JNhcwG0?A-1aAO$j+Z)r1ZPq>+jcwlLRz`EPvLU+=WxjQo+oI zH{R{$>9ytYGEdx_(+(Akg8@1bg^(HT(j^_SpBV1G6tmnhQ9^p$C-*ew%d)cWMv&*q zzmW7sI|it#p6PoV1T@qf0D*e4ovL_Kw4QVBm~h=TkzKi)UT~+k=T!4ne`cumj;4pW zA2=0_Lq%`^A#Rp9H_4tHB~bK#86CwAfFW;*sjJC)Hi$bHuB za=Zau4OdjR1Z3c%0*CLl^1tX5r9NnLCMcT!xAHQ(;1tfY)+I%#6#aa1p)1!CUm649 zGMHD3O-L+49nz~~OW8)UaQRtFjpvm+ja;+MSC!gp5C0Mmm|KayST7qi!?k^cR#IaS5vJ3N&8&T(?S3>8HdTPjZlc6ruZ!* zKqOSQ#+2E3Y{`}@Ov^>ugRA$>kh2EaY=wU?>U;M?Zm%QuX2t%bE)tBihV@$eX7ylW*=r(N5IE)u+$PTrPt!1oNIiz ze~;qNWXM|*V6F|OI=UKXKir=3lcTfpPj$sk(UcFDv#yN0ru13ak z#Bo*xW0G~rx_^*byvozo^xpKd#NQ5CLL^CbmIQ5p`zRcTm(jwzDRRT-9EZTwj|t`oN~qH$a&EN9;AAx2;2>vwF@;gg{^ z0`OyxGsO+UMNLg&Q87%i110!!Ud|K|x{O6_QgQ_6n3v*8E<#5H4R1=)9#{wGjVq=p zrkVZKr)mIw>bw^((5H4)%4hAoJzBB7S$;RwKHgzf@)&oXddsZEXbzB9Woa2I`(1AD zjq=eje_N(5&7t=3h`EYl5%TN3>?U*L+?&8A zF+kgX|BQe7_zY&Flq%ai^hmjIiz0N?T`GiLLoub{3D<_eWiqKpKorr^{CC2=P!>&; zk6PVo*eF#`_N*Z-7qw;`f26vL0q{oe^_F$(b$%dd;889D*VeElEP`qp5p>Q`OsAMe z%gy442$y|q+eS)*eOFpD5#nia3xXQheoi2d0Zo`vHSUk{$p%r@chZzF7VcS6nFlot zB0iNlck$PPb!(G8ooDgK@3sXM@x2&hG9FG^cKg4TNo!clEp394rXjGr|2U5xzwgtBD>QB39UI3#ninZ>5X6t@PTqG2+RY`BMhxPLCQW<&K9l=mc z9^w86KQg;z8bX4XNoz6f zO-!8g;UA4gx6L3Y2vaD*)D|R`@!fTfYdM#;Q)0~Slu~hUX^K?BwX|q*ITv$5v%$>z@C%1^x`MAB zmNhr>mX!JvLZbttF|D8XX8O_iXn z$omgalseJiEpCKk4t#RjRX&U2z%b^W6!bmMft@CZU`P}9)isy1qva#qp~je3{dFTq zMA_GM=h}0@su1&=orz0jj2p$f;MRYf+B}z1Qzr!0DVT_9UM;&1g=1dba9dR|uLzGF zJ0h!EY9AH}P($R3zgnk#j2UKDGDB|sv+bS4VGTCjcFj$cPh~X)!p<{QRDp9^1WM_- zg7e0CD`tG#xx~Q_56v-t(C+<&wV`BHZmiP~G75hMzM-`P#bRv(t-=iF%!rykCh7#z zBN1%a(Yxw^!mqC=tCB!IY31?_>hS>#AK6Sb1@5_Rw}kFxzf#=%-I|s2IH!t0099m2 z9|8HduNZdx{^mr{upazbgtp>`)ubnMXW5pX?jMpx@ZRpoen2OB`KODLP()O1CQxob zjEnA9T#z@wkR za+pKf3+F;g>Dcg&=(|nA+OcGqUO;u+GwDI4OfBINGYqtg+*H)~y(dZWV2vRGUev;mn)mO%|4R=f^vDGJtbyQht1tsYrWps5DA%&vRYsK{rRJWgfoTeLU zv~8f;mZJ-NJtvhL7uefm_5f2P*rFJVR-+-SRBZhAN?j}-q9C_%Tc>ng2Z*D$6`ro& zEm&#gm(grWGQ76-65hCbBdBxz`V%MZy5_`+q{4heq{Mnv)%T!|urcdtv3%WX zyLN~Z8}u2STX*Uw`#YJ?J55s)0^PU11u;svk_N(UU)I8IuQ=RpTZrUqRHaT(fBM;p z0fxMr-RO|?l+vK26o)*Jif;^rZ0V;?-ZO_^y=mM}9)m)<<+%@yi^=$*TKT@6%FADY zvqVB95pb_<6OG$4V%CW%bj!-@!Gg~8CTg^1X0cPeDJs>nd!n@@9&w zsIWGHu~Fsxdm#o!dKT@kmZm!CT>rZ@fu7_pI@`_SsAj$}IRsySdymObXL7?WU&V1?(MAVUB$Hr=unq zi#DsWx(b<7?}f&1@_Z#VPLg3mI2%$O1`H*)%(G_FY@VgB%?*z$#mVOHBPn+-jYNhf zXcwN43%mR2a}Q{I>ssv|2xwSM$P)UeO^8ie&FIco$9A{NRyl`754~1sc=+{JN#<8% zsH{-Sn!Q@Seqk9$Alqp>~N+fujDcj28dvHZB zF^i@xV_MKxvfu@+QhBL!(2=MP$qTt(qL8-S6wH?}p!oD+w)k#V} z8t?1eVSZcqzBT^hv+TO;J=BY{V_#Kj-y3TJy`>>1 zU?^h^96jyc6L<>v@Q_Pm{bswf@%euUG%(Vw`^)ngDvu||b;^If@?v0I1 zdt-Z_=7qqN;$a+!?$q+AJm0sAmt>;2y91z2pJWlGf8=hB{g$@Y-{YGlCj8iDoxK!0$aMtLz{HB z6{KnN16%mh&$JsK$CZLYE$3cm0Q+CX9|IAsAGhUC3Cmw423c3UuzS=-E8KR>;xw=u z7W19v&Ra{mdm7fS`R=oi7hCFBUD-GdoH$pka(f9I?bKW+fWNzo{i7G1M83^h3H`!YQ%b>+XHL@kI_B?6j^ze;|U^8o?>(GozB4ZQ01y^$}NK( z{(MzKzuZdH*#S@goeOf|c@b75{sz(5i^fHUt0S0O-h;^GmP{F?6uQ9(9lFD%PJVKG z;L@UFOIU+V(iBKHo~a}E$2Ri-u*Vu!#XCLldGcf+v2@Ckv^`odlx9;s&tVRXHjxUc zOxf10MF}NYVn*%e5ZI)2ds|JLhzIl}N)fPWzlglGrf{rNmyp4^G`{P`lO4m4bV15D z^4kOh=kqrj!bkZ|3Gr`k?<#y4-<_jPnbUZw^FVPfmi_%JMckmi_@eVW2VOO#k2pie# z>r)+RePS|zSB}hzIf?ip%1hdRDJ4AqPo+e+0xp-uHN0-ERq=!X)7VSFbDh2` zW!N?7E4>fnN|_NXCgL=7yKR-53tmE|ai>uzOVL1Q(*T|$y-xTVtfX@2;qvSHq3;y8 zMH|XU)CPO9_i|SthlS7`lg{1le)T|hF#fwsy4aoFAwO$#*8q0HBMEcjF`%*F`DC7f&ymm8sK0$|uPQU9bq_y!M5$ph6i({H>yomt~ zbSJ}4Z08o>QwXWRU^-e za*un%Q%^I?A&5g;>2Fetdn%(Fh&BDggPZZ5aOdT4#A2 zmv!o5=PYQVV5T%Y{ok=vdN*oxx=cLO#l5x(EL|JF3x=9-9^b=X3T-JlFrv#B4>8sb^J!shP&S8jNIB#2^^PZrp{v&Ow`A{ot>$9%(U z$FBhJzytL-YKIG7T$CL?iK3y4wi`sX6)ObWVBy)_iWN4hi$!*Ouy60X;k!MW=MhEN z2POJpQiXjrwi%S6>CL1;=|F9?+H~8t#RV7Z4~zH zP)hu-%ItipFuM&Bq=tJvG6ZHhCW!V{aXMtja8AaBbOTIXwOis`(KZvOL>KI|j=gOf z1R3yxAGzW4_kYqG{y_*m$&;PF=3%-OZt5aJhifk#=4G>sfIFvwZ`sZw+vfW{iEvZ7 z#(_K%Eb+km0T!|Yd^2xFW2m*hJolruiK_EwmmDECNqsioz zqbm(dG9g{bWYbV~YjAwqd*P%6R*sXOYsHhoNHcRGc_dwWlT~HRa}@T;^Ks;N3JRVK z)(a`x>)V=hciVMh=V~qQuKUEoAV$8iaII*YL3z4L`B?;L!F+8yh~)40cFOCRrRIFA zZO=`)+%w(J*QBqfMTuRkE0)+<5xg9Jq}21cs5p!J#gbh1tFy%ToUz0yQ+Ms{Wm~xn zx)lN)vlv@UNA%@oo?J_#6Q`Q zo{2hDmf6xddj30*6~TPtk2cGVxkKca-_mIwHFa&@gPN{6Dj(k=VgUjVN(|t6-i|%p zE&f>}qN4k_MuX~>)4#*|-+zA+d3VXkTmp~5 zJ+n^|x*a*|0aq1CUU+h`dke*?JFRnhbYBHPgSV(#@kc}vxG>7Ebv(liNwiiGS`?jy zh8}+W8TpXeUQsir?tse73ick^`_@ZzGvj>_E9=FNBYCAi-9Ll}+*%&D`r2#Dy*pnO zQonXpD1%cS5iXByiWGb`8)a2D8+PZ<mYbH$_vLj-sQy{aWReANv$=2c17E7n%SF;6Pepb!R9?%_a@c!k#b0Jj!b%E1F z)dXo3L$d^i0neYa%wqK}4)Qq3gIA*z&4uhwjujL12Ln70e66oF`S5#qwtx4Ac4Fau z?TX#vTp7Y1HbNw5{~Wu$8)LruMW*p{63y^e(p@@a%|{Rj+ojd*N_VZe{DADBRDL?G zUtj2&?WZ`Aeai_9CXFR?4-%@@x>u9`Vh_fDu!cJ(}T#w08f4lH476izW>K2H5*kPv5IFD$dExR?-yVL~K~1GgeZy*r z)Kr?;z_96jdzmQ>70m1Ig^G8V=CfjtGlhh0xx(!vt1_; zA7I*+YQA$Nd;wu6E!Kl?>-bU8O^!;+8Pxgy3p1e& zj`h0SbPbCQCLrVUX-PBR(%#7+Xf=ZGmgVw?A)K{s((&lh?xq4dQ#Iq)3z_q;!^nqZ zf`G}Ku}i}ozJ&-td;U|QIKt)P@(E7xt1rQ~(?5L!Y35RD zc1`GWB>7PmQYAGF>(TQ?2!aJ+Mzq5@$Hl1wnhyhVW0lX1-7*? zCZFjsTu?}3;pq-w(xQc^soT;uprkeqGy=72%1fY4B8^?w;Nrqo290+I!tL_ z%0p{f_1?_=Z`xBpxs*QtEbEUP zj}#qt`?H_yHO*-OUhR6H<)k)EG$@8EKK1iJ=O6`a=yuxp@CRp}8p%b|(bD@=jw8U) zv8jFH#@nbt@cw2n_$=gvDv7L-K1?Ju6&LOmhoKC0tcO# z2C*7W@CP@4JOU4p-8-50yiaw;r9R^0f7ch@k4rQoT}obeBiJ_bIFDjq{!bJO5*~Cf z46~cT?>rV*XCV%CM)k@tR=l?D7NIDFecVersFkikNrcAlaEw;EdKIf)m8>7Cp|`m^ zs>56D(>9m%J$5aJlsj79DTj!sHPP6KN8~-)&vTpNQkx~mqwd7Ik$L%~5up2vH>(GD zp@{_1_k5mrChs4ZI5>XPx`o9T$`s#C_gqSf3GKrhhpMP0Cu^$;-s<;g3bWr$=6^`e z?j|@X(y&<{)ycHOc@0xdXAgc5Zhrg+j9KZ>Bx4;pKG+%^DcKqUD1ntKY%0z6?eCq!QwFF=e-6Bxi>x_HXkj1! z%hN?Lc`&g(zGz&q06-XMx1Q45D%a?5m%$D+R^JgF@~?TPb(D>$v zQXb4oq{h}8w;7bJykBy>^U~PY|Mph3ZC@$#5HT=qexBzc!&|+l5nt|L{dQC38q~@Y zWj^jSGGq|9Kzm$;81bVlDglJd!*OMH1W(} zIfX}V=j9^8G*KV}aajE1zb|x?C?=hYPCG!G9t-^;78$WXeWwI?O;63mV!8A-nBDtQ zTH0q zpCsIo3q?%GmECO*>b2*p`TCjQ?x&%2_HfPGW@nc>n-*1_O)s}1N3CAW{rI+=9MKd3 z{~9gsx;XL>Fp+3%M{-Y#JjTPH9Sbtft)YMvy<0((`_ZF|DEn7x^8%xIa=OFd+w&hp zi|b6`b|2YM(R=k&`vu0KzjH{SvJ*k`u8FW9oK}@AA)tLt={Q*TQf>~Njb2RnNi0(g z7eoxPrm#F-6;CB>mf^BZx%nn}IM%?JwL7}46kHPQdH?!RErT#SyUM7t!KdI-YvRN5 zv(KiL)XqS%FZuWvkmjN(L4z|$B@+>CE60n$@zIajJoxY(wEQA*e@lU0#!9?JBNUZ% z&7!`TekzfT`u1Xwcp!hqjUv& z(3INqr++f6ZW_#G>IM;EUj)I63XK>#4Ojnyzl)<@LtDC@ z>wIF*=iIcBW!LkFQ-`jv`MY9f@@r}ZSkiUOexc&ePou|mV;s(oWc{(oCo%btyNwzH z3Z(y(_0|5`8Uo?qmFdxJ- z>?2BWZLlzuAJL?W+)b2m!o*EPh%mSZlkjw7Ssd;(G@B=qEtJSo}RSs?+qoX-2HmBs)<)}^a2uo z=4jRB+3ddb7l`_tKA9JJ)LfCe&_dBRzJZRt9Dnjm!Fx$Nx~k7{;2Vwa!F<|b^=qwzmfV24_5+0D>HYEPT7%g9LnLuuKELC zcyozIFb@_)tIk!2X)tO7dkE;@N7qf=9v)_?t2?;my(WP7FBac9V5c_}wA-9EA)>At z;@T)`6)=&k;ARSw{;$;m5U3!;W$RhoW$KAwFS!S$P<<7tcRoMHR^R&M!9&vcb{3y# z8v1qds+s*T|KDZsaR%1|ck2Xp540tGCaYC3D%~^{%IU|k9)pBx?bbNVfWugtlEO3q zrZXh&<}VS~G@xI?z6D|e$=Lm(-jYnymel)D z%ThVjT)8qjajoRq>$}=dyE#PrcIDJdq+q^;xrrP@GapAtcGAta;wMjDkItj3jIN3! zi(78QjH0)s_TIDKHav^*q;cs<3>;h=Tx8BMG)lWDH-bm*6e}|POwZ@Cy%&j@M6h=0 zEAj}VrgAx9Ef~4hyYGT{$Mkz3pPw(#W8jiZ2{y zRqsPsdQ6k=R%NZyWFGy*?O}-AMe*bOA}1&$4!8zmq&U84AC|Ke9(Mb-WYU5Dr3$O> zj-H-URHj;4zv*y6%ZHbLz~^ouI2MGTgX4UOj`O!DTZ6O+-Dxr2n;-;rGX`#zbt>ss z6WcgWT;e&dyN2-rhf6FV&M%E3l<38ANA2XQ8y_}#(xQFnR#@_hK7>XS;^e@kbK-AgzVk4SO( zLXW4*4yGCJU=ok{{mAaa)6*JV^wwK`@j{OK%je%j0g+pPaR$R8`u+)*1Q~ygX16JU z;jO7ANuaaN+-9!h=_d4@r(&Z2^_k_2C$q!I?5;|3dl3SQ!7j zFniO{)!a7mi-F2-qG(%kCLFagoHvmS%uy@`?s8E@gWgbLJuC*w7bfwjVN_xhWSK~{ z-oZWeA-BjG2$o z)$visC{HY~tE7^BApUC_5CNtEb8%Ri7;+3(d~<^X{v=mlh$mvb>;kQcbuU!D1YgmWDA|0e` zH(!VR&da0|({Z!{jSx81xMQ+{e{OZ~x{KC_bbA!~ED2kI|qu??`j6S?Kh z<68L#L6Fp-WqywZ;YZh6E1-`Zmjmhj zYK&6SSD6>i(Ah}-#ccw6H=G1#j;395Qq_z9k_*liD?)d6IyDe6%Rg$JjxGsv9@IaQ zr1A*#$})at#b`0`lB3vzl-&&9l8(mdE^w)Y{db^q!B zso?)q2j;CYYh$FwUXWkdCe!fSrTl3BO;tsy8c9}=RjOz8a9OTz+t)+4us1yWP42uY)A(!0fo&@n0k?*Ob zr5i)=Hf`|~k1M?OPz2i>Mthnn7l+P&B~x03SKg`aaGvivW zZz@-bFW{bt`lL8BL9QfLw6E>4$;D6OZb!9Gmx&=DVSu5KYq}17Lb3{JEB594a)Zia0I?Q(SKJx zsO}P1|7>I$lYR{jZbT_JO{@0dc1L-T@ZsV&>cB7edC4pNPmjjww#r_?M=Z-xc5`uM zZ{A%#s*(8!hH%&pvSQCUXJ+kD+?P$?h@wx;)|QhuDlA-kv$H3^VAGM(@Uo_NKc3v~H_;@bNWjpj8ova!}c zO;$H69H_|>oPvHk`al}Zwwo|tWm1)fmu>Zpf~z(Ca~Fj z<4N@%?ztegSkwbc`TnnVeu4=`RMLKpfM*vlGM|cIv+Fx@96yqQ168fk?svUK9@ocI zvxWxiM0)j}A?CgeuC)bQ`HwoAM(icYb);@k9JK)6^~Mn`0AxmJjfiNUFbHQ&-J}ZvWU?+DCuM zJz3=KIey(aP#P&6-H{lGDR`Njo$^9-@TbC`!xvJHo7{fAQP-r)Kr-%iGjT!bLW-~+ zBJXIm>^2NyYX!7{8?bqx!k&JW`Fcj(VdehbR=manN98`=6$?G1a1G#NJum`hOjmeK zho|GV*T%b6s?N{>f>QFx3xZJ!81;KAU4s7)Yu_E!)Yg5gAfnQhDkXxAUN!X4L{RBS zSCA&XBLoOUMT(&-h)VAuy@NnNy0n1wme7N=gdQNkJKXQyJMR5{ul)1Ia4_Uha>(9i z?KS6GYtCv3^HUGNb{jjq*4MrDs8a_}jjOvP+!>O38A3Rv9t5V?X1y7Kjv?*$+~t-r zhv3(pO_bP{y(Y_zZd_^zGnJS4%QZK9Prv^5jqnBL@4Tli9bRr7n%5K8H%bk_grxV~ zBY@D?ojN8>{|>F{fP{}a6b_^8U+l%RTVyZxi+ zLaEhmvzMP(R}~=VW#?bgAm+}$0d(!6(65w~0+0GbAj_b-O8+F+=9k{9g<`}=Wtlr6 zFGgoWKri*43dWp6oB04{>@NcmmzFHVmtUVJb(aCY_wrdMm2+QW$Mnju!xS+6xgHoM z`S{x(sSwKrVUU}KVx(vDW!$UkDfe=kbLjyASry(UR?vupDW*PhpsnYHm*3Qv8fgrC}W6RE}E;)Xd9Bw@GG z{;E))o&7f+HwlJA%P%WWSuH)Ozg+2C<>)lH@P$nOu0ZbExwoQTTyseQsz7_PK}ags z!tvp*2M~A=CN-{UH1EtqEYq5}7!gn61z(*B718nsqAK30lx`Mvq$!0QvVXMmO=BB< z-89*srd01VW||ur0QlHD6@y^}{D*eRj5ATj<6;djR%f%=btM|v*tLtjYxfl3HYxu4 zLq&i}J0N1H;QIxt~Ag-QU-K3_6qO>eM_}M^@@b``%;lOdOsxsCpWFlhv?A4x-=i+syP2`5r*^%GtvmLCKK;v8e9RXznl_U;b2#xjt51OBZ;3%DnES=gHpI z#cFp_jV6ty(bkUAMHHKRe=KodTTR$hgDf$z8!czo=j@;r)Qo!MiaMm1D=<@;?7M>ub+vQB+p zB8H26vixwe&nn#%p^pAdFc!_0eDVSQ6y~4dfd1+nmh#K(T1bumwL10>(@A6N2ae6# zLKLHS?uzG3y7fSWTpQyuOe})VyPdpza&LcSeW$zh(|<7ZA6z|fxZUVS(%Qpux=4x~ zh{uY1={u=EMXb17>VKzRkp#5_@m=`*>nh1JU?kq>5v}|4tG14hbv>Z<`+d?lwJn3= zIXVO&b{iPnn6j-vrvP>z)KSb{zORW}QBSl8RHw}E4N_}9O%bHLg1w?2(p(10K^YM+HU6MdFg zf}%`OU&QWCc}=dDGCxw0Y4!)s++b2_iP!0hh)s0B(YpD@R4ovurY`Kq^YRe_@nOX>(A1tDo;IA{FBAxqme_` z3GbyKy79;Xz7eNLW#zFXxBgCiAjMv|pjpjEFFpd0$44cBd13qYvgy6pGL_Gb{_qo; zCn{Drr~2PzKebPe$DcH(jccGn*1s@Oa<+~w37Rrt)|n%EqFAd53inRnsP}D3_zpD= z#-jQc#fDlBFjZ7WbX(Wt`~-*#14PiT0&3!q`H)}-p(N(L@hmqF=H-!>tYff^csQkj zYz6&vu$QVnWy8{k3Jl+q(Ga;h_W&ptpW|L-d#$ncvl2b?(knV;bR>%Mmw@-?#)WrH zUZJlWN_t$JSHxA3xY;*ow6IY_eEfKGRIOw9#!^QlJFCl$(zle#QuOg!pP$^PkL#KM zCW`07PPN0!sQ8%RfOdnmc=)l!n}HRrsYCSsiS(IpG~#9>px7pHhrR_kTjy#-`>xM6 z1j?Nr++W9cth50_1K&$rXSp2Eksa+kd+Z@2XCfA}A#(Ln&%DNS=6N5itnsoHaKHee zjmgCvCpu-*BK-%mooPA$XUol`a%&f=VDUwe$&(>Oo`y~kzdRgq^mAa-=K%YZz zPq24!78o?o_+~yl@Rp2X-ZI8;(RLE3xmda}D6asLBZJ?r6C!(}g3qm-?U2Pw`1+P@ zhNBQRQGuh7w+$XY~MK>LZ4Z%~t?*5g-ImwltUiK&f`W7RKw zWaCtwxrzg;=Zh-Etq>-SOG*=mA$%MKjhffMei0n>S_N#4mWLpk5G!C=Pf_~_>6ez? zj#blQN30N8$=BHvtw|SySRwZ%>v0%UN*8|AsREz%=(K2GEw7I-{J1_i{oS9-|8|sLX(fF0iv&RWLO9WCS7YRXrkJI;ZsZ)pH8+$ z()C~}))5^;nQvhXP!OTX&K%dUA4w+MS&~j0)XnNlaQX~(GOlVaL|&bXQQ^pAU;v)& z6i2=JBMVL(Achhytu41d<>7Y!1_wLjc!y@BJ&@{RQSBWeUJ_~g2RUlvLVk%*S14fo z)J#g#)2F}JTQu%>u?>}9e4-7jU=^>b(M}e%#@Jqj7o~WG-!utap>47SH0S zS>$#WRXIZ_=_B|U+=?z~U$I!#U=(`LzE(K^>MUyu2z&uDtj-;;1K-`%W^D!f#T zoF+u^6h`D%UcHrixIy})`MHNdu$*<2kX+phb;A#Z>50TB_$AWvAJZqb4K2wTTO{a! z(;XOFS8xG$cSrH*(!z5GW#s}|;;D-Xy=kAmF~as?dj8y zOEC88!FacD;jOA3RPSco?!;p3WJDKnWSMo(TBK zEsBj>4nir9y6;9toN()>6QEZ5&ssAk8wS>h3&a))ezSXmedY{|VYDBf{TWnVpY6RH zTuosbrt*rmE(pYnvb~Wz45*bt5W(5!LeCxk8I&Y;&9#lepq+#RT^mYrgCl<0soKrx zhhy>U2<2?GFTZv~4Bp9|61Q176d;Go8J5~~ZORqm7?_ya*Lyr$gf}Fd9MWj>5cXzZ zx{UQAb&tzuymLD#^_U!NH{UD*$5au8Zgv?dkal2AnGrE}N?8qCn_p7QP<|T z3mtD!pvP%9lIwVhJEhjMBUpnA^jqKapA#|+TJ9Su42sil_M?r$R4U0Y%KVbqFMOr_ z5?-IwP`B9^uOD1FUPmjpTRu8JmImL7xIbHk#a!M#J&`q+*H4AH?A7ez3qIF~`em{@ zz1(wdC2e2AeSOvt;32Wyi0$y^RTMvp)0oG0^WZ`9GL<&%*at0-wdhrCPNR6-RGef4sU}0pyw&y|&euP5?vq319LAalY z#qa*uOn)9%U%6fgNf;5s#AWJ9Md?yCe=pmpO_uIt2-r!tI5WP;h}DG6{W3Ic{#FLe zp0u&57F=&7=lkU~W^Vh;Ndk~;Sg;3Ey7hd1{(&qnkXnkn$oO4^5Ptxn1*&QOy%O;9 zU=X8$5VZCTx0@%Z_zURBoq(|B!p-~8e9v;O_5Jwc=8U9QvvM{CpW+H`LEh2Jnw8JwEm_FlzvL%#uuw+!-hV705gyn~}I86!mdv}jcT=&K`NjYjIFFjW35N_87=YH$!OdJmSHwFS*tk~D&m-K+dva#YATrf^ z1y85wQ|5aOAS1jHl>OQh7VEe#;-df>^e`o0X>g3*p$|7BoT?p3KSm+NC$0F7UR;Y6 zdWq8}8l@9djv{|y8H>~z8BE^qW949#O~h#e^A`K~9if~xIj#!pju4fUm}^e$rU&h! zGpDmlL6zxThqk#{rduCJo0Z4EsobNd9H5>o-`MvS7tCc~$PhhxGn{(r-jUL5fMNqF z<9gTp@=H1oLf*VUT5$L#`)jT6D47K*r>5Px@Qe6PF7xtem``n0PQa30r%n0uFLFB#2jhL+ zq%CA25eTvx7C$Pgo8`|_#@i!pDGcC_#e_?E2AXV4i|QohfRxD_zZ-sQHTe@Yj{CMU zd*SMa52@Ir*Pl(xg?D*nKhzc(&Q2hiJtmunN}6!KPtR}~R9DzaXOSi=c)YWodAuU& z#QAIT6}%BblfN*BdsC@rK9J67`pYoDR|iDY#w!7U8g>ZE=uS~-H9;f^(*f|D64x_))Ndh zFzIAf{cv;n0KtG8I()H&g5PF5&-yNV&{2l_I>vXka9oxz5Jv!U9%NIj3N768W;!+8iHRZ_ zt%F(%E|haedUobvh}wAgYO z+)IB|yR$W?V7=Pmn7!NDYdURyO3AVN=$W!qk0t}7tnmuPADR50aq<@3OfQv?;DAfk zK;swCZf4Do6$dJ5#(9r1b6hVvV}G51Yyk{G0j(>#C|>U>^LXw0;xH=ZPIhlL7I8%u zQ7hG^D?iJs7C9<=GLs_t>~qKb_la}@dyh(W=*0V#$wVe9AA6%~k=u6-Ob?lD5(iG` zHj814`K2YH!&!yEBE$!Sh%@BpgVex|eStKt?HL<}S;pwCxAL_S6#(pT6u30zK?6+= ztU=I9H(8SMA*D#L4~XjZJHMWAwYhD9T4$nYPzj-Na&uG2e$~b)alRqzxbHG>CSru$ zy65yxe)G+ya%^#AibJv?<4bF4!HgOSs~3&JvL?L*`Rr9bCoOPMNTbAUXT=r~rylB= zsBZAPtnoUg_`-2|%zM?OEL_1fTf38F<=W@M{)IZGLUn{$d_#APlg6ImeKcyBm7}h` zjsf%&NK2@!eT#>&@k#m2QR{&!^Uora1djX6c7?y@{v){tAk>?4LV^kG1=aIy+_|IU zhC_i%^}~CVQ7Ue3+o8mk5T@dLO-H*gdn9D00FkQAX+!ALFyv$+W`GMgUNG05Ypcls zDs*!%MVKjA!Tt&wlORFIPPo1L(qXK_} zZGaj_)Y(|Z^;t&AGQRASK~~wRYZq0cjjtN0D@JWrPn1}Sg(1dXlS!7EQ?nup;ivnj zP0k+}XD?gUU8#smD*E{T7Cnh#stRorM*E~;5%V;;yrh}sl=;X0xP?4n@)eMvx3bTg zckJ`L%>m8fK`vWzi#{OVB`!1EXjl~gQ!rVoDazj7*fARDj5e{Z#(h>8SnG%qq;LRN z2t_Kq=b953UlIU){c13i9m)Eus6@g-7?j}5Hsd^=@pF2*WSr8g>Y>sb8k|Y}?a2}{ z)`pU4==g%`#HZ;b9#a3c-C?)=mw0lUd|Hel^1S2V9&}0E2P=ckfuHz7g(sJ@iot!- za*#eHq5Zw({Ra5SZic?uzhaUm=L;e5&ySy|=$TTK1r}+Jh#!$(co4%3TPDu6w_n_5 zgSa$4H|za`=-n4k99=7&jBSkXO%N}xnjouFnP-2)kpc+twAHmu!4jEqZ}{z@o4WdImZsX$5fy z!^)?ggQpV?yEuiQwwJ1pg)SUYlkCBQ8XE~mu}lob_T0R4pm@Pv1cF=eS0tQfj9ghp z3)cT4@H4?`u|=TlQ1Sy-j(cWsZJ0$wp6Qg3@X?zJ196EW)Vdz#T6so7F(SJvKJixh z=LSlyMn@=v_a4!R~o zT_^CL;N;4^Yj(^1Ld2-MFiAvPeM2kh@%kq*qWzqtM;+d>bN*3d@4r`1eBv?Ud+Wir z=lxn#I)sOGyY2)N&Bg8R(NA%}iSNB$*07ua*49@6;R%;_fYiaaBxE^B0W)x{ z+d|oh@9$1Ty^+*{)&q{27EIELAn44~Z@jvW1+RnS9z0WjV6y{)z5v$+(FbAAq!8A3 z#>jj}3SclNC(^R?^`dphTL6|x#c?)y(3}89e%t3xO6R}j7xf?z6!xSqwdrELc7kGd zRVbJ7Z`jC`lUHlLT(%BB@6VC3$!5eVUoE_QEqZ$Pz(tdV6&>H8J0MTnXm!KDFB*d2j<$uFcn#ou2P zQ`KH|9(?qaHz?s=Be>A0i<1 zbY0mNVe@PSmeQ8;G3dh@c1nKp=U+3=HLmzNWR)+Be)u!yx;N zgqPjP?OZEIA;%xegmIZlpj&9r}Oal%U4PzIk zBzA{%s|(b=(Q7;ejqj&Lhv@95vHFm+X0b4Yo{cyhe9>2`lQIpbompIoCRVRx{5 z{^%T2;TZEB>!`!zdJJB;r9i6wfQGL*ENrwbts%Lg1z)Jg+9GJQNyWFtaXg2dZQStV zE9l}-2}Y$fdV6ki-lNVMD|)*$vL><)KfyZ>Tx}beJaJEP?V#Xm?qBnd1|@#Cgu3h{ zx1Yh_bN< ze^jpYFzCF|?(W2sJ3-Q>&te)ry6eH177xZt%bCOW^-hSJ*2+rDUOwPqix#$dSm0~e zV`u9bJ;NT6A#@25|{*QI3!llyC|xj#t20FV7D?7EH+DBSiVHHRH=uj%AQ{ zY3k$yh3vUile{MKlvh42aFcMjwbB`ByLnB~F9B+}F8GeF&f|T|-P*iPpt{S}CwE%! zx;rd~AZrC;g}6yA)Ftp#q=Sv!JHeUO`FA*nEblYV0p(c)Ur{L8VBN-dzM1*SSe~O` z01xzq)n&rZsAZu38O-WZ&%?N?HP&`_7!SR1CFabW`|2HV&szZw z>z8g9+a55|)LyxM!Y|5o5#^Lx5yA#X;c4ijGh&*v#jk^TC6E2KTTl?Bf&3whIamdfYfD;$@Fq_z>0tKqiGjFZz5|?Poht)|S`40_ZM3?Z)yp7c)oB z38CYZOD$O@@3~{W${HX;s#P=dmZB^|f5m|w%I3-~jrKZEaRJav4IP_5{s0Y^7zXP8 zY>@rh#vXkmj!}*0uVe_3fCTRrv|#V3rSz;Td3MSJ6(N42`kLKX*NI4&Zq9-1{v-&h z<*S@0048}oc>BhW_t!$NFSN$}!UTxxrCgl;3caQM3?6p#!T3b3D^_~bY5!2Nlio%Tov zNpo3xFT(4swIx;&2F=nAt2n(@*G-KUP2$=vzUOV_dA{wj5{IqEo6(2b*6IQs`#swr`x-XUmgkmXCqAVkw9PeMKOZmAvHkfWt5o&%+fsphhcX0>l2V%MR|*Zy5f|(6eaiHA zHqrM@U=bG&IRRcJMdch^`k?yP7Qy5}t?Z>v^N@5-Zb(9T7u{(CmH$1RF{a(TKn@~M zKbYg=>FYV!wD0|Tf1r4+gQa?drRQabb@oGp!dvg=$EE#FlSnsjobr~h7qj)@w%b--C!0QEjc-pp>#LP_W2`iB?a)yYoALM0rc%AfZcdZK2=~zIW0>~f4(Df zeTrh|O}rO;qszst^qoBFW|PO|+(n zN@ubo_l&+n1Tfa~p|?-FOBgj!@O<$pCD3O2&mgo8aD()^D(@*C!?k}RD|5nQrFQ(O zF*yRKN%6)6XB7N9gCY*}3Ta1xg zUv`NPv>KHBvO`pukH2cfxY9-7dx0O#n-vev6jHAukD+L{4V{ZC*1Y`2o~{3lz{&0k z-Z|j;KJ(z*SbxXG9i|L@tk2;`--g4#>TbRyZ`!w?pNxrZO*G$dk~g}saB#IMdK0Ff zX(KaclQSTYQlRzT{$&t2H>=sA5-7H;a^RhR5KU9eclc1j|v{LAy)mX}d=PYA5_PmBecK2b(=8S_U=!TR-#ZMhhr0t`!y@OS|X6V16%C9^1Kq&TMzzv z_x~t6KBk)?yTk1g%AZwUoiU|LV7$Ndn##b7eq1NA7hG~aB{H z3Bc`!cjv-jGMclAu>um|5!eRevyf)<6Pgz?`#(alf{fRGld@Zn>G^Iisc*88vs|~( zih_WG1Si$5csW`IJ5p}zd#<uUPncXPIjD--V0 zkO|)N86;&Fl6j=NSFtU{+Ocv&^Y=HjmN^4Ud&XbnX==u$v29vtvVp7MoMaSu&BHpa zvJi_33xCFdU%V0D_to%umT8dMoRL+MjfSyzT`kl4P+qB>&QEc!bGVt_n!TpQl=+ zbClw}&rj+qV#&G7CPd3|ARVN&be=Lq{hU(X3BSzOQaZ0M{i>rYkbT=dFW=LTUpwxH z<21Nqy-Et^iqeY%`uz?c%(JOUx|=H5_)L8J-#jW!$~G%+%ZBpge+#`}i68o2Xk7Wt z%fn`oheN0aBx3QPo<)iJ@4u|@#_Mfb6iDW7=}d^kkjTpwSi9maB5fe(P>b4Z#T{ZM z8w|hI65>i}ELg7E6@{SIn#DkuKT-XmZ zU-L%GHy5k;;@IAfw%TQt-`M(52Ls!v(7)r^AAxwCwyEvTbs@n=JQ#>K1g_WhZ)cNigb8;h#^E=B1L) zA(rium$1}Y;N|s$cT$N4P4g|=lxr`d^deJb_FvCEBa`K}d~vO;s;a8S*bR`_rNRm> z6)S2#Bkr7ZH`CP>T}JV-{3dF$Q59wgd95|tmUZe4-+Quzje`C4N_gA zT;6xK?fyhgy>{x%oaq0M3e8q>BnGzsAfVmlR1*?eWs%dG5}#a^nl%-cZpzeRO);^Ip8qQi>WlJ z_a^+Wjn8wzRpUw0=#3Uhgl`=QoeacrLBS|BlM*Zwl5QHRqHSk6FQ)kkTyDOAR6pvH z0RA2BRmVk9OMmrnRw7C6-HOe!^?+w^Pd%gXL!giBOMiPQ|&jznz=OCYXx^`)bk8GGB9Z)TTZ>PrAa|a3i2Gz(nbH zw#!pSflo~ug>2`0}C2l4|`T#>An1~=cS+i z&5-i#M1%w*;)0N<1rYwP zO!vTk85sBPoaZ%d$t8UHHPL5k={ReBtdK;Z;3B!~B9Gbf_=^ydxo>*;&1cf~_&Urq zGc|-TBMc0tm2?YAhiGR!3;`$o>LQHL#2m2m6!Rjo(Run1itL8# zipE2Jaj}{7rTAN^vIO{B-!d7MFdP%Sejh8civ&2Bum>tn|5Y>KA*oNT5Ld6)ek-<+ z_tHtnx3j(&*Ajf-#!1PM@O=shBeThV8+p^QKLm$$Hg&x8FM^i%KTeLx=;LghXv2J$ zN`{uw*{#sQQmm|^6XOyi7u{DK{1Iz2Ej1OTBB?6nrS6YTK0;!R%vN=+$mJGM*qb6{ z%*M~&U$buQ+bb-_7oYagnph|&hH{oFrbw+S$-WA=bgD1juce@ZI{h!32p!<#nIlRyz zQaUGLb=C7^B6hr=Kq^L<4)cJnM@}4LnG4{kD9cw1bff~--Gt1N@;x3&$1xp|yqlGq zH?~E>BFk0#YErvWm=yT489~cB0XNQ_1K)l0K;bDKSai_#jorFtAEg!SlgHGoRZrDc zRPUc6upnVBNNZT^nE2pea_nAa>^^usU%5>nrvn{q!`GXFa_ZBA(-M#5eY!M)l+$ni z3k_;rK5zPTB22xTiL5kWMwiM>N2_j0D5D|H1bvtdU8Mm&5@IRc!WM?cW%Atm z`&M*BbVYFvPPw`#?dfmYzQC@C7ng(eptC8b&bB9ZC!5}H8g-K=Fn3*^u-nC;yT@@o z#0((=J`2idBZQ2jS9q+*#lsO)w;jgho}5z-YI<5W+po-<*QJXClp<`d_*uqBM~xh| zQDdoZSYxX#vH9+cIe@FDWy76B1MD>>NEcyMqNx0m<^RHSH{Ju~#bf2%hJ!~^Qk?Vh zQwSj^pZT_u*m9RV_Iw~<7JwXoKe^JdXos6OmR|YXtuv;r37QNEj|f=ype(6$pYUbf zD{P2RXiPU8Ns-Bo2thhQAeJUq0DFU>afyXOYMHNFt4Gz_Z#~F{`snu7VVk}Vq-gPk zjzi!;O z>kVLtSv!{i=*QSAtzo(oIgU3nl7}YZe(Ff!x*_d9OS6eLly2_U%bnP+1sJlfrXU`% zbO|y>WfV@8?uJls(k%mH2q1K>YXoZLfOTZ0!ydV40gN6FJJW^J#2_j|59BE z?jMM}ce`8)gqoNfQ-+MR9~%2@C1<-&GK0bX4N;Y)$dTmw90=o4MR_St2320=n{cm8 zo-e~9ky%5NW3fik_>qhL6EWFV`s58RXIFeo97x&MRdq%4w>JwKBAzc;Iu#UG-o@GR zR!5jy4vroHx9YI|({IJHR8yKYL3AS8n6>kd8)cu*V@CcH{W!?zcS&UGRae3@KZv?TXFk(pH!o*Ism&3Xk z%Xq=cNS@jVn}b*ZD?LX9OxK+iwZ&u7`E88;AbSCvyr^3htyjvkrT)`NraQ-xGv7jY zA>qR$^pobeqJCR;r}*vaP5zX!po0I$3y>#cDV8kcvI4_{6jl^|ih(TfG4@@mrPp2+ zR~)AQGJRzBX=f&o`U*()w4T7db6G6P#pV#NL=z$>a|#0z`S2@Y>-~8YWqF1Z!kXj! znk>0j!WgMG&+@9j^WQkynYP=`@78*?>7r71&TGnTr8*A1Ngw}Q@#v@RWKa8qn_ACh zcAtb4cP-4CAp*Lp#HzCb!*u=dkcs_h+{l$&m0H1>)wf^BR=<^lD-m#3mMOiEMaA<9 z>9RNz)QHC>mJIbJa6znHoYMCF59K4X58_dBGw0Mo;{`4l*S1AKICS?Ov3x{wKl~un zoPwNIs7`!achfVz^#b^AqN^e!-*I)?lMjyM3Ith?qBwR@Y+CiY+0w0~KeOOJ|B&3b z=LAJJXO-{5_+2dJ`@(d(2ZN=4rArJAqI8yFYcKb9a@e`&a{Ki!fK1PaYOe)5CE$9GxphT`#zD0vQSz>q>H_S18!?sIqlJ-F62O{B zm!TMAS@+VcCC*pV3fmUC`%G&iMbBAHeHP6Q z#@n^c>2JSsNd3o(E&E-jPWlmrj!QmG_AO(SoFn@*K} zh{zbkM=LU_>?wa|J$g?drA#ki)&+aXN2|B7o*=Kba}@uuY2Nba6NcmT1lszV9A2!d zTLYDw#9|!Vxhlbh?K?>J-`*EPkk({KQ@ZXDTz*$=)R>80GrASP&(8VZHG$~?$1^NHu zbN;(T9W2|SR#aRNEQIS-YX1>Kcr1{rA{SY%xle*!HonC9Olv=Fbvs9HaqtVM5pQ;I z(5#9(mV_{W5-{OF?qe`ChHZqCeb8X)lUG_2w>C0MCTrYufjnD|kwx5TLN#WY@j@sS zmUAi9WynYJh?oEB<$oigTO=o3gL}G62}4RDn&lV$CXA8;VnqZOGfn#-mf-S?hRO^f z?wwD+1eNU)ei?nK7fTjV&7WxLJ2XTZQRe4>@`kgZ4hF3`M1)nig0YoKE%04- zCPAVX?ZiO9b@4Fs-Eal_S3KwmhE1MEE*8sZ#&K=ubp&)mKP_BgqNfA6-fLkfYZ-0) z98vA14C^XZZD-C@_KG#B144lww`DYVyA-%y&a97O&eV^eD|}8zBbQ9BBf?#dGpvw- z`Jht;+)HEj!H~P_6B8FN7=&2n3T7Pq{(c}?SAH1;!>0*5j+M9uRBZy*BuDM8twuv5kln@nGPz>>kgX(p*#30dg+j)^kbb@i=u2L2k^ z0yi#7G9K!7KzJ6FD|-4O$xnKIAEb}zEp(YRzS)Of2CB79lIaHq@ONm7S*$vrzeU2< z0CCb6o00?~ay;669+;y(&Q`Kb;sp-g&xjm4^tz4FRaOr7nQ5xRkEWdF3)}r_Er_oM zYJ+@!sJSjzod14M9G^k3I1~S+Yj@RBzu*22*yt)BaR!pBAYeej*WrmsmC!s9_On*y z3Z;ZxVYtUY*NO}2G%|W{;L6`29f%g5oFw)A4^;h1A4v*n=<*ac?CbEm%QWCrgOC;F|o(j5eS*&7MkKl6SvJ2 zM%}5%J$k|Qt1jhl>&H@>hf$9dU%;7e=$glLhW`70na{&x-Xj}SD`7@gaagA`EV&du zb74FRu|~c)f|`Vy>`6cVGI+%Fv*EeTk+KhBA*mO89JWROvjP79=X3VnknQVop|dED z9u-;{;1_ z*ZJeCzjDHVg@BQok~}-;V1Lcux(|OVv0`!(>3v;VkU2X%89QkaI9-h^4b|ot-NRVz z!~XVtp1VQl$r2ooe;2pE?fg;fM@5{|*nTX;Iu=r~>EHDzZ6Cbm_c%rLF=&GDe|%Zq zwpx-P`AL}C&Ssi`tr6d__@+RZNoKdwr>MNnYOyW4n<}@aCnvtupO#=d64=(jxB1&+ zJ-&u?BUADt8ZTG;yJv@%1Q3y;(0Jmu`JToaoY^Q`DdmDYs<3t}-uIti(jGGbZRHUv z$kczwv>Xlw*A8gjKa|J%U~;G|O=N*cJb2On-Xhbw#;rI}n zKdxVBYTXt@Tp7-%c%`$We!=htmUy8OWZ+UrdZ>)NBo|U@eHXpH%fw?VVOT+=1M z9GD7_>f#ZN*sAp~i}VB>Q>ifKdAiotl_CbzcUwZ6vegspRmU)OU;BjvigdCV!X7C8 zn_g(Sgnt-%9_nV#gxRcRTDEjBpZk~Yu<55TjFR} zFNPw$#=EmZL`ehr`=?ua&Ws=FF?v8h5)QOACUR7tXIUXiFb3^CvI~Pi96#k0WK_hZ zbGf^UTN4`a%@kR7OhN&C{6=NBCf2^Me%6^xe(F3i^h$X=nax{sai!7venCoz^}(@> zzIiF7!0*2q<+E`3;nG;xW9Bhd(2D$KsT95{h0>HOQ_dsy^TW9647u0^g<}cbfSvbm zrfJ&U=Qvim;4WZbCw+xCguD(o{l32+Mc9hbh7Cq*_id9OW#+Lcuyf0uz&>u3*Xkbf zmg$EfLVa54#O%}H_?G+@z~5DW)#N2$vpt)DIn-D8Y@H1mB>?KKH6~G_sRD3$@87>} zn~#?*7Lt!?$e^dou2*%*+`5(6vD~5=q|EhS3;=)#wSOn&&Z}SBso%6;Y>sndiSlnR zaqk|aj&)zkp>}Ui3*YM>Ky8ggR%Jp=yD(iae%26~Ja$q`EfxF4*ccrw&rX#B&WU^5 zonXY`({2eG+8T+f%2cibpo`@$n9(U#PUt(7EtDazZD1mMq4iVj9{AJfKyYkTW}Zy! zKuB!qqryZ{ofVlNG#Cgs)~3{Qd^b_hwLoL^;lQVgPVnt&w*qu~dc>A@zzOLSKV%8^ z+8oW7O3ss=prm0FzxEqJG+!$*HKivt_C-$XHYx~2X9+MUZr#>auUcb2{0(0TKidC; zf=dRhV@pI=Q3>L5QvpZpv-zi6#pbik%5GX`)3_?^udEzM`752D(LJ}fj|E(ZJPP** zQ%>&5NZV)-fd4%G`2Hu|@~Dsy#o+4?!aa61*qGVt}vah z=-9Hd^Zn@dR9Rx4W?OpXUMc`|KiW7h-L|G&+TL_bk?|j|mh8;&j5ab$7~Bf~QCf=n z48Hg(HT-;X)yzO@V9(*NWYIAnxyieletWYa?a&!rsm=nSb)F{&04ZUIf)M+eX<(1Z zzwBnoTJy*OOS3*60=ho`M)UWLa%4pg|Dw%&bdKy1Udd7h&%mG#u+EIj1;~3GzIXVbvRv2{#LS*%>`gx zjH0s-FjygdEkg{+W@BUF*=}&)aX~83+y-b7$CHyJeNjr& zQ=&9-)^c+iBAk3yCkJKpsWp;iBm=&Sc^iOmfU?AQj~bI#YrP4q7@Dqw(JqDI(U_{a z+a~`k4gtM;WarT`4CfVPUFgShWEV5_H=OdyhbA)*qeURQnP5hriNWAl-zN=ydokDi z`O1;W)j+>~(=h2fX|YJZ0u;v$(JFv_rvAs5*J@9Yju z42*X0Z*NwGo6q~gCxM^d6)E(89FH)!Mq~C0leQdA#t&X#uP^3FDzbC$E{xmo?~FIi z2R5@?;x{oDw9VlpVfzrTc+lTfzjI^E}CkdG57yLby12hM<6c>>*SOo;$+%to>4fet0B!wE``Zq&)u!` zTF|ZPH)@DD@3$f!XGSJhYVpE2-aZWczGy3Hf)c?U6DW-PN zHU;sz6sdA5S*8S*GL@jCz`fj-eqXmTs5~Ln)zww~rJBZ8G!3$STz-qi81ro5Ez!M4 zLGYU-tz=KPi%Xe@L!Y7taVY_(5<-MJOSntww#Pd!pt=XhgBtPxRP6J{w^W+8bprkM zxrQm;lg%PdR2{F=E0Y|oEtd{jCUgG>(VRL7%nmW|T$}h`&7FBXlx_R}OAEI(B}-z& z-4hu}_AtUd6f#+(Nn$L?GEsIzC1cG{mSh=Q$ySCe6*CDlWmlFlYQ|0?GuE-h_w;vdhH^ZcC0aeUqfaXfc2Qc(_b*3qFL|Ga$9q~d(pb+;d1 z4X*o*wcdKUv+R1>yxfAqrzcK!cFNfVP=Mlc+QXsu#JJ@I@~KI4MTM(2>fzIw)?0nV zV*8fDwi?s4SQnS}K=QxN52Sr9#aO>dMx>+DPaJG*dCZDG|F}Z&lihl;za0J)TgrOmEmo5qgzao!bGH4;Fa>bHK*TOo|=$ydG6Xn#(E`%CuOoSzPk6v z3pdL>P`;w9GyAwZPXq2t_IO%ouY5_U@N7q5`{GLv!?+Ql4`MIUv;EtznP*CCj;ex4 zkeEWO<)3bKuE8|be7H~SSbV=J;*IM|Su=3b$N$|)&m`R3voscTVkB07Iz7sN25Iad zpRX$mD+h%UUt)Gl9`>cK+NcF+N^V=oW1@e5aX8@KaZc}P(Z<0P1A_=W=~ele{?Q&w zY6xR9ozZf{^-&8~cjfvjuT%!@0a}=pp6zocg%qf2DVPBF9if>bw1!`-7BWa>3oD&r z=pmLCLhK@DfV8X29Pui}+^B^l2(_3;?^!B%dEg*N7U=%a(y2~fT;ThW%)1Q2N2qG7)*IoKjgFhxqP|#kU@j?jX zN2|;7@|BjGp$8M2Wg}mubf@+>eJRdjifqCcC>=*zZ_<;5S1l2bD?V*}V{cS4{@_0K z_JJ)Bh$E(&&Om0Gh+9knRF%v5CZ0Pd46ZIst11ak%AQWGiO~p<1ATSCT?+o^T}t^8 zrWLJ}xTvf~Jv*%_PdqFqIf916xp|f8&QPJ9wLNz(iFwJ%Jh89bP&*MscIE{+Jbs#m zp|Jy)XBG>Y`E3?X#=K=6t=CLGpL0L95ve=LHJOwplWcc=*0S0L&{9BtZl3hXereq( zQ{nm05zdLGFBbECX`72+kFb#w_(#}4h06`_hV5f_OfWt^K~pqccirp=PR}Z|>37xo zrxNpLcoHFV;a2W6MNjK8^R64jf9%{>6Xar0u4%@ptg1VT>qQ!gPY#8)_y%URHw1>Y zB^Elrtg%{+B;iqyAenAgj9z6K6unA)UGzul&tnF3hXlPV7D1* zuJ<%jCd)Ccjj0L;1x~k!;a6qd@WE{M;c9dcwc^Q$o{{FLGGu(lQUHQ)TviZ3R$FOL z$-0G3+v~n0LUIm@G|C#(cTU&zpn&mp4}mxpgh|V?x+VBfOH_t|#$A{<3B;(9^!p zv~J(j{@o`@pa|(JEmMKJW%bcV8LSQTX=2jPnmX=(YdR1h_&>RnpK8w!AbV~CBTp2M z;>Lol^Vl@yd27zu!DAe&x)$`%g}Fx1@LOiL?0)}(uM%+*dgoz(3%=j>uHay5=WaSM z{oeR=U!7C?HLZIDA;4=XS1r981WxZ|coU!4Sk1I`RXGuqr#@WVUY*M&q)!5gIm>+J z_a2<|mO6)RQbWek)&Lc>ywcUUK4|#yf4Nwr3K9y76>koRCR^Wk#C*88bO(@_Nl_H z#822DsEZkS=`=f7yeZRfGHW>5(kwv}gvXt~fGH$(-!+d`lRE*fH?ISpfsdIZ{a`y% zaq{q!%ksj=yAI^vp5qr_Yc&%boR?^~7H*`ME8(kZ>e?OtRE%|8NaQ@)NsabEA+y!m zz(_(gmj}I<2dS#dLmTJXC8nVYkJHM}ZGY$i^5#A#Zg@YL;P*>iCT~<~et75vYR+Dr z<4F*}glEpI=gD}AQ78q6g;*C$Z3T%xvgWXx1I6%(O3@e*4(okG#r<0wFXrw6+FqfJ z)jh>YxxfxxCebI`^7*^}+?-O21wV-w63Ez6o=9@f-SC?Bv zJVfZgcA*jzY?kY6E}J&zy?C~d$#s=~cwxaKOmK3)%?V$6lCN2k#dnlmCyqN#Qex@1 zisv;Ijymd61oSmK(mtI(Sp3ucm9%LCtW9dZDd+b7`2XJ{8zW8Gpr$H_2m0oNCkbXXbBD7 z)`@3TQTDUSe$zeVkHjjWp9Z2q9gZ-OYxO9fH~9S=z*Q%=JMhS7WQ4`$;(cEP1_Itt zq4!C>oe{8D4mg8S>nLe&MCH|sP)H2FR2G$rQAmEneXA`)!j^od$3^*aJ%c!4% zyz*9iO7EL2SEW3!p}eXZqg)=IZp!563Sits)DB}AWTWXLDDy;$)nd)d*gC*Vx@Z0~ zMrXnGto)Ha{1niQ)kk-4+(&l9Zv{wH&iBWmgyX)y8>CceD$LEkEgea^fGwMbbd?;Cl0#+ zH2FM?}8&?Z=~qFfvhP9voIu8?U9ZRcz7(Wi>;-dS5OVW}&u(&y2@qkB&4P>J;xy#vRh z&83ePW@2dNbCj&LP4`j4UnJS=CBn@Z--On0G+o>C0>6pIUlU(kcd*i#ip=s0D93rV zE<3R}mAl|P2qmv6i zQ(W;X<0uRU2D~>#_gkrboOM60Jgf92kBqj>6pol1iZ{u5w4uDF8hy--G}nf_Ag9V~ zcXMx>Ccz5aH7TgEOhq*Ute99|soeqMYCF1*tc6)yyaBMlSitqczQD|Ss0Lj;1;UzE z)uZ(FMp~6eqdJjw-#?ecj8wb_y7*#2XBr)CaGu%4{lCcz&k(Ni9TECGfrFut)3k>* z%VS>MWJ(Sx4GAG1sd_CPPJ3_((rPfb4zG}YwRB9N1(nCUSv0XkL}M&Y%gYGR4y?wI z+C3;H*}==2YRmQ6z7~>*mW0z(;jdy*$*Y>69Fm$s+!?&#)vg>p)>srrw%62X z0ky9Wvt?7=30rSE3`*i_iez;CXQ*!p^(?aZEFhC#rItH7;&hg|KtcPUFuxH6Y+wKO zS>8z%yy~+jVa)E4W5XUyi^U(M3EJ*0^j1)-u$R6Z2U0ghH7`CYwod+N^=!QbGc#Iu z(QLUT(eCzR9|;=O55PILL#*MA{P>`2t*d8)lCt^-Yi*3^ihBfzAM%6mj(ipU=k~yx+s^?lejB6B zqcLM(WLGK8=hE{O*PoF9WeM>k)PY(jB*?xno@R1BOap1(|f$N5caH2}m zypr0Fz8Jr>#vd`jz6`AcZeoL0nDt)9G_|BD`PTqLFwah8A|bRpuvjRhPLW6ZNFvguHNE*TbI-x8TEf>X&KqnLxce0uo~BI5~t5 z4QR@jNbwEp!idvf3vP7jaqgMP#$xXdf&9C;H*s}hEat!-(>fWS?mYO1uFFZa&L1B5 zuVn#R%(6G-)y+w@DVEtg0nC&E%QleX3MmX@TYgoKz4RhnqOT0ue-+0+lI7QDm*l$v z$hKSnOl=I-YH^Oh!IR&WJGGT(0O*Y+n$yT4F7+XY)k&-81J`G3%7VsNCt5&~U!iVN zXRgTc-g);cn5ACk+g$=GLpOk*n=@2H_%H=vA;(2IaTo{iT@|}5p?*Tv@Rw*DM)Xb( zcUjL3OaEk5dAih+1QB7U%qJY;|l>3;q;(li{+nlp2P$;3c9RS zd`fMtE462G#s3N}?4UT6kLuTNzqK>|AB%wy2QdfBVG*Fx^n*>&mBjK((Dq5nvutIX zxc?IBaP7>tuhcX50%DwiTaox)ze2ByJHh3n-&Cxx{c&Ssq0>lf^Ni2zJ03+|zze%3 z1m1~s;niP1M;Bhvk)w?jJhHuQ`@@ zJ5W}oBKLL>X#2j$Gua6-!rZAw{c%Xk3{86}_xh^!kV~4qaK%DkV~ZJEnhcnF!Z)^o zH2ju-#g2}4N_DLeCs(dxyRXAX1v&gaY^4@I62>q>JaB3?b&PP~^P1QC#F z4BppdJ7<3hFP#nRStq6$fXsSfLNd`MnOIJ!Tggr6nU>pi6up#v(Xm@5@25vkMXKvS zB)qh4ee9U7SncRSJ`Q#$Y-^ptc|oYWd<}&qa`>ic^5|{Hg|UYSwZmFA%93I1VRL_g=HVpCFR~~Q$i+W7@+pvTZCdU= zb~i3eMOa2@nX$QC!?Fdf+(d8!qi=ok&O}?^^_20B|CDMT|BFc3qMPx%E*1Xsv(dL>aDf z_Jcg=viZeZ@2wa6$n){%#AJ2LCJJ?&P8r&TqKzOHWCI4xV$Nme;YS?iV={<^Jbf`S zX*De#$Ff(e zB)G2!@>11_4uZ!v`W?c*l%Trz>uVRcVL4D1}{zD9yKBe?m0IEh+y}Ce@mf6;=s%%GfKCK=NSM(kgDhR`ODIs#*ZEH zui5N<5q2b;5JA(sBPYjOjE8O$y(GlmEQ$Og8t-`R+$kJA zLpXyqyzZA>NP0rwixIx%Y5Lxiu@;myi=>m6>t-9H?xWz0`JRYNA+4Y2Eu}i+z-Ujk zm<(DRD6Jp=>fyq4#P@@?265p5u~IBg}YM$=~9m~ z5vMg=1UYQkpM??i*d3B?h6avp!Ur{_gop_mBhk0p4O?h{EPqA*Za06krVt;{2~^v< zCKTy?1hzNMVV%~0jh2wdj>1|eE|2{oCh0!GZSn@GVxxK`;EUhMb813M7iz^p)57yO zs^|eS_O6u8^%0#IPcYCS1BaTA8MCgb=Yc!We{WA4fWQi?%I;kw z8^!wgo(G=tH`0U=L7Y75vu#ogrOceyRJBy4DOR64Oki4<*fgiaDb_Ldw{wew_9sVv zU}c3zoD)_wove=}KuV4hrjtr|)8laG^KpC*7WcI-?#j2hRDwbut@iw7bKjM=ZJCO1 z7k1LHak!nExkqeS!Nrr7_|#K2|9)Z5Lw&UP?2*dT^P7*TlRg8s@#f8YtL3zGv#lgO zD$6Di!=0l~J0NdnKc%t>4$UGy#WW>YsMRlmxP*)OBc`1@&cE0G`dj#B;GC2=UF-dd zkVR^qt$8#hs+)bSvI^xWsJZ%FZ<-L)8gnfBz4y`Bfa7_h(f93{FnFEf{*2b4h~9YH zsvyAe?Q?R3ONSh&V#cOQh`;e1&3bq(Ff#)WMarHk<@VZ|a3#^x@zRj_PL-d3-P%L&;=# zmTQ#PY$<+REP^$FK1yl_bz6`$UyJE;a&zvqiwgm_E-%Ue;4OA8o*}*_r}fPs+us^< zO&~l2w+gKM6?s25x*l9@0H+UXb&pJJbFjQPuhnTW%NzN53bXt#Jt5>q`vWo-*(hT8 z_LuuCjg#s}8@yYqhkZsn!#5X(mGP^lZ$ktJE;JP&2G$P}9w*J6EKuaRFUv7PaBFIi zX_MWt4X*ldU=yHGM~o@kA~B)gn|U`tb3~)dcC1NDM9ClQAh!w2v2n7V6^XGav7w9N zILDjTGW5Y{>3>OP7#a}vl^iy|(1fBckL(Oy|887I5?p@i?l%)%__tql+x+V#u@m`H zZzs0jEC<@LV^>QYGly;|{*b8l95?%;dorrJ2!^ucY%$CZntgN)fxMt7{|zY-WI+aO zd*Wj}yMThvUEtUiAF-aUdO^26SUwzUAL*)f#J7DM7;l^yaEMR==zY6JTrw5g@B9K*{V%h8m*A$;Yb=>% zR};TqN{23Pakap5^b)q*aF^K<M)ClRD3nq|b%e5&2Ml)=h5!)v#a-@(#laAm9K{_l+!&6kiu$8M7SxuTo zF636t$NDVqg#Mz)s-qF#Bbji1sZ$uSPCAHMV6XC=J#f~+z@W@h6U>*g>^o0wH2w9n zGpBKCc0$mZpCBv!y6ld;U0g4a&IE`vpn;Sk?^6P*BE3M1n%c0)dN}7Cl_-^#rzi z%UHz`<%)+!fA%$!nhMP`C3Gd}06Uh0R2vY!PTL6X-UT^{65J`x1kdMd2l78f#mp0= zjiJhiO%+H&#jp?NCH0|!`VzdEBO(Ek%pov^`~*rA*qP+}26GS14P7UkoJ+J%#0C~A zV3Yff2|`IvRE_Xw$X<_33iLyl{;2^Mnp{ZD2Cplt7L00__&QZ1VLSXy_tUAgDalqOpL}~Z z_PHQ42*+WuBc=PxyD>Me*YRxkY(F##F5?hIt9GTYXPyeWBJ*KnN3R9(`}2o)gb{c9 zkj22IK}q{#lLnJeY@Z#3<$h+CZH=yw@&86`ty5q~^{Fa&YVZI640bBFHc`QB4Px^(v zV7Z{UfKfeXtUH9ZbGfs;!)0%=O}i~Ov=WOSUo@mS2s>0XggrDjtefOh;j22SdirVo z?e^PWs$7*!62hk3Y%X}o^?uI2&VC&Ep-OBDMs!qkShPgSzf=g66&0#gz9?wqe#&*! zD9(cSGcKMKnsU;8RWAJ<77sBWMF3?W(fPq zS8iQyX9am|d#rT~b1cqHL0Bl~Kkl4~ocU2(b_HyOV1;|-!CmA-p-$YYTpMFs^gYad z>^=Tf`c*bQ4gPneYNSI%B0NPTZNwR*QbZg4jffPnw_+X<);K-=9Q~60nEi9IdKj7* zenUj@S#I-g*B5~oCA%xk1u4}sH8Mvsu%r7X&n8VKV)7hIHB{7A>+>|+)XVG4tK1E(48|H(ExhJ}O)&IorV4v@)5|l< z=j&IUd*$XB$E_Py2n)$rQ`CD~jiT#ZYIH5uOkNhcev-~?H1-fj6-K>{s*9Sy#-U$- z$Ms!rQgSJ5t9GJzEp>xn@3F?ABRmOVpkR0>tTc*l;wt8dX(Tjpl)Kyg*yM!D*~0N* z|75*=@hJm#bL05q`qXjpI_`=3$=$s465UkkxW$j9evibP_rzt<*%K<+JeE!z$=W?c zS9KTK$4dv|X9!nxHy)cdzusNjAo)UiLe@j`BK|;l1H%F9N8&tLpCjG{({<3*!Pv`y zsH0YOsvasTAt#|q!{BIUYPBE2)bM@tJM2dAM%-x>Xd!eyG%YkbmME4o_UYrrR~2#X zNR>z|k%r!NLox&8z6geMty;q=g)&)7Z_71av#7Z#t)&Sh?Imet-6?Ic z6A)G@9w=0)d}QFH-e<7H;-xOeh)IM?^H6?5Ed=o-o6&1lm5CdX4P##w@#O!OAjW(M zLopV>4QJJ0!Tc!bC~H7-C&&`Blc5}YW#-mCS0ZA0cW6|!pxuF$IRV+hg+9awhZ6^}+|N(=HB=@=X? z*h^TySNxaAmZuwLjV+wQJSCln*6V$(WS4N45b8VDsvHM)6pyBdGxIa!GM|i}jTu@T zU91+a>UfJ=8@kK$^cxmWWLx-8HjbN`=A3N23fztLcapQA`PWwV+A52sI!YY*t$ltz ze}*MPb|f?+Dtn*r{_S+Kp{Kj&X_j<0liit}z0SO@&&f73-+Ei(S1i8xhp74==|6v4 zvSDAQ&2yGoGh=cuVdD3?ooG;HdfcaX6bG5tNz%!+1jOTC-^DyXBPB_&(_V$ zmK{5GN1ImH$E9t4Z6CZgyj*_wt{!xZv^+fO9JX=Z)SN`~tKFbJd|!`U{yIHi9$o6q zdEb`1R{wJ8JJ4B2ohwg-Xb-E)H|BcpMDrW>O8wybuI-q^$etCs4mqa|y*u-z;-&qg z@^i=bOWi}=#!-g#;%@ss*iKkHezcU9S>eUT(KO?q?@7dl@!4QVKaOW0~$iWbHpG8gq@hprfQ?I zSWGn@BdCTjHMzMSYD!>9OAxXfll=r}x1k_;&;}vN}F*{XMrkTIG6THqQ41_h1> z1`S++10Ozc{Qq2wfzyCN{<#kU1{Pul2K7%GIpF*CF9!I$=K1>#kpuB>3J9$n$bYZF zB3_e*K(h4!UvRb(>JDIFSd_0Ha7jgqQ!p^DpOPYipIpI@Goc#^M6a*uIFrFhp_0M; zP$?QcZ0Gt`jO~(lQ0VDT!h1HMUetI8H&0H8D4_hQ!2Lx#o|Wx`o4q_tng{k)Z+ItU z}sg%A<|fxt;gplAa+_ou#kiN?#Ygss(& zv(3mW64lxNlYLuIAdn7)Neb(~IRpw&Q8!B7#FdEuHRMlCZm6bX@fAjZUBFLM1*qmI z;@{3hH|a-2Rvr7(vq)il0beJgr^Lyi0tF1oNV;cJZbZw`Uklw9)eE=lXc6v@vUGWD zpxGH=EVuriF3?G$FP!HkvEWkC7diLk(mCa=Am|4?I9i1UY5B$94hZZt*rM*e2~(Z> zAhplw9dWeR&&An({87sDeQc=UaC?LVj!4AuB#oC0MqHKKK%}#hDE7U*bVEJ1W?$Re z!jx{=4_7}bJZ?@Z3JR)P?fD*0duVl=xAF&Zrvs4TZYo%XYmb-}b zyNerH2Bnxptk{q{BNc#DMrI%eCI-+5xbJd&!irzw9KbA#28Jujdlxp4)ZoNEy}wY?kgQ>eNq0T zOFWt%OMt~dkwQflyjL$5`YW@k8UostT>9&sC8lWwGCK)`Fb4^%zrE7<9-lIk0@E__Ym>$!O@p5ROMOB%bpBtxQG zhLwYj%+T~~8e}qd8s{9|Z7lP_M9awFS88(<+ulbaQUyi`GOZo5Z|AQw&<{owZ2H_< zq;oYAG+&1XeuR$3q{1vW=^N=REh1uh7*qb^l-rgkn|fMi3?mhCOIA;ma{OMbm&%g* zHVP?hS{&905lK~x1OF!E2v?hK{8E3_mG2nAPlIfdDX_GzZuVW>(?$rfx!V(WGO8&K zlxvsST!ps9F7|@)W)3?aUJ6AfB)Df5UnpoE77e_GC<}e%!R-S${&7+So1U~76e5Ox zTM%ZV17HhsM_#p+MZahZ*O_qlDPcM{3n|r5+SZF>aun_fvT5exlZvr!b^ZmNET|XF z6x2Ois`{?sVw~rpe#N#2$$Bt`^vpS_t>bPty`^b4ZDhrDEAphYvYoc69aB|nilOd@ z;z`|{j)VM%t52)$g{dZZ4O>w>+^bmL8$sC3AHOa#_Ka&Pz;Y8p;9Gw8`|2Z9-~M#1 zc@ypP_|+28B-2U7W%zB;t-Frv2DHmTL2`ZR1^>%kbPw8XvaYw?!|x8CmMuxR&)Ht} z>CTI0E2kShEBYaXNeO*LQUHI2!l^4VfONGv$|L2ZzY?Z{XpBb8#OtN)O1zFU8P*id=tL{6R;i zF+#<47GkAM#qI4R(tK@}*^g8Sd9Y{@&agZq&wuSm*C(RY+&8l6@kPu z>o|oB@Ex1igQCBqeU{Q@GJmQ28q)NEIS5!fw3}jxeA9=mn@^`E zR-vln)_3)LZOx*08kG@*2T4hlr8vr4?=NO&P`$!t8-SxK-o|rOZBxZwE14Kuwo)@w%K;;i!4;s!3#@Zd;PnL5w<=M8! zJjb<4>4w=p&u)T9*6E{gJPCXH1H!10I2x8zDsj8Q>otRxH|ldLH)~-~me&Np^ivf= zXUUr~9v|d&dlH%MyZRvngF^J{`SC)&a%aW+;TR!~u|MBn;_-L;!}!w~tTYmLgFrRM zisOt(B-aE!6gteVDfW~pZpSxHd-emj(eJ5Ug^6r#srvXE{`m{OO8W%cu&y#(@7iw- za?9Q)X)!6;+J;dk*|vGyAS*sk)8_~Z*73SKF3s8LnS>R66fDN01yNQ_Q7oY1u$n~7 zeK(=IQnkMSM7rz-GP>*eYDZh>lxEkD>wx4t&*}kq$%5x%UO408$&2q0`muVPZ3X*J zwXb8OY~w*PyH+gXJlI;ce(8?Wl1mgJ57gP7)sTA%BuSEKyi~$6G1Z`Lw0OV#d(b*3 zI~SQ=gFNr7WtOk#Hr=!@+82W)7)m|Vo+Gm9Ah)y3q+yxw@VT=5{h~0?5Kr;U>m{WX zQWUZ=0S5j&G7N8^`xZY=Y@sr+eKLb)ASb3ri6mhs)!GPJb(r|DVZFPCZ{4Ur{>dN+ z@B`zy1{>WahGtO&ztpcWDH?ISbY8qj%RMcF;p&|Rd0mr@3tH6euiiA#?kNZhN67$^nxg-$PDZ`6>NF#^)U}l8Q7j>|ow-jM^47`n-#16%IpqTa;+b*a12#ING zo*G8fOuBcHbx(A>u4Xyva=bK*6P1^Fez$IYHjvaHhNo{>wzrb_lrEJ=IQsKl+hv?; zU3$~xxt@6hLewQHCWv}*%CkEF!BfbuY=HvGA$MrL%5Y_Z|HZNex}h*P>hq?L({bHg ze|+5<1qd(avql})^{v{Tn|Ggri`zw2sP{_j+uNp7VW^j5$3n9=TUh>t8?n! z2w6D&rWfKFD8JWJt1>C{%UjRZ zNwAII1CZpz8??^u5@;H8z(&b)@lvX=!n+*NIdvn;dJSwTcLp2y)Tc8-OH^nO!JQ4j zcFswrcLVI<=ibl!(auWkH%Uil&r8;i;S-Ix;)UeQIBzDRRy$l3=j=}E!%A7{ zKH9W%pHg=FW$hvUOyt@){8iZP*%%u&p<*f~Qf#+qRw0elqa^$NbV3OnOQn_<*hgP2G?pR|Bg z__;$m3lfEwDY+<)pD8x4m{t9ArW3E&W60~iC4G%zAk;?k$Qki1FE@dW3WAF@I@N@m zv-QRNWXl_&r6T2`@KtroY~DTi|!I(9uu>TByYQJIO^N{m_|ac%PFhwFoEIr$8+i5BdAGx z`o!0`Ji#XP?O(Vkw2~@SG($1?OsRmgS2ML%Oe+&1gjry?!GFM!U}m->pOQKcuCan2`(7YV3Xgc4%i*OMuId6F=gKDCc%TL=+#BSFt0NL z&V$!@Xhc|ndxPR>XZ-WdOIB@SP#zvt9@^#CCgs=>u!uM@b!w}RW&P6j&e7O=Pd&ZJ;(Nh+NnGs!Q2@m}rF_G6VU;72~Gg z_T)ipHg>+a0{%;(KCK5zk!Khi{w#)%22JCYKVoze8}_XH!2!zBA1gu?BR7*)bu|>C zeU&hC%Wt2xT1@cclsWTRZnSW-dGU^ceZv5ehikWg63yBLPFxQeS(f^CDfIz7b$%_U ztmdie4&F4c!^p9)`p8^weoEy>dMlLAhmv=p^ExGg8>?qBwTjmR9@(-;iuI*C4X3osWQIJ5&=m+paSZ-r$Md*8# zqJ)xZIT{%a2@V1kAM3s{bHp3AWF{n6AiW}xY1*&}B{l^7*leSvwr01v~V4V840G zalJH!wq3R8stK9aa*xnc0c!mjX6W_~J37=0VoWV#c- zU;b_^&V(%}zceI;O=C@e!!%MCgRG)k#qi`YtE@U!x3DPM#6+dGFQ8jCe%kn?D!H|| z3Y^fE^+z*PberBmF|+BjZ$Ti?ue&h6O&uv$<+DYxie`_l!LH4I1 z?idwpcvDgvO5yH@B^w5)au2rjJJDvG2qxLv!X{u_ju993=o|hZv^7vShWQc+J3W-^ z`4IJo+?p=ddqNxLa@P<+{-&4~{a_+y^hhdSd_!fC4!?uKo)>h^K2p_e-l!I-TAu#pdVtKv z=kaU+`gh3KqZOucN~$}F7F7%jj8HAi^(o5d+cUqJVa%mqDiN8)Ts2Py&&FNgy7Fz@cx% zCyihHT?P@~Z5G`oIZ`J+-D>10vIlG!nE+=FXU|Q4F$&_3h+d5}oJNDFK}DgE^I#9W zzawoo1hVtd7=MmJQ&~A(wBBnOaIoU8Vx}U7g|5+bv&KqXJSI=twmsh;=@=qTZOXm{ z_0s9OewES@M?c8(uGNVYsi$=ti&RwA_Mk9HvUS!%e8a}8FEA~1cQ6=335rX_JKt#l zryFt!#D%MIR@v5{CKoVnH23F@w6&|aT~Ga;adv5|fZ!8yH<`D?gC!rG{=M6s_Kruc z`CAKXJcG&)eea&$fgU=>GXYPoAR%j8-iE|NAVm94U7jGiq(onVZ)3xxNR)+QKVX1% z@w;XS!YxIM7YL)9ezgjMTcLSn-r8Tf1mZX>%RhS{MzuQmy&yQH2KvcMBMqVc?oe?l z)_i`5>lX%_X<}GvFkM$4Q=z^JU48#BqHB$jf@t@hc%Fo+hvLVSR%$lZi`zqG{9GA+ z3P$Nc4`w}`Tr=0tP$L9tH+-8awF0{|luFh|q$%oN^d|;KS**db%Dk^Ko<3 zggEAY)Dzg)z#K;%LYV4~P%Tc3KXax!4#^MS8Z#A>X|7P5CZXt+A$RBftq^V@dnVsK zF{CnS-*LLOF8uhGP2|>z;R$K<-S7N(x$|9})jH777AuLy zX;*30FYPa_D3?i^)@ED6LD@O61I9_}{TLPB8Fqa{J(_|Qd++(3Qs9!n7qEO$eWHdC zUuJE=5qq&BQZrd&K4!74@{yYHLb>WNuTOn${9IPs=f+cR$?Ihl{NV2Y^>NS*J5(k( zz9k$6$r==|pKG!14U@D&ki;Iq?~A~xPvpSc*mToVDPWRc zT)SkSspv)+Cbcn}z@1Q4C1y04xF(6_q+cG0vOw8p`mknGtH5E=IZ%=^Z{Z=8shx5V zXNy?yW#ROUla(Q>4nY@F`m1+Em|zI9gm*1E;(TG6m?kQ>a`Iv!{SJwCnTD`bAM?l^ z9=pvgNn||3A|md3fC^|WABfv|u_NBt>q7;!az%Y+o;qXdxZ zPA?y$Mb4N|rKYky@Ix^FNdf*zJQXbEMH$P=NsT|C(rm+(N?;z14dO8wZ5f6B`&%Q- zWz=U*Y;DKbn*c-Naw3YPWEg2Y4Dgdm=rLoazFs+vDrj-9yrItA_-H5L={6uxIsPHVvHGc@W0c=}Y*~Y5kJ*MP>Sy8=<+=h}XdPO#UM*A&33kkb8r^ z(+Le1%5&i_lTxIYn0y7OlvIXd_1{W$<}`pFBv@$L=*|YC)>>Kf(9t^>-Rm~X3GrO=BWX*#gB&>V9!rNn-1{rZu z4aCKQFJ={AVo`Mb3~gWq@LzGI1|G^ZMuNji0DAMsOK-bg9JvXhfK>`T1rVQ%Qv90t z8a3omT;1^)$=kGW-rohfAKRodZ391^%v`>Nzia0b$8!tK0z&;JXqXi9 zPU-1JP|l7)SVt-rE+Q!{YC?Wj!VqM@Nukd}`a{Ocu870g&BqU8G%-x~OmmU_DZXtn zRqm2)z`5-Ri9K&SWHb+LY}({rejh`cSh|O2y7rw#R&&~$8jgB3Z9g&x6kS z-kH$%d7rN+bF5jzSz;(Z&`)Qq>7+$a(M6iT%VHIhsKidCMli9Iaxw^{UC>VGf&$Oh zaeA2-77r&o>@lB3J3n2_NX#TNt?3i>L*c@24@eM0PMr-9|IX}WrlU?JB#|XuFxc$m z6QQ}3-fo`6(YNkr^BE)!*&Ywzh;lgJcr**VmxUC4KC0~CldW=gQ$sXB7u$}0(4XRf zp~0%sdnV~5wPGqGX)62ni>7yt=^#{-ESOxZc|W}@Zp#OfR9|3wLF|PyUXcLy9%+$T z#%YX(YXSp3Z+^QBx3WCWs<3jB6ZIZ$BXrtSWJsPkudL}qj95yRyQDT8Hn5&yV8ye! zF_HfQU@-MPO{qd53qy12@q} zr^|%N+_+im34{xcBkwwv9|Y78nQ8$^%xst$n@2%?19?(F{`wwNQVMis`~9H|BqH3n}Xc|I4^WC_#qU#6n>@j)-)0CGEyqE*ioD0uw62if5j?pdOaAuJ9hsC0{MD`tp|L0p3Xo!YQIx|<)Uzo?lb0%iB zNMqoIYTe4cFY@Y3g^#nMzJ3YqIOfE+@~3c;uJiDrIL5X`0+Z;ZV^YnB#S7=1>|NMj zBIxlxwors}duwhuB<)!ge?cp4$gl#s7Ag-NBBw0%~@2`%MZ@5Xdcun2Z zSRV##D6^RwgQAAE$t^`l*Dyb|Z}en)ed-z=KU*V%cg0G#pXXqsLp1+^n}$JZr-dPu z?zWyI2v##`DZvMW$xS#lf*VR=QHvcJN$~-~G>FMeFdqRe-;>?`-DE`$A^a1#-KT-* z;ZWqArnO6@T18%{ZV#KQuln5+2ug&zhO7FLgb6i%1Lwh-D)7N5`1e#^!K$a<7vDYl zOv=@YAnKHriI4}Qe(9ERK&^?fog)6-@#6ggMqxq_AFcQ~k_!PN6cb73*1-HkSfZcl z&L8b|dd;pvJVilI!^nx|IfBE_zcE<%kLYQOX?hW(ye9y9R0|kAA+znEl2>M)x&NY}^BvPHSIQTJf$vyg{U>JmR zEcCa-dM8FXq@jiyewO+r#(E~UacnRUQ!k@8q#50$tR@vB)7(^8x9@VE;Ni4ek%@#5 zMNEHjsqPP8PT;Q%WJe@Mnaas7_4))|lgq?_#z9RYlh4!QGh8hX5N_>1b$z_#H@kaG z=f5Ri?98Zz+}%Y|A!1-cI({>b*qiYl5Fp_Lqh{bM-cH0yyLBL9>#LWF4HM*QdRsu) zSYB55Q=^?GkWK3<<&$nPLPOl4`Hxx(CH?k#7PLUqL~hbiRhvb}Ef}nz9L7L8E5k(j ze@I{fQm6>WS)uUQAX`jxhqnVFjf;7~KMBu+RNmx;BY-f}H68shNh)xyG=;BjHUmp5 zsQM0dE5`ru#i$U3xZtDVCI-I-=ZY;X!ojdu_{J#6w8k78eyF^%qyVL?2E|007giFS zV3AcOmj3B82b4%-^+v(+zjQb{nqICXGkJLDK%OMJa~2wG3DDs?FJX35MECR4!LkZSqVB1~2k{)d?c`N;)<(XD?8LOo>D z+ZU1+0%%U{QB)EqM>n-^x11Yyr5d|>xIwO`;)nD$aL!eQ;JZI7F7NQ zEw*4HHpIV!5Ga5KrSWimd<4)h>J;h72>;Zu-wL|ipX%B0H>|ulXqDI>o*_G(5+|-3 zT3jrUPUe7H{I4M4SqQ9}z3+|EHo8c&y~4gY43v@LC|FYU-?0?f6C#nT-+ahKK+?8) z52}^uQAYNprGxr2o`jfwp4+s#?&5udbIQ0-Z$e60xJt18HfLV|)GImLXt%Wt;LZ-J zIQ&^WImALFC=lgt(~0zd^9$uDk)cv6*;UWhS*S)M+@an%y5U?ZLxJDfVuDMA1pW1y z3lfD0%f2C1UY|WdDb+Mg;Hj~w%-ugvg@F>}?d*-Q3FV`cYdja>{ZN4fL8ki+e+SA@ z3TiX|tz5}wPH*(U$iRh#E(l=LQT}Q!1d7B+@qT)yAo}NLWAVdLQWn(h`LDL~&0Cafj zJB2_xRwG)H*Y=r)gBe)>I56gvIfC@eu`#8lv!C6x@xh`qJyeQ>EcZdaw<5det!;9m zW0g@QFeo|5pq#07eXT=Z?GUP?1WYks51Zc7ZspQu7$GoO6KU!2qt&*S2SDJ! zQYXWwmAbBI^4i}59#Bl=Wcqre*G&npijNv{y%#$+ZFSK=Iy!^lcdzDzl9FVXXcDB1idxRAD>1ntA_@{p(DB2D*9nh3Fgfe{;f$3j~%1tm$cI{bvp-_yDWQp%2QB zf9Bw8&H%uU*)E&!jQ_55z&P*&N`R{lSaZMs^NNKR7{cGs+Uq^K?100@upEdZhz8njR$IvSK2gpJ<~Tjxp3N4k*ZniU zW>H^Z*_CPOciQ$(uiUoBVR4aS;_s=iA(|$s#>*7(GMli^uSZg^(=OQJVXR@O)cv33 z>FMSr#qh=sx;{^J0hdn4i?ii53XJiqBvvIB}T?7yUYo)3lZ(j{#GjEsF{>$y~w z<@0R{vmt>Yt<}@g+Vk$K06<*hef1Dk`t7|*w%4_mHo)`cJ^ov%G=QQ?mKiAP( zNb2Mlh8u!}zbnUmKq2ln*bB6JPY#eNmCfc4cbqgI)w62n!3j@l5IRl@S_4zu>ah9# zuylpk=W&WEGLs&!RSfrl=XIi;w+oJeYB`- ztEY~PIq*1X8YsfuAYeC7c%8*kC3Em~wY9EF%-iRwpR=mAzt~{wxatoy#oX;>cl^4a z!UMDoN66KUGjcplK(J8pi`(L(pUjs!0rfp#vIu}2!JxdKu2fwBT}Jb37&yk%gSeV+ zmX=(b+^}GhzEf*>YeEXJ)y^#^&80710PEhelcdR*JV4#wet&s@A#Jysp9Gv8jOkhR zE8DK^9md#IOEgGW#EIPU@p+sryB-5zknEGSoz+`-pB`>*%z&2LMaeKWuKV+qe?rI3 zG6K{eH)(Q%_!Lzd=YSi#l@k;mgb;f-k`)25ismx9H2sF;86bsFu5zcFZsbj@P5Np- zrc@O7&jKz6T3-s-a?@az{kZse<_YNT3Lh?Kum=IP-siH9mWTA;gNJT1ZxZzGd+#t*vtSvTFBZ@V87-kpsUdxE2|k# zYx$irkLtM@ci%0Ft-bw9_hb*Wo6fwF%r0wQH`>w_!&s4T7N?}(ou*Nk-&ULED2i0X zSw+lIBB>If9sk)?(?H-aeA*yyJ=Aa5x}MBV%G*J;B#2435>L+$zfZnK z^PRWLlXkfS-0Cv$Bdz%)KOzQ=oI-M-rtnqXV^wRDQp@C!7vv6TBH&d*$Ug+a$&y~B zcs?9AT+i6pF@}ti={=2cuHCKyD1vL$FUpmhd^UJ0G?CHFLR&Y0D)oGdJZA^A9ZhCM znLqucNsretuQuCd~LEo3{sC05pxH7y^p+>IcA;4LWfTfIxUjZ41sWXnQnUKpi#{;m;!D(}l zZ!g248BlZ3?P2!`O5pDDKNbkB)dGm`d(|Xj;Sl62VrkF&gCfFq6^Bt~@vg*luCuRx zLL??ZDsG#^pEas%6Ssh+=y1g6<>_X%_Q)l#a#lrijG=iyFRFfX1S=Vct7)^g$LcAB zT7~157!B$DW=qTn)=0ww2bkU;mDN1b&V&%T4?fhX-*>z`*~mXKQEnx}zD2@zT<39J zahhuaL>k>+w(CuI8+B2|yKUKcH-_u9`2Sg>4p0R=z};v?nZ)y~{OR*4wG!Z9MO4N< z@|g+H7sw_u1_aX}it43(kcrW6Mk5#}F2uG#f$~=lFjZI4aocIlH&e zN4f>5;e1Wg+@M8eq*RjNWVp06gm zetylLNNYO*F-u$t7i3**0)U54qQr=B?mZ&Lr1(go$yfmdU|Ho>oHXN5>{rFZYL?xG zplg(($3|O*JD3Be%-NK_K$2=y#_<61dtkF#D+KAIl_8~!pTiZ(o$L+9k`vyzv|ari zG46wc$3^h!u!m)R7N9eO@EakE5xv+z7^yOt9K-_GJ?j{u1^n3pnMXz6!1=>zCuAF3 z$`CjmoA3qG6$&m(FT?jv2qMlCGt%tJvg2Y$?>k#%ypOYg&KuvrA#TqE6iKvm!``hG z<3>zE=_with@XlNvoPfi`46Ik&3eW#9Wdd%0ye3hLnI_vxL(Z%g%`(yJ>Y^Y-G;}P zu&kc?<196EuL?Urfj6Ob@Vb8UXkZK+Trb&76a=8)y;%gSpfZE8HL%&Zj1ER7AYm>n z{>lK%-mjG>z!vSWJw|=oZS}ni2DyU@BtsL!t+HdcHj+4L1jn}npYI4v+?(0;eYwHl zGJi8xxlhFb0@d~B=sq1>8}MThs6+I->t$B-oE{-d(wCiPWElU2eaO`+ivLzKuJ zqL)=a|DG0es}?Hiwa2*^Vx)JkPx6j!U62nnBUes?+B^bgetjQL0T|o;(%9tEJ#Xk>)C*rTXZu1|2q8s0gQO%EG!$Vcv~f28`iup`GKGJ{W;6^-g-j>vTF{l0_)ds7u$STofq@BQequy6-SWVr z85HhXZP~M)zIG532ZqD9vFhsj(|{+%hwxeD<8qK{9h%D1A0y$(1V|=tWr+M0M%UnK zFhmfl-$bV?ON?~U4r-HiPzU_q=uqYJEv;T#Dj2>0wWeIJmt8$u{h| ztumf#FgA;}02p-Fg9^E+W>;Q+h>Eet_wZ}0&a(DBVzrcjlILisU9h3EMi<*~sr%?C ztlem{!Mg*kTTaS5uGr)`%2&-KUvCevf~9|ImDRw3CzG`JLFJG|2;xFpMcdT>aJL=r zW?v{R2M;GG8CrEmLsdQ=$dr~KMNsZp*FdH2I(DBE>!fLd+CjZzM7EevHbJ(7`zag%QOfA*+P=6}?B23Rm8{=mzyxM9{nqJ$y zQg-MlNJ}iW{u>5;V}w9`1LIVGOV?MYTaZO~jM6()ix5aoBjSHrv(fhxJ>JzyojHFOI@^wyACLVY zfwXg$?jLwAC!TT8RksSk%zT`i3bkb=RO$xA3J(_W7q;>!@3&EXWVP_|*uR$q<|y~7 zB1MoW0=nCB6llQ}`ohpk1&S4!$)MWWZ40Q_;8L^`|3x6G^+lyY1J7tu4-47i4tPU~ zD#!nH>FlkdULsy&*9i^_bdp9L+jbDIDXkh>STJZh=x5}ti&?J@ZjV4#(thvJ4m%Hs zf&`#GW{4{@yB0G2RtNFu;Ad{Nt2R+|*&dgFwYD}7u*KT6o(1<*5s-oG1Q9|H(1|(7 zKeX#bcGxOr12m#mV;-xe|J^Ua?`oM+5(t4@hFIf}WNyINJzU;mr!iNsm*>3g;g!hu z;>-2LC?yu=XXCM^nkoa=D)(e)n6{lox5||M6JSC^;dI(GA5iJC2B>%%6T#vT%zz+i zOL1gtM7J*|8;aEk1H(xAF(HOXc!kr!}6m{!x>~?Zi%o&BS&CJj%7IP4h&zz)5mS3QZW~j zkQ5FuER^H1DX$mHX@Zrsas?<%Po++(%L%Dc!Lhlu^H>=W$5X^bkpFuOB@RD@t!^kt z-dHi_x&9@b6X_nzyxg@v6PrpD?1emIFRUjp7#ay94SQ7F6oww&m6RX*(XD>boGuy+ zlAKBiKc%L#dn9;DO+bpo`qnS^I8RQ6IjyEHmPF;JzP&IBB|x&%@AZ{^t}KI-LTiJLNK=l3_)3PO%l*J7m<ML9+CyWFXpe@m}#%V}{VQ378`T|8ODP(3B z)`S!n^uyG1D6O@{+EKzOtZPUT|ZKc7^O?TDw>%_HO}2W3*K)AhF|=M z0}Gym2A{xQB^&)*nQD-je^q(v`t|7qeN3QVbyFEU(pld;`cEjJ0!ks4`TG8(+I>of z@%E!&JxENf_&r6hYV&&$Tmh7x8dx4yK|OZwt^F zQ{Py)B|9?y3qm0Uf<4>!Hb|9Tl{(HaR~h6n6uKczgkN9nrrTUwS;MR`ShRqWNps8p z0hRpZg2A>6vhoWOTrFaRHQ|N&sLd_8lvwuYaT5SLDe=2!Ov*Pm&gCUstw2!8;ozfNRORE&VY4*Jh!d zQ~)eCFKj8O|1X#>8zvy#=AX$|}m^SJ&0Cud0nkV+XwZT5ds3E(ka{cU0@$n@-EDp*M)swoSU)ZK)1&#V!r`WPk< zOP-{7O6XSfETy;m+qRpXa;JyWEo2WS0b4hS6WpWgguq(9*TK0*swcK9EE0Gi%izz4Y0KPfQQnvh^ R8(_enq^O)og^-^A{{tAbiV*++ literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/导入扩展文件夹.png b/extensions/shader-graph/readme/导入扩展文件夹.png new file mode 100644 index 0000000000000000000000000000000000000000..c0ed0bea86761c55f70de15ebb64e2cfa3282b23 GIT binary patch literal 17959 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 My85}Sb4q9e0HyD6@c;k- literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/属性检查器选择effect.png b/extensions/shader-graph/readme/属性检查器选择effect.png new file mode 100644 index 0000000000000000000000000000000000000000..b28b015f6df3174287cc6ac912369c54c63799b2 GIT binary patch literal 143137 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

jD91VPR%GLa=-ue&EZE(EaNoe&X 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�d(ewIxnSKz!(Z+NXx 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 win*zRdi&-=OG@NF056A>pa1{> literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/整体结构.png b/extensions/shader-graph/readme/整体结构.png new file mode 100644 index 0000000000000000000000000000000000000000..09f1eff44250d98be2360e07e76873af9de30418 GIT binary patch literal 194917 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≶|baC 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 cIGLkp#LwLYIbzzOe6guABawr-rLU=Xs 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 literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/效果图.png b/extensions/shader-graph/readme/效果图.png new file mode 100644 index 0000000000000000000000000000000000000000..4fec3f52918ce0ccb481f77bfd0a977052aadec4 GIT binary patch literal 1226682 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%0Ag|8-{5Ar$;NbW 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

mAo<8N}EMTdaX)>d9H)gqR-JmwRD4=1AU31mu% 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≠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�d+ij&Z@b!; zFHNf>+TqBs?QRbeN-9F=8*}&W>Xg*fh0GxNH8#~D?_nmmuXUl`5l`qw*TC6I(GU9N zEd6n+B42$F*rxL;|Lksoh-_gfcpR0MXpgq8Y_^z6W{_1HJMIo%w@Nq`ENS+nhwO}ow)K=e{F_%6?G%k@g_N7ag5F80| zD~C>=;mT|XdXY%+hH98 z_k;zxoMY0`hM+FgxAaE64jBO9wy%N8=LFLTk@7cn^ShWKLq+Vp%4M7}P5AJyZ~NVl z75`$oD4cVt=$dQjHd(P&*#}}uB4<|%UQNk!iGNtcO0-jmsIN^1BSQ^)mxrvR@&{Nl zBv7aCLq;Hv?NTb1lhyo-vnFK6C-Z?$Oh>JblC`S0H$eu20C1pv5(z}A+P591$UKrr zq{=;G`$qQXwCLBZ1Wbofz`?~G+?9(?hkr4xQ?tynl*j&QE3a~Yy|F8P*>zr3Jv4#S zEj-fEN9ob0U6B(Ke*H$9mxqK6b0Xf_{< zH1UZ3SXEW`+91yYs?A8gqN=9$=sVUA8oKk1cko2DtB{{SSryM@W*uC`1+WkI6SA_t z^KU-uy-%u1qlX0@kh*RnpE;ic<=0*^LHWS~b;`JDYk1Y}{8M#5?n(douv$U^FOQs4 zx`ghgrg$x6Wv1yy6Jg|yT~>Hi!~F9Sx8+7LsSu~L*UilbGo(fVC1{X9CF(A)uADfA z1+0!5(njhIqx3pmaQg#L@gHOS&%6EO{{g<+CMQ3o_+GHs^N;WU+XNmkw-AW~?~l`~ zt34cRUkn^&Sa$4y9bPZ7Ur>nUBDx!HJn_je#3KZ7eNsJeq~t=Ye_QtHd22EeQ8)%IoE8{uL~TyG4^c!Fc-3*6hCX0p)_vL42V_1)!Jy1xaasqS>=Q=&rDfyw+Q-*=RKd9jXh8b3CYMRu1!BR4h0v_aVqx0gEhY_ z#Ltoa&mSm0_zsQ0JU#}4>&?nbc%`L*i(d8@k#nQUxpPG-_sf7JqI0?-_%*6AGA3rf zhp6YxsHlC`i!q!xNpac*Ie`qfRbnkq>jjboFgKKyl?|h{$HbB-#4)>AtPEC4*}e=lKXEK7kRsZl&+OMTJ*p=rPqK`RngtW6js^g*q zZx2g@IxWTuE^W(_x0%?3}v`<~d9Y&l98_jSJ5J&bvU?NiO8rn>^lrwCUjxp(V$OG=AlYZJ zD<38PxF)UYKB`JtkKyJ66c~lFs%!AVk`~jQlr+XnmjR8+_=G%KOu3wWL)zktasMt{ zdh?j=ibSqBAV_+$Vzdif9b#@w$d-!MG$ixJD-R8mhDsw-*cjyx!UPr4Lhl~Idg<6+ zFj_ACa^%R7bE`plW4$3o1y(ELPD2?NlkUM_&9f^Lt1H@oWfd99N9T@QoO5GNbb6@qIY0YefaAc9w+Z_nFsjsK+ihe)ECP?mU#&oP9pj94j#FY-cV% zD@tz%{U>jND5+zNqC-U2#}1CM zF&~^9HR%eZ36su*Mq`qlOsnR}x~Bg3r87%A>hoWivc{KNiALKuSTBiX2X+Wm3N`sM z&w6H4oXzOexrVVaop}9YG4+gYde)ho(yK%0Tpzpl1ioE^s77o2-qgheynV?%Va7~h zlk4M5#>@fpJZw!GSj|kAnwi89(eDDeAIzp9`(%%iPRT92d=u^7;<5q_pWRfG-iE|nb>Zwpc^=D=RHoeywm@=+NKP#qJrnaJy)kYJxtrbIVi9ffR~Oh z3-M0e;&7a%isuKC3Qi6XUDdD6_r^Gwk$Qb*yG{qQqU_{*dL_hpuoN(zaeo}JfX)v0D;iv{GOg$$uL7%?Ux!Sd|*b4OVSAoov>T96t-K0MR* zG&EYCu}BWIA?32hjM;VD*QHfuBs7VqNu`snr%7#6$HN7(!ipe@+xN=siRWUB0vm<6+=x>S-s)$ggzqZ|nj+E?q*&G~L^f%@ zV7PJS3uDI}V;YT#B#Qp$>D@D&b!+j%0*!C?9Zte{pI*`EN*G*m#HHgwTDC9ow8UjQ=LujrvO!wKN8Y`4xls?c%r2EW2>_{q>A`51cSI!3^w`zz4rg%R`$XPs-}OBFd;opZvTmRQopQ zy_QezG@)&p+)+PgBIT2B+CVbY3bhNn)PbyPXe9#O9c)l z(3(v`uD!fRuRuGau$=soRdqkedA~M%s|NFekAmjm3_A!ydLvLTKN{7EWI264IK%Q| z26^$GjY{a1;8KzN6j_n0so#1$=kJVa%Q*y>pAF*BjDX(Z&|A2krC-iy-$`tF0{psa9trubdEFHfWm$pzEA4ABAjiKyB%WRm4#HwtGm^NR9Dz>Zd6}<68UrON{*cPm&JP8l; zXO=tRM9y{=MQ!$wQ+wduRzQtgpx0g<>2JOcCw;6!2=ofK5qgU^|RsNxzp+K z0KR9ZMFU^&ZvVnLx=)^?<=e)LX#C7lA{PBQ-%mW!^zpDnJ1t=f(b^X8*cj6+W@RR} z+y&!N-auWfkY)Fc0vT*4ZsZE+ELxWg?NV0o?C?9L8^}>IlG;!+N4y}QkjAi;_e+ll z8YnPKr>XcfkAXTHp*ruB6hFGMPco4Ht`0NhEPAUqcJ=#+? zV_s5-u6Z?<8Ca=_&KPaFoL@BU>U+nU*O52o5F#rEew9K@J+xFWeyRQXiW2g9(G7d+ zMV5EY(=ElZJF~hWq5Y~5o}tZp$n_-X(6!d`hMvG>9b*`?3%=8myZHn=&VuWyZ}lx+ zO-V_SApz6W`weGZq?M)oGM7O?b}@Ad+=anqiv5tdh($??&Xy*U^jELyD@-$cU1yX; zEkI&ZV&>wKo40B?dylPq|B$~;&#D`l2;|q+VBaFrT(MunN@R)D9fuQg9t|s=xuYMO zxT`UQn1)i|I|BXEPCm(wAe2hJhnphugPZlA5gn0|GG-(!reY_o&=gc^XZc!W@eXe>|n51Zhfy_QX~j z9E2LW9Q*Q&+*$S>yoCHiU0O6!SV)r*BVPdo!{UMX#>sP^dk4aTF;(YXrC5k6( zgv^WLTRevwA}(v2Nr-zJ-$)v=aK!){Z`_B{Wgyzs`Vvd2 ztA2p%(w;axjJJ+O5+D?bmL4CE@gN(CRy}YqW1rYcWqd3xAC$mW?d1D3?bTy~*Ht}k zlv_A4;~~a<88^`*qxoXStoYPsHhMDF9Lbo#W|1vM^Yf8ykfQ^CSD{_i+m~M ziok)Qy+iX6k}g-&(Y}3qb6q{JN8~m2w;Na7SkoX4!`jkB@Nl%jm|l|)3+Ol*!+y~;Y6{XENIaGj9pI2R z{|xDHZ^#(KzRWYFDic0!Z;1#ADB2_7l?@EH#gVt^`0PD1v*CL0Qsq0vDP6YE1?}9u zadZ-pf50djJSh2A2Fk?l9UIo4r=MQ-`4}}KrNS4Im($!|44`!>We9=k^;4nd&zbn2 zR|TTs1F6n*odX*hrv*XCNJ`MRueT;}ff3P9gH1wO6^nwvYCT#ePA}ton}=Gol}F{n z6E8QUR*nHd8E&&L7GE@Aa1>Gcz1AiP1;56VjG3q=-!CwKj7Z+et9!^Zck?CJJZ1g! zt5Kg|g>O$Tf#T3=74%FWN$4KHnMB*!>!k=Op;< zSjN!qhBVmXN?^Qu=XUfXS^o78l`v>++*hg$y=Mk*gUdG6c!@IlcjxR2e!NS7py#~0IJ z1>wVa_asjolz{L0dYfF$z?zms+0}=c+`ngD5<6yRCokSSmQj@j2hEZgwn$>IH^z2d z$1u*_k=&Om7}WyCW1K2nb)Q=B0)@-8YBtx07!c*_t<`KVLD3OvNW*vs!DWP&Ah94B z*9A1_f*ezwPB_8rXNf*%x`yS}u@?x@+v6I-M*ZPrab3RNUnXuMC8sgg~y>?5x#xn6d0Y3cfGBe-f2%r8@)aak>q?Htkl@df%EvQL66KW8_LAXl;1Qr4&=@D zh9g-p;;rGmx0_w_P;^rbc@Q|z4i3IGNpv-M9(df25Rj_SL{%~&41k$S-_Q$_Y!!T8 zPhMKya|3^?bUmcaow#CS_HmOUlz8wMLoD0D=-(IN=djE8j%4(V+!YdR?DzNSPF#!+ z#PDF-=vk$tNZ;{1hrS-~UShxggbB55FR9mGJeZ^WOL0N!(AF{uLY8oqibp?cUlv>2 zMbbiUk+Vze>}TeiEQc5G2L>XUf`qsIOS6{+I&VnIG!R`F z%4=)vE>Ttt_UB0?>KFC`7xgRlCve#Wazg)-Az7TW@dWlp9@CWm8Z>*5D-IYAjr$Jx+;Q zn&QCI7~Nc`1k|P z*7b1;am(YzsWNeB5h0R=OMz%)&I@uo63ls$5JwP+#%+xju|5eIfsuKxjbJRT$hFJr z#y9&pQ8rYbD5(vy#-ZMXFZDx&FLN6y6S8zS<~EaUjO*90$FZ(;r5z5Xh_Y1_`Q?!~ zqy|ML)pJP-Zul3*LI^j$#C>Cjlc&TOa?2H#Le)h|C22Cm9@jttW(w|XGLboA(Wo1- zzNsiBp0M|0mUj65qHp*DAKA3#t^Oq^QD#QV8iK^XR`ui(-r1XlHOz1dZSNI?4=Y^y za4FJ3q=>Y_{efh?1SgCdkGa>U@83JPtbV6l$hC5kS32QcA$6N4eQL*-F&9#2RO4_| zTq-#NN2>2Z>ByT~8_AayT+2<5L@`9H^TfYjKfd``#qL)jO&8Ikp5VIJ)MKZkH7W^X zHcDFXuFdz1d2ZJ{W60j9Wa;wAwth~GyCSHB>C87!_L~lO)NTG8W!^&&AZ{rtFffD-EU-Clx5)dTp1rl$yF!bZcvjA}lV3X&Uq)M)HAPc(|%YOw!5ytx!5nB^Nh0cd3)O!_uWV5r_ru^ru39U zV<#ws?0S1dbB~+dqrbqEL<)wuIi9Ob6<&-hK~>&;m07nb|Dpn_UM%(C@XQNA{VUUK zN)YoS_uC56YHeb74@g@ObVKS0HK(g$eaAfx5qImd^;_D>7rdYf9*b3s==Tuq3DD5L zU};Z=f}uCuqC~o)8po{6@%0|5<945>1iNGhR`G30K_6SgQD)q$oA&G29e#GZI;U3FclSeOJ)EVZ#t_IA8Pnx(hP ziES{K=Xdl2(uNE*bl6|E@hj%Yy+AX!JSj7W`u|GN{ayoqewF!ARb_4T?pmqMJz*io zda*$ZOtL-rz>k$)11UCU)i>udxj!u?&9W&7gj-AZ9ue~53zC_r_hOrUXVSt*ah`r( zde^0YH_#yr$c)sqwEnn$WbK`!3Ge?5|{g0CS zrg+6Gq<86uo`)AT9|}W9DYI2V1uw z=pdx8S~^w94)}jBHc1EL3q+kC1eWJcn_IKZ%s4Rf*AOYo87i%icHxjw#|@a-c`3_S zDjH<(+B!0GdRctZhmgtLpkhXt#bu@r{AkJ_i(?ACD=LxxbARu<)%{<8xNyC3YVf8` zPsbAM-oGL*TYp*b^Hsig{tmqyLaBxCMAnhsmCicMtdKS*)9Fq8hWW>;k01LJnH#WS z7vFv^Gv8Jn4)nBtu2qi%+WYeX^iZ1-w?yU6>H)22Al<71EDD+Ai;SeO0i}y~#7jSV zm#_p#^L4seg|i0mPJ&2#Zq3^DckJ&Xknv4@^-O>u;x_CweBN+wugQR}FO0NyVL;0~ z#ZG_1I{L6J^!Jx?VYq`KbjQ~kb^*_r3)o~@mB`@YIUm^oGb~H~HvJa}oD!}qe%Vlg zF0O3(q51(T02czf(+e*f@cze=|7iOBFwMWeI<%K5*5g}5fF~~WdXDh4Q!GWq@BQ^O znF^!W?q_HPwcDHR7?fAL>*LwY432Oy_Q$Z^{jQ(!>nk7H!u09Ur|Kac&S$H#!b%=v zsxCY1S4W@A(moW3%%!xS=50~qMKpkbnz7m2kmpAu4R#$F%?NsUH5;)&05N1UI2Mca zy#OH@zo`u@>dW&Jdc;OSR)FJu1gFF50!Q28BDBtq0ZC@EVfFoej;9Ycbm$cMnrnS~ z@bF)y|~cER?fw;hh>h%H3RHVTUHhL;?FqU5im)nQ{sb&2Ba0~HK~8crF{y1kG6L#@Y4 z&#g@Aoh%p$Hn;RAEu>qoRujRXWBpk^P}_fm;0Ou5+KO#WyB}n zA71}$+hn0o(Aa~sn||yR@>M|Gx)~+5{p(!#w$-v$y2L)D{$b4jY}+Q~zU3l?gg4Iz zp6Q~kTExhc7qNtC_t>DRJW8|{V=2v2t6-(@+GiF~Xksh&Sukzh!|#Nd*U7p5=?|=q zliEgE;?$mWli4k*(k{A>_C5?hPF^`g+`~`sIOs#}HcrJ9G^M{=E)~rONCc_ z`t(T^VA2C{n~Q+qii>;NLHQ-^`c~1a5NUu_kTaHAvErw>R#kQRbfUSM+S!4eO((j^ zJG)mpP9xk0(TvKP;;laQ_PO?sFfN3{f63XpyL@%o5&bQv3fM6mHNOBlwFCly9;OP% zt_8s65Q2c}`STm7o5o=d^xSyQXy&@2QY2aqTOx8GVtJ-YpmpKeL}U>Suma(TRKO`- zk_WEjO+WOdUEC8eT$lpmDms}B_k!CP~V9uxj;*Mc?= z-)AEBMALj?Z9^arGsC0WaJu|tJ)mLI{BrPo%q zy~@>udhf1r$$8733daJsZ{Ar7dBzDxvdteQ?-Nnoo2%mKcPjy7%NUX#>z@=Hqjqj{ zeBWeYvp*Wo7#u@L;G;}sO{_`*v<`mQ>lW9~&a!+C8%0tY-pK%XG-TUT=)-vrGzStD zoj<7z2d`XnT>8m3_a?!t6&vWa{796M$n_7)>AMNjBQjPEmL2tVFCvAX^t~pEtBUIb z-XTT4wKY=S%Slgw+19^HI)b?Nnh?O68yOw6pFti} z%O24SpIxHXA_aNm>;3B{&(*x+&O&d5I6s z-X>SZ+q2uUO(Z~Rr3hU44aa9L9a7}p`9#IHD1Ti~rYIzE_pcMa*_&LZIE%X{ zwv_VigJ}C0D8J3|SSTwYo7?zOpfpFspV;xeH(4|XcvPsXjk)%Cdo5QQ38*c13)ir~ zqElLa^;(yXts5nKSUEpLJeH7=k;yu>?pjq{79X|^#XY8OS=C`U0KX%!l19w=yir`d z=lGc=KNPllx;p>ay>H(z_+JD0_Sf6U;io~EYB0gfPMg&!KZhaJelTz!?htrxmr~YN zc5-H=UD)*kqmmS}ty6cRo@vfRM~ukDtk1QGl^4IO*U}|%@;S!#pfG1Z`(4ms-PEz` zVfPrQQj?4Q(saKV6^G`?zxq9&v8r#`jO85GY@xr zk2FR?A2vr;%2}DJi?46(;xBflijq`|9RGv1hDhE zK2O5byl~$3%NuqbIaFhBvbbD7v~PMp(FS5)C%NEB=o%FV&BJBvq|Lz(ahp|wp3?cK zD*6C6U|iA?x}c4cRe}|*B&l!tk&~$Dc1Ve|_t%*uKrVLbSNcpbz_WSSmaSYAq=kyx z0WK-G5v!$TsOpvY?Y{c-mHgp?%4xN%Q7E@u!i8D4}SP~>h{g+6PthF zmoHxKUp@-{dG{gDK@IX6DW=$Np+u0CX|*s2H%Djk(OcKOoBfCYK&Gm`aoT4kEMiyP z&~w}`mEGOvY77V3Ti!uwn!%NxvcazyNI3Uzy|>?`OSZ`wAK$_!8o11j;Hy%vqm-lC za2-Ne`R7EY{N<0vJ*AG=vR}$PAG?NO0;S`H#6qjLA1fFv8c?wrIqP@cJN6*yOXwN) zv;D>yn)!Yei;V#_yyyjm zEcq1#f!3`LUP4ZvT>rUvOF0N3@F?mR-sE%_=~m35EZ&7r9;n978=uhVI&%xJr~=k; z&C=>4w3sGM&xZ?47A@J7UUB&eWIv2%w~y~Xe7Los=u;LJtv0IT@}!X|^>n|CjLmES zqI>_IJx3AP!(!caUS>c={#u@R|IVWSUsrHL*Hta^Z^FZO3;&Ni=V!_Huvt3Woa(<6 z<-BZ#`C6_+cN%t|sGf??#7G`aJ>bt7?6a@IuQV=l+AJw*0s3|y&fodMQ3>qHxlv?s z(8hQRCqKqO;z(kY6tl1JlFp@+`p@@y^{&QQLckFiu}L*QQs&D-S~g?m^ZdR1h$jr* z`Y7y>y;?u};;U6TtW^8yyB%A|xU+qVRv&liPp^g@+(GX8V@+4e(G}KSsMk-T*H&u| z#)4Q@9J&Q9aAo-F^2WryOYl|6aVsFNYlF7Lo;nTAMbPYw*mfg!kttDV@iICx@}j3& z)Soo<{?|<@ys(S^q-sEwx>n`hy%9}K3`BxENs@}#*P(GB7FFIoj$u8a99ua5;qdp; z9}irEpD7R``PE5#ggCvDee}urFxO<6t8c^V21D))t{e0{dDB?je%29L2Z`J^ZE-@uX5WKW0XCY;)`vbLFgX4$ou*)}l59K6LlpyOULAUTV182BDs_vY+qt zc}6{&!R*J4FPLyQ&uFXXwsD^G$8Mp&BwQoxnOIkC!G5NnV|I|-c==_es9FP5#BIM_ zxs^9qWy9&ig(%#^P-Gv(#O&)j@2x-Rxb5XGt_k-JD)jW^FW;8+)6)HW^6?8GOu&_B ziH^CjZOJPiK~%=X!D-PR|BFYHJ8F+4?<;aK!iTocJkU8IlB+EXME43&{%ASRr2cRA zkDm;?pE$FaO8pMx-W2mP&L+_A{g9#E@%YQJh2mM6rwh6yj!<_p>MSU3HP%DbHI)sK zLv~|I4(ST0aliFX{E~JU47;m+_$1gd)U;z2(?Q8Dj0TvS=0U+lJ-c@d2F zT?K=9g^EB4{{ln5p3k_nX{`doYvY#)Q{$Mr7`&$4r^%To<|zBDJkIBQHT0{T665kS z&ZHNP`-2XytnQJoitTY9sIIY|n`xWAgL*Osx@+8&7J88zBUqCP<Vdus1G|*gbc=5$k zEn2sw*dNaPuNU{?hkk!#pv7&D24xOuZW$u#;lu09<%RE-te)Lhtk%vKU433GtRdgv zgQg7dv2VE!^M;{G2i!yNQ98f)=1~grGJ|INR;L#<>eE|4EAT~C>fWRAvfMsy$x^3k zAX7O{3hw#l^)R!F8}?E|3aX_IaM#dJ#@3o%fXzGQ%~r!&AV?(>?x=vK;OOI}f|tAZ zt+;yiDoE>GG86Y=`WcPfZRTci7n!>c3JKy4HJjqe`5Fe#oiTM$;^H#*_la9szrDYhsUr#p0LzcaJ_idVG1RoH*cm!HS zZ#;KuE}i13)vNXDu+ma{q<%?zns$36j+I#X zORQd^bAtWjk*F`PZ}y+tZtwVzrZsaJ+m~|D;f3GBVeinct{Pf$;Ed%UnZZu=Zehz) zg{^_wGvH57@ekVd>tZhbN0|H9C^-cM|Mtr-zjTtM1OJBq|5s}%nAiA1M!0g3iGiwp zh=%XR9|+>hg3knl>Pa7{E=|>Fah~DMm&;Rew8Vm(9IFDFrNCc(CHJ}Acx@^4@hwa1 zl7AS<_Y<{rhO`5>JXCNr2vpm3|3`6);QediFyuXFg1~8*>+{s=yA&pqSRBqY2YriF zpXvUdb?erR2Ud2v-n@C!+}QY1Vq9#jrH+mcj^4+-&|5Hoe%#d2vB1R$lX) z_>e=kf$}d)$3RBrY(@PfJ3*#8es)f&*5c^Vi%qZda&mfea&y~ebROzk})$gD}|j+o;i{3BU2FE3+*gZHvAITaTizofMRB0 zA+fSnr&(g-u(X_IQ;+HJpVh7 z?#+4`uQE_)@aJn$8>F2 zRyzAU*}|2wPEb4F;Y+?Lt9+KHavo3bm7!FD&@-sX9jAY9@og_v~_|s1Wk!j79;^H`} zr;yA&^WLj9!j2#_n!+or zR{W}VjmY)1Y5*h5aac1dFV2hz1u3)crpz{NR-R)-n%i1Bm~gzF4XDmu6bh(`z~znj zd&dp<_BGwwAaIGqX!dg>r}!x^*gpcI@4lK@kSN&~Ql~^l^z2xYUj1%(Q#NUSGlQi- zCA0z<55sm~P&(=JAB>R1qZbGT^k-W)_BPZ@Nx8Q-8QNFtu#-A&^4p$sWk~10_zk$~ z$cd5)!_om?>m<<0<=u6paN3#|L6|D-gYC!Fxxv60r577KzjHOdE6RDv$pgxk>;4$> ze;f1PFLc4p-B4wjj4?4d#S=lidq)gDJK70xh|FD~2-t*caH7Q@U)^xXc`uF159k#wbYqbhn%jRXJ zW7E_35-(ig8B9AH1o4dZGsB{iPzv#X8Kud5%exYEDG(JY;frG9bATZ(Vq;Q6KDpkAD8 z39htPiuz=Bo-5%`{0wbb&yzn~U1E>Vi4&|d7cHLG>=^JQ8era)3K!ks6;M0UlSx>} zMY8KRs!txmxBwO14@U>ZpyUm^vsQyyXj(%p0uF+jxV&SKzOa>lVH05Q@FxpM(^&-y zi|&=c0d@mbIGLg#<-5yP)GDRz{kImt|6KM1xl3kB3uYEwgy8z|b<%mVh4pt&gFCdx-Lws&nN0x4iR&2aCIky* zp99NQjw(rAGS~kyhxa@y1l!qF)Mh=NX^=oO7TR|qe(_C4s}!&I3oM9e$SOqh?e+V& zy;5;JWMK0S&ISt3;|dGkOG!&dFaHEu&?t~?ag^5rx6B$*AtcNP??HYH)tY~l0$Sd6 zqM~Y`<17<H1jsK-=A1M#Ubil)?v6z2!wuW~dY!Yx``B;g(2;JH4y)8y z&|EfZ`LN=Rf#5YFPRx}jxBao6U74~BQ#k;`m}xN^FJg8fAy!++F;NL@9uHL zx`PIUp3rlklq*kwI%}Upl6#atd#{1R7&wFxVgQ+BHG6A-LQzsiFG#yJdW*Tp zJa;%%&fCkD@cmYzRoIrD>sp;9VUl^~l!$BftM!Wm_&<*}ow!go;H$vPMEFjg1F@^b zYLIfcShRW7ABK=dTZJDa>nU@xw2CgqYgx@0DBV6!mlbyZ^p!m|--pfiOK9Xb)TFh~ z5+T&vamKQ+2AKeNEwpctie_+WQl-Fjo-Il&r*&HEhr9$u*Tz%~hhbOv8R)`d{!>t9 zejX}{e$h#Rnqsvks6f@ZuIHC6rcfxetOza6b@>HohhPcufLNgLojym&>UFt7%&i$E z@t*~Lj3j@$)9-Ul#psuC2zwdC&9XH?$f52t*Bht!_Bz*fdR9&;_knwe?uyWy>rU*- ziS7d7e>2ucK8%y@uB&gVDI~g$gLS&)>lX?CVJN{GTdz;0L`>dtmfN@T z&GsET@?!BbrAfU<1Lx{oz8t~j1rN?gP8`_==dI7-#9;rzpwH-|&|a_&2L;FGGq&m= zG3);A%f}K*5OeGjHLw@N5zfK3lgZA>$(hwqSUNQC3$=67E=IGq>7*wNtOx&4iEYc*X+6swBX{7+y#aAeV!n$6$p(mWcrZZ z{;sV;z75h{z26r6ZrU)~jtf<{d`o=wc_U6hBVVyv?oTead(*1>Agg9qIAKV8{NL!uW+i0MA-B6v8NP3L4?rPj_aX!-4u0BR`jN#_MJ?xY| zc(7PpFRmLz)}n$(^YKg<;!CgL;bC+5=c)jCIInMwupc+FN7sN1C~_hwb?Jz`tXOT_ z!`alsGV$rysfJw|&GFeeIh3BfOizqj!!&B@1k0arRe7lSwJT2q ztL4TuOZOW$e~eeP-phGE;6W3zM=~opYQs-{AQqRz^KPfAmtBaiZ`&z}9#GPDgT0T- zm4rr>yLZ>=htz1!Phfh(Fs%3ag!xVC3+ZEX6s^IQ^LdsdmDk2DK`+RYJbh0g?SPe= zYgyWGV(~XA79SD>6mWs@2FhQ*ag;v}YFUxoRrGlx)US@u=50K^V5@ZH!^@I5c1Hm^ z7Ofxh%Aec+LZ5Ft(r{%hY|UPsK7Bgs)kE4KoK5M|3z&2qY*NO=h0vew)R``9%=9Vi zzOYcTGR2epyCfyAyYNftx#Ht_B`!3i9GIedV4v_ciCv1&$;*Mg@NY zDO?ATba}4D9y6RPDF~ABpQjaIN`O=AlA=!haMe%qOJX&rWp!PVLKpA1eafypt*HY6XWs z>MworuR_!J&ry(Rc|`{o_jp@KK6r!QwCqesqPUW8)UEwdl4TIE-zw;6~qgepJYJvJ2=Xj>LBf-~R= zum;7=0ENKGXQ6PcF6WPjn9{SF|NI4r6lVxpkZMnKvxmKwrc1X(QYQv^#CnJl>^+|kx)uP3)rU_vpvP_+P}SAKvnQaFy(f4=XBxF+3%WWZZ>h z*&5Wy+`!*wz8Z%98>&g5dKm=8iZWr}?mYr-1~m&2nEBTy?(cFYu%|qyUab*zd+@lb zs*U3}bd5C}8``H6ujNSP&p#=rK3-fssbYxt;M1DB%dJI0O4K%U_`9rS=`7uN$z1oi z({E+okLb-m=MMkr#6^D!NIWIhEX;oYU!ea2(1`?{{5i-5^4LnW3=rNd94s!9RB3 ziyr4+kDQ8LT7lyROu(z~?fm@KpiCS^?>Lou8dnk!GEw?YDAf?d)`=KpNJ&Xqg@{iC zy}*u}qgyGla27MwLWM$uLy#NpSsK|ymZ8&_b&u()V?-Tee!}QWCSr^H5e$abw$c-Q z^$w!-nM|1j2TqQwcp-!h-=O4UkZ(|sUz{1Y=xOK7-Zs_1I)){;@MbWw+2zQ`ZfX*y zgnBZTuo=FMf2v}y1cO0Sb-_1MRg4Fu^e$e!*v6?svjv64vnbhUA3hvY9O2wbf1Dm@oFZDE#S90sgQ02$*@Vs1M8~MjG0mz^G-ml`G0hMio{Cy6SrfK)@PAe0 zU3&F_==t;!lTuVIKW?Ue!h)PXpFT_sip`g+&)T9S8svJ4HZ-qQfL!QL^ORBfIYmf* z7COZkdi9-dkV)ZV#IzFlb!b$?j-}*`k`s$rhF(-*E#_yq3jy{_3YDb|lX>Y1BY|^CRP24Te zLk;@ftbDsH-68xQVap*DC9IR4-V#VCi%5i9tO_5^LNVUc!D8lw4cra+=wT1#sHsOT zAsAyEZE-I|iI%3-^U;ddZq2;G=#)%QLv?9#vYgUeNF8RFmL0of z!O{Ht25xB~JG zv%~*^C82d*1DpSm67~>oCORcsMM|FU(L^9aX`KnY7U?1?eb5y*&bMCFi9>e!+=Qv3|BTww+* z&4^7MhKzYV+hRHDG?^~jN*P1FXKe0}6QyLc{i`c3dpKG)$jE376HVPCQRSAowm#@u zL-9o901BPbJaxd@!x`*8x7_`e5E%LOB( z;d7m6xzwZNP;yvjStK9Bl#t^%AbNb(1QB%qcuQ8`uTE$+mDwwV+d&rfWO`O4Rr2y1 zl$zExj|Xye!y`S}?Cjb@R&`k@7fj^cabf|ce*0nUc-PEW#t3z$in-yAX%$+G>q#78 zF_x&Lh#IkDTG;K=8jdl_qYOne>wVyYGN`X+*n2xY7cajht29g3gzBvB^18`JBfd0u zO1ILlSsaTNxZISe)TG}&Iu|4Ny!a+|9QQ~|WCHD?Wwqam^dP^c0$;0Nv-vOr2I|T_b-j|KgEnG00+4G#!WUn``^JdCRYB$ERnIN z@+kwZc_cc8!o9VxU^_$nI6EecAu|Sx2w~6P9vvB_R8yZC`W?Y+sRO}uwDjbQf^*g2pcb~?~@kFx1r)bE&?wQmS zcTQk{i=UcSm2FoCM}Ers@*uVRvI#5SN-CGasD^851jnn~arF&~VsdAa%t)WBKHkD# z?x|1K9fFCN?a8Hzxv;1xBi5~SGL=Ea%kDZy=*MpUyE%DA(C41 zmi@dpmJ~RykmnJZAOeDgmPgd>0R~nAB}I)CchDuqab_?+O@aYZ?gUrs7KMOR;Ao@S*_#ufRKu+6lS zI*i$#5z?K#Oi3(8B4U&qKrBzdFwUY}{J_!2&sU{pB#Tj~fm-%=9~#nflOx&l6?&Dfg$Nt0>{4 z?Hym?qfy50$B%ckIGY%*1I)6KgxZwH7Q?rs|rMXkqXiYmZc! z>#3taWQjx;H_Ot)5?jAJ9`sbajIJ$qC25@N>g_IMV|QH-IF5Du-0 zB_)k3$Qm>DV%0w0jhf?^!Kw+FDt0h7t74fuukr27uGJ@pj$5K3nCW%By3MHaR^l#r zor%i3gJmPMT<_yka*5yqhmV10ozc7P#d}SQfVl(CD~Tj}yn*bWPR@OLmNewT?DW$3 zdd+t9xl91bY!)md-;}_dyrR{lD^;H{M-CDiYQXvS>(ONcj!Q>Uvj_aY&XHTh&cwE` z_mZiBxlTcH)BGi#P2fk1@w_vYZJNdTGDcKJwR1a)d0(Ja4$JIJXO1yj?G>8dx{Lppxk{OwFek~eFj66Z#hWEI&rbo%-ESK@ok;9RM* zeg@59OavWvmFYeqH|lNC#jkmdO~pS{zWcn>BZH3fN0g5-w=}g-odlnuWA)rysAC#; zO#2PVILJ7NG~FqX04NcmM`1bcN8Jw_8zJnC5hVmCMoi5N4x%lyqx_NXad0{I;NQ*r z^}w+ig%!afrvBD~w2!{{I31OP)Z9y!&MxOU(VV4bK5!xzIb&^tzl~0n>%&Xao+&Gy z_0vm+7Dn@ryx(Z)SzSWv_hdR!sSw|0`kY(|O0GGRbPTGp(=m_E3n7bd;IfWXDwwgW zUNMT}tzXaIYREMY7({-$Nm4Yj9VKtdjWv*)$U$SQSzKK+yQ)B}Ug`Zr*9;QUDA^Rz zR*Jufz7P5v^#Cnb!zD0Pu9qF=HTL{9%XaUGiH#Jt7g>x-mB_(z0|BC`%%Rm!prqi| zU5u8?)Op_F>=_?>?;0oi8Xu~I?LvKn^f+F4q`Wr+s~&!{O_da-6%kcjnaJ!w&oVY= zk5+x9?sY+guTH;LWb*FhTXuVM`be||ehd3|9}cr>Fw znf3O$^^>*E!r5JG&nL`ADA>a9U=fAXJ;-7?6G0hyqMQ|CCeKK=!xKDOivr;u)1Mee ztbmkxtg1sl!{d!9H>I6Fi|8nzoRF&Ds)`(Gx<9Ux$Q^|-2VGiaJ|Dd^KM+>1p$Nnw zs(q)YYZvk|D>~`)EUJE#mdiNsmK~$pwL=r4cP>99-4e%aF8_WJ3U*odAa(O>M-5tj zCcN3z1XIS5k~TTTJ~7dFP0L5^DO;z3oT8MN;~_R;!XDS)`U>-Moo2Gufvp{K&u30g z$yu=-M!?9r%QEM(wy0t;ct~kckZsJC=Q6_+4TCThrSHo+iz`n<)Eyad9jkiJI7&(k z8&am>_b|q&$5JEjg2a$ykgI;KK#FKZ+1=4Bu{Lrj+*~$30}=?r$+t7Cn7RoS7eoh6 zB=WQkSb6)jDdmx;{*++^Ox$e3j>F&=-p*LFKE)qT?FhCYyC6z-M7H>JrGgfznC(P2?-_Ajn{*OuGEtxYxu8WG>zQLh+XHtzX-#}4SxIRv zE6q>LXXEK?fA$G#!(?TfpO|KZsYV1{pGiF+;A1-~xKk6GFP%eT<{x!;9z(aX^3zAW zwFcx=7(s$ex&snF&u{1Qr0`KZCc z7)Z*qUvL8+Ip~;tSh8W4T?bD7gw!-dX1sNShYecoe&_r=krC|eS=pL4yAzec;+eNg|M+OZRbD)pAl!a;L5QZ#F*JLZ}q@% z3C55c9GlK^^@fB1oSA z(?ZpmPIAk|mq3roOafA|J#L7<{Ap8mYLK92ZlJkE4O5`L!lNg-p$FxdUpe50t&GmB zPjyFrhlL#3j5A#XOkrN+m#a)wWVc+2a|Qu~E+X-1ua zfY|nyteJ=PaQQl5nCYDUM3!?-Mfiw>O6(|O)Y`Sz>=nd)rawYBr8%N>l*Rf)C0rye z+!Jj5BJWSVFPdj4#zS{Qgg-p&vR{Sj{3bcIDQmOBiI#0W&CeN%74~mXMpN?M_RYGA z`%I=+*k&a%QPbAWJxb~1yU8uj8O8RlIYI6NO(?;s(U=DKgw+X(qRq<*#pkI>_>wqF zqC#n7XCK{s;6BqGOG~yS7)2ZsmA}+=ZTWcFm@ht42<*gUm;x6NC4==kUXp>PW^W%( z?dY>{&?Mtytf{zlk_X3*llxFOuxs~FX~epF|Zh|CwGVaSv2HZ%3DndLY8DJx)DEypAc_7iG$EI5n<3T5ZP3iP8{S?ipy+ zS)kODS0i7tI=$Cl7Tami^c=4d zGu}|F{6u5S*k=YRkzpI--!eixP~I7v0bNFvuZ^B17ULQ!Ch=dxJ-avS?uy({OYF4l zDp|<5uT~GoHd#J0ozo<`8qN95$~o>N8zpe}nTT*Fat})I@a6V19wS62RrryN;f7ER z4>Iv&f`S4}cHPdyCdZUFKM&ZiAB2B2@BTI5%^4rzb<{m}1MmN)8ujPWnX+Q=;gzzb z4NTA*uRoNhe*d#D?&S_^ zw~O=vKP9dXTNxen(Y;%66h z3_@ycpdT?1m}Yhu?DVDz?lT~aeu}X1?Gay_gA7Q3^Jq;tu=ahqe9fB;hEo5brfhZU z0?@?jF1T^qYeKVxW?!sb@7J@4kuPmbJ+KyEGNddor!Cq9S0W+WC#!|L*3Nj1TwLYvqF1^QG8{9!$Dy zSfx3z1DEXC)%egZo<`W8b#&<38*bMwP6gXQeJW<&>t{&YDC^VLIztijO5oU&c(<1~ zme+B?2*q673sn8i5YD9|+jk;R*SD57N_|)J`*UrtSTq_^!=f#cIT0`WcKY)m8^i-64K8MM)dKoZMV{zgCO z*(MD-1g4A)RF*lvtQsR`^+5wG?&G4kze#)#c;kI+I*#T66g@N7p1574&wwK;1R3LY4-oXU!@`-iDK3b*ryhS6bPX8X| zw4n7U4ui}+plU)eN5v-k%b#;OfI56!-O|ig9i@2;k4KoAh9{$yw|Trw-c1iw_Q7%e z!-jEHnOw}V_8S4veZB}zJxN{yG5QnSu`8J?Lop~;ElI399GTh2(FXGD!-skEbr+9Z zoJcEf3c2V8vGUFDZ~X5UDaA6aD5ouR;q&r7Oelv}(%X7e@d9e|xZ|#r4;lWsA;%a{dCa3+KQe^>7VUFm1|@z_JMw zHj;`hf`(Nc+;#v-YCbu_*WMrPe4-bhM^|xaKhOsVCT_!bU+|<>(DtBnLfIZDY(ZU$ z4`zW1@6~HzX_*kdOSKL90(-(SQy6_kL4n9 zf4A0ZV}?Ld`#)K(EdGaw$pya7jB}NXvzdi>r0%VyfUlb>FVU&HLbEjEPN&ODrI5OjJD$LcVg*Dyjut zG26L4d;{TFpO`yN(pho{IAy*2EmFgow7s$Qzh?qzqt{o>wdN`h_uNq)d+F*vBH?M} zZ|`pqQe)2%XYDz5>+xZpjk_K;mXWc0lGOe3xf3~dc`kt~6+N4_)bDZc@qO|Nkj^Lp zBrOS06XUZE5Q%)%Ip01LTM`&QUw|Vw-?<(~mGw1`Peo5AdpA4Bxj)F#* zLa23uFDT)9I?Dw^3^Q62tit!5fa5vnaD@Zm^issiNysYgeOq<-dq7d0n1H9I%yfec zha-3fKc>>sL3T1+v3m7tfA1rL7py~Gl$c3E8JBy${A$3_YR3+a0Jql7OBAfa0rwxyghLPcvt#1x;nW#vnNR%nWJ@%<6|!@QP@3;}_U7ebNP0m$*BH zC&rSM03zV##CoFdJSwLg$jRRK%}hxZjcaGrjuhH97ov!y-8{KeCjCjh); ztL$^0JIx1~sgD9_rMr&HDj1FsPK}euiZ4^*O>=5v$^a;UbfINa#vWZgjykwm6NwEj zvu5w^UhJ=+-MJ#WQK&ty>(bGsi~q08|NG}wtQ~dy2(b0fL;NSL6yoM4v_j(&ta&XpBt_0f3JZGfi+BnE*)vQlBSGNWtL@<&w64q8wrjgNs`(IFDXq_j?LiHQz{+~5Rd!x9=h`YzqBdDnv` z1vr3bxg{CK8uIZvS&-6vnJSf~^L~{+!>-=iD;7sWF;}}@m)D~cS9JKF4Yrk~_R4Zd zJB!C{OAHrucCe#<(u(fNnV;P7T?Y4)^dXn_r*lavMtiI8b-roaUntB*g; zh*~~SlFw6p4(mm2Qt5-G;i|=Kjez`c1p4eDk}li)?_*%4b3;qDSE_OH$E^Ch+x^}k z7c-&7N6OoR{i!28&|EsO528oZF*I!5CxN?O2>Zk#BkZw(qjgGW8C^bB+T|_aazV9v|MQ&0(9@8>PI7mSkkU$ov^iG_ zq73Z;%ApK>23gQyCz|ZD;0KN+N#t)(L=>IfPwspFqr~)&-RF|5NSnACRVYvT4YDe? zfT!Gs;cC8(X7?t@&{Fq#p;O+t(0WC+ky((cQVCfD*tW^Hm8>+iAS8YDY}^@|V@ecjX>q%$_Z+U;wBx4>(Pq6&8y>PHTSmxV~33cCGl2dD5nz z)28`8-26#r2^;h;mQ65i%Lmep&ajBsC5#UzljXd}ZH$asGX;8G$bv@-o<6Nzw|;$} z)C$&;t8obaSuHQgGN$RjPgIw!klFpRC7@*4I8SjM0GoM7om5S~zpCK4ZQbu#2b5<& zd)Ae{EnRw5&cVEFQsXxSu}$XQ)E{GrlYSs|;DFPBW|7MG-}Lu08l1cu@J(*5={mqS zjG|VA(I~_S;XzhRYW?xigbO zmn;D{dFy)jE`>iPMmzN59}P?!F#U=@ zo%7~f6?ghc9`J$cj^;rhzNxx-6mJBJ_AUXi!lIvvEG%Ue5J zlZl?q2!Wc0t}6}@p`u(;-4q0bY+ArbG;AEZp%+^!!x+c-_&QVq(>M;B<`O_gHh|MS zQV9%&sWv^i5@^|6*;(XHdko!4eaEx2dO9Ex3LdrgXo}jfo=69bE3eI zGirfbeSK;2Ewpx9X)C%%=8s|iE64QDpL-dw&TX(H%SL5XS%}*IleE;qqRYNohzXhT zh|SPc=RItn&bg+1{ajN(v%;-*N$vM)knut0(9UBHp2oaCt+P@q*QpY8caF-7e#8K9 zuYk<}4RkL29DM(C^T*)94hbk4tQ_NVfnBRxmXbP(W0$S0Es51wvbO$neEO4l{Hu1f z)aE;nUC5p8>khB!w--x2(%Na7_iT;hpu3RYXd=}6df7mNd1&zL?GEd6M~@z5mh&VK zKREMge7V78D*4;2EXd|o=t^O~WKF^c=@*PKB4GZ9s+pYMcmDwsxacz2G$*@Jq0mw) z7c{0vlNn4eppCY^j+3!=z|4OZodU8{36R1&dy%j~hz=f3MKhg~Gy_XhuKc#PWRSdw z^If*WUGnThf8t==(QcLh$8!r!LzDcboV$1{nwtHY?N-wLUzu{ar-e_U1cYr5sD35^ zWMUv6_KAmq(9&-rfLEUV#I0>}Ia+f>ET?_rkq^uIfLuBC;`4pIL2mCn86>_RO^L>K zgZA3gP_$tw>;#mnJq8j!eY(UY9>_re_xT)>-Jxe0w@A`yQ~VZ-p(c@vxr__? zb7du-xBlmFP{ptK^EC{m@v6)6LR%fA8_SGoS#^zh6JmE-N)4hwEJgc2C1j@$?Sj z1k)&ZL_j1D$GjKlu#-Y%6OSM~R z$+JH=w*S+g&^L2^T=R3n{Dh(Mm9Ed@HWhkx@8&vWe4p1i0&j}tgG>f{b%!k%_jIH? zBZA|YGCuAC2;Cx3q|)+FMl;8NhZfOcGoZL^Ac#KTn4ueyuk=%&)p`!=Ca4W`!!{g? zu7sN77^5@Me>m0x_S?#OGX^W)*>Bvf0zHbXpO0vTP;pk}ZCv1S!&17Gw)MJgrNhlV z|9_Xnrc-I@>AxvzuUH+N`4d-ZRWkS4#w8=Ezvabj-PO1psnQTXwe(J=pvH7MJFE98 zDdkc_mz`fk&e2bb7kasgIJdwa5XeN&j^`HiLebU@wouQZRcLc*uS@O_yT1Ok`ls7s z2V+l*x6nA;V#bRXN2<}s6a))ButD^a5I)2afrlQjB6wwbFBQZC%O6^6MqfTM_Bh%N z^fT)4xA;UoAk|K7N>NwwNA8Dx>~*j62`d{*&K**|x9Hem-jMw_9iQzETihi5-yTib zXs@hwesJTr-+nV!HJ!?WO=H~+koYQ4=Dn~f`#K)Tw9+y%;z+UBj9?|j8$3(OH^H6T z-tYDzZ`|p*(oeHlgiTp6U)R1dIb!RGya>}~mS~di^ciaV2 zg@)1}7r>qe%xPsPrm`S^jp}MqoA{j)Az!e(8_KbUfy}Y2DcDTt+j3cc+qZ4oM+JGg ztMVPCT+%s{*+;Lo9>Xk9wH7Y_&fx}a6K+9!e_(7d-`y-a zfrj%GF97Av7qQ0AgqEaBoiYzT6@1JSx+DIN9LS&EeBt%xr#U(DnpPQ37nFI`GJ|^+ zJC^x!0U~L9M$~M8SA?0yFA)oLBCJ5%?mrr|@ww>a^{3&?0m)KSQ&HZ=bEKmn1rvKP zH;@AvgL*>OvNl8kKlI8>8H%i8%q&0w@#XAU2Ar)#zxvE!o6EOqU$x~x1zawnsec5j zx``rg2A<3d-gpDoGfHO%fkkWLYJt#BwQb)`!f>cqh{0Qz-2dL6ww1o+z4q%$iIq#1 z#sA5pEZQjd(R-0qia@>mB;wml?BNsX61ksrc}aA?aBTZY_or)`ul|wF{y+FlNb;t1 zK8z5Mm&L`!r-rW_`A#6#>3CXUB>npOrK!T7=JC(j#D9ECa25XnS=naR<#X7T2M*fZ zj--8E%x`xma#ar0toBp>Z;SMAM&-TR3OMFH#JktR%&gE7VB`>$5 z^bb2OVTs;ay-um<@DtjqorRuk+~M<>*R|GZXtAzlrel~DA)#EJ+_iAK=V!&>r!*m@ z_%6WQ8F`mmi_QJC1-`@Aw5IWV0+lhMH|Vqecs{ANr&Fe33*+FXk|~|0*cKmQ$-sYo-9tIc zFRoVlA3GJx8cX&HooJ48uGLuKF20GjtFAFtm1J(i#1C zbf9&v*Rh(aGMbcStE!b)b9mf*T{@3gSHRjYJ*BoN|7Tw9uHNnE{f)8(_GGA^Xo){s z=O(*CK&55##F0yx=dX*&gxNptb>bYnI-xSH67j;Jq)!(=l$Vm|*t6~|q386o^WN)* z^eP+TlbbA6+@xECL(|yjm@n{Trsc=T zP+Wlip${~=UV4L!>ll4+;{hbZnWi;w!{QA6hsa!N%ih8#3fB?g`*HU`Q)aBtW5oU6 zS^)6&AudK0kTt8+?GH#wp6bOmZ|(3b-rS^#gp-4BD9XK&EY~m*L~qa#Aji?dG4{WH zLUR&!0&01)9Kim1C639pQvI6`m;f9;Bc*J5t0pqbAf=6Nf!-K6SDGpnffdam0Z^N* z15G;aV&0YbKwe!9$aw%hSG99u47pHQ0J9Qrb1}$_YY~Fk2OCWYJyqKCN1kjFG;C7&c}RP3cd#bPj+)bA+?UWHSA`W>FQ*PmeeAcNli@GbFM33P3b4VVD94 zn33xywV9m`^nwa5$hN}~F+@d#KSiT$=925`w!oeFJwdsIL{jfaJK&=dS#iHTR=zyK z`b6TP2>|*!Unbxixd6FlCHEd%$fQ0ib!@X9$uDSsfT1rM)7#4!Z-`+edW}8uB?~B! zJSY6^y$Gev#w5-_0iIsuuTMwxp3vLwPMYBx+KD^fEFnk0k5+|`WNA>sddsX;kb0%m z%wpFTa*#zUMKWUCf-%qRkNNDD?W2LEuVoZJnTwzB1xRfHNnMu<@|U$i&a0oyujw&v zkdCL+9ri*HWOZo(YPHQF0UEq|Y~H;ARo{BzJN}Qs}H*q6V_C=xg>YkA%_6*$_TLn zx>$!};obb;NPyZ>jQfb1_|uAn3dUaF{eV!G#h!2up)`b|2B*^*k`df_C!dO8HidF6 zdt=V=S$L@^`r;5ica&kb6X$swuhemx7{+QX>r_1UFSM-A3>bM_1*VmzYDKaGIsiME z1xA%K!LNjD8dx9Xif*mFm{SS>?yrHPyUabm>WGn}Xd?jK5?nCTfFTtV zWp)m6xkf7K*k0_ostXXKypPilZ3djZiL$0$7Lzt{jS>uo3hV*jNOp|A55Q)9+>L~D zk2jL13}H;N4;Uhb!utKh3AM1~!N#-}nsZw|oYd)xZsfArt|P$7#@wsVnj@E^1SPTK z7UkDuW_@=`V&|&{bQ&a77?Q~2K-P1Ec_d;FdNrGyjM`E4PrOww;TtDh z-=N0kEIxx3d6#8mdKlW)XZb$mf~u~#z1$#QoU_-S1^Vr4pyTjSZM_0@>_`>yB5tK~2EPVY>SsWmGr}L@PXaS@ z>q%eWcY!^KZKs=50u`@;Ob+on(NY%RbDNRSDp=Xqcm%C^BwY7 zEFa@R!LydJ(wxh5>*o&o#sv4+j7RJMgpKv=ZS#4QIFjh{4!DxHdM^~GqnM3n;fu3o zmM757ftNw61qQ*!H6>a>w~k98hlt2S^PdI*AMexlls%>%)yzj3?hNQROxZ{wYF+^T znj)|@JzOwwon7(g)uXK{WL|)apKhDh6inB)<8@@uV?9SAl~{~b+!$WqOu**5I z>k=wKYQCDb_k8fJz;nZQe-up~0+fDke@Glm6~f%+EMZ4`YjjPox*e!08Hh}xOZuQU zi5WeWHLY8g*7lZ$Ks(meJ#s(BfeN`ynE69+C7+HWcmvy^8dL+$e#YXoTAjx=_O1 z0a)j2c7ae5tLZZ(^Mea2K^n?fH!7*X-Xs&|SE7C{Z?mJb3^jDiNX1xHTv*I60gYcY{qGQu9T0!fa77yi@m#RO$F$ zkFqyqTM{ZEx(`ZzEXz!5xihx1kLu*t^G2v$+A4$(}GqXzfs*b`biy<^j=BVHW%0~sci(23K@I) z*SRV0aY3@c7iAM4r2zYd+_~1R9Hw>%PX{_2^ek(|qI)??5D}9Rd0RpyL_!g-pVR6U z3OlY=^+bKMZM^UEykCt*9?)ZES44dH0_y>}k} z?d*Oydg%?+9c*-M{s;f|KRU7h?RWqE|2w=t$c85Jdv^TS#ne|&^tUGqn{Rd~e%u?Q z9}m~A9O?4MNQ**A=PVs!ZA2np%ke8<6i8jE^kTmyB=~B&1Lp%EwKkk*8)&l<1zuPS za0aixwyn@9{>41P1)m6)#la;e74e8f{Nt=N5HAb_#HS;^bN^^5Rgj9Lpi)u7502!E zE~);5%b@@3ZAd|lclS`=^=Q;7&M}LovvJe8{P~^=wTW=MJk}*+uGu5qMvlO5C`xSHMOyEvCoM+onDocq6GnQ7<;6-y&YMBH)8P+e-5DTEk})LchHCtIwn!E)Vnv zG$tF;z~0@yn2~uTwTh?_fQxsilnZ<@S|%J@NUxrd#zndc;SRYFY}2YW@k93NU>NGL z8Np4MMriGh#O3*H`v`+9$PXYxMlN9Tei!8Sfb*3y8OX2KtOaSqBWAA4J5<12`!6?E zjshxuN|t5bbr!rOwMGjfz}km_fKdJ*XDiWEyD*K{kid1q z%r(V42x>lf;>L0_{(C!frz=IER@qT&Zeby0S0fn>L)*5;SHL-z) zw)%(fE!_apQNs_JE+ClV8T85Mu8YAk4}$t5j|gXZF?3g5SzmkQ-`J4x0G>&S2EctA z3qv(3$abiWPL;xx`W50wS*qer$G$vp<6*f63atZgFLngNDc;NQ@9i46{rSJ%EB?7C z^?Na_;ql8hYDd=znQK9z*WUl?7vl?Kv9<7+kCr2SLXCUl>Xc%H;5~pgc0IGN)kjjo zQF#b(bMT5aB=r35BiavW&Wn5w!-yWOk&-J96juC;NyvKcyv`5^5i_UDF-jOWu<$6X zOVnmVZX)Id)xP>$%p1SS!He5Ygq%#o-YZt10Tk&(o|Kd*KfU~x{JwMkgSWclCv(R~e=E-d2U((fnc%V( z1lVl%o-)KX7;*e|KCG$)Ua$E`5}b+{5rB~;&jZjc(Wrefl#SSRy+j7zY+PvD_ST~# z5@_4@jgF5l0zg{`>;xP9X)nXIrJ7sk4_X5c?H;@uMsO$AIItGZh;)dzIZ!mw;Y!SQ z0EjYlGI#JCV(}JhiTF*iA^b(!8d+}IbXckM>&3Q#1rNYA@bTj)?+UlSFyTJT=zsH7 z+_AT96!fLq(=n{4?ii<-(*0_s)hO+iU3z$w_QS{UK;0BzCnk0wtdD8lGug z@bEy*C@)xxLZeihUZ>#z5v0Ndv9h$Z%yU*i`||qiKheM)Th`cb<@WsDav_*`UWD2k zxkxm6c)$(;n!O>Xy3>-{L-dbF1r#qVC?0(${b3qMh|fa-p`x+9mbTX`!27%jq0f-8 zQ1|e_HeVa|82Cfv%`4D4n{tYW_QIhg0wFss%T8(8?O2o?inIJaN@MP-ihKNDLY@B1 zKrFcTlAj;wZlmR$?>Q~)ZXq81cDVGEoV1n7wazNCL_Jem5lXWm@V@Oda5N_w;d1D1 zNE1Ie(s{5Ut_I?9L_dw~riDzXrrPQ8o}LpS8!jTj9ZK@BU_%fwqf83`yFPME;Aml6 z6Td9P7BqP0ln+0mj`m(06hqCp4gkL+i8!bXX|8_E@4ChtCoK>NB6WGHCjnzUnKsw+ z0=4k>!xe)Fn#axR2E-$k6bi#caz7Ui5k5|22>-sK#ehvhV-u1qB;GW>bx8;Oyc6jN&uOIAKlK1@6OBq|dj((w*%YFEXo+s+-qpM1n>wkNC=@&^amK^k zpAH@#t2HAL7MEH17!MZY{b?~PHm;SwnpIpJ>b(_TYwvKHUhI(K`T>IeKI`z#_s5*i zDg5+TXw5(9>klvY_pcnjt2(Hz9&>eONu)ya#>hpz?<;aiB8!_~uf>I)`SHhh zR-&C69^a|ezpyAG)hIl!4^ru0{YvtOExq_p{)tB{R=n~yaP#G5L(5q^dS0+x@=Ncq z8bD*QU>I+UV6g^q2h*QU1-t{7)H+=)ZBYk74 zn^mrrvb~lBd#Lgt`2&=!Fuokn@_kZP|*|`cUBEYCt#eQB*dy^5&v89Q-0^VBm7?pxnnsG!8p_v3XW5 zxZ~cEVCH3xvaA_8o{j=c!!@_SU#U zGoA#C5ymYT_d7RjM~LQZ*b}wFC5yeNFWQ+tTcL!UX|kt1$BH6Z%Rca^Gu%w~42C)ZiZEOxxA^FT1uX&HwUPZfV|MthTkNoqs2UD6ZUG$~={=8O~o-XZu5~B5}x7 zE3mD09APS08_Fr_V*hRzwvFiL;>WhG)8q6Ko< zhyZL-b%asw8q~v_lI(e?2(-EoWQ2;b)GP0fmH?&~F>!SMsolzTm@%;ZI33+X;MZ9zpx_n^ zjzyQ1aiHM`nodM#{!xz+PE#>w&<0!o-FkW_e(2WM& znMQX&X1%?4?JmOt0N+f8s*rMPGm?s;otrNXaK5z)zH7r2GT+c)bSg2io zv%#eD3f!vD1RykPqf77$1q><>xuM{F^%c-rt3h4gC!QMk!#*&@`Uc3tij(1-^%p+u z>OKjI(myPt?KrjOW8btt&ik|*%RN5!kiCnQYL`=x9(d@Lx2?On^nnXvL%b}9Gzq0& z3%*#pv;E$dWBLiS^m28jc@YPV>jBCaIaGoL0Kuc_l{JJh1<;$Q<3QI{J)21>bAb+~ zu~;m7|FR!7Z!o=)`$exqWNum5wC``PR=_XxMB@~z>g2S%vnYvPr(^t?b=!JG1L`Hd zcU>3xP6UmuI}>=dJ1Os`WgxS(5#sn zu)_NFA4cF0Vg65jwb$TnX|!RVVc@K;nosqk({~MR7j0?29{lO>iP9?LkN&9^Z_7W+ zmscmO*^cQDww>!h2d>$CX=Lf&9(m9>NI!fmG~vT$_P>~xA9@9l+VZ7%JYM@n{{3sV*_$j^=Ug*?uyP@{^BpwycxH{J!t&OsagR<7!IC`9Y!6r!oX{E^ndYsc7g-KsO zzc@#|HU65%bcK5UzOTcg$GN^-0?S7tOstQfqt*4+@MHGO_^b0n`s*XQ>5hD7!FYgQ z(M`8#*=Tt^e<5Cl(cbOR|8T6MVEn0|si?`f_MMp%DUlI;BYIC;K>>Ik3O3d{v~&}- zF{WsSj0T3)z(28}*wSyq7K@~>5_20~co@`DECMk(hXg`={^b6^*xlpWc9Dl_?&mO` z3JzIlV!u1a=-Zgm$J?A}G|ucr(L0a%@GlnezhluI?~af=!Ib#omL3lSJ%63L7*g(e z^BdE{m$?^{`fD`m^7kBL)i3LZ zl8e?d@|$<2z$XG2%bRpfRK;z+*y$ng^y}or_z%WD zxTv>b)wcDF{_@=$nZ5@TiE>*~98a&=)_2P&n+ zrHXtyjfpLPu<;i$aX^*46ZL^ddvJnhLtqNr{$nqetC*^-Pd~GLm>7MD97F?PN`23O-tjY=!5WB*nLz&hmq=9#-kCY9+#EESx-`x>; ztmw;C5x18}uBtNzeU}~A+j^~Ra{p;Hb$*iLJ~NcN9M)ZUW5|%1Cy@7Uw)0SnFNC{P z&a|Ix| zA{^s|?&mvZc_d^Cgk}Llv&?+wK7vQ)&jd*bY5aW7Oa{hA*a^H+f71k~E$XSjOQv~3 z3bBOd>tLnNiot4iu6cq3L@ZB`e>aToggX`m_PF4?Ss5ROc3%rVz?E`1Eb+!}x2JPa zq#pGbiFetjxzW>9c^k4BOb^a7n`MAw0i>{TitzZ`7BFMXuy$xH%Cu-sb_G^rY6xgp zZg*x#@tDq`<^N~&?j_QhG*M%4+MLj8wc3#}L$tKZmf{m{c4=vsKP8GcCUv@%1_hH=Xqhb%b9`Upf(5owJUW?8DuS>TC9W#6cha<1$e0VK?NyyYYQchyRL9|{E)iK1felZYla67%4l7J z?axVxs{oU82Ody9AQ~H|e^j7V5Ku zl!(*g=6D|CQ1bR*3*O_7X-c+oA~1V~)8(hODj_}3*#8YhX^g`#C$1SgZ4-G(rk^R0 zM*o)p}R=;T__6d@!$H@R+V4^S7UcH)o7X!$WJXtz$4O zS|~AzC`sfiJ-<$}^TTzv#ZQ)z$=LHNewKZ0TJS1Sa=1E7Yj#(H(On&^{(~6w8?c9- z3vJ!-o>;RE0cSEuBq@N_m#4(^T-l1WqJUNMG-IsR*j~3Rr?wV$=V|?SMR_=2&-(en z`vV8LbL3HpYK)*loMgSD52l&cnCRq$62DlHgI1qY?%%wZG<1##Gk0fSe_PBgB9|~{ zPh6uoW)cm~?#v0Yqp9FND@-Z6_Wp!@>+>*Ni7?0ZAego?I1LT-oc%|@1O zlVFltWpQ4{pM8%+LtyNlK=Gl459fNJMsE-*EQi7LPV{Y~5k89}Rhr!INq^t$@8-u>t zP5GaXoQsMPCCdgT8WDj$-%7LT7jif5KWhxZ&?M&;80qtS6_YWO)WSgl1ZnXJtTl5Y z4S9z+24xR1VS1)twgx8Sog5{ExGnt^S7H^tAEAqf%y(F^gTmlFIlOnub-a1KvUQou z-2D-oX7QZoUD7W3>GTqJ+zel+B)F5G{VCd^nSa+-+lH<=ChkbTm&Iw?&nn7%kq9o$ zpnJ(r6>DlP|58Q@r6BHlNyc-|uxB{*oXaDSNn|(WM}fIAfU|8<{e1tE5?GP_eXHyF zIuP(%D2Yq92?ajXTT{|qMgp%jrs6r33q|$8B5?)^PrRlmH=tyZGn2>&FS!MjWQ|l2 zu?reK%A?w-?TA2tPdi^}Eg|Axa7DifPZ-TsC*@c01w5N6`OBm-is)hzZaY2>ZTIe% z8-n41Zei$|wQzM>F4ldsI*ak$0TO!9^k|vR-SszwNsmRQ%@3cuuuJmw)#^EVay7I;3Ief5KT0NEk-EaqUyH%90fR(OBeI)C?ivy|a_k=dlb% z+vzHDuaebOw2g4`jycr5I1VV?dR0>3ZE(6pXx#dDCv}K5KV3YB)2M={R_@f}fsfhM<}MYuAo@`Yn$;JAC`~FPFmHXPBDE z<3-kyFi1rdgAU{`(Qn}_^7tHBX1qjuV(P=41bb6)25y=Xq<)C7k=j~lb&4j20uYM2 zdo{-*_qed*gaG()tOkffj_L^f?~Crk2vN0OjU&t;Jq$)bO*%$ z5*{=Eh$%W?MQb6fCITItkWbAV#9{CAxnFK79IY8f7GnQK-^^jqmuLo>c?H}aB)duo z>l83M3bR3MQ@9E+!EbonlS(<)ATp>Xljhy(;6)K9;^8|;wHG#tr4A99)T5W&oJ+H* zhAB(p++|S*X6`=4VQa{CFpMiX3ZS+~~z|=PM zhPFc%n5{JUWNl2r+*HpEK|bbJs=SQX3_*i{=^hT&*!8h*!C;Zn(-AkHO zK_tN!h__jx3LT!hMHw-W-3C&Krl$u+m!S+exWl7UZIJmuR!fl5L_1jz$B}aUc}&l! zdJL=ej;9y8gFBZz(|Bj7jUKOy>{mu6UGGhA!(3g;b#!F47GK_V3>|ovebhN-y12#G zOER<${O-+8*zl44!HYOrH=hiV(*Oxnzlr!Y-@28W2D{c<706PDtU;jF zh(-l&YoU1f-Y3~YP}pNqTHkX4YRs&3XjZMDDBTw|3AVOUc{9_rCMNN}@Ww?+&RCjSuyu5(={Mqv@S&khJtt z$n2Y5otYBNy>S#jb82FJo3SFvVu&EmD+2in3b&0_2(dIRK1+g2}J4i_Ko2)WIE9Hf38i z6EuS%I#8wD<3k|Kz@`Eg0ivX2e?PNO0~Q_*^S}lTQqG=YY9y1=;OXx%HuTXmAD=A6 zm@gUMFi|@vh@L4zEW5l8Q(yEy{NR@OwZ->cj_1?PFg&iNMEs*W*#Dm=_}fL#pZaOg z`%jyLI&03y#l@KqgfkrfPF$9GEsgbZ_rMezRj&AJNz1>AX6`-nxRm%_xvs8m-R#v{ zi@XH>a&GMZOPYNjq@Tu08~dToJYAZ#aSfJwPj_=@xS`Ee{kKm z`|O3ehw`KMeF7aFM+vzG0`Z#Bh#PWvzm-zwuN-Oe?L^8?HN@altCX0#((us_ zjRm3V3oJPi_Zv1i6h#Q! zUrgLAMQ-_(ks9s;;4tWztr;Y&u>i;|cnu9oChzhEqoAruKj6-?0nvu4?JE9Y0dBQ~ zQZx`p?e-hqA=6q4^$V*HDbOywTFQI@Odu!PLe`=E(p?2tV1Co|SsYCTfo|v~2P=9~ z(iWPCcS1QrSqRd-jM+{9DDn5VS+{1qLUAQOr)r2Q`NnH{wU-5 zLn}7mmNKn1!-Zn@n)Y7z`7Irn%bWbP`qxypTWVokj}6^a^g#oNY!Kan0LzBmvVMbG zO2E~|AmLYo1kD!1LleiX@hxVE#l12<&D`1=8)M^b*%b7sHC7F0l_vqS;VydtpgZ;~ zs5*^>RBIHF;9Fuzb(bRq+{2JED7Lxs>N5asTqAZu&1Ij?1F_l;HIepoNROOSa@&>Q z^#DmS0&@DmUT)}`p$t8J(#_I5!Rb2_zzO4@Y}3q63F9_wFp0itEglKJDTX}6 z$llru%8Itq0|WVnQwMvIEKqgCE;bN?-;$6lO|`^B{=j0&e&eUjUwEdq%SP7Ti?CS~ z+&&Dj|KclxVgs34-@5sEv>4aw`I*6{=vFq{v*%fMD~tM8H2EvyN1di0dkH2b389R= z!3a0iaaZs73w{_9l3~Hi7a)IN`jk*V7J6zQ)BXiv2|K3lWeQ+$D}|)?_n+4@cN1^0u?naf%?K|ULA9y{R2Go*;R7TGVL_FOPqadZy z$p_hLglo#9z~sBQ#iQ~d@y!Ow0S=jga9J$uQ(R?X=@4aK8mh*sGPl8-A=QAJUM1{w zE9#FXl1jN-{wwBKa- z$PG({gv!$HtDLJ=vmnVR0J52Z_-NbP;6L>N57jJ)~t(t8)2*Fc0|q#OdUuw<@{&I0=zyUNX;Az)h{n73@rp$0@C1Ae75 zgsILeP^7>c^7uPR!(b?^pEj(rX2brMhA4r3$xQdgQ@Xya87`TWXdS-T{6 z2tiCUuH$|H1| z*mUTUfWjwyt?^Hkx~k(f^G!6s(AKkdAp8)lt5o7{Y`_}Z=RcZaG4iS{utgBXw)6m#N^hh-uu4qz z;!izexFldj)yF?89Cr9}pVf=1u!jd;0lihyzwF?_gYDpq-J!s~v=~D9zM*uXH5$<$ zTjsOm)3U6k^8WLigUWo~9x zs2fIc&Y1?4ljvKfmFhn&>Y%ONX=+Gj018Giv|zn_gz$ zAJg)*;GU!C{MZ{@{?`w8kIA1#19=96!-kbG$7#?@zz?p=_KKvyP7nraLDixH1%p5R zI3pbsI(vq7gHirRWsUynLI1=*zx(bfg+c>TQtHu+1F5~C;euE=W2E^~m=|b{lKWe0 zK2!eu>Dr=@ne8-X!Ufc}zkT~-Ocv;+mo>W@+S{M=0tTCRxw*KUF17pa?<3&xgN2xp z8TfDdBhuvYp7_EHsI{<{Qs-CwW6)&0r~a|^2ZX3&huRur|aqfW8r8&exPqS2p2>4-t|VdSLW zdfv0noY~|~?ex%#-+%F_-`R>VWV5j@KH=?$X(3Pk1Geba_YKXw@`$;Mb8jZKSdsOp4 zvdnejwDcaoNkI45sn?Q(qfvp_BVyQVR>-uW`D8k(FGtCitxH1r4|d7 zga&SImt5@IpIxNFhAJ)1wA(4IpY|(qAVq2zMM)+8x~QoN4_{7|OcJjB-ctpgSsE%{ z-kxPc$9Ym`Gt%v7jMn)(3gyO^K8!-W~vH>Mv{OP!YjcED+dxwxa+51)%WD3 zxz_S}HpX~upcPms#S5~>ch=I|loj%yBsuukYTn|9y}vw~r|afV3h7ql{%pARGSSW` zK69U{rO>OkQO&>7{hS?1)1R`V_Q8^6p2PbW9p3(IBtES1X|r!<=!#Ap=a5q)=6$0JXADj01DB5f>SVv@vhcAD!i%RYEAsYz z81#G3d`2!}PIZEY;ycr=u<1 zB+KL5pXtgL*pdkL*AoL@58yTnEB9riK6n48)$~vN6YfQa4vj@$zuayli*7+#?bi|z z4C)NL2kdsS|28bOrecSOhFmY!y1SC$kc&X-@%ZKgozO}yQ0F2}8#cV&P$rgQu=IQ|$R>$@D}kyU_CWu6ad|miqTK)U4wD&a7EYKwrKbDL>s!VIwT^WOyjp?4(FnV;!PK|WIn$jg1cMA|8 z3ULY0t29wIXXh}~yvr_~W})QOAE{!a#RKZ}T#$GF+D+gaNNf9fDUVOJVQ4Y7etWq4 z6yxi5GQ;NItx<@mhB7w_?3uT(u6wd?tK}8EbdO1K*uGc=cjHs#?o7|5SpEN}F4zAx z^!Go#d>?e(N;90@WG)m3sEK^&d2{cu>q5**uLQLa=5DX@ojz52u$kS2!nbzvdLuft z#@sT+@0R$_TlW+WFy>iFYR?KR#yh>&ui4~kpsGr>e|xX9VDhB5|DRklJl?!?c1&uBA zAF+eLmy;Sn^R4z!@#(2uUiRCgDc^aUOmW{fq5beEE{ZIhUmRHGJU*uKsdG2@vj>@KhwAO zq$}Bl!k)`@-YKOAh2z=N0RwGH1-0{p`=t{T*z7b8z2n05Rr+GXM+9DVbrxcZjob~; zA7;Zf!a~tM(2QMxVnk&~T`{;bEh)6jDK2I;-|htH-Y(@tsEZ2ei^UV8L3IgU@@Py& zkzH8#Z2j-=y}EYo7t!c7IM)PgN_FTO!n;7v-c0m0ceg{@d1G}L(cvA;b|-9?C)SUe zeYHo)b37PLz_=0G?bdK!3(NS?QvsZsPJcN|>}x4@hE;KMYq9V$sp5l>>|dK>QGi*z zqYBDfx!FtnL&=_5tkQHZaO(+n@+#d2#$4;j9rb$MHty!~mV2gwe(or9`7 z?2ODD7v!EExtxbur|t`-X26b{iX>yw3=`tK&QCyG>j3RSR2I9Lr<;s{Ds0wy_P1>y zGvSRmaKJrjg!5e~rFtBCs0s|e6%w7;k2+_f1z)7i9rXzc&NrE%zY14b^_x26^jRx?OA3P3c_OyunI8H4AJvBNd8O$ z_7mHcz#T@kWe~ABPML-)-R+ba_l%VH*8~JshBO7q|7l8LYq4JOBC{ zPtOEh&yjQV#~rNCAzbz&YlRPw=mvn)X(SGt!yS3QFL?3$@Awu>qHAy(@x+Mun*SuM zFCN?fyn#Mk@%bYjyEltUrLy_0ZEbAm?v_!u!}Z0#)PN6i_4M@2EYuo0V+fgWzZWgb zYi4&Q?9sM;eKOlS0Z3T)!ZRCtuBA;r3%SY~(M+hVWbZS5{YBy)?R|ES)JhCFya~0H zQCEKgI=FTNxh{uUq#PU4kI`ahHI%Py5)fVlZ}WPt#n`STH-6=YY+`JE>O@*vnyg{N z#F%~Bw~dMkncwovei6i*dOr?)VH>bvx7FCA-&{AH*vmbSGAyfK`Git8i|?+B(T`89 z3?LQ-bLXZeJRDDtV=gDkCzIe)nSxsFL@Iybo9NL2fROuTXY{!ji&Ro)#_^kgCXNXw z^JDxEAuly{zHHtrZSpxoX=Z;yb$A8xmwNcA!3)21-i}gz zr}sXu2)J`q#I@1%3u58{7eF;<JzSEQE*wn!2e@{DGtlAWN z2+N%|7ezB;n|dqU(+^?^_xB9=)Ov~2D)mx~MdsQOS}q&XpLhy>5NImB1?-&DrYL>@ z?PNPw>P=h&CFpw_>G8Gu&rWC>tf_AEUE;&S#oDCg&!{m;v0C4A3*dYgx)`oWNMr=uvF@!wXrF~+Br@zb-;?&7dCA(dIa zATp@wMZ#_xW4}?{OCQd}5*h%(F|@eEr5@3sRGU#mHKpd6wm8dNIYt#glCF zUbr9gn;MGJXT}5}DSm#fIPF{B)L566^YI5gQ1_wMpw(qQ!>EO_sR#^je;Xt=ZdzGN zgt`_HbD_~j+8x8QCa8719bY9#bcuduW(wG2BNFDD^h|ce}k?x&)J*dPg2-E-jwNPtpy%@FfX03}Cg& zDF+g4XuF~j(gvYH0Dp@#+5yx(N%{nzk99hzr2%~9n>2#ow8;tHsg&9GL_gw$=W}GD ztZK=whm!7nJHV_I-h*UPTA!0%mTjDcK9GaqiZ20`A;a;JyFx4Zu?p zEKj=-hK{S5G6yc3MBC&-fM&o!cTV(+k{kO;n06^*SGgztv=7ZjaFyAT^um-L)ih0h zbpMWMawLm?4!;>8-zl|?ylO*$x&VY$9+G6f=UnCOe2GS=`yq3sdE1RGN-n65^f0sJ zjy(}=l-JwVYsc@kJFeyHD;_H5R9@I#IY_LrurA3$7*tUUaP@<`r{pOP#9X#yGGtu~ zkW)OaDAbBB8R0O_8HXXfw+V!qW`e|3?!W@n7O6Lt>1QsUySkwtegyC^R`orR*wcdF zf3|TVZO&`~8g?O{6`9iZHnLhf8SH~VwFw^cxA~#y?$_$yhrMr77zG2w&__mJBGh`6 zP~dyMc$2(aZ6bp-oB|HmN&>4kN|-#Qq}4OJG$NjjFF2os_rDaE2cRSSY~OGXovwQD zU{(YEl^BS+3^_*Hgose=Eez1%uUt1jcGk((N1r*3pEsj=wT`uW`?wzK5DCD-RN%|D z0{1cUy$6IJ1DJ7wH1BSrQh-Q@&r~s+o4xBbvga<0M7;Q}_t*pXituQCJ-g5_v?^A*d0T1_UnF5DOcmMkv1$WRMJn>d)Hg}fk8MF`#hkg)` zSbRyR6ExeViGAtskETYq;w#2Cy0ELTR6_;J#73{Ov}i(Wv1RF@q_h6nlLXk#8ICEX zhc~CB6jKK`-%qJuQ@RyCNY$!>5_F#@n9_;0ml_qugOTqZ!0v6q{*^n+_rC%@tRkI5 zKKM6+30-#F!8`KBJ4-OXV(;=&!|6_(6D*@j%&!Dz`uni3CZz;7>${gBD^)KwT9gWN zb?zwJs;xd%1hNnJtx>0|cc~}Pk%0*~viNSaQkVBSZOpH8b%8nI?bBq=vX*R-lTdza zD2_;daM2X;LFX{>09gY;7pTq?>Vg1cwJwl-*~6;uD@oMHb1m{ zz&HeyDd`pl$=a0s&9Hic(M&ghp-4y=0pD5H%@@QdBZ?Dv$`9=*xkUtpg&bIZnw|yq z$5sKiTmBe55X1z5)EG;9bbkbhkoMZrYo54j!-E)UQd#nGZH=Po*5Pz+A|-NT%k9$^ zcRBL9UEVwMd4kdu`O3txp45HC(+<|Qg-aMV9fB#N@|@YIrh0z${`ZAOK*xXYf}*2_ ziw;_ehh7-ehcg0c)-`tN@@zxS-RaI`1_*~RUCW}3D(#*;fFAR|F9e0j5czz~u1av6 zhtrJHUg`QmI(%x z$?ZgUD0_2C?AN{fW=%@3(fomDL$rMLjKmr_ZIZvv6a+#F7`^*;CuY$5M`3BI#2|jf z{y;wpcOOG{gI>coiQuPGNA?Q=_RvYdr4%3EJI7Ph3fKa{uID}=sR48Oo?z}tDE1kY z-JJe3H?98@ec~-}B7JDY3HCr1gl6BYxfT_#Cl8w4-x9jj`WWEs381rSB?4JXUSw~p zIq-ihatuh;bQwwjFyfA-)|365bDZbHBleB|(1r)e&jVbctJ2x@Cj`yqDNzNOB*Mz| z`%c!!d-PB1M>SB>gz+4O7z+t8N*BKwSZ-JiiN&vv?@iS0xeJde-WxyW-grl}mE)-- z;I7M_T@YTW`k`9L$|s;9Y?egPyXevN>`DHS0-!;&&n1+Q&~jO>IIMgc zZDhtA?3?G(QTS0N(B*mnb011H3cG(=lay!#aO;Fr3!`*z64=@f&lK;je7u0WZmV|AZv=3J5db%HdPd zEtHY1R2xB25&?u@#J$GirndfDQ^NuT0>(5`<>@}h>p1k1jGucTM9cRF>@7O;ogkcM zkdcV=mDMCcQ^{+-1+SS*;xI2J`GXO*lGnpo&*MqHsgI_0hI=^v-`M->NO_>SQ$fix z&*qfJ)e~+BCcl3t=<94;(r7Ca=}`=;hwAz6CDt{YM{#U~1C#LW9gDeXtU5$n&6P#Z_+gcm~(xPM^_{}Q$>65ISgxv?K4CBXPwR9z?mn=iEC|n8PqA*HP}h!@IPB<;u(78f6}+g+%d9l= z$s+U1>B5|<+)f$GFL5cL)LB_gKLY>8+V44eg>l!gh*dgo#kd6@Rd^2|1tg%6bnDE9p83?!Oh{$UT?DbGcB=;w!vC^a82PjoonxHf&iTiAr&p z)IPq@`XCxnXt=y3YU;uu@P&}7>uMcg(@b#jgi;NG$N74kyY0X;izJO*I1732X+`0h z&%JPAj~L_h42?RpI2Rv`9^#w{-!Y>%9?CK&G#O>Khzdpy1j=p z&;ANdg~0LqOI#^P#{?K`tZpl`x=Nqqo3&9*;|f6!)@8uh4-$!0+zrh|AYJT1L%2z( zff0IUvL{7nq6%)bFT`Ah1d$}7i*5 zZMr^T^6|D1h9%PJgIc4B(+gd4YxIRLLwM_(+FaV)SqG62vXUg6wDs2;d3{HJYrBFTzh5Lejfg@@1_3fZslvt_tLq# zgR`#NKQ@m1bbAnJrYucNOk$8aPW`QS+bx25+*DVA01yk1tv$m5ShX1{at5^8pJ{0R(-f*Jk zW%d|i5%*hVN%PT(a#~yb6Z28Q_ zvn-is_(j)+Uw^&@F~pkudULYk=f9g;`|;)JU1v;8u-jU@ucQh)35y-I{#5@wF8Rz{ zt{^QTpS@$cG*IK2Ui=uGw`8uoT$0_I0HyD6&t5IhPD|}U%vGS$b>!re)s@1jVaFA+ z*B&Q80!z(r(g~==Y93lL5srYXV61hsW1Yo$<15lNv^HCRn(w;v&u`rZ-TcAPg-VlP zQBr8>87$-dOgz(ro^i?lWbL9S-F^KqxUo4*{(D=MD?#8?S`XHt8GTdba*~E!G_CUp z^$s_WU4qfNhu0cR*_@JKK#<)!y0_~8UGlK#gZ}-XJQwydW0`q=?Q0vXiL6F_hDwXg z&~Z1Uf;|BAU4AoT3G8^yYqgj2i)IAd0M#ure9PnX(=9lzLz|I=z(TeZY*cLgxT)2b zSmD$ugwuo~dNFht9ufAP(>3x+Y-x8+eh1EOb+tbO3trr`Z zhFW#ta+R<;<`g3eV}j+bASN1%OmgWFbb{`f?f`Ptxtw6o8EM-^D~MXOWugqu?A(g+W%gfVw}wa?wp| zlku(%m9qY>$_B$mz_NF|E^M>KhK7btBj(Uvn`cfdV|x9vPi}-#vUTz54B3E5;}YNw zt?`K*c8i=P5y{Cys#Z@kj?evS5je7&3pekxL*(GHsVoMFMjFhOLBgH#AGx^h3MuvKzy{% zZ*+>o`dJ(X6-&E3d^45*dX@CIon7))M=YptBL>_tbw&SgB`9Dp*qE8;b?&TItRS{|E867}u!e!bCg zJ9E0r2cz}w=d~j%(6d3IP-PhOHFiL^$0OsmnjlW8e-9LEALOIbb8-w%sKkaK^=hYq zVHN_o9X-O1;pV)fi`n!Y2`s@h_+P8QbtIow^bRJ7qm+%8ag(vF+t$UvW2Et626LnM z*y1Vx|B?%twD@kyS{5vlbb8~`z%m z-qB)SBB|q%hTOn<%i@B@96I-qG`5BX-Nx<2vFstI09`pb0RbtU=Ab zv<(#Fg^YO-!+sio+gMTbWR!(%HGZ!Ts0rGatk`^E$kZ?ual3AAwja8c^N?4Ik^B#9 z=N-`0^@n}8t%{=#s)(qlD2P}Tkd>e^R0OmL2*{{_fQ(c|kQJnE5l|5j5TYQPfb5;P zSwh$=Kpa4T5Tb-6CL!egURx_|t-t!d?_W(p;NE-A`JQvn`8?0l3?k?V^lw>)V`b$p z@o03kIi($A2j*zar&WMr&WAI(Du^^CgPoPIFY5Dzc1~+f@OAFU+6{|V|I6(lw|y^Q zmYA4ZkVe0Ab9^nY;N)dNsOY|sbKlafp(mV@Ro0{{0RkiuK@vBV4u2)67=%?x^@@kT zUS7ZS-Q!z!x{L`psm1H^bK{J*9%#-fBDpEME-YuZl`m}IUL9$51DC#?-ZNBAKKssp z=>FwVIBlEgD*Xjq?JPnwca?fMySp3qo%SEuGX{pu4-ZCc8Cb<*=LE%j$wtRDDtZ7P zpF%BKokJiPqzo^S%9Ji0+d)PNvXIp6;x3$!UpS)W-eRCqcy+nV;2^!Y2&wDb>(ii% zBRgiYC8OV8e&=z~mh_dPxOBg5!(G)Pr>2cacC}|Pw%a+?K6WrUXd!1FJLQ<2sIaMz@FP${<~F2G+yq714fnLdlr>JhzDB8bLcK}AB%ytK0UrR3 z$_Ou{OExp>B>KbSC9Y2{d|xBA!1S``#acK=0K1zm2(swPcv>QZ4`_xt&Eh!8Mn7%WfxhqrxQ_)le!Yk#v z6q%tV+vQroeLg-wSv75~-_U(*?Y7iTeT7PU&1jk_fNgucJFGZwr9_=D^_;?o!kA|vcQb6?*(Sa86j6T}Olibanq`tzOd~UA4d@|iK(|ehT=w%266xR9YXaRHxkSB>nN|9T6fJ zkm$$eyU2o4sbJXWfh>?KmkX8ls{B>H%RVG2^-jAc-M*Injh*0 z$NS)Z=j9Kk<+r?Zz_#5I=2b;p&F1J$`-Ps+le^03*)C9}Z&rSI6H?577A-`sM!i7SwaOlGx4-=3F?BJ{aZuDtP{OKzH6EUUWHu40;U> z?B-k_yX{=|xylB6d}q&oXYkcxzv;FO zvF*~n_$;2(Y8)(UEZp8gZU3pVB8{b5c?@1VJmPB*ebPGIhhJ>AtDLAfduF`q8cSrG zJN4+{p)C;yadjhd07<0QV{}^t?*{?`D}w+qi>MjCOFVJ^zS>KqBwEz_!Cd0WjC|ea z@7UkBYkIX;MZnivy)JjyDg%q25vMI}{$7pOhn<`H@X`kGhTnpB8wDLyBn{2ijF%tL z9*d=?c5RqH)d@k5y<@&I$n{{g)q=35`z%sGd)HfEYB7|VEkBlNP;Vs*$Pd6IdQxmCH8(n`&y>#WO&xl^yikS)TWRp{>|9ttMHWz<-@t8ZeV!5jK z`eJxgoseCpFVu}rqgdqYm~6p=RNP!KlyxId|_1Q-q52F z_^Xf8a`mq(X}KPE4!KzL=t-0)K*6`YZdIoh7K`r^uC>Yc8EmNZA#wv7_ zyurP+v}(mQI$_fa$UnQU*Sz5Ui&dY&8>}Ow!}u%SIpNqT!V531~2x%@9%RPed&|r<|8m+m<#Xyd+Rn@ z1kYW#>drbyc_(yhZ;8l#^X8;+5O`yHE4sB^8ZY>PXSxV$j$5PQ4(mWU&P;=>N~9~m zn%>!`=geiK&cjpdcy{aMw`+%n7R=%Y4*0SLy)Rn1Jq+guGV=2B=CNWv?-3m-nbq|q z)X?MKhCuLlv-mpKVs<$esU325b{?<$4lZ`+2+ha*e%OAqqvU(1~{QJ%%`rDY$V zC~xFzS_{uOeXdAauNSUZxzb!0{T1cN`g2;2D>~tgGolyX@S@e;j^!GC{ZD@ByY(xE zGR{}28ktdpd~C0M>f~Olf)}ZrjZc>CTJmpC5juC8!cMyvi^@my>Rcg@LiyygD|`&= zo6{GDcF&4i+>>a<*&J72R7ZQaVftk@7HFlUrKJt~_)fDR|L3^c`fD&SlhiFi?}Fof z2V)Qu>seHZH`85kKi%5D_i8AqVsncmCneQ?t$R9}6|dm@;nc3dtipB+EJ$Xz`y7<_ zA!~BC`;_t*I#o6|H}mt=C)prFJ_)Pd;?Q-P-7t3*E++4vG3}AX%H2pO5ZuP{{>mXv zzeS{yuXyk%rPO9j6;_R-=XSyPxdsHnSed1_XoQewQY3LbFT*d6$ zJ73a%_Pj+8l{!x3KQ4nI>&-$5CyXW3yqtRJiHRFw`_el{cu@HGO@k))ge3@1g$#R( z6DM3PY?9L%PQ<7>vr;7D?m>iM9vE;mkHJ=GK;R;Z&gaT>uYPVGZddQ1<*C20j-TeJ zPj{=eKKQ1z-n>KmzxnoTpa0%4r>lO!jzy&2ndj&4(5+t@+TIOL5GTbo19kJ!wsrEw z1u)a}hN+EgRfqSkTkMJQXd4_aIgk}cE%-Q;3E&9bh^V~nmzE+M12|4Te)D+}lK;1( z-wh#h+mrN`#HssaOP+bQ3<)?q4)55b;3AQiYgg3`oP9(ULi{2UkwDndDcZ3A z(x%zZAw^+ZR|BldUDvd_H{RP@!@&oPA1ohEi9^i!k#BiJD8&69!!y5jL3yKv1@ zu!pIqcqfijiWK*pAR)b92)j7z&6&uyWM+1mYz%jjMV2}L*b3gJlpPz^s)O9-<1*^- zmWV}%RlsmR4))j?FneMj&79vkC17G;8{72OUVJWW6m;SQjA&OEM1LGh(K}TYnw8@>nhhQ@*&nWk(>V z$HDb^R#w(a*psdA4`+dhL$Y*cxBEj#rRyNT3#=u#VrseABP62%v0eC>t_WLJF;P+w zwwX6nOcJ_*8wq*DRDTKf^)9q%(zE4}n>B1QN_>2gkCt#NxJgzP&U_75Pl5jC0{JF| zc<_zKvfIo$Dw(q%JI_#G8EAUu%$Z(6sHQJuT+;Jo&!gO)R2 z=B}pakFL7vmqIdIjC-B7dTlaD21!*#S1=M$fA= zG9vb!Q-K^f)?3o@R3FA91ELmc^ra>Z6t*0`b3#^@c zG6v?a{q-E8;i|cZsd?EGj#NQ&cQ^;p4@~HTZpk7bVY0Qgt`KsUvPkxAm8iwNlD*0j zwmJ<+qG1QH#7KEO00+Mj=1Vl*ofEzf4?3KHs9!+?AGzq755=vRCu?B1L~Urj#GYSm z$EU#AEAB*?%Jc`h33-tJ^W|l8Fj9nyV0zjTH2gEEK>M5LmIWrSnpCE2Jy$gpy{5!F zWKIk@riQEE@5LrVXPZc~LBfCe`L5t0AvVZcBsS0N=+R#wuFP?>F(G1|#@LgE3I)il zvKaN@RdQ6zy)&|?wsULzcBk(A^@Qi`RJKnjR2G2a~Myz}=WkS3NBp(SMMq#I3XUmz2VtIIDg=O2H~8A-B>smZh3-P&KJg zb0EitRNs}#IkCl0=vT?#-TnS3370g$;kh4jR!$6jpv5 z%e-$2yaQiOE(3@AhpK~&!t2GVcv;5>Z`?25AnyXE`t6fc&>zGYNf)EZKh}`xyEQ{^ zlj{Qx35&9@71jf^OY)R`xM)Mi@hqP3S(KYq%Po?Ni79NVQs5is@$A475rgYO+aPi^f$9=UDqm>ebQ=A=#d8x>^&T;-`&50Wrl7 z9iuT6Yg>B*)@+WZy*q(o^Nyyl!>Ls{xf>F|dXK{hu zCNw!U9rP3AUA)~Vg|e0t0j(IiMPa#4whcKgeI0n+hm6pwvR`W09Rq{UV^#cyWu-!2 zWdopP-zy*gjx7PWP$2NRiS0SGYgpHzJ?yvpTdwdbgy7ZBVflq&r##gSq@_qrEMLp( zCM11aM<0F9&&m!*cc6DnXjq(4!Ryx1+#1BB2Uv$u;PyCtBIbnDzGpzEfWzzUs{B%i z2b|OZw$#T*o79FWbJv7x#sm#J7X%Euwqoi|%eaZd6&0ni<-8pLdWxBde=26#zHhv| zAZ{BTO=ijzxzcO<-9aZ}$-jU7=Al566E$$*W_&z;2i%Ozdkj{yub4Jtn^>g| zoA&3Jk=qlhs&+9^&a+LedaYx}5ARD{WU#U_)wRwdCEc5)N@Y2zoq6-D|21pUldMWx z8`S+~l3i?4e1FHdwt%#KHipD|)95I0)c%OeVNqZeT&iJ5>^|yJM2`trQ*Y$k)3B@P z6q;2S=BRJPVw)4X+|{BJ=*!a6428>n!aI%^iPw`^$*DI-%t|Y8y*n*X(cu($~odM&iMahhjb7Y*Sx$m}`={hTQFH8mtpydo3k_xCUN`Z`01FugI0U-Qn z8*ejWu^*(Vw9wuGn#a%z;z+ds++~*9&)&T%!^^7tI+Rx zbN$gvv!5D8xMzu&`ARt=e4HznCZMoVg% ztRu@HuE-?oM7CIsKF>ZC3Ra)Wv8}vBHrS|US1MkQ%~6X6Z3e10dSvnqEpmvL7+B?n zCItb|%gn5%nPm(bc)Je0=9;NhY0K88C=YQJ{%DRws9Gi{k{&y2SqelB)XK-k2Y|=v z**5YkUSd4=wlSlgf*)xQf6W&(9?glY5+)9^ScvPoO+Qho4V+MM!gcqPx-ErdlXU|v zmCk_IfrD%fS#Tl1f?AqnEf)@U_a6l)*=f9f8ckEQxZ^0>T;v&9#RBhQXtBv^GZH6C zWWnBsR+u1^YO_-Me3Fac9*NOjD8|ue0cxbJX7*^PrYsA+spxT{99jW9ey`(fmNL}u z3Vf+Y`U6fIAh&b>auD;%9V72i*t;x@zjhBrLO&26f0_mg>eX z9iy~zCi{xgxn^F(>`FCMx1hwy(7kIbeh~n?=z-8@C?lF3&zI;# za~wE`bT@xvNzzdk{B00NBy(uI$#rVAs$1fXXy9+`6>zqa@AJS3hwBT8GV*Pmx@}a2 zF>C0E6@)*_nz~l@ql$^wjNy|>i3;O=zs6Y*D`}ZChwcadYzRYUUNi3W{3bOQz&|r0 zO7nEo@5{w0j$C*^>vu61=nK-r*jJ8e;1$z_ZD=2?mnoS>L&Hz$!cX}Fir9H2iku@= zE6(V?AN7iz>FT$Ra292d6fbB7&tG2wpq6wq)o5>g?=nU+(>$+hGxtMNgM4jtwhjD} z$N&=(2#ij5tr{=)QUj^LWuktDFqt%)X7<3rQpTpPVnjh69gkNs5g7YlKh`?dIyJdx zgH7G()TNWHQ^#7TS{F;NBymQ{=vCkIVij(1k}w3GJMjTkUBHVWDn&c@wF8)M^N#i#9k`>gH<5AjZjgcVUNnOL8JA6$~1-xHLB792VLPk48fOH&e!)9wCwIK zH8M}4u{h$rMylSEy0TO823`H)j2^QCyp4Slt=y1S&Ta7EX8Pa95WMB}aB9WcoEBd) zsXSd%SN39~$^(96+?dryemc&iB0;(xIP45d&B^k(u!sZ6JI9BKr)zvvdZo2x$6L<4 zruHVXt$c;2JZMp|CmNh!$X&-tLBLBZQHg6Tah)UVpqo`?<>?4;FbexuYdR8Ay{`)VgUfoICA3kWx{4&B8Q-pL-j%x zRvk#b!EevVv=jO-X|vnFCJayhK)_TBcefQn(8<0bfpKMqlWY}uqyuL?ne{^xIY+V# za}|uWIX4CE08?VB;fe^Oh@-!%1*$E5kr1VX!8`!s z#oZvh5eN3Qcbm=8Wr0Bi=Z@jG?coto?lO4VVaX+3{Q1wpr8MqkT72X9f=~-1n$-`B5V?0nAFeqfLexmC=I=%C3Hu|GZ2uxu$ z9rEsjf+KiBvp&iyH3I6oeM76zH6t9l7)PP%YdLoyxW3#`HT84Tz7ZKXy$(9>K? zAXma%fnOA96n@}2UF9??@Stf?HSZW+Z9c4?ctE_~8XsQ!WBO2C-XSPB{v%7Tj>_m+ zse_PWMYcsJ2W*ww46ZB_uRZ?+gVC>XB|Ja?J9dC5{OY#Mx`{ZJ2+ehjmP%EpL!ZGRt-Nt%sqal7ofVIvG(lm9=z=ab7H=s} z3*0{j&~(`4G+rw$kuQINs1$FR$cb+*ZZFHnm0=FBC2}zaRhOwGZMwuQ&};Q60+K%2 z9Ei~UeQ-B7V5CpnfDYWJ(l5g7JdI)sLfW~I#F5MaX1v?_7-@nDDE*Z|T402lf*hXv z{DW$FQYtKqqQ@)&HwI}^Tka2_P8=g7PFdd(ARgDC^7-&_-oRLsZgwYd#kNI^ZsdR^ zJ^Ki9^<1c0f=h{Daj()(Do*jd7Z&Ois9;SxDy+cB`+?iGPx1-bqk{Hko|k)Ar_W}z zq>LIaiCy_XFqJsiQuve!I)vehL{Ob5!kPk^Fh};BMmewq(P_9cbR!ScYHX|F&MQ4W z$#&8nRIsytzl^}F6>MpP0tca6Tp>(mKiIFizv2)zHoJV8umYu?!OY3Z+OA4cYK!t3 zV=)gT6s9|y=XWA7%en+ZPs~OriG(R#bq-cMFk$TE` zO$!v-{Io2|Dc%Z^g|LQyll%$47%M3SfgO&}u^(i^0tOU)sc)4}qO6?YVcvy>!pG5p zTLuJt7ZN$Jqf<>vSGMfv;SP`+nyQbpI1nphdfQ+L8WwAwBv>Ujk-;K;vip7j;O_X8 zqbv|!!YhxI#A(kamJW=f;n&nqdl*9%YoR$(m`f6QJhp*%rZRk~{D#z1n4}~SAY2OE z_yw0H`OBcJv4-y)L1dq-{1N4k!A7q;mhfRW9qWyTd3l6}ES;K)+w+vof}ABuYB@vY zz6Hcg;2Gtw`nQ>w0lwg$?nkOqzQtO=tNKFE%2|`Mn*qq2N~(wFU<}Fy4(~_POkk}rj2f(f`J!X%UFP#mDZD!w#gvLq6| zR;Anjk=t*bC%rPByI_M2pD$5wbZJ=70yTl-wMb8Pm?($51$k$(Jb~#qh7~;#9cUH- zqLX2|_yaDwBv@c(#ig%Bv5i@+c!y z&@_P`{usnEu!i|t(1mD8GQ->p#i9q<;ptS(*0I}!N|sX8HcbUTl!J-Hb*E^o>!`11 zgA%Ssr3h#F(pboUfB&rt{yQx+zL_>i=24PfkER)-Qs5BaA7c#w6#h7Q=6M- z>aUu1>N0INm$B=c+8+PzYx6(u_K%ytdhSJ7U3+``lh22(|Lq6==M8J6u1w3$Ru;Z~oqc@w zqXW#o%JMha`Q%SOrKlh*o zdh3(oG(I2A{;eM%|J&F$7fkC6{QGa}m8s1Ze6u&L*P-BS6j9fVDl+U!>)Q55M;^+X z1&tilwB&#N?RksWIwAD2TiI}mRs3(lZ^ZqBXRX-tYsk~?&E8})CAdiL7#fv7n=GD*S)^+>YPgq zziWj2?vBw075Ac>3Rd>f%rk)@+_6r(aD%C(Of1E%!?qW!r#tH7)Vwngd5L!pVBwKb zQSFr+8TR}TIJXqK!jh3y9O29z>m{T))jSkmGb8E21N(F?dmp94gC`3d=tGDkcH?zx z{Ppm4ju-jvjxPSLX3Y57KX*;PP!EO<&4Sb2XvEXL==mzkPB?w+i^RqUPCLo{!cYDE ziOqlx^I^azEYF0Wb+VY`w_kAvW#XDM77kdu+t4M?btf5nERUIVWmS%Vlm_v~|7a>7 zqCmWpwacUb030BtLKJr|@qH+!6AYf+@qwHe@~7%!9fTg|pGxvF zZMst8+)kz9v9S<)tjg`{U_4tMcj7rI05SN0q{Tn=Z|5o8Fp zxKSUk-hmwLRY?U^AZF>10P%g1(@_Wab7k(z{+#Vd*tgqgXD$|e>*J<=eFx6zmI47) z;tVcCzk4(r3r^CVpnI`LiUXW6+KBia45Hx0rrC8?wROwz?*q%4vNua=8 zT`RsQ^XH#$6)rd2^EeE}-zw!R(Sa7xtL6fK@4~j$)`DS< znU|e6FRR*btBpL*;-oC;uy>^VSz2gR){DG9TA=a8EdJbNO-^T0XmRb}=X(C%J_Q#o z@BH=Ei=q~Od3Sn{MEj6#s@dUuQqa3Q@dd)w%HtRH*I2!9#Hpz4?8yLL94Oy|rvmAg zR7I&FgV{ytaNz%RccW$5&=StnpvqI^NVW((?5Q8m|EU#+jv*5D0B0Y`iW;`RqY*RAz<6-)x5p!tw8cJz2ToZ`8)XPMVHw#z?S zKCQHs-8eU8;9;8dg}~)|Zga~B&1AmoLuZQn1j({RoZlld$iGf(nLlZ51Yvnt-b!e4Ga;Y5D4)mZQN znKQY)V6+aW+amj&C1B-GMo{hfl3q6qVic3z<>k#t@HpELHenQcY!w!~zbpVrgArfm zjsrX#NjTvE*lywNT`1|>e-qp5-O*N=^LSu)+6mw~Tmez5;R6<9YHn^`yvS%;{}?(v zE2dw{+b2cyq|LN1f9$PS*5BLPxAnV%pVu2V6Cz#m*8EWe3NAiEq${q25H4b6=^Ezt z-cc`sKN}FD-##-!3aF zd#egY=&hOEWj@S4+enBvPaY(IFz{nnfs*4o-e02(l$JV@5D$m4`h!g1*Rde;+Cra% z+=+aIo8ol&*tB2+EMXy30DXe3D^gjyZv?*1~ zWe%W8E&by6usvt0+OrzezV@%bG(BsTe}A|}Y@^SUPMa!&9lKH5v`n)>mf`xc}CzA2QR^-*<5u)S2DyUOy!i6twPc zycvIXv;|49W&s?epuBQ)2Obh7JzNz)Zcg*D8f?Av1>aj8b}bxqCW0@Kxyq zr-dACaYuYwgRLk52Ir;&`}|ia+V$@uA0fif$<4I@t;EcW_=?Tzw5~F}@o&ye>7RE~ zoq2Vcvj6+6>Yw7`8PLeZ07T?G9v8O>ICI|j<+Mk1Pi}$zk3W^lnW_u^mc?~s>nwka zNM6GK#m;hC>s!~C!&Q`f!I|>A_ziJx_LX&IGIar-y@jsN$heZ11D33m@rjWp&6<2u zlF5j2Qx1l?$)$JEXS!zY_MPrMC7XoqLJ5#yg{uQ!4BWuj*OIl z+uI;C-4gMW<}}=O+n=Js_p`XQ|8pX zb)3m(J`4^?_;g-&-mOrLk@W&w{!4p*S`T}^pk#8FK=>|c^yzARSFF&q2wgc5+beph z?@bBBKA~V=Wm9uq*7<706q6T=>}2}RM!WF~3mFCX(TCcNi}vSK)U4WJ;mS?G-mSNM z*f_=G*h>gIQb&rO{yA~4&v*nP9wZhid`!5sVA;r%Wg~ZhpMD)4^ZB9}z~-d?tmef`Kvh z?oLPR0yIi=&8?y#7CShF&Xvw7ZR7NfSt|1tj0Wam;+&}`d9yc|T(&eLJ z+x6yTIqP;(1gs?cX!EgM!l0s#K2hVm?4Ax~iHfkmI}(T8KMeW1)jHaAp6jV-xjc0? zeP%!LuH`QS`Lxcm+5E1T=ALd1lXGhxd4*)UjGCEIPp*s%86BO?DGKzQUDqq@XB9b} ziIntaxV^CDh-F+{{l`;Vdh8WonI~tI-t*qS{nM@gIhwvS!v5`RWf|wDDzQ;P1-&Mj zc;VkRcdqQ%$p|rT&(z~?8eACBS9lPAI5&ygU4O`9Hi-}=al)M|uTmJVOsT%+A(B5{ zkY-+<-_)H+sT#mogTZ7wr>u1QCC^%*c(9e<`+@J9)w976WHT2v#1g^6z}v+l?WkzDcW(!G6sldtU5-(M;py{j%&5G`Wi@=g%iEJ!`C zJPabEsR^zUIr*o?vF2R&(wTjJcjn!Si{I#JRUa7o^edn8Luz!q> zKc|>RwP07esh#{k`c!rCBZ&xf(R&ODV@LimD&Uxb8=-f+BQ=619_rib&SSqWsvDHB z^fm~!3ZP2YOhQ*FT#g&p6r6O|8TX^J=eH3^_dIS&`VANqbrh=@4LbWLiN=rR^~8{* zTznD&t}`ly#jZz9BI7mq)-Bbn`J;J(d86gVDKd3RoVO7%c*>zlKMQxygS@BtZyC4t z2PH_hbskQI!^n3Zui00>J|NAGW7%jIkDXb$q{PFZRxZfYyQsY)ocTrru>@a@QqqP6>Wp(Gx3SJBHNQ)2E}Z4=PXGqE8aahB5BMszZ6t zi%K%e+!N*nsec%k$a3Vmo8FX|sIQwzD(@?cj_Q7*V-u(=bPFpPK-p--Ougm>bxSK$ z#@1Q5n6%jhzIb@lXM5q=KS{#ieanX0GNU6SBh7t%eeY{;k@@@7`1fA?@9mB(H@tqH zDfDMupZZDV&nfrMQS)X&YilbEMg4i0EU0v z6>_qh*-LUz`X53ft$X($_18p1#6Tin0iw7Q6SrObtsF@jeX_evx_gGl#i*QvLyP^A zh&J<|zq0$hJJY@Q+|2&&nK9viw)f}j{PZdK$*Pj^S~<_4(A=ztKEF+TTi^P7&uiQ^ zXZMd@%5bI-zb`8OYk$^I`d5(rU}FP+(ff2M-})ea|MmAC&b@Z++V)JTKbLcVPMA)1 z!E;xhijXOIuUkJMPuv>uQy@MkJw4ZH_S2w9vIp;UO~;c}>q&>RaW1mrMZX%X`o?|d zf4$(~?DhA8>=GCY)N4_H-*Rpon`IJGKZxt%NX1F)X_$XQu6c$>sb1PX*u+>YHi4JW zYRJeibyd#_{j+-i%S*$5ZL0X6?``E`Zh49}#(e!f=Hd2WB(V@uT=N{{pZNdR-~TWF zPOEP&NNnYkzR)n!J4SHI-0YG!3y?Tmkd-S}E@l3`Q+@00GuGeOCM$dTa`7_ahQ3)?nYpAj32)EGl?BeC=z$>S~ZY*9>wU)lkfL&CJ(fL=O-Z6dq_VLI?M8s z>BTGKs_C-sw3Z6oaXIB|HMXmtwXt!_H9|io5)fP7ha>F(ijV+%Q~3EH-fZ&64K}Q~ zJ>*n4#Ri7gZK`h|2)wt05=2IBQ!?PmUchsq1sx=>EEKkpII@@rZ*arTF5}LDZF`CO z{sFrBocp*0evV}xAz-^D+DO>J`|vW#)!0`fqWE!C7M|%K{9y9p3Qxm$A|OMC9LrR5 zso`iwjKv6j_1nqZyo7_i1+UBF#&u<#(Lw9B;qf*VIBA@ZKHhTUAj_|9w*`P!4lOJv zoziADOB={dVc~oR04zCnZE)m|ol_QX zWLbm-1{u$-?(lHoveF?+Jjd8TsJ2!K@A%PGwTb+Z4?d(8jSjz)vowrajY}{9NGHAy zulJHhiv}yl1MhEnCgka$Q5RN~;=IXV(`bUh(QocF<`-HCTCBzm%Zh68Xvb!H@-WxF4% z+>2k4de=`|_Tnvt_+7W~9qB30XM)o!8Lu}XcYz-|O6%GkdaSv0QWa3OSJc4XFuofx zKFX`OnkMcbZBsYW7R})sbQF@re;KLD8HH`vV*MqY}OYPQQowp914qFfJRJdq!$>IEfX=6R$}9Ki)j_kZJg?mMp0=}A_g|izc;^xZgt;1bcrT2k zYhabTjFQ0F8lU6se}`HKTZaku*Rdx)Sc~sN6{4+FCV%9NE=$3IMIz!@o?!!!2(3kF z$ImyTN6fg#5lS>&r~}_Q9mHR3_8kzEg~@J5s?3O^f#tEf6_;-0BoiEl2fV|Y-oLJ@ zX=Y+aOeQVmPqj{YVeWCn3jy6Zfxs#>*E9QT zS{5`RxCgaZo7EC{Gh3>O#jA|$wzbna|DqRioNC@zW{IMkJImx0jc|S+*v07qa^tJz z^0I@tCa6d!V9>YWC92S{B$eB2#R78YgpsQ zHZU{Ye3BYMi-1RTI!N{=ko5fleW?Ii9ipitSVo_Z$yT05DjuWeCyNeL8K=XLIUQ7+ z`hz^4TM3r~v~P~5EwU2)!0o#Nh}(kAHV?{7R&@b?%$ERXcU>2su?PMLgH+Gr{q&|w z`tU$1CzTGgOCG?xzCA`&U_-5>lq<-F=lbfqs*A-cZ8=;qqywrIpGA?XuDywF_=ES& z>2L}(s~rH4SDR(Lt`I$NjQFuhJ3^~*IMmg~;z84dZE_`E=BCoE{(FQYoPrnV(ESfmDRM5rw+1+6cr%uDfNCbYSP+Y*(ZEuA*P<03*wl!4=TgS1Az%1HDn5PJPO0)_JX54 z$?@ul85$nEr4T`Fx7Tpn*wV3h?&`AwP!sJc;_~dw@iORvao3wduc;6$=0?r-Qg=jD zM5Zfy05OW6AKhlE{zenMVE3ipo0a$5LscF&_1oKZFjdYSaJ9@P8#bxbt8JJIj1STjc{?lReULbES*C8%ddG`mz-S0xHdg2ENB`VQC5hX5!nA zzcP|I+@f;DA{*>-9xFe@k;`cNlI2(D&NdOmFvg zn2+8E@E2EXtbBjvq?5V5C}W#UgSde-&A|MMjoc`udj2TUVTYuH5>< z#h-d3Yi6Mpj^aQ&_kO=|#Xdk4LEE;#I1z#Rr*jeI+#w8Upz@ zchr>~Y`pkFeUbN0o!Mq6bQ-inAuYnQ8jh^e`nQ6js5N~Bq>aExMhwS8O}!>FtOuY{ zH^?nxfz|{xK4BR3U7x%F+Hyekp!0EhPIqTt8A)}`pz=Fjgk`$~ZUEYr49o8_8@&!k zA-SV;vlWR=We#=JMx#XDUI~0WlQ;PxO@z}Ua$GJe>Ncd_?RW9jfA8se?BiWRLtMYY zAd}_gVvVMFCCnzQ5LD?XRMLRnb2AsO!2sYVi|+3aa)&J(PUHS1T>ubGwS}pSXIU1z z*Z4e)3J~3*`lgPZre_!4lJtF3$>Ee6OLTcu)i)C#kQLM}Nw1V#;?48ma?12TrDMd! z$>uGLQScGIV*!^AtBzxHs&d0;Dd^fsb4pR^`0RzM1n{NipP7qUv2kE zW+hBcPQtw3lL%1#eb)666+}UB8<~obr2$l(Q242UzT#!__=dXEK~U4-)7Zj9nm&Zt z&<<>7fL;y}wWZKiP7=L@x*3)ZN0qs-(v+)Bz1$$*1j$NQ637CTjRGF9*lamiN`hzq zDPVyG!*>r8qwwZ!98d*}&}b+UE-g%YB`8%Jx+{#-l?oKg1R4fQ)aS zH;~XBg_}w2wZmzf7yffEV(DR9@NOxfPH}$le{)sF6~VsXzugCA;tO8hme#%g5TwYq zF?Fp$tXugcM{?!lRY|4Eqvd1c_mziSGTUq}bo{YV(-=Gp?CY!*Z@A9aeUAdj$^3iusmlT6NVLQC8xr4>;UAL0gx;3@% z>Ypo@UGfAsktEfHxY5w!eG(+Wxz7Nzhuv_|ar76mhUmT~d$hmDrYtkp&ItF+eXZ|3 zu~SP+Z~tKQ`}GeU4|eY@>*5l*nvm(pP*eU6|24a|f7!B{zT;+PvA!jln-KqnJ;5mH z8}+9Mdg1G89-SdNfoIgX7i?jeT3DP!p-A&a$o7gH@V!tqw?5wx3J#rSE*^Y}C#OLC zMUblzio3U0(ffS0Rp1S=lS@n0#Q!*KZ@f9nIOXs`)RYXGcTn%etNj1BcDc83VQYK4 zMbSbgy8H_dV!N4^(j_|U zeFB}hy&e|=8F8dMD{ODw7K7M+45bpna6zw?uR;xIu?7`gf9|iZpOkTZKkYEO$?bG$ z-wqT?o}^DtuA9osb|6(>&GjQ_R{Ld_C$xp`h^HjIIh^ZoEreh>=D(L2yZQVPy>3V# zLM>wrj4G<`=XtjW6qdTwMq?^ZhS2J-w(hR}^vnN4^G*LJOHUwfXn6+0{j^tISEo5) zd}{B4kaP2bGt<%@0>||@0Zh^RclpD5>~N|XNM z5cT>V@bk#aOB@|Gl>&Zo=fhfyvHF}mE*sR+s1|@|m=Y^xE zO59`4FIKA_BMQdKIyC-(0)khHZ&gqz26H2q=PJ)u!DBN1J}d7zR*a)3+GRSsb|pQ> zPu|XUWS(46%OZ002Aj-hl-e9>yLx9qkVbpPqO1#_ZsXfFP8+@FD%L0z`Sc1M$^YzZ z!2=7fBSfp1#HsSJvP`#1b~_d-OjNZ+*k31qgOBQU;uHN5T9}+ z(98`in2@C2&F8CY9KdH6`*^N+C%6WItS}%CM!oFoGO)AzXhU*%*ZkRg#vh=&RZ~Y# zx?~fe z4>dknn1X+yLdCm%c}J+kz-ZFWuUi;S9|r&OBz%`v5B?J8`olj<{E*iyu-(o7$?nDO zG8@3Vi-zxy1BSSz1wd&e8Z=S^(-2-;E2}cTWR$1TD4 z#*H)DRcC$2=b!!apI7_Gp+fMiAC5aGN5;lOltBBnkPre;h4t2{mEtc?<+rDjZ=v7y z_Teil$Veg_Fq0{I&we&GjNO z3+VQa9-;e#G{={4LP=j@PlJD)6&aGjh!ICs``-a#zj2<}8hZ%w zet^D{bLHXI2VojvQ!9Aa+!h%)E;FW%vvOV*x@Ib0`N z+8O#3=j_lcAz6sf{m8-?>Mq3kiTe>oh;%~YZ`#U?IXSnE+h?NrYA zEf@$zatsB*pWcYmieTfFM_>~yjwl*{g#^FsZshb&H|pf4r0WCs!1G9%8sNDT{sdS# zZMQh#pkU}nF0x>{a9;F>GhQrToNvyO%@Q37WDrwr9+Dr3#Al28NQq`qak znUO$Ixz8A(vxSeSEzyaO$sLsC&@cy6?1v700a;_~(V{Ger@VQ&W2SZe*JkD`NshlsF2)x@5SV z_P|%>3z=J}55w!w`t!on$44x0>2RqI{w=s3_A^gTjib$R1NSagu-^AU-6eIBx?C8#jx&Vx;pFP!lQj5Bm{mICp^#@W^0xoVC+%bb=3*Y*T{ zFvc7%5c>4>O=(Oi0jgDXDS&2K^Xk_%+6DuxQqPEB>O|04n*517F9lpZ{O%vM#tJA^ zoz7@ct}vj=Z8W5GC3cccGKykLWwIG=m34ld)k%wML#51IT0GC^5nA&d$2p_dc*Nu9 zhcg2GWLUe;-mMLZ=&Kv(-LX1rtR7-kSQBrFsn!P)L???yg<|b%obcor$KFG079Z1m zon%CSk(gz3E492nhV)3WG?)fZo~UQaq{R&n zD^;)OO|LI{Flws-w#@V~FS<%(sd_Bk^3K{SYU~m);~8n^s>B96_oS!hFzdvh?o&4` zQP+MDdR-LRA*>!oN4%02w^B;!5Ii(_aFwPy_w%d8u5ByK*qEzBNt+;g@YW>mt@!R# zo&AxXu0m@e-F%w`dGDP~qZr$~stnxJ2A%bG7q-79${Umhma9rJHkr#+QRC>QqBb25 z9PB*CV8_&X8i10sAVKon-44H@>i%UCIJ2EE*$CMrBmLt!cR;lbG!m_VNE@Nfu3G$< z{p81uA-*0^Cn9g2zHp-+sPhF9)FFE^h#cm)KVdVv?j3tYhn{1z`j*m6IELFy#qjwo zM>O#k(`IzFF!JTH*Q6zTiQb=`5%%zO-iKUzR%PT6b{aFA*&JbY{A4S8jXNuX*1gRM zgUN(jb(*)bEYL(TwHnKlo%vil$k@dc)eE0JM z{5-reUb#-V?YxE>0^pNJqT#`1(gE3_C`-B$w8YG=OzTKVE55;7bp3vfwU7Ib8eJv4 zw9P#UmJrp6JpRX}_;n-ymn!yzCrdJfEQynyeb<5v_A}A`c;)L%(esp}xw#p&Wo{>N zm!6l;w7VE=`kU_~L#BboXBm({9R@O>mcbIcY=Gj}&Ko)VAGl=Yt9n3gv?j2SYc{(@ zp@y$Vv$RGm0OT5(lbJ$F?ISjk8VaBPolT=akZ(AFp*by-sUDeUwFT*-qzi#Em|hZldZ$L z=wqdb)^wD{#B>0wDk;B4o!HJUF+7zJ?G$sX2R6&8gSpIcotyD&Th~U7Qmu&pN(e;fdn7*rE3R0z zhY!!K>7AiJOngdK@<{bgvQ@j+#5nm#4}Dq5fy>x?^%zk$D6X|maF{-*Dw090n>wqT zRBBEdmi-{#%iAF%AUpE3NR(cwz1_eAVYHt6TKQIChsVSyIh;oV=c^5Z9h+Eeg5*)q`kZxrg^|90tBJ*{Pq0fAkNUKy|A>H!>5C{|aw zaAf&GKKgcQlSi8ouYAp*XBS5}uk-TovHPn)3iH^ewg?h%nMz=ggX;9`0#9*YP+P&k zl~vo8i~FzBZQh-T(Bujd9R0G3K_Sr2iQ@kgOOJW_jU<2BH2y{7U0e(GIbqc3Ot{QRz!FNv@< zxFZe+rk~IK*!6$^ZWTBYa3p>QsK~l`z*B;$NCJ?Ljr+6iv(k)pCy35~BR&EsQ*;Q= zC319$pPV~&>XcElKUE6kiDd&|k+lLn$R)+wA~k2Sk@{X}HMavCHlTB;L{aXl$(ZtQb4r6d?Zzq9WqrmU1V6VMQ468mep(Lzc}gegIqsi~*U_ zzUi#Y7tq>T?64?c`0JBybKda5d-lSl6%WOShE8F(6u^!_D_k;A^rPyVG!Td>^QLxK zf3H`&PIYs;r{GL5G^XQspUpou-I-1z0y|IFu~*tS@7V;&0qBQ! z^nXz8$WirtF#+iT^2cp$Z9J)fV{7FAsgbzou{GaoqKPQAX1RVHsN9-AFtU$RQJU)o zkSZqRavZ=|wSD>W$#&r<#`GZop5|X*WL(Wn_wx*(R-_#&v(@(t3X169t{dC8HUt`r z>lW4DQ)5=jQ+&d0SE@{7-rq9RiFftDFlq+y$>UDb2`cD$?-;K>AcO2bp^@+`PfJg4 z1Kk@linH^K`C=!3m??R9fuz&{@;lyVlPfOh8g(r`@-1su7gW-M}z}T{Iy1BNmX31M)VD z&EZm%GyhTBFv}vUaz^oHGf+_tsGQWaB|fu8b#HubFYnW2*rBe?W<@cYo>TfPmi?$R zuaWRon^?*2O_pxiI@%y^?tGiFBawgTq5t;8B}qxY^I{aIro&6xu` z3%IX>zPbVDIXiLdyN}j4+V9KIvk;QihZJ}?`q1WT?OwMSaZR-w&rg$*ugbpqKDdE6 z$!^wAjzlRNAQC)ra%(@B*|EmOu)l>^0XBS5h(1P*4a zfdUI7KoYr&vUf|ysmAQ1F?MBAQHaMb%4)2sz{*3EAtjHP|SP~1p)+ox;{6D z7~53EW#@FcV|VnzT6ZFW0(AZUjeKQSIO9SG`|egb4WCJLFYvX@SV#nZ1rv(|4TQ3~ zN^wG)dkkni*nfr03x~)F>LYr}sinRt3uk2`VMUfPr zLq0$qTOLGx$okRUGZ07zkX<&+=<$G~CFTqLC930p7Bebtz604BaqU1?TVT8|^vlBJ zAq%2OP!`^^vdY;3@%cqxqojWs-8YtrS^GRTokl>_opoKWT9f}i{ZE!k zvO5uTNOmHlD&e{+aQRH0&jq<(>#V;D04y;G^eb^fwivuwLR=gNfix>CIRN&*+|eAk zk&#h*_%&4pCK23yXwvZ6KR;8SzqFZrzf#-;jQBLIA`@QFMwY#I?_G5Ch0Q}tzzuM+iV0ffEI_VV zc4X@^QhUoA0h}J%$ppuNkbZlHVx0eJj@2$eS!M$s6K_AHoJ2-)>)TL_E;P2G2WmWA zdNuvo3OH;N1Ap?bu3l3~V73RfP*|=`S!DdRJKx_fJ4^CpQX@Jz|948&*H=$j#Wy(( zTi>EmpEQcWupwR;h2L&lJHV__$GZ=)vAubL-tB`#@yI z=^cEAaEPxHaIzCOS1aZi;Q7klmP2_73zIb-WiFoUi6}%_fCP_{&zKKp#8f)pXAFFv zj8X9X9;8(c7D-dKjcl~gMaW+?U9$9eC)RCIjvzgG(n;thlY{;x2n=_@@66xz<1efF zzkMys&=*YeB*FZXIhI+8@kHJXh={QG_=~nizzjLsak0N`Zvyk;)vL%04Aj(f8brc- z^_a9Y<`^-z!WcC0-%_wANY_8)|D51uwvz{~T2A@( ziT|`+g!$3QCOZvXyO+gQBZW;yV64L@iv)5qDvvK7vABClL`0h~>9bkRiV^0e{;M2# zrYz}GPY^Rmzw?^xGqu>+|4Y;8@VRm@!;)TI8YH&g+1W|KHbkj|0-6o9(;l0r8i7uG z3YL?ayKa9Y0KB2*y+fEO0X0khQ%c?#i!t{6f) zO2zj{7n97-pYnI7=Gpy6AdP&!;9T=Yi@PtF5u!)1rIJ-v&Zk~#lKU&uf6ad?kx;4_ zCx}Wu=|KHY4);ncZ_zsK%l^YrwI(LmtOk(qDeSm-k;W^CWLRsXim-4YpOCAZB z7}LZM5K&<_l{ik*ixl@0+e7x(o)dgNJ5$xN)hTFbt`RQIO-)T-z_rDSB67a*%M~Uj zg*q35#Kadbi1`k{TyCIgQS`0%-$kA8M-r>?O0}(393a~G^M-v{7z02^v-7tpDn9D) zv4B%JndtK6%M^JBzhA8m`Hr5u^xn(b;<$;{Zj%J3JF*GPB`-w3A)te9(8uU_S?P7wlh@hD)xrSUNL3&3Q1C<9q7sL=)6 zpHJc=cQUy-o1ZS4KIRDcgeo+LaXKg!{G%$~hyA}je&5)0U%I;^0bnRL-ngezKEHXM zl>DNe-mMUq&LDeD1q2fujq-jrzg8%B1*S?mH=%kHzZUIm-_Dbu zFz^;-I6c!l6eSQtgKww5(oPS%NBHc%m6Y4S8m6lOn8j$j-1=k$R!i0Q(OuaT+QDKwOpP{oJHkl%{3{#mX9Jk-m!s>V>U1i)s!;(4JGXOiinGkcOCLOb(oll>&DVcgAL3xr$U=Mg$fBz z-iz%{&lMVMuE=p>;~l!s*6^5sYAE8PGRwaUyn3g@iWjf|*)T*mOTafQ^t^w5UB6aW zVt4)u&CMstG-XC@6v7}A)}Sp?Oo1HD1}NpCM6<7{W_;g8oRkfiV24IT%s`*AhQKKp8Eq?LrIbjpL$t^6gfL`3cOo|c(w}#Oo&C3JQu6tk z9wUpA9rm}{aUG={>cy25-q0}-5Tud;mvbY|@mmd93C|l#mlx^d^_t#sEfi*3!>)NBbOjDwN`z(A3$N;eu zo}exx+~}Efy;NKkBS0PgB}F>G2vqw50`jvzdm<`F598uQzAFq$ekHb8iF5q=*r@xr z_64XQ$xba#CNXj9lseuhtbe_=n5i$Dw89pB6zcO?cw@OinZ2ZEd{1=-&Nw93kjEUe zHv5bME>`oXATVM5)qb7EWF$`%RM%+#IEVK;4v+H^=Ie`_-QjNfxmS4;g?|3N61Kmi zbE_jomf5y)$&1EeNvm%s%h~%V9Mp;qjT^wbm@P`z-cKL?;9pvUo;c=v0pTWiRv&)xr%F7OQ`DL6*!B? zQcpRQdJ8IPAd65-?w)z{NvK*An$zpYPROQzkc*RMsfJC=xn6-Kq2#KevibWuTk z$t0T&v+mam5J^FBm=XiNl)cpY`DF>ZR7>yC3_-!6(X#E@ z`vcpKI3l|VRnNrc$ss2lOR-v>9n6rERptI8KV@VwB89|8@K}&+nf0D_iA6-b`{IYb zJg6vWECuJPn?gNwdk^ssKFEg-^Z>+h_FzXxYJOO7EtI7oSNlu8Y+Y34#LK;>E7Z=8 z2Eo`|`h6Lf<`&Kj+qpz9iu=o(tIusgKy-^MHi$PC+1ne*Y)m{>)xhT7opCd76&q`9 zX4~ICo0MlkFXnr%Ec@NKp*PFOTrMnSLcJ>7JxdWu*+8|)iBqELU=)+P zl97RUqNkVWB3NY76$-lXvaN6FyFU3IIo=M)@yx2Mr$ZyMo!jt%X2RcIG^8~w4d(JW z*>9dQ+O{S!>JB(Ev#T=^65hW|F?na1Xc?aat)ZC(=5su$z$nmSM)N}l+H0g-cTw=g zwj;e0U0&PcIrCsn0r7*y77HvC;lv{m)Mg9`f(f-OmdYwB>5B<^tv)EQ$t%qdf|V_W zCOH*BM~CVL?{j;NAd9o-xad~G?4`ZexOn7fgb&IZ zp^;f=y*zo5NCzP#fpS?Ln?PAwVv6qQfMuZ5e^kbLFlSQ+K`mxWgah=9lu2jwWl-Iw z=XHbjkMXO_w6t)Mi6mcVJy0I^fh+L{xYsbVu39>pxtC-q@-N;p!2=k{F_;M zVYOTGHS*27S`I@~a7;hONnFC??6?}3UXohJ=UF{3^>PyJzwL=HQ7|$}o0lhFutZ;7&q*&358gW$$` zP_UAe^$+iNE6yji7-GqzkZ|z5%cgHQtaH3aYu(B2c;d_aOEYbJ24N)uvVsyGHj9rv zD{MaaCvdiz)B-I zB>e1^yKf{=`P*>)MJ7EDRPzdBCF6PS%a?stAkD2in-W(zbi5}bm|afKU*Y!r)KsOs zSXfl(Fda>1S7?Ax62>+mjXK^+iN^>Pm6<*aNnD+)-SZD}`!bT*ZYdunJ9lSP{*|eO zb2-Wek#PNh#{I+f1M?!6c!*t;js{j==UcEVN{6kItZArR)=*fbML?zsH-hxf9?Dx5 zxJ<}bBYBjFM79&+iSs)V;#@j1Q`zxPYXps8*}9uW>mv@=eUN*OZ4|QON$lVtu$z(G z&zYf1QnCo<^X_JSGypPOP_Oq&<*aEwz1b1-K(1EmPeECC|gyA`2bM*}?MfK~QR}3!&*1IQ?WyeOO{o5H|t#I zQZ}Ed{_W)wj)d;SE8Bd*l7l7Qm@!z%w&Ucdxs2V4Z;w4Oqp<;~Y;Qq{AsoL%75y>$ zIIQVJWz7P{6e6S>sEp9S8gg>AWO@tMg6z8kXApo6mF9P>o9|ilUVv`GQHsc-xh?Pw zh@_TG?xDPztfU}i#Bd4trSFM?6X5H(b;(CQ`PR`9r@lf4VGL2wx5~lXV8iFv3~x$A zAst3wiFLzB$3sGHbtcw`p_y&ny3&kw^Ii~@m;soe2R?JXLfy(Uuh|&cyIt&60)=kD z9UwuyGuz8}gJ7P)(!8qCM2pP16N__?Jx6OX@e|G4IZ37I;xbuF&Ltf~m=bTU()`lQ z-Gzz|EpxHpU3v?0AxdhU#!J8pkGJ|mb|W);yXJe9=aVWIFqw81b^;Q66_&xz2g~xR z7Blx=x6Ik^RW4>C;%t2KT20INhVn>1B-!{>q832VyS_N4FKuA z+$!GL=j7lD7_oGm#sM{60i-i(RLvxz{q0SFqf`VKSe*`_pJ+7G9zmFGwJRx!|6OVM zvY+ZV-ndCRf~D1=(s*E7ssKdNT;Do=l}XlO7eZfR&xHyGAz>4O=K(3^ZB zEHU1^$SdK2%iPXmu;JbxIqPg%uvT%RD)TV zx>~`@iAx$l7%5wPE;h!OWIYD;F>s(@@A%MQ`=O7IK8-HU<)25nA)Yo31!Clp$VPC>xzp<-xS_LxwihhsKxyQRg3*}?xZB&?clKA>ROYcIIEK3A zlkYB#RTNo`7Jra)0C4#Oo0TKIenK{5W(-`KgMnMY2k3~9ko)RXuYPv%9zIA0thYYG zh_p$OO;$mHFlm(sVxb|zz>`sC3W=;~JbzvDQnp4urZ!(GI8g?Ckb5vEbb3LBtMvoq zhF8U`sbLY}5lwPJaZnXfl#4zgqs6pjN>??_O`cV$X$VLK?XE~+>PeC(+T386)>-Mq z)6kN+l*Y&aGB@7|3(v*5(PrAE^y6|p!~~JN-$dJOLt=USX2LT{X-HiZ-q|NVchg%#pG#squ7|4x6@v{+r16= zoOs=WMhMOzmrZs|Wqa|-Mr)eo7$rkQR3ulF_-^q6_gYg5u5=8&vDC-R{-987 zGHGiyx>#3up`w8SR>v93A32RPKa9YlVN;!t#qDqfuB(O6`43Cmg}g;+m+H1GQ=C2E zhDA0$812_2Hnev>HGz8D(+hY1bk=bC$h|BKomX=yAe`Dh)mXbQs>dv$PtUTv{1uyLPYjDqY; zQ@R0lCn?*T69tAcZefukN)Ym0Qa8Qxoito!Z$0!eC|HDDS;DnR&x5$@`}1skK`j}R zJWh}TYm{hFg~ME|orpIeRZPI5WWyLXF?)mg3*LLUvYc%TcQ<@@{`)3V823K?T_xLbg}1)fvS)acxkU;faUr^?fdlstfl3EdE-V#iMM-D zV>6~?NUu11542JrOo$B3-VBlt5TQsq*eLbNB|NHwcp|=+*7^xmD~yEl0taqsEg7w5 z8n|bdCB$V^ARf7Q44vN(<8C40$fSVvg;G-_JWsya-CP5w3rZHPG6<+f29(PnX!v$< zU8!8^@N*WXl{I_n%*nUQE@?g5fw^PJo_8sd$nR3Qlhone8MQMh{DR{?P!5diRAEvq$TBuQ7Fp{RU_*}c3lieFv*bPG zalcoi07xXLtm#kY+1zt!uehqJnUdf4USfgy3{57x6u*~MD2eT<5lre z3MjVd2MCqYcJc5gwFVM?VF0El--G2kw_`I_ zoi;H2?DSCm5a>onv;@)^0#UWl@bGXZRckPuer#x1gAIuH-d(T< z?4mFJR2X)WV1a;4}9T?oAm6H8D3C-ensPl0PSkjtf$if zuoeQ(-VxH5XDN+@JF7v!dLsQns2mU4H3uhCWm5S=Poyg0%fq_CpfnDC%|(T~oeYT{ zM!}jvJ^CI6@*1s<+nlh|z^r?NHSP`UKwSmm1==8(?^!L5!EkxK`QZGCv2%-=>x4V3 zn$Wn5U%mz6DX2g#>9t_0?KA~PR_dMpw4^PN8>+gnzjgbAGqgH-fi6ier`Ir0 zUK%@|m30+4XHU3QTlb`=c-ImV*iarc;pR}^>g`I>QKW-8B5Cwhe}ixx>njfY__Cw{ z*>QMUY$EDu*BPwLl>^M4UQLGrZ=sy>vdCKC$_Cc(ZD^Ia>};`~BDJk&qE_6Noj~0i ziNLHOB~3_PF3x<)7R0yv7#szg zvGg&4d^8;z+?u_EyZ#U>xxBYqF^i~ehUo8)t6Nmo1}T?`TkDS}LD@k?U8g^aBb>dU zD-boRZrJMpsq&e}XjGd$SOv5qdB6-6}Z>F9%juP@2cR}G* zBK6(i$K7=mTQV`})^!6~$Ae(ls{4wtI+22f;>z)n?X7J>`zAY}6|w{_AoJiF%{}e{ zPWs`kqQ)7};1CxqAFj19MQ9>4^tq@&g$ja$Hfa~saY0b_L1n`S5O8b9-Nu2Mi4?Wo zEDb)MH|E&XUbcBWJ3bYay>6~iM)($IaIN3ldGDR4N7v`<1g_KIq#MUCSNN{5fhLGD zLS4UvM!$R_bzub3!SS+=)78SP=G0=OP?BWOmDwJQch8WdSXylmu?w<~xAQ!>u`HKd4uW}mKTIbj5(omXgzT;NHe2Q@ zS|X8aB^*KUW)y6t3fyRTMptd}tbH)U6sOlKTs0!obbn|8c;1Ihf`2Q`$E{@VeUg_( z_4hC&K?9Wyi(3gPNN`|Sw?=T9P_=>_3_`+l5M=bBysh#nk9`MD2`4zFq!mI<*hs57 zs*s@kQqaURArday^uYH{+wDG*kB$tfg7w0Lm%^OPJ@nO#<`^Q={82t!6jhsWzl~uC_6NYjoc_V7349 z?lNmkKH1Q!CZo@OL5?1@h#c3uI?JU;R|ra?AmzHM5zDYVs7LRxXPpk{V{{A+_QP7{ zK1IgZf{P#$kUGyd+A(_j5mue?V?@qEph6l#)^`IpD2xt&J>V!$m~ zC^_rBUZ*2?&hP-c&ksSl_WYWzsbP)JV70xW$7a9*rPp8Rr!k7*LgRpw_bAnK8wXtwe^1oqym%R`g5_5%`ES_CM-_AK?+D@S6;_M&TvcC-~ z02+rl_319mc9Sy<7wnZ0wL%(Rh6O z7nGgr(T}lWN{pux!o#N%$i=_+-_>32^dRFeP{XD9qmi6C ztOP`0y3^7i^E;B=L8GIK0rkTLhQ`4BA~ZVsDu645gQ>^Uyja!{owaYfPr07Q{4AgU zvex3 zl<}M^uytqy2iB#KkdO`VsoMc1*f6wVp)vnBDJ^sBMTbB$ikp)ueqRAJLc+GN0!+^z z;DN78v~kS=eova=Og=fD?Bq$FFm7mNzl-43&$s&U_EUfXkW3-O*O^DYPxhJx>pKiE zKZh1SU!heVfya^}WbmI^FhI@`zf}gfL^s3laLO7%y(=Y0su?e0SnK#@fE3aaalGwdG*e0 z9KlYWf|k~TqHW;|cwX&(Y>D%^QDI?MEC+LV+Gf3RXpPk;D6I{Hq{~R0te6<)?zc`Q$ z5O$Na5$Nw9Z%tm(ma9KSh~)toh^~AOANM%&Nq!D|>wSD1$wWIvLnc(~fK%$K2LcYZ?JDq87#ZOO zbbnbnxx&=HFfIL0C0*~`yGPpjO6%`U@yiOmC-H9cllbMB*Z;{@6%!;I#JGbhLMpQV2C4@3@8|hNC~k` zni8WW`*+*xKe6|b^U0`P0sx(5Gy3T97CNNKM5P)pzR5OPyP{gNY13QmC*&JPw(PUp zHbHDZA(y@-C1k;DuBFA&QfxLAqks2q$hY1gI$4XmCLsp9vj|0q$Kyrj0Q@}_q3L*r zjlS1OZc8OwO{K7~`aD6vAm0oWd|Tnn~Hz~;1<HK7Jh*%!&R|Nu%Gn^^e zueb3}2L@rW)y_r>+3KmWW>=Z>!WXam#>?tb(`uKm?4FYz%Ih$HEdClv(mQOmQCGR) zklVFrqx`rHASC?j*IOC&+f|PJ;t};T%AP*WCc45Urm>QQj+AA{l9#mo#^%h(eT|M;dOv$tD;+nJZ)_Xr(V&T) zTKtH;+wy2f^~vd};Q33+HJc&vUY^u6qf4hpLaK*4EqfYOXSnIf!$i4JSN8gNr;7%b zW`bY`b3aapU!w0H5lMXeD{#E|@T62L@ikY??qW98VCr{2il+xemlNyCPGfy|GyX;j z{Y(+Ryjr7r6C8~7k_Wk_KcyZ}x>|I z@paPb4((Z)PgbTc_&maRR@5B4By_EE{n}{Nyy5IpXf%er4Bb`Oz|ccYJzwyvyS< zrjyg9D5c2Gc-@oaBoW<-#EuB@lgI~rMMk(%di(M4C}uVxWrkY!ckzynGHo3lQQ{vK zco!FFZjCX$_&50HLqzx!?H6y#_?CUm}C(TDQk(ueDR$^l;rvr0L!hafk*wx(? z5f90*984tgHkoU7OO1_M`C zWX*)OJ5`Nb+P%$b#-&mk8Wo8uynH${x5Zq4?#v&L?N4EZRtEYnM<^I5C>|UP1`6E% z0gU-2K(YjUfxDT%o*D2isnNjVc=7Yid7NFJX@hUnpEJgZ5p{$d!^l zClTiXrqmlVv7{THg&=QO!}j9X%;T;dm(murW&)un2VE{5Z?jk5FDTq~|^!<41 zG=rEXVe&E17V{TO-Zz>0o}3($uWnBn6UUhxqF6~AVE@SLwlVz(`tsOWmph6KnL%+e zF|tGz#|k2fLO*kzIZMkfQ)bT6>lDAn(@!b$@L~9iS1;w1oZn8*&WcFWoj=bCN-x&h zSbT12$^+)Ywc#{yJix={*8+{Qwu2NsM#UUuGOelq&rj<-r#`Q-Y(%&mGxUtMM1s3JWd8466sHXn`Cf7rwImwjK)R&#ty zl&av26(saAC%*98A$nwCvdFA^VQXD)qxUh#DHbcR+F@nZW3}>n2UZpIGpM)mf_GBH z+Wd;VD2OsmOxoW0Da%tT-_}#y&0t})m$nNu7ZHzmR6XCFuXLPT*hrZGC%oYut0_e^g$-u2b^S+Wid@ z^O3^zV!*lR33!bE>%ZT;24LCqM!Lj54*(Tm-)?XX6U(!I*w4;N2ujn7&SnMgtN-I- z>HCQCO9zZQRIFPF-w6q=*&%~Z+fh+XPTNgXCbn5^+!R%qduRdGc^_z_q?fqO8qASO z`}|LA>|fH)U#C}c;;9#|3{Pcmd(XdQfnVfKY^)xY3LmfjD;&0y1tC*z)56ie> z>7#PL89@G4ILXnuDP%g^FV!iB1y9s!r7$(hXE)p+K4S*BMQ(1Pp`m^CRGMDIi+8^Q z;lKzodXfIFhU|)dkdtDh%%PQz>)ocsDYsFv! z{{l~2R~IKmBFCm*|2fVZM6#lVi)26cp0{1J6Xj z=M4bVxBarevpEBJn-O8k5?bBjSY561C+|JiJ|E|`9xdk8Fc{3yNS6*c&+D}K@P3)w z=4=}Q3^u<2i;?O#Ntg#w`lc(84@OB=_+ z_ooto@C1mspA2f5%7Ty-1B94DJLKIk<{7})h~mhvevp!qG7ZRU*kkWyjmadoAGv*d zN!@v4(vEO9xd{J|Ft)o2pPqEN9$sBdG!p;rI%S6EWky(?G$B-Dp56KpFHe1l0A(;N zzjjv+bQ&~`8o;XPg0}hYnp?f6S7l@VHK-hiYR=-6sJu#rtoQWc=ilcroCm@C=?0ux;@!TE7JSFff$p7G-c z&e%>ae*S*u61YL7mEy5Xr(&P!FFqYWFwhFkG(J6T1mKGy!2G-oG>%>#ub}$&4K%QB zKRV!Pji^klgYs(fl8NW^+lj16zPY#93pJ8SI-KEA?{M*Y{_^s;av`FaBVW$XPOAWA ztdTD<%#nSxdZzLV4ZJYyf#vWyzkNZX*V zMw>x?os~?~yv5@(|Ip4IrQ*3X238(uXPc!70**OZ zNqD^KS3gueq`?msrwk2L$I0J(WBxo+ll)%Nq+FzsK?`JYKzC8HkD zeWqVfD!mh3tyX)>_2BB4GP8y=arc^C%7Jt(OsEDNH_j>_#v?gt zJC0zt!Y>PT!s~Lm@5h$RUrOSfywU;jlB{%M$gFw}=Qi6zVoi~n|jZKD-S{Fu3vI%{q zw_HUYT>?Y*fRpl$HwA;kdGM^Qwv*~Hut0w(ducQI=E!E5DhqdI1^;;LC1FmT z0M-x^W%-DNgL0`tM2jm$J1VRkI~f{(K9@OPR#kW()sPku`-wAOi?3~?GqpF5K6DJ{ zD2sB;d0}jFZ|t~jT%N7Uo|x>?gQ)}d%N4@*Ju<7ZM(ujC%L6hEVjXg#g+&(y_oQV} zV`^lH5S<3TQ^A&_b-1J``Rr9Zo9N!@cY+-fVOi7Tq28J@vT$SLGv#!*Kft#nfOh7u)t?|!)GwbeW2;pG4(9fghyeH1>Ij3{4+$ICC=!K53tm%l#W zfh5N_@*RXaJ;1EI+w2Yu;UV{Cx+3$I{r-D%ct%Qr7;X#B3n-KnNDuU)+T#mHfPCFH z;a)3#k|p)IkF@3y;%5qvdXjGu4j*EzewM~@fP}4HZ=stw`-IMRpDd-&j$!sqqJ8Bdc6ixr$6`*a;+35L(}%awVWf*Z_sv_l7z_;Q_eh z-okGt9lT+P6A;$7w=V?#y!3!iWlphdURcQmt&BFZC*b4(|2am&%iVAD9`q|UcAK{4RpZV%SDEmpwt z*>(2@QbAuT4)y41MnV-)4J^RzL3Jbdnv7l{<=yhKRomA7t$oPBjyD;B6dE7?>0%fqU*}&g3?~t(#Kc88{rtC)+$b zz^H(8w{HUgEd5y12U28vtiYuvd|@0+ZbGKJhV(pgX(UX$FZK?BRC!&y72Q|mVoRBV zT8sm7!(FHM07ESuFmY3qFM?TC4UPIBBucjr7Iu;AHh%#cl(vcuWk6O|h9HVDUgf4RWPw(wUh0?fWoin2-dmuM^nLZ7ijTEtQ zR}@QeOdGA(2RZ^J4jSf#hS@KSjotLB6#9e|&u6CZC|ioH7O}v>&gFGJu<|a|d$U92 zDS2D0RV6{kx${=&WVzpR`TPTAqUsxMw*ABER8Zyrd)Xw3A~9Pj|1Z=_Fioi>iZ%KM zWK6;Uxl+wVT_IR9o%rtCi`UrVpFE2P6&ZxAhHrpl(9*Ase`Eq2@Ze}fh!UK~H!)EIo1m)qkO2UeE`+{1 z3=H~eQavd<-HyAvTWyF=8hoG5sY_DUI7Rb8?R82c)A(R~#n!m(Bi5&pVmx zXoEn&#XooFV$WQ1(^b668{B?sdTy?xY|`6OuQ_w1%r?mrEN}Di0M_Fl6rP3{tZj5~ix$~4`#WS@J3;K5Offu! zB9=vY#uwujRfW%hzFu1uOJ7(&C$Dk-J_dHV&w1p*$Ye#fQ3*t9)T^W^>=Kt+DVE-7 zG2MBQ>3*B6^kCTl_JFO9i~-Zie_UQu{cgxQMloQ3!+7rKLAbL%H_vnDB=@()+UNu` zuJU=sCF3%-m;^2l{W40HMQnrdi_G-42}-5N(hf+}c}t&na>n{N)C{v&11$kE zbZcc?$D}*n9F$JO1$RV1(H~U7d+o1sfK=uY;C*gv!XWZsyi40HSCsL+^zA;`bRE~z zbZ$YmVQ}^UuV6OO5*E)XCa$QRhu5QB9pf6YM#y%WGP+STpajv#^VQd4>|Wm+4M_l% zIl6D9L%D11P53$C?F8Xadbpl;zAjft9rd8?ULA}@%&G3h^i11(+pf^-u@-n`Sa;q-a1#d7OEBh84=~td;o?$q941UtvwMED z_IQc;-Nr(I{>!&--;DboJ%N(EcquSeY7XjQKt=KdykHjJtIAV1IRS~6qC#k-sy|D- zPX3;Ety{iR>_PEh+;W$?MKw~$d=LFV`B}vzb6RpeS>&7Ihki=KSMOJaF;55Yc@T~W zGaCc@O%QVCyOz)RM-%1~xa?OMPIk0!b>H#eH_%;L#hdC0y2a=ATs4p4M-+a(E}uC- zu_&vQ*|yRE@9XqPxEqFunQ^t@>$~9e7rXLL5&2)gCOQ5+R2yql>ufr;*nclMdoB^5 z=hQX|)o*TU;(voSW;vTB>q}@e>$xwm5E>tZ#!^^Ow}`wub_E(1@JJ6p7Y_MuZ@U8F zaph@ntVaN~mgA33b^_t*c8X{|)3;)~^QnCRZ#q(LXQ(xBLGLvYI8D|q7k2MBo0(;q zmDPu(-2(utA*4f_zve%)+!IB~x}h@jaVZQqakb5w{!Q3C)hBwtd*$YT$%*G~t~XJp zgBo~)AaOoz1tNv??j;_c`&>W+L92NFjxaKi&j^4mOp+{a9Ll*$bnEIPEF3HfvBB1h zK*=X03P}>j({ke$E1T?FPEVo23^m_s<8HT{dm zv2XI(n@_$zeJ9Cf78@Y>&&v~F<$tBP09aJatgQZc-{Z2=&$3Z(2048}myvMK9XsW3 z1}YN;-{Ik5-c}wU9zn$R$#wm)UvMz_7*RCeA67|HlKA$WJ2OB{GK$W&`aS_D_Wx1# z7GP0s-TSa25>g5(AOa#ONJxXEDAFKEw=i^v^Z=ruFmwr$BGTOrA{|3_cOwl$eS16} z^*yiW{r$glal9T!l$qz*d#$zab>H{WN)q*Ft+yKk3Z1#sqyW~ojqW6$F_+CMR+~97 zV_;kc15OjbT25V8qq=2wAX7G^ylc&* z(8f$Gqoe$n6!9nUAf+h3VSIRB z-*cxaPjr0%?@laBtlpC%8+>X|c~)h#&8^PLCq9>5w#?{cxR1d@=S^iZ@aF#^847*F zc)c1p^JjV&3Pn(OIQ7%p)~|t?R5JimzZ>AVH(z@Tc_52=>y;4DNw>%Gs{=1{s&aS0 zi>qby3=6wnf^zp3>a8GT`>JDP0=QOz$I^^exRCihVhKrOv`?J)xdv$*EZQuH2gQ9Q z9$^HiSx&S{O>{K+Ryb1`@G9(i%5wcDR-7P@GS81)m1*r^*}eU`CWM0mauY(@B3icR+enyjO}{to!Tv*3I2ox5W)7NA-N*j< zPJdN@30hd-Wd8&o3ZTOBRi;p>Y^|L83_d~^E=O~k(<4c6z^(_?>R$V;?|<2Iia<)F;6$InO5FQ%nfwSia+av<6gf1ndVS=FKc4bRH7!?d?0YT) zC%=3}`td6FFSIu6^X}mW-NDqKL9M7g=X*vvcS?OcH-0(3Ie_$`ZyzzM{#&Fq6cD=6 zB1i?8n6jH4C;s_ke#_`W_1BibCId|hgg+IW)6vEiKmOy?4m|d6qU&6e9Rq1#EP-K`?DbnpowRey}JPpK!H}6DK_np}s90o$*)n8WGb#)V2 zx6a~N_uf$F8*Qb_(+chn=}`j{AY^JH=Cw0=hiV&2D;t4HKoeGRB5&9ZT7SRt&Ofd& z=sl6X-*5 z9gMGRGJz<<u@4qukh8bS{Lx2S?VDt&@LV(qV4g9WHWc#|wA2kM$ zGJwHI8vaZ^Q516VmqEF}2wWrCk9$BnW_2e$-vR?Qww4XfM~Uo034TP^{Duk>;=f8H z2(1*qGngz%*sX6vpB(S9NYh2e$1?)}mb$Uuzzo9J)))zVBsE+Ye9Qvl8^v59 zMR)4|nMqOwQ4n2e0NiL+HH?KQtstQWKxT|SdxJ&T3J!ix&OO8lT8w*~7=ejig3&83 zX(8ojEpX%-jpDqqmR z;d(y^rtQr7kC)*7uXKL(1O=p$-OU7cCylL-@8))sXW8GyoOvf`R*~m(o*PJzkBt@@ zE9`jO_J45q?w2v2w1YAOeSI;2%R1%E7G?_+s!9U0M6o-DRENm<5*PxW-&#+M$Xqj? zeEm}uk$nYZ&}ec>=e-qbM12crOfZ1~8Ic(|)x1*_lPtTNtg}Uy)U;fJQ*AFUVxUUs z0D@;vfgxN?7DkY|r(2EDN9zd~xKa8~_l#pz2vJ{&3&qc+LV(T6cZPw&($_x>E?{>= zTDE}hZkSb<%lKf9wxw1zWkEr~lN@x#eXYaaR((iB93{MR*Xd2mtZSrlr8|&NE^xs? zr=k^XAfzQBtKE{E6X;6$DbN2er(M)EB=2=DM3U)2ci?TF9;$a4MvC8W>=qz3e=sg` z2kqn=(n?ud($Va}fJ^E768LZ4O+jv}7cX7_#mf`u`KbdY78Zk6_+O+LVY;i?!xI1P zorVl%eZ{o^{YnNv7Etx7ApJ6Z?`!$cQc+zeRvPDm%aGl5*`IH=mE8^1O}UPR$w%ym85j*g?=K@y%NFkV052pLjvkq~p7mIj7dj%csFUrUG? zrLyzO-C@MSb@X0pi=83S_Vn9wT4Qgd$wnM~9ci;SBo-f$Eo%mV6L@DH6s)i#{ZoP0jHd>0Qu+iu?p}7^cnQW4 zQ6MB_WU_OaZhQ|@V}uyYXMIJ$@rX5PU@Z~RV{BH^-fGYCNUy|t*n;%+vxU1HG$hJS zosiBuwUq3|a&U4KV|ihqu^rm)F9k|O7h?CKQC@=Q$TNiJ30{@GuBG(1#rmw*4EYwctU{S zKo3iCylmead2^IeD}`yYf-F8qUGwP1WVY+5WQia@r>WV7+y3HOTyqv**#vei_>s?C(M>h|o z(z%5*^a3NleeP(B9f3lZ7A@Y=1llsV$MD1%!LpkOS4!jG!3p#rk}A*jjGZ3SiXYqC zLTJ4rWl(7ZaBX{#d=xssj6TF4tN6Q%IhX(8Wr1?vU$+DuIiWM-5h<;an99pBkXGH z!|%>9t}_f(H(X1SdrYt679GFgUD;|l7*TZU?H}Ow7eCPT2NG;Xfz=c;usV<~09jeZ z8SOT%v%SzkUw=4|_ctiJBBiE9&!0y6B8F{IfhWXq7SeCz*e7FffL&m6KdZBd!@Xp* zwNQC$|Nhy;BxJzO&Ht(PzAX?0+r^s0m>R)@wpRM=&&p;yUqN0nxU_fc^il>8YapS} zc@X^A2YoowVk}bj6{Chs3S=A)ObJpa2TGKE=3csVEWjZ!0pF?En(~{eE4h8$dfXd|ID8 z#C~(Mx>$SGE^TOEQDohLQ6Mt&?a%Wv#%m$4Y(e%A-L-tX0FU21xN8>;MrudZh^&AL z4)yLkjpP0G4*r7bIxw$OTvQYg=Q!R1;=(&$-;kvxqjxaau2TP3+r7M@9mB{0>6(%^ z-sQ)mu*MXNk^W7xY^{oXbD*Ldc!r}%zXCL4*;+2$o0TR=Y53=rB{kPu%8pxDXdqm7 zPbc5h#5|SDZ73qAw4=oEK3wyj`lt=gZk6aZguuk42;FA1XjD(rVO>1bzwPBJFH?mp z5Sb|>RednBNKnv8uS3n;R?9PJSIXT}<8Ok$M6_-g;0L6?z{?_XHe=O1t8o6QsA$wW zyx7v%e#Pc}ah8SqNH$ZW3X%5pEk$d}EpzQt`FXW&TZW2Lq+da7+&^=qa zmK*G|4b>E3YnTJUo8a-2sKb+jfpzH;pefUg1S_sM1BeUv4G+{K!CUepGt{6*3aM3r zz_4IZ(G#|bJd^^;RZD`f*BmIbBS3w6!#Eu&ii=>1&zu7JIM*4REVij_);q$FFFwtQB6VI$q=^7h6*(lFNT{%!U9S4jTyL=2 z<*IgrblRw}>iXxVhd_JAf#ZVnd8TYY2FD**b#MxdX2m8eS6(022L2|a+1ZF?Yq0fxS-~FbMS?C+x!A)K96G*_-=bBWdZXZ+ zr!a;bdC~v|{P+by+xuM!zHss!0ZyCFRN4ySK6da#$9aTmy@I$kTkwbO^!u=cIgG-K^ z?2P5GuIuadGHspS`#dTO8IdS?m}N@3UX&rY_`Jl8Q-I{nDO3;GRSljVmRe@>v_hgs&@{<5bg zYyzj93f(+0ji2mI*qGe0IejW^^2xEY<`9}!d~wd=g{8uHVC8aLe{Q(RcOiprTkuR0PkgEB z2_}a86aHswj=~^b%bkX&=$7oYGB~-a$>_WcF$D(m<_@5vhHXYcFnaL&!&w4(LQz~ zU^EqP4-0D5I7o8yMA(H5VV0?#1nbJq2UpN=Y;4BSHohBOvu{zriABWF z#>P(Y2E2i#Jm}JZxvgltv3uVl*~M?R#exSfTm%Xg$kFPHrHiBY4T(map`5(teTGBA zNgar;v$bA_{gI2%VxHa&m}N?J0d^XkALX-_|E881+=sIqws~|LE8dG|lbHOLxs8k_ z=MLM58R*+Y+Mj#p;2$2Rj6Sc*cEL5|AEoN*%UDOiWJX8Gce#g$Q<+mli)+3RTzF`? zbqwl!eLxCu_IzZhegzLN61Y=KF>~Jp(j0)g+8c|Ioa~QU7EQ;c-{5Q;!Eu=@Daw;C zFp%c4UkQT>nKWe+ux@q4LmEvr=YprPs5m%Q8w5W^ey9KiHqy$**;DsnefoM}9lDx|oFo9==M9c1vn{ErTazSsCL*z;=@s*mU(|ewcXV2aX%y+OLSIX#GHP*eP3?#$37oETNGqf?`iOpr>4vz1y;@%MEIu^W9}%-= z)@xYELp;(an1DB8Hn6z)-XX6DD$TDD?~*lYRZxB!TlQHv!{65Q^ZCe;jKn|{wc4Ak z6ByHM#o#M`l3USoHCDwdUQ9`{IV!v8BdPF@R}!!P+R3>vA;9uiDg;%C2;;6hpQpw**r^f9aqDnYx@p~b{T^^q^EdcM}r zbFQ%M8CM9XWQiUZWI_GOmPAe$UUu7^XR6seNWfcX=HZD#_nx_R-c2zhZZxrJyQE{F$K0mUs*EpK43I}LCdw<#Z&t9?2C zCkc4k;zFk{U^<~}%rtc=0tcpz-$Vq3kw3OW`Edf?p5KFN=}uRE)IlEYmHHD!AV1k7 zwER{S1E`po`#gI^M%|BA`qJqt!nWdy+#9jJ)KSEg`HU3rl&+20KH}9HRH@dgkgK9}6e0c@Le!o^7*F!Yj9eCJG#w)PI{Di*^~4S_%rX<2blW&3fSQ zZAv)yKK6&1m}mH%yXe~OS(h`8Mr!#wT{`opafu9@Dm#NabE{S0Jw7fv+H+c^eC7*2 z_;k(|JCfqk_wt}Ygim@GSc;qW>PrER8l@PIa9Z9;qkFm_N>yH+K_?sP2}{& znooIA9yAfYUq-RQp!Sg6Hl_6G)6oL+4Ln;BBlj+!o%kq{M>TbX66RKhiwFZ9>0%wwL2xw(^jx1KizE;MF<*k`C^c#Z)SiuKZ4Zag_Z? zeYIk)Nqe$|?LKb8xF_)l3Bt$U);;+NIU>g#&M{rCi+G)d=)z6xR&why*o|`0H7c&- zSv;$SgWtc|@iRx}Q@i12JVe(%Oki}O$(qrtz-a>yVWlZ@yh9_{N1_F5flrs4Hl|MW zMa0uA=JkBUTdN)ARK5)@C8SH^85=9bzRfKMoTIPQS;F7~$C(@C#Shq>yBw^c#T`)s zSZ*q2w%*z=?(PmZ;JIBwjOXSRfGXzk((-n8(Oi$1)+L~rd>~38d!2ki$X`}U} z8+bhmQKU$YxU6CP{oyb;aFYvE*#Z(|kg zhDD*#z3CCZ1{%X`(&BA4gdCi6Ag9}h7c9_jOY1YQg5daW!wom{RdUhzvXVmS__AW* z6#sR+v4rk{9lvhF`lHKe&amJ(kV=IQRClqyc~#RZrY{M&wmeyEu}!jwtfRb{>QW|E z=cmIBtPalF=BB25xBEXzJ3q`3bo9J!EDHv4pqDLw{_sgQUSJ!bVT(7Y2Tz*^VT;or z_B1XX>(K5duGbBx!i{#41!B0iGq^0_Sy9E4nW}8Vz*8f;;^ZvBeTcUNZCsQb+&-?? zXLV&oCu+)PO|^J?rj1GvCyVvwV9HyffbS!*CV;jmXoy_9vC0>1AyMhjB9T(QFG_NQ zlOu`@Ep-HWAz|{{Xf`5>h+vM4mWWeTw38Ud{6|J_QPcCt3!`iu%Wn}-9oAmuw(HAz zrigo6@ZP;NRdVAiIagPl-yPY#(qtxnH9L%G@OIhxyllKoJ%ATuzoOAp*5CxSCM(d5 zMfhrAEsS`&aM_;HIh#UVa(tM!7&1%q2gzOHQ z$&=sq0RCHX06vodb2+G4S>?Y8zXIs;&6WB6fsS&q*jtSH!>#WSJh0VKoX`yB3hlGw z9lO|<7VfoJ=3O!I-Du`uaqY0(2Jr&XMGF%!Dgb+ABpck=QCsED&~Ds1IH%hZp}_`- z7)#_+K8X3TTPEN%ILPr$q(bC$1Z?L7oIOA1;ud0Pb(i6Y8seZv?(>m z@vC1wo*SuKYv=}`K1Cp5aAdP{+K2q5{~mu-%0pvx)FJ*7?>x5bnuU`Ync>Q7Hy0B! zcM9A<_!`58s({k7&j-4+T)kxB!U8Js&6f*^Rf}73*m#;oE?vfYrx9pwOC(mD+g_Y~ z%rX9_^-F9A)x~?@L@=g4l8(n~o~dnXE+SZ*=boTtE^tol_WAr(qBQR5O+AJWdr>>& zL&)e?d+l_vxQt=xl|Z2g$zI|(v0JM8=pnJ&fE!+K{? z8U+eHn@NFc&}Hr@kc9M1ea8vF5Ycg%{( z6Lh#*!2}b1pi0U10{y80(TBO0yyrm2Co6CquzB;%hFQ&@Uwrt8;dvMH)T-CfiRV^n zv?7V=tToNh0YhV3Q6xV-mqtIAHl+;>-*4x=JD&Nn7aHG{SWYs54vXzD^L6V9OglKOJJ6(%NT_Ijlf zP>NBr@S#)c{#XhSACEI`{LJR=;0u^RfBX_srOp*44tCj3zRc=$vd+4@{G>;jI8ahb z;$GMmH%kn zFgEpQg`TrhHS(^TQs>db!yBKN9~hL}R^79m9u0Uyp{sFSFuNCWt#r%M{8LkDi*u4v zc`b(#gxv zQnfC)q4!xufcWX}hZGZpJ zTj7+2(_B|3(`C>_A73iiF|7Y`)-?{{EAX z2u+{g>X)B|%zs=Y>|O;XIlV7PxGZ8)E|#UHrn+LiF0}%T>Q=6phv*_A1p-?BU{>7= zT}|K>sq4jh`}-;rx<}!0P>8Z8>6HAK1rqYdbq8J)dWMmyBszx-N(R+uvPaG>+HW|? zl*1~Cd{A5YFG6n67ryke3G}?+D|)BU;*+mRIZkr}NK#-{Tla;qIu+~Ip;00T`$o7d zVe52g9_zP`1G{_LtCQ+40%C)_S}%;{Zj?0h&!&hi`l+{dtdF$rTApPbB!Bwc^3X4$ zHP@x0m5tn$#z#-Kg{^Ai`EpDM`G94ZaEX0Lox%iM)chN1Y_d~5BHw79mv~_Prqf)O zYHO+bi((cQEiTBnOZg_NGVfBaruQso+Vk6((jL7ylHegGWX78u687#qltT&cE{918 zde)Wgto8+20N*XR`{5fI%iZyAn-bQuef_{uYIbfhffL=b3BlPspSe-R)#PXE(Y$U% zz9dH*8j;@n9n5mxi!U@r4X7FUH78DAM(vhn^W!uV(=~kC5|W8z(lipvCc-8T|51ZV zP$H*`wSiglvC_`5y!QF#A8_0uwS%OKi;K+mro|zbo(?SB!V#Sa?b#P==py;#QsM`y z%o3mwB*nwqn5mxrg2mjys?duIX&sGRp1OEc?}H~<9&Nc(bPOnR zg%``Pm`Xj+=3F(2+v9%~!~d~{{;rV6sB!`G#CWp03QRE)2TEp1Ee+sFMypzFoPl~7Rcuc}RrEmMbTTL3te(bvY&}rZWq#3LUBA&C8YIcgeQYm4PfA(OkfvgNri=l5f`P&aB>uQIqu+bkBO8p>-593;ODz4Ss}@z+tI2Ra^$$962Nhm?lXi zu`JPJyt9y;+$HWychP5-W+E?hhj=uE*GzWK-123~B%@ziS~*!`qZc8>*1 z;`@7>vPWULgHCzF&Ja`T&@OSp<3S1G<|@;<=5b29;~IsyBs}QGhvFEV)B)VsxBa6m zslg!;*@L0-3I%T-kW}E2hnuQ#^fu1q!Y3zXQBF?h(<7wqgD%l$!CBGTa)t!m>hIuLG7%>e^@tyhyMloVu+^JS8J8WGcaGINvl6 zwn@^v|UD#|vsn9nfw83g^ZU>990V;#~Ku1v824 zTyF&{ppExQrjrZuh}|_+9F)>2#bLV7{+RxaVo*~`M{q+1=aSpTiSad6?Vy3F(T8nZ zHCgsg-sF`kV7|+@K7bxgRm4+i65C74@C+V~2}4wHN2(E!BG>KN92?zw=MfJLA3rs* zM>f7O+@#DUTF^WhLht!>MeIQ|BL(^1PkF2;=nmGiJB9I}Bi5$8vh8-XBT)zPqcg8q ztcl{>(Zsm^(k`C8+O)5y^$mvC65(%I%1T>~de);~vM$yLeh}I96TaZB{H4C$FBm21 zX95jVLis^-S_ZvKEuGR1KJp^-QO?0LAhN93NHgq=Njo6a=fjm^Wnk-&FN5Cr3Y3?}_zjiRGXkAxs;vLK#>r1_4zkiqkwgfe*QxM~Vs>KRywU zxBj<%^>43_(dI%=oudTZtD)JmV93}tB5#If3hXa4JXgOyxkbGkL(YVagTtuQLqS0y zUt*z|rp3SNwE2R%vH7out3~S(n2~m%*Lpy>P$?5j{PSb~v2dM}On~~E^b`t@n@Q?t z-5Rm#r7W@Uv5sHve?k&ePPf8mJb8lhP7dw8PE1-V6S7>38?0Sl3UnwFUwNK2d`z?hRtW+UmHOHaI|WsrKTCh2qEY79{34mkk~u@6XCOeBVUEWAn+hA~R=-Isxqb z2%`t5{gs4`4F7&&{dph)M_1$&R^((%O?KD5+&h3=JYY-p)~l3y9S}-1#6=%JE*??eSg+&gGWAh7s75nU= zc8?ke9Fflb>GYRm&hi(VAMo6AQ4=`YQs!~{T*wOOR|amt^?Ow`IB zYdfWJa&jCW$J-6nl{iFz%F}@%CtJBB^k(qh+?&9KiW`BRRgyYK+w;64u5TED!DvO4 z`uouUuctQa$_h83v??(hN#yxMx|6HgOg5xypoY;&!w=q*`x0bqtI?E;B4XpF9iMg( zD+-mOv&o%guD!&eL(~VWLt9^Aficf^ z5neemZN-+|t@f`PmdWCIN6VJg+?R@?)W~J7Haf2JEg0@niE4YMbBa<*_lqI24)--5wlW;;A$w2X|5>bFU_z|h^fHfG6}0c8O52PPx? zf$2jkFSU)M!8lB0rpb5OG0+y*ss3a3`2EEODi-UR$3P8`)CWX%wPC<&BDwxf0IkNO zN3Wh|C`r@eBw4ED!Zp$BtrJ%?v1e`01Pu0j|H^o|kryT+6EE_(topS6en0+seMcJw zC~^S#JJ_{8tkG+eQR_40pyCKEP3^%Wt+)~)%fT$IC$IV>9m{y69DUHxmqjjxPZu|2 zaEVz$u5TPJb33iWDAIRK`h$*nHIs14*ZJ%oL(gpe))X6;r*!x%4yKcAY%7YlJ1kB2 zsuMLWBP^lX3{@7T68mHVOugqj+EwQ>jf-uu%G#g(N0v!fWUE#bllP8rk`KP7g~WuU zI|w>hauILAN9USw+*|zJE5rg~c^SuZsx(NVyb@E-N=`K6&c8{Pt#3g6evT2m%51_kO+m4(5=o*7VLj?C@u>x)*)Izs>QgUi zw&072$ppiph%9{qh{^9yfl5vS1B@yb7JSVI943%Pubdj_B8=d;Nl#6kAoXLV)Ngo|@a?N8=(Unyzz&O=8+XPlL{b+MYiMN|H zlA(|cG?OD9NW}zlJlSwhkul}tjt2*8!y=LHz&fKm^9KF%An-l+>TR@JlL7_kDMevj zA=*GT1YkKp5|;$tvi2%r?!eRs37gefUVo3(;962sQ-hpppp>aXfn1mu#N{Vx%S7u4*qnSsJokcha!L1R{!?T z7ZapvP)J4hwVnEDvfLlsu0$)xAnePb3>2ND%W*B2i{?mWP%bf}x$)=~DI0f){J*o+xWRO7;{|n<+4qNpQk8t+|>}> zFO|M|RxY|v%FlG8-_PEPgI+O=GA~7=aW;2zJ*Or#mA7b)7LsbwQ|+#TC4Tkq-(4Lv<9rt6PoYYHH%8TuUQQjw2QEZP#8`KAh7v$FOW@G|zuZ zTZQkec-ngiyKf+4F$ zdX`fjgaJC&agTNQaCLR8@X*W{6w|33)95%kmAtWu?^;%FdB^!6wW@PK86K9W*YuqM zt*bjdlB;FSQfowRCjd;A)bM)B=OfgC>)Sq3V@XJBob$En46$l2&=df1Yj0$TVkP+b zf&c9y5MQOxDENJYzJBqvOFb!{V^=s1bky@2&k0n4$j1tYgtLzvm311>lueYDL%*Nc z!dOu}9j|))Utm%zz9(k98>96*aaPE*L(lZbn>H%M4u1Z!LF5DGeGQdWr^(qf`&G+m zM{vv4!n|TN0RP>9P;G!PBOrkAf>VjOy`4v5Br-+x_z7C?M=LiyP7s5fp2QiTg6*Bw zfq@vA$xSnzl$T z0%Sx)caT$-wX^|PzuyrLxQeGQdU|CAvmB=N?qOi*xio+Sk$3>Kdx&r)a24W)6Hl|vL%4^0QK%pJvL`g~O6 zdwRZVC%-P-t!Bf7RLRrY?DiR#B|u3-EB7n3+@fmVYCt!>wJ7xHjp;A~pXbI%h=olSn+-m5pUkJMp>l+MN3QM=qWF_=bwZdOeqrT8!xTY)!2x<6kQAZ& zm_H(dV^l3@5zHaI1dx^;I@q|`fNp>sa>I|Vq2gs#bGrY5-Ev|K@)l&J&K(=_v4+5(hg9|cT8?tz>VR9h=lSE|>S`pj7yWI1Fq8hLLHj6*1G1qa*2C`GXc zv4L<)^RDPbPv6N2Fma*cBaHUn~|BCWda-0}rj}{u2nkc%XCF9Ct0YT=+YuGu3BbCdCR<~U z%VfSkRXJXasghG6mEfe`!R3FTa>(C$=1b`uOj9Da9jtKgI*}U|?v=g=>% z-tZF@ORm&s(li3DC2bxWGBoHiF<}eAdwck*1<|N6QF@a%ZN*Xq%asY8wvvu)RD0=` zZTcbfGTGE( zd9q-w9I4MVU-e_TuoyixWWMP72HB-Yx~023ktfCsvqk|r#Jb#s^JqN>j<-z2lD0brz&RlQ28a^;L z?Wi&DR7XN0o%MF4B9us=9!1ZFg~%r|034K}voO-q(tK6l+X1)H+F4-X9`^qIDL}{w zF3OgIxUkBeD*z-JAhdi&w&Td0mnb^cV;v^y5?x7qfQ+bhKVPBx+I{X)(?O;qkbLgT zJ;MC?PXFx!5?l+akx#(Z;?-m-3=0d3;Qr+@;G)wE63Ue;jkACKy$Aw~_WeEXwg!2! zzZ2lkpz!;J&`nQd2R|J28X{GxjsxR@dJSQzi9y!l;`y_+x|$RIF8h*dqTaU!Z_vJL zxd$XNOhf4CdKPKM%g&^tv-@QH*&`vgrU)(dKg8S)Uus8L)7lkAn*ON zH3eO+wULaH^AU&IqI0m9@k!$EG(CsrfGH&#n|A(M=WcDd;!@(>%%%Lh?ri$c;Scq< zYmcdf=a2hb;+x~@RRvQwlmzyPON=ce25R;jo8v1ES`N`&THlpAn!Doa#zpVFYn@fA zd#dAI6ABr#*jm8>AZz3HVJuh6p=>p)cy~#VkfUQM24|^{r=~{bWf_CoBl_^`$4f@Hd3bh01#Wc2gM1AtWK;-b!2- znlk9))!nWG#_#jdrrCMI_#8j*4UceCo!oYAK9N)4^zuO(3GuKSbqRg@=x;R@!FGpIj$lfF*G<>PPOiM%43KD)!kw4H3C0j3bC1&pdJIvOifbj05 zr;_iZP1979ypf|4$X(Wp1~qhnR%i~`84h?a=;$-axuIU(VFiMY2nKBIF5-he1;btk z8}_E1?cV;)3o1+hJjVQuGXMU1Cq7aIjU*6&wgVM6_u-l+-vBT{nFA_Gl=#0Yg9JN* zS{Fml|5c67d)D@eYwGv;O}4%ZeK((2dY=+A%ozpCT|G1ln`MJ@R#0%s4c>9|=s2Tf z-R8}M;|YYxJJZQ*k*BCwusc-`a!bs{-Q`FsOf*U&))Ym@wT|o(88TIgkGE>}R#2Pr z$j^uFk6el6&3B!>S@r&#jQiMFW@)FJN_>gglVVL8yft=+4cd^?x3{pU(=yvgE%M{7 z6We`jA2(E;!bB;eAW3n2am;q|T<3dA_Vil{%%g~V^$Y`UrAsgY$h3@Up`y0&6uP%X z+4D&f`Qbc0AN3I8_uq3%!U;YLo(KX#e2eHds0g|b?z2clL`Rz_CZnRFF8N3$5_k&( zbF9o>bZF{R%Vn>N1nSt$>ytIw3!SkHKplIX2txeuWv1eu$b%odTTTsw+rOzSX&82I z{GCGd7n-k4Z5Bmy^E0GPEHY#H5J@fJvj3|igM5MsuQ8`e==r!vu3bwMbiID-R(ib1 zmmLAe>dWvRpeHjHu~kX=ahM=M{T3jVV9(qdhEsh1^1lQJk0+?Fye>iNngW~GWCvPC z36dbSxknbn!5_FR<1*NN@W>;OEZ%dEnUR(o_}?ym4j-8F#?9bXh_ z?_V9Kzw%hKPc7Iukk+t!fF$$Y_0iVV-+t`xLGb6bkTHeFq94F(At1G0mT0VaT5aX1 z^cwDW_=<1mJAOZTwHDpsl3OT;Ej37v|M>FkkxiI!lKy1l=cg!qQmI5_&&&+?6(-l- z$$49uv0+>8UKD?_(pI2JMLI_Lbnql((VC3T35A91z}@nkYSf{jwXx%={>mq&9`~il zH=K7JX1-!BPuA3&C89GsAuU-ZfE_>xVe55(f$_=c^bcr~!M%usguwjs%UGnCK^_N~ z*d&}%2JkrKVS5|8&>sA&n|J>X@cF|6R3RR6wBiINI?o?}esjRsq61PWgPG4|LuTnp{WaG4bujNu*ohN_> zLk%;7q}2n&tgLdsHl#Gy(pHC*(2BNs=Y6O<=+<$%p0 zsU@I8J@JK${k`V~Fpz_1L<7kf0R`zg(P{E;1;e)3oqPAh0U)42=GV#k<1lamlN$rb z=T~{~LAq#~*v`8$YfV?fJPw=*sd#u)Il;1*ByRuk>t6pJRDWG3pkhvq`-9mokvhIo zzCXU(SN2Zsp*YLs|5{9cudQ!np1^le5+pF98o)#6wXM9+3nr0zUaJQt8ZFJuLB1CS zTaInHBuqqalzsa`k5X^Rf?^13mX7Uvg1|e?7oxOL%uoskCU?uONasG#RhnR6vAyfb zhXFe9bJnjbejus|C)a9+z5%Ign1~N9(hN`T>_YC>KbIjvUbS^z=(cOtmIO6bx^T7^r9l(wi1T zxpnHQtmHqQN^Xb{uvbGyk`c$-jX}T4NpN>mQGsn8P056FhEz2BJF(wCX655Mz}Uwf zI|H0CwOWIR|JVWf~7yNYw_!kc_`qW+9|CsbZ51?VVJHf&Kkjdle1_K>e{ zuQ8!IrlB-V<;L~$AFmZ`1FS*J)wL4LP7pUU%f!XMex2&xy?d|3b6&qj6_=I{kLI9n zr7b|TiUdLviwm$@h$(Gm;!soh_F0v)Jur3-M0%FQ0dVXi^%oUzuio6v z1=SC-nZQXl2+X7(HR%2VZ}91uQExJ7&|SQE5v&0%`k48j9n)OjT42?f{OHXUCF74o z|GHKFW2u1kRP6F% zH_y9b&Ng@V;*YPIA8prPWLO1K^VEp7!I%ugC0qrICYnV$W#fUGL)Yee-y_ z{o>=V-7FXVy&pqT1RBqN5P*0km(lh8bvFDBsQmT)|NF%$(C*zr*~4-Qh}HN*V!Vj| z4c9aM+BEB)Hl9SFb*LtBz!LPsNuEnQ68)u9RzL`&+yLd!<|Q_bVj zM<|>GMq{OUFro*KEPzrOLX{mSxdNO%=6o5lgFronf!*vh($GjF7I>V}hFrt7y4o#6 z-Ld-nmHqi9>t~M)$CI80KJtMG{a7-91w}x_XWsi6M>oi$2@@E7K07(d&*yR4{#3c! zBN-AGm+b)PwekS7p=Bur+(f9;Rs-Q>G~9DAJZtH}tpNpjd3`X@0Qj5AM-Bkgrv+5T z5M-t9_C_;Ji9>24?mAT>6 z?)-C4d=INufwk^XZQ9_XbV)0@ga9J^>r}?e#`&vV*ADPs7$NI9gN|t9B%am5oJg%I z=N1s_;m`7P>(O$6%8i(u$64*8OBLg0Wp{%)AWY&Qek_wITuS2h8~+MfHRav3Fq5^0Yv5D_LLW1D*&NTnRCC?35@}35TvtsJ{T9} zbU0lN&K(~Er{PH0p2Kt?44jN6i*i^P`qN*xs1s}iT@)b{i+6XU&~D#gwl`5`lIr8D z*Rbn;!fMoYhrjx@t|*KdNzw%T=ZLn^qEGiw7#PpB3fL3lBHcm!!P(9h9r4x?UEWRN&~7FH3bJ z*uzT*z^5M<_?t5C0wGLu27Nq_HZ!Ex_ z6-7Ftwn{sx%1sh9H#c{o%^<-aZf+H%$JWk5N3Zv6!bSmHAoQNX=eITP`nc_U*DeDHUPTB5X3$F{kC>ev%L6e;jr};JI9n1=usZEug1Z^C{H8`TsS_fEX0S;91)ajIZ#lX#aSZEit9e7hH(l z90<$Yd)Sdg(<22phPP#*LIS83)kg+LKyyIN$S94hkwKjZr!CyXP5$)BG>NWSp*BW5 zVGaZP7P}ZppQrWT(DAl(g7qwoJP6)(@7I>P^+2=wF4DIHNwZ-AV1C?`v-Mo_waCO$ z;NsOXR%W|5WCT3V@kvNB>cPMsdC)~=0vRv`)SUTpI=XxtS(pyZ9*J0mTigVgqH}2e zhk>pS3_U7O5cE7b-EX!RK3GQAkHC-evv?rct)4AV%ErhAdDDKCj$t!Ub zLQEBFtjog%DV^8QrcX{!_ng6z?-NkzA$@L2VR>NagZPhmBHLdHWW~T?2m;*cQ7$DD z!9gocqNl$KbH?>x+`%aVrH12da!6f&&epGhIFRky3KzHb=k^gAS$=4lM%T+O9<(`d zjMN8R?R-~&RRVk7cMIFbe4TGzG5mUGau%3}=xFcU<#G@2k#`ExX`VD>8%~^fy~^KB zd*^z*ciFE-d!XtSqkrqS9R=@L_8R=INYGG^TJfSq){T%47X-}0;_Ju6bP^D!if_Dv zIY+UZg|&mqy@xXKPISz0PR!Wu_#Cm&3Tm%>0Q`LmUqA`#$PwQr`qP5{8DIYMB8<*c zNc&7h>m#-9i(ha3XAYNZ#rO(X&=MxmC#N$J+ml5k$-;nzQ)VD?x1jcG2YjtGy1n^0)dS9O4`H2FU+nD5EA1mOd zmRoB@0&A}$(wJ{m)CWVo5pPxiDRG(mh&ZU;(jO1^Ok*N;Oi>gNMQLSdAPgJ(<|L5q z!_j1gNM%K>#cCmSU`Av%UG{t5LT(#%qim53$%_IZvlU>Z5(1a-J`+99%kQh&Fo1A$ z%0|K3SZ_t%Gua+1#>=KNMu=pqMUNxsM-Pi`(bk0YM8?q^-*l%SzDyLkt+NB^`RjJh zzZL>ckx1N^({kdz%l_Iu+GK+Vzq0m!Zj1lkQ)YLja>z9bgfahy4S#=rLOfI~hwBIP z)d7R8W3=ckuYEQ`#N*v50RYQ{Z`ppX^r%mHQCBP=0M(508_-Tmf@UWKlqKwBhU)Wj zc*u1UCXW)RW&H;A@HkR_Zx{knp%#D(KY>%=FrJkkDxcU?*}b)_fyJC7hkTv5EFAognRkpI$u9WdLIx6F{Y(b-)hcW9lx7|7{xyp-fO;@T#){ zd1%j~kvd3yJ{3zhDhpNq1^#>h;JiMEnQ3hJcA)%q1b2+DRgmRRW~&0gePuk4?a!0J zAIqEHU!*HRW$ka`y|ndbntUx6s!Sub*e0gsVw97ONjl*C@W5yJgixyQb^+1Z@_0oF z7?>ah942NMh}$DkTRA)dYe6BmE7&6i({6P@n&iqG3VNbsXW&SOOyW)k>S^-S$n1?g zXghhgI0?C}i^f&&^YTQ$r`tK+4_#XBrQ)ZgG|ZJRa$D-6$SMJDSjiGx4G{t;{LZ^p z?*sq@ySvigR>Th~nKZe?S4gsrmgDqgaaq~HCV{g(TDm?>Mo)gh}$yemW^2lbBHko!RX3c=l@>%e|RM!li-^| z4L^Fs-lKfipKtab7u2#kz#@{j8w_A9nfTwF(0ouMH*MKN zXNnu*xnHHJbJA17`W`e_NjG(sx<1hZDy9ZJ< z8uRV(9Rfn1ZJnH+uJ4DDms7ljW?9(Cd(7^xW7r$@2@rSOgzsyH*}O&aciOjLIU^xQ zZT6hSOuJ}Tn4OV#!2{%$BCgX&gI6wGvE{vXxyHc3q`bcFmX-`JJ9=3;yr%~bMukNL z;v4{*PTgL{j*fKf-`$Sc6e^{tG=5Cg<`X~N6O;VEtraMR#S5Y7Deo!yJ5u@8NVy>* z-6k7B5JWbvZWoUzcWN94$SI-b`q3hMgS!)X{i4qRP6MRLFSI-9)gghiAV1VB@?K2L z&jtqKp<7qgIh}!usw-nN5&OHYK-Z0l`J?9CBH2R2R#|o0N{(h zioOYQxv#b{ye4ozc#yHGZ(rtEnKOsIJB<@;?`wSUEc9 z*EJwe{tCoAM7h?aGW1BKq-ovvJo&=gJ`Y>|v{$R9WI+-Ady%BO-^!fQfn`b;pl1DB zzsjFY>=vwK^QX-R1WgO^QdjdaGjG#3I$9VULQQ;bg>FSmA#Q!}9xtdxkHrh=OJ3_H zF^lljCKHBGTE0r~6M?jos1oxXUz~SIzQlOX-5ntL_y7AJ^Bw%S;&W%V{NYi1Pss`* zllU*%gk`O86>oE(20@h|*f zH)x|s`zrHE!uyxhXc8$>Zz5mgG+v02LT1KKZu>M+M&?Iw@Y&xA1RM41ZdEcT15w6-$@sFvyE~J?b|H z50jAe@slScwyWhd^ zZ2ejr%A-dSz0``!GGczccr3!Rj$8T0+Vu5Da_4)kXn*u5yG`AKG;75Yo5`SCoMgEG z-LFGOD&vBDx$Al}>{WSw-6dasIHLYNLG0VcUvuuO?yWHn1qs=WbOK$i@Be$r{%TpB zUxTLrr~L*v3BSJmpRbdS(0`N~7QQrd(cX9>)t>I%#I@Ud+i_16Xg14ML54{jX!G?i z&-TMo0%~!WZYvd)?k|_Pm^B5X0R=ch4ak?Q03n^t{bHSG!pa}{`~7l~kp3QgFou+;@LJRG1-Cdu z*Xv8mfqQqZZ2%?JcC`E8YLaic(TM#MdCN$U>c3e4p1bR`&jkc5U(jn*?C?=OGE!0& zXGK;%tuE}-B<+xD5B+5tbRrTtCsEy+-?U#g#ea;*Uq13LFL+5FN3*OoHCfqKd(5lw z^SjMLUunRVc5xmHWSYQ|knvcUnaj+caD8C9+ym8TCRPBdarNrL$Kl=3(;)A}3WDs- zDA;r^u6$$0O-p5049q6M5a0;nRg6~e0&fW)v+&$HA+sy&Gi0>iH(HAy3;yS<$W#?mruqBOKdKV(`(``)$v?KXeI-3 zh$i^4!f)Pmg_69rzF>j0#cnqy)in*6d+qkX`XqC+H3?E1rjb?}(M(W*1bW2knyJod zWTX%`(~;&Bw9_C30~`kYm@bgRIqV&qf;A;mqVD_QRZ^Z~u?2lsAUp;JMeG*K3lbAn z@yb9$ECjHugJ**j7PKH6YUcSJIQnVe9LdoYP|VeBzTr0>ce^#$=8ku6#lPwa*^Lyb z5kp%bG_kABo2r%0xH{rfX63xN28{#ZQKp~SO+RNGS>?XI^@Tx};H{vl_!~@@-ps%kz4?>ye3hfLWhaT)@aRb)BC~0ELE6- zkCD-lr@eK?I*@m%_Q_np#~I%xQ%a!1NaLvnX8vNBz)^E zm&Rj;t6z+bTr+NBDgbv%zEL=peG;O5*xALyEq)SmUcbj4dn}MzjjHRsDQS1GEE=y4bgKHG=fawv$(i;J z=GN?(T~HDWR})PS)m)yDb^FpOQ0S(AdR-CGpeGkFg9;I8@7XTYT1fbA*pG++ z+QTCa^GV$F@s*thua4MN%-L&-n{s~JV(6zC6oXXDb~`0zYwopLNmc|F2JoJ#7~>N~ zpBO@wDmF^vHKiaG0caAzOfZQnM{&(RgQWqlUC>XW5|Y}rv1aTl1*sCo8drRfOKkS2 zMiXw&IQhLs;!Qs7Tou`X-dZ4DoC&Sf>SipfwMC$INy^QVnaT20#MYriZV}>bmHE4~ zt#2*&2cGt?xArdvUY3xlGUGqaoW>p4f<3@nntvZ#dZkZQu~djFAJgF9U>x3)Aw8oD zh#$vhR#&f%-QxoR8|W+nM-}1z)1`OJ)2BJ%Kl#8S?3u4?ICUJe^~LJvS`3~QgQ9%n7cZOGduuZj01aqK?rz3Pvr_KcMaatyF(C|!bGF(hXeTuPOrpy4o ziWS?|J%(YvKX43=tZV$Ln>a9;MjR41qT_01mU*ueaOIiyL)~yIfLj6#g)0GNflCFX z{ehzb3vKQfS;A?s!mPUF@8rtVNBVk!xz2qIm7F+bTxEP#Gpwf~Y$N*!*lNUl*Jr8D z$D_*3dYzBykk>xO64)A-U1alm}p%M)v2C1hU>a(^m^Lhp=+eNMcuwO1ehLA0~R zZA`LV$X}W_JW6)`k%8tY(W~X2W)SQzs1{trbci4yrANdS=*ZPh%oFkN2Zb@y}N^$|#LzwE6 zI_;M2&rsdWCB5qd#aB3%(Xf=*jy_P#$zy|mkg(&|=v5``#E*@}sMnjIJ*8KCa|veQ*{mUlVIrl61` zBOpbl2cf+Gtww!D>S^I*h$P{|vG|q_y%GBtGRNm-YP?TXIJqTsmP&c~Jv;5x=QJ9w zO-w4RAJitF$9-4+0mx}<;*hG0Rd%R5TNw{a2KyS0*+CZrLniML3jT3SHS5<_VMsrW zRrm8{w9_GuJuc*y#)D`&xQ6WF{>c>7mifV5_c|1w&J{)~t+5YMk&69rOM|ZTgzH*(x5|X(dN?qEzP!A$t@KI+mcmL?J!%WqkE!i+^;`#gSSIw(U6n zJ;xsWn`@;4qZu`}oe9w2-o)ljd%5XBBQ{Oyt^*&+!h--Ts~MSwhO0i?L61jK4Rz-T z2rI5Zr+QR_M1!u97p$k|3BAMdWyxr3hU-E%w6kU>~ZP01X<3|m5xuOjE+bd3dt{=DvM}6Pea%sN&hdbM30JnP182eJk zbZEWhDwblE++SW}ZJKJR*k%XemC2al;WXY3T_8YHdB<6~W@+LdYREEb`&EP_#wuHlnPtz0P9Jp*^j^nhQ zt4&^VLNqtQ1@ckv2EYYVRWd@@ae=S^^2}Xv4bDT`P3A4m)-y}|Z}Y|@t0Qk9HQ%PM zb*pgaw&A%6?$*rDFR6uF{ajl3i6Sv;&f?;ZUPsWh&fE}HI>64ANxtUT5L#zH_`wpU z(c93J7gy8k=pI^!)Aa8*IBcmN%QoDNJN`6w7&yP;IS7w9_intpi&5K(3ko5XdF(zt z89aeFM~jfYl)uDCh={mkAsqXCi|!G^imvtZIIH?3``K4Jw+KF^YlM|0@PdIdp)!bz zm2-aSNfH%6Exz65(F3c_%xA;Y-e|x)w`5Rqf_ipuBuD3B-N##n>@1HDZ-a4H-G#Mt>&~O0}!BO&U%K*@ZWu<&vW4H%s zRtv5`+g)V^!$!uf0?&4}iK6FQ2(>`WZjzNu2{=G|OuWado=N1pm)2aZS~JjU?9@47 zh%o+TNe0?V^P;HX0b>KjA+^|~aMZqkn0MwP2l(@dkMQ3H>aFuqx~vjr{ioOD{9&0lJ`pp(6Q>Dr;9vb*)gJ zTFXs?z7I2D6m6r~?DJyA=#-Xqr-C@`z6wWI);nk^-?r;szB`Y6)keMGA{LhqYr>kG zKhTM@83}AOEZj1E{fZ(Bgi|+h{Jhi27rxy@4fz9a?gaP2;%toUVMSu4`tkCy`7nuR zQ@5n6lj-*re!aRRhF7cTy@s{f40cB#`iWTSiRuCRHLGXJF)A5+I6(${&XBz5ajpQ> zl+BSaO~HyDWPQrBf~eAm@bv``_iuea<3P@=zRuSpc;oxmKG@4u`qzL(C=a+*aUJ&u&pcbU$2!AZkg`8GS zo|CiR^?I|F0GE@u4KJ(U-bcfiu@aY9M91>XI$P?|!CsxW2$5T)0L^tbGqJMdRl{VR zHV^ctafOWZ1Br)y`PE?Ist6o3veA&j8umeSwQ3FRK%j(jAm%4l5u3 zSZXkx#@h+&6;yX%{mHUm4QqDlA{iOAA^+60V#|v8) zZ)f|O6`eEcAm$f7si-M`jn%4QIE@sT2Tp^85y%DYSz>7D0Z;S1``MAZ=KCNbW9Po1 z_11d`K*?i*<6=*RaoO7wx|6vag9H6WHVFWn4;cVGuFeC1;I?8WE%_7=hbRG~uCL;P z%7Og;(Y#}LSePK>4Zrc`6STur7ZWFBY~XOLgs52B~BaSr=%y8K|bCqzEpdKsjB@2!d_04Ba8;)p4R zxLg9cdK!_^KDlz-jReu%w=7C~8Qzx%%&??D*Z~Py*c3s)`76XtoGWbI5BSp{R}Z@7 zfCjg)Iv+=GuyttkPCsswOT3`VEZb|XMmX-NWr|yQq3n1Zt7>Icq5vV2hQkV0Gn|nBZJYbseqxp&3)%&8 zXDgtq<8X1WS|Y{jnC22hB2n&fCY8f%pu&6Jd zi_;ynGudjSbbUAKE z9HvyW7;9`r>wi$Itk~MSPNle|q*$8d8Zg`LG_FiI)pYlJzSSF^y?PaZ+wnX&<9JIX z_K+l9cm*k2gGvzhov&T`lA3!7ZG?)2bRx?$>3qYD9x%Xa&v7%6F|b~IUj3>J$j!C~$qmo6)x2Qkl0--I zgu~cYu3p&`tv%~Kuij#lXV|siKyb!&omV6w(Ps3WxR4J{DseEl5msuInBp(MbplZ zS$uXgcU1X&ohs+X6SV60f#C@;S25zVpvoYuoXd7=J9M{i6uK-pddc)~==pX>irH7! z`YU$=9-H^UwVO1$)=zj|jCQnl7ivK68orDtTU za6y|L+RONk9+mNF)+G5wkmYHA4RgcmJGdNyIAqkE9xIQ}C6&>7s=Pyl++bf`4y+%_ z3uhaTtYK#*)R#nSDqX>_OI=vVTn21K{b{`SyVSmg$6OpPPs_+?eR&p+(xixIFiCY;m!o4OOr{PY!vN1*Jz@oU$;o$%WV zKsm9TTf_nYxKT(ibA*%Jzw96yL>fM&X1Di*$MGad2##>0_xcv8)s!)Z3#GNKW?fM7^hx> z>Q-t#(=%}+7om^2@2XQ?RqA&e0S-f9Y-Lv+1!7NEl|3?WR(Ip~D*EMbWFN-C`U#8l z^6x-CZbBYQ-!w#GBOjrR(7=!Z9B3MaEmXEtre{GY@JT*1IR#VHO+|0Qvpiur3X2BEXkkE z5xiJGIu5fx@n+i;5@LO_3F04s3UwzU4+q$CQ4nn}yu}#F{{AOGG#UNUcoc9?H(UAP zeimsJdAjI?d-57y0R-VlVIK(EtN16E&A0gzS+B-HEOKI)%Ui}bWvVpT|B%bdr8s+A z0A(_f^Ts{d1Qk{kedsR<>-_;Zr>l5|s#o8NS)hy{V!>4fcfJbKmcMDTc?7w4Y^-~w zlLrSeN7xWj`Pw?wuV%IoYhz~A$-wsk4tujFSWfAp8yBvZk+*33awuD#A_i3X-=49y zw6s`XP1?KMm5v=?0F+ZNn)S<+d*}0LM!O#+8Z&!sqpSd}{c&)Y>XkCn2KE zu4g`b{YE~u`!ij+l-kJ@YjR(K<)Fx{80y{Cn*KN=EdFg2WZ~06A@8l?1tJMVu>*Rb zc+A5{&DhwuqB<%puJ)DvUJ|_+kPj>aof(5%u`}l>;!}k3%#x97KLvsI0KK#4xND9~ z;dI68!cUy-F1)K(L8+G-MoT&NxEd{6|CP4!rz2paV?B9kD}t^ht|s#aMv6_2{VlM{ zCTz__;0#sH1pA@K751) zOASQwNkMY%{&>-o-YO3h+iXaC*?YBc8F1}!$kJ^R-s*t%t+%{S7+`}-dDZ4*D%p4| zyuL;;~#SlFi1ggH#TucbQUF)?z;e5 zN-6-50FlXtJK@10w9iphIf4dKZfS4@kbjO>7p$(-t=xS_J7&rzGQysY;wyWM4)1XN zxa_&va=)qXztLHGqV}EE$o%*-V&yFKEyG5D4hjdd-Kx~}m(TwgS`#_FrO(C|is zJu%#%pC+mi@B(>VdyXgi3#(w%BV5ua*K6{_#$s(9KM=;zIIJKvp`V}mo-Mf4cCO`@ zqSNHAS$$*A%Y2xr7}oi1w0xffM@zL*HyC*1`!}U_L~gPQM)+=;LrCyQtjWq$DKFnB zVD>PC>LjCxpwnw?h{%WLh=k@)dZ)-?Vy1~lxFIN{smXjhk`fU_c0Ym**e$+ehlCrm zJvku!(fbn|#?5id+uGT#;lE_X=!WdQrwCxesNlIV=dn&W$oA9O|I$$6bfp?VPS!Q$ z$_JYkxsUBjIKbn}qI{1yF_5f!s%8#t{y1_Vhcw9(5|yIVUJ^Z1$yFnLsJJbm)_{7= z?kQU*ve3pB_z@!jH%latkJ%(~0tKBA>(QJ*{oWpARKbJGj$|URjkJ*ANlj%(uq$Ef zD1IelyT~%V{sh;(BE1Xx(V#lvZlSOUF^^$scH@rR0k-zRbIsH$rh19mlgcamG+Udx zp`T1Yc`Ss>ne^LFt8lD^jw!B1k4l3EKBXZ$vIH^o+XoX*8JJ?eLo9J!UaihOid0<; zKkc^+=+C}luRk|@Db+!7+>4XgM&=^di>E0?lsMXAxDyeP6~64m0Tv0ww?52QvKdy=N23yidBE zoLD*xR|i%nrCr&gY>YEr?8jV9f16kezw%tWE~!w=wPJV|`&C}{m%sh{r)9Bh;TZPDm``^xJnt78ur^&zERM;( z`#I%{lfZGEY#?>y!jODwT~z2x%EvQ_PH^s(LNXPfDLhQ)n(?g~USDlSFl|Oe?QQxb zW`87I2o@tS92G1t(fGoM0e^gB&D0%5?H(KeFC=G*d+5CA{{C$H2h~fnqa-orGRITi zT&js!SA+*?B7{+{bXChSPtPd6t7c@@z9rwI*Lc`Rn3o#X7|0gZCYn)hN#?)QoP)Lh zVH=NfUXL`KDeTe->-2S;g+&T|m@%EhJAH!iMw}DP=^A`*NhdUNqQFo3JxSi70Y_Vv zuw0a*G<9`S2etQa!n(V*f=GkIUx-d5X1nq|z{7?;<8&2$6h0odfP(QPK@2n(HD6m@ z%nSRP{XofendRK$Ib{A*K$M+i|+k1OBL1KzPPD9XO2Z1H?ie<0Je3zl=j@8QI(*#OOp9h0t7wx0<@01#K9OTjoaU{*67@X450|Xyq1LgklxtN^+O(pt0 zjOO$FK#GS8lo(yTY3C(7kyoxQONq-g=NN7%l3=Fa{t-Wh`>hrNO4c*Ul8x~%U?>s*QkrB_e)-n!q92;V%@_lV{#nv&?3qdi%FB`tSZSCQDK z)XmeehmA_9{fKJHHa-k$LAk;yTu=Y_T1D#fBcpd{rw>vs>K?TZR?sp1u%j}?yP871 z^y<5~RuCN{O;#J+uH7t8vPVbz{8l(we+hP`Gc_P;V7=Gtkau%+N9-w`hl8inlF!XE z*$z9=Bl0(^&wUqpr`9tka}+WZ!ZwB-ExBG2BoKNjFjv`=_{LX;Mq7`EKA}`ABDThm z$0oTuy>vRRu+3he_((mYU-2;Hbyk;n**=W4YboP&!*4DqQ7$!>M@E&bbBoo=UCb8d z=x-P%4PE=oko0j~)ns~3nEp&!VktnCt&C%|aegH-b#7H> zfYIo>gn|^zAIlp17#BY(^|=T}9w@=l1^kM={eAbuM9rZ7;6V9#4fHI<+^6JHabG}i z`~(#Gc88+e09~zYu}-^_S3r-z-B@_MuMi~JcHN?@J%iZIQjEVRyqhk3e*#agfkK)H zdPgr~@BkSpEy00S@?W>52|11s{4i0H{*f_AtttSV^gc`v_-tMocnX@w?Ne8vxQ{DZ z5{f>+#CoFZTY30ZTCtJz7&+L_<9hKRkW&*+bU{sVkzL(k>>HgqbHjxndjrEy9wT?c zyqbeLa{>0$zz;opwdkStHj{>w#-vfDguMMC{A+roRpDuZw11332&=n|@M5K{Bz~&n zI|k>HYs53uO|Q3G(>@Q<#dSQHb}sl(br!}Fi?ljjM;^Msw(R|I1GguiHYaO;@%8s4 zh4{197#1MtjLFsnKcCdaCY8k7r&$MpEV@&WfY>;`lS{$8lr=;TbNXS)Ahu`mEHp`Do>-AKOa z@gB3w!z;0wS7)1h#RR7~?4|@j;ad>Kr7^O2WXt|9iv|?~?2w*5K0cnS(22k9-Q7v3sl6TH*(>WNpyadI9HAPf8|mXp z&W7s6bNAPHh!Gm{G_400iQUh9D|%2>=4TVeA^t4Y@l$IIcmInv!rR5ghSK{I!(r2? zo>bsN<;RA|kF^ru;d}-LtvTN^kduc1yi6viHYeq;|>kLSpo$t+2fBz;$NZln! z=APwj_XIaSTJ31BT6~>TH$iOksqXY+=}pI|y|&|!+Q_!Vuq*{^QEmzwJ(sZ03hjn< zO3r1rx%&i^N?DJ0F2koKH3Vv|pRA3>Hb?4*ZsgiWLED?~Yu-JC8T+PdI-XoY-t!za z4PU!cGkrRjBbzrXOZV4cyNUz5!v7ugKaE8azYAu_;W4zYd3l!pUsL|yzxiwYUzmde z$z-4i6J-R4qd5uE@i6U0wCDNI{%EGw&3Djxlifz5(#6(OqowWgEy5nD80QmF25D?NP2ny~SE(IU;f9~LRZuF89v%jdGI}54=LM;Q7zcV)A`g};nj-LhyOu~% zs~LZqz9x;V=eaXi$Ax5C(9f}*cmU-O<5!>v9^UW3>)If7h@*FJejd4O;TSEcPNEwp zMQEt5xj5pxcVxbG`zD<__@`pT@Y(+!Cv|1g` zG<MBrB%PYukFzuD z%$|M`X=!PN{P$R(g3q(fD86YGNEeHw+-_CHKYRU#fs;V~80q1|*Ps-_{PN5~#1+74 z(4Rgv@aV*WL+E8_g0x?5eL;Vv#NQxv3668-wd>5v)2DY8(Pr?DnyV6hayKpZEpW;q zj2SRzkG(AOpFB6QbbUp?wK`zTBq+=`hRBB7+uSHa65**MsJwiPlv*3Y4M%lqYdDs= z5RI13+G##AcS+~gd&CUYv?)S$U)*7!-YU54o3v14Pu#_xJzv+!uO48GRkjn-&E zeF!4Tf0-eF&YN>_{)TbOg(%f?qjal}RR4D}b=EY+aVE}}4y?Y%3rREHZMdi-yrVq{?3thq z7!cDyub^A(CCM2a2E!MFx|83Q;>uJ2lotr0o2NZ)L1L?>M_0 zuRh!Otm(H;@arA9AHgqP4cxUW!1pD3(6o{G6K!9(M7MP2rDFTqGCT=mG%xQ`y^EmZ zdNm`xZ{o8h|3(`Y>`3p@w7;waW>F=-f&}fX@f5~P1|;K~OW6se3f*#?IW{5{G4=3k z8~$A>$NVQs+q3>juFy({OKonI@)XCPoGy6Sg>(Ef-B^t0Q;*J0W(2C9;dzI>@h5)y z0t3Pen;yzI%EMuO%wy0iBwZAgxeFIYS^GrtQdO}CYJE~08`;8v2^0Te`6hI@#%mZ2kn4Nb*bp^= zlIfxNbW+FlBP}#qp1M00$QD$a(DsgIyItcWqgR+WwMA%lFNEYq7Vi9FnL3a=&!K=B z1fE-~1xsIloQ|&h4;&oasE4>x*GdhA8zc(!W;s~+3m)2*#&?+nUkvO0dsLsc;QPWBF_@M>ZI8>sVVK@x_{wpzIx*9WL+l?nKvfQRDa+T&fYrGk=it2v4!vf+P^}xf5kCs zSRse^e)TwTQ2^QK&aF-h)}UlMraOQ^L;xSh^J##bWhOE_e7`<%zuvwsG>-lGtX`Kx zV0v*7!|dmMtfB)eYv=t+Q$0t>9Lf{ti^E-_HBMGb0iN_!)vHv*E7AIsAUVe zu`8E5_09=$SFnN0KCV%2!-Cm>TBzjxcfa=-etlPq?Jo9KElms^2UO_Kxc6@h2yTdg z?lC^TKX|V14YoEmkd>8{dk#TGXsX#8{jDzsIAXGUIT-POsuJ01a948ziwYd;;G$6ghtlo3`P%}uw#T* z*^=!RIY10N-cavfZ@ilsjq^H+)(Z}5OQ4*^m?HjFZt1~&1mf;!VG8r`jr0bK6@lql+zw&cwGxG6zky)u_FfismSpvw|L;AYVBl9RTsUO+y}}9Rmv~sEv^HY^0{8r zcQwsEPP6 zQ^V>EfhfM974<%zG%6Ip&|7&;C0|C#YjOqWZ93)0v6MmrLIFj0UI=V{!Z7g-*yVnf zAkEIs+J5v2lxYfulh2T74!~tmU>;guUw>&BPwG3(MB+Q0-$rT)Z1^sTPz*P{Bxlf{ z3mv$^LD)a)ohrY5tam&%2eq~xh)tY-Wk1}xUl4aKrTyS?h%1ZHa;ESZoEnOCdSjYH zj&@Gp5iqyL*icsaXvtgiy!a=tBZeo4s7biWpa+RAEDb^QA)i5zhwz=Lm{O^er_0>o zMdOgUm4y_O+IvdbwtFBZwEua1p)g)E^znw@{we+EerX=>;4#y3!giMjX>?kbsPL7A znLNCnOb8EfIt(T_R!*^%8kxGan0*4-AkGJ{=k0kexb4{J-*EVD{`$(ln~uhq=EcQ? zxxY&+x;sBNhaG(cogeNUt_{4^(jo?>^t`m{H6tZI?RICq8XNgQJK4`$<0co)YuCBT z=veqZ6TH0kRu{J7ssoCJL79Pi%+J=&b4bPMg$0WN-$xbNQG)(ngm=EDU45bj9f z{^6Iv;k_lz6YRGYNsd9@H4X0`qOefol`*`J&w`!kIf!EF}l zSGkmyn;b8Cl-x+;Xew>gXVpR-Xg5K*de(AuShQtNB;96J}rS98WLy~)@bpZ!RXI4 znlkDU(eZC~C2!JNI<6e&4+2%Q-p%6QT%DoxysTMU_oB(ttY^;1pUgrm7I!~F0O_mt zHvH{0O{NtU(EydEGdgeUmD(71{Dwr)39AqQz-VWTIs$@WY_UfyFdQhh-oT+dLTj2~>82mH! z6w(0AJNKY$Dh?|cn2a^q5k=IavL`;fqm-v^G+(Hf@-b>>vZo#^PuaSkN~?~Rc`;~~ zSuX`HfBqQZA#j(nd{>$ERZbauw~1;YjD%X*v$v;J#9A3P9$z&xk4`e7&XU@vq5#z1 z9{49i-k9Lp(H742(0SqqvGiDb!nme{RqjUMgkap8yJc?594%F7A!XE9My~_ zlmZ#FN{D#2?04ID1eQ3KH#U5`q5BjLoWSpUN~_`q4Cex1rN&5oQ>^(QoA)xT<9MbH z86iN=-71jOGO@xmuvxgJh68`hqS|uB{Nlvqv$wY(#wUOjzzVAp@dhQY!d^6@Jon(> z6ylfn4>=Jm1)B&#G+O}h)(fCZLznO4333DpvOP15>UZWIEROV_%+vy+u1Eti-izG- zdjmYEYU+z+r&}X9JWFA8{>w=W(S@^20CCNA3&=oP8WS2v!(kSwYpq`vDz4~rxq5M@ zUGAUa9*10qCNjMBeL;v6>?f$u+qjnY*5x`d0J;is)!A}y&Cv|A%vXd!#}A{l`@5MLElJ#croC_0cx5nNbfQ`RVD9RIskRzTqpI-!b*XVo-?q41W>QiT>9N^N z4FVBSB5CUxsTmUHmq1bUtPU?L%F-S*b|R+-*tI9Jz6)W>VvJJjWSHiHDx-Lt3yy0+ zmpST+G}bFG7S(6wpE|Rg>ro}*Z?7+6I4Ym!6qru&G-;AKg}W0*(I>S)6|*k;u+33X z6q%ronC?~zY5J3b;{|xdSWPSa^%nIpXfLQ0%L9ga_6rI`7a431a4-U1>(T~chv-?1 zrGw!*2*O}0y=sscS<}f7nylCTCg$(7e z#^qxmzb6+P8%`EN1O;nv9z`t206F?=dwUL$io%rf3cJ~ma?&@Uf z13*@v-_!q$S>(yDgHer+Q9(Zs|nb(RbvYZzVE6FI6={T6^wy+`l6x;F)k(5Vrf6qJYSJ3Vx6v8 zG^`%WZ7Lt1((!<@g+@WRE*3vUEUMXS$Bei_M7FKAD&=x@bdSSz48v!~0{M~R;VHKz zQo`Gt*Prb;F~9f^r%v>}xyu znE9;*BnW<(R30HAj{z)nDztQ^jxxj$VOixF_Q3cVcP$()$A3+yxH}UM+I$+?eI3ql zP*pgd1QPVQf{W^pGy?dlK0so}5{s)L^ z?6YJ^0F)bDJc_=(+G>pv;I$=Un8~J0O5Ni?YXM`GS2su9Zf#Rsq)9*Kd@Rx-?9&A| zjA|`{vMx(@zQ^HL5ev$iE(rU=%vB!j9x{uAylOi??rHFuywSet5%#D?f@e4Oz;NC1 z6t~Brx83&4>3Nz`75a6@GBbf%Th*NuS^fG^M$0LU#kLnJHF8`>x>XK@U6)XxPg7=F zgfdL4;K$rs1%)>Qmx1DiM;@dVz>9dMwmU13?3SBTpt{$m7kbb1d9!exlOh3gNpB&S zEHS<>rhKp4y`L|NoX-z1w*e&KnKbWtni%74XCC6$gynkCDsS9E z2Y7s%RV#?cM97r~MaU`ITSu`H%Z+{S#JV^>=H#^E0xJoGx-xR&$>ju95;`dL{GsG#4p3RO-=pVmMxmm z(IXc=9s{d^4>|<2RnEEiCnXV+l9FcSSl%rroeq2Ji2WpUl-@_aDFH4_O&b*0y!&(j z5D6_giZ|qs`s7IBzWj5Cc6){Z^3jGJV?Qtvn4g{j_|iV;+b|C*fZu@L1H@fpPRE-O zJD)9wzxIBuDX-r@3CUzyo}t6J>=$-stay~*T&HC4P3vFBA)Os?puL$JY3Nd4&B4B~ z*1?-7BR;VRTH^ysT*CjqaiW~3yo(J%Pe?WBJpcVRw;a#}Tr_l$6#%14!pQg-K(Uo) z;$rYs(?RASL}5PoaE(!S4Yk*4|Bb|taullsSHgR2X5Mrl{7eU6+d9ytfm$>!t}@c! z*T!MD{?wYG7PC|Fu0vqor)ujBj2y+ngwZa}XaDhCYaal0@Erg;C^w2V4uIQ0{z{`P z6@N2PqVJ#c^x3mOz^u^$j2zI=0sSe1MgXWS%e4TBiVpgvOF00VT3B54xIN8Jgq+0G zZ16iCW~rAx6n^N8aZlJ(VN^$VX&*XRu5xC<6%dQ*d4)KT$^l!?s)?yzu}MP*l715} z{2k+C0%xCovnQqwizW5;dHed z131p6m0z5=UNXNFN@w+_>V01u(d%i)xTAq+rh6s%QXrH$&%zwo8asi05$I#o8(GC% z5|)M`$U`fd(_&Qjwste+0@nUay}BXYCa5(uG^n$w-cW|%x`S`q+_C0B!nEV_sf0-v zss%KNDmB(0zx4rK7vil7Xk$2YI8T>HkRn*MX7RC9e7*Z|&qZoqZUfT88eR3i&sWGz z?ct(}Vfvvy;o9`=9pQ+r#Zs@n>6L$hT{kIe3;gBx$p0CXn~0!HS*><7eFQIbQ~3*!&d$%10Z)KZE)D5P=Snx;yu@GAfPV~r z*<&qoG&dx~rS*MmdM~YPGm1JU>t`t`CgMn^00FHHIJ6wD*L9vRR*iqN zOnzBXRoL)q%on=3PTI-U5C1*9zZ$=J4QwPNq+0^vEyFHCqyPjQr?3}R=YM`K>JuDr zj6VxGRkwF^oa7z=O{@h7fA!WK#FI2r9dT~XS{-OU2pc_ck3O^Kt~=sVLknhn!~M_$ zu9}XRoi{XX6P!P`fId$O8~{=O^kioy7nYima(n){w`U&Vb`_=RQp~v={e$BnLG|53 zgUa@iiCXiO$#~M?S)`gT3lNC;`d9XywrAqZQVAgQg$bfPHUN>44_Nxwa_i)S1Ceka zA4(5dc`QF5xG9F2#B)pGMZ#NzsYpRZF-#%#-m$7Wf~KOB6uZ6#{c*maEqDgLxXwWp zcCp?YodXVaPVN`?A>Mh-u$8OttBRWN_sJkPsawV3AOMn@-}1U?{ubC_J}>QBzU#_( zh)sK0#iN10r=H^pnzO+fn<`NmC}d)@*;HcwxfTA0Nprt^9ug9A2m8GB zx1JVoG_W1synQ=WJHh=u;SxuU{&Uav3+!cZdW!<;kDCE#VSi8v?K#_61sDFB?N5W) zn^p1aGnUIrV=pqkohTC_u{w*p#S{HK8)q0=m;UU8pK7d{BULmYtOezxB?9Zcke~!;NsGrXyN^Fvh?vMmwo#|ZAg!@(BAb?V$n$DlUbY^RN3zpR~nfB zSW2B;QCP^Z%)tZ-%mEaR)k>h4?RQ()-)r++kiVeXx(i#p+v}H;*?<4OX#wt>)gg|* z2d$w`ZdtGrkTGs$fcBsqejhkbF=S=jSRL`}I2>M*R(Qg}q?i)~?v)5YU6v_`!|TiejPXhL{N-Q9_;!A}8zYP8 z{KRE30LV+|#3!F8@=Z_OSq%G=fRuz1bYD(MNijd&QD=>bI}Inbcx9m~(c9=dOX^-* zT3RX=7xJAOWb&Ir@fppOR3)xHV7HK@GMNaXl>KBx49x~g%o89H@dl`nMc@M}h;H^; zyYQv1tl0k%$`m!;B6+swC{^n+5lnH}!@}UDM{^YAea-Z>(>1-jIL>!u=JfJj`(ngY zL^GNot_~RcFHv}!v%lPUbV;vP<%YY<7kn;`+M2&d``OEj?4v6{jeM9a%l1nKc@-*X zAvo<#NbnUMUJ7DIVKn~Ihx?BA}!oE5z%69u&5L7G_ zP(V^rNfGH3B!(Jkkd&0}k~RoIVh~9INofJ;5@{)wZiGR)yT3heo%j6Cd(QVCmls~c zJkNdaSbMFtEi*g$iCV5tQ?G7X5jRU>=Bx z8&2XmH^u!vG?d-72CI{K&uvKE-(j~;JeWehv_0B)!Wb>mTU(>nMP1$vYPGbP3L_=2(B?u!!e$*gnfKskdlN(@W2H~#8Mig#UHHPXlD z6y3=fJD95?6Ow@zK+>eJPq`s7?we!h$@ zdvejk8AtfQ>}^MP;ooRiK2x{~34(#(bM+n$S2VZP4Z3h#V5(F=w?)Qle_CvLMDl@= z+*@KP6aoWl%ycD60T2<^OE;`}*@y7A_v=%S18z|nzph=s{_CTgz2r^^hQX|gDmG1U zlVt4~wyC{@=wUI2QiI71CL+@+GoG(8XHq;*Tzha+e=7< zt(mR;A527KvOnIBw;DKdHxR3EWI(#~tWUSy#Mc3;#7p=D!}e$nAh;@qLL4W9)n9$8 z18JfO1Yup}FdI`HpO%o6oP>#ut&>wROFb~yOy;`GLsNYg1sq9#buIg0*;v6Y#%IQq zQ};Tj`W~8z`9ZbU_e6{<8)PAq*4X$=5C?Xsg|mbb{=a zWdfe44o=NxQW7*AM68c`6pNHM_FzHK8hm|2=;C0;Z$Deb$N5)`&_`m4h=}x#K=`n< zc82W(S=KQ9v`p~3c6&nF7ee&JK!G795kB2s41}@_lODMJzvWpItE}g|%D>G1x!>C} zL?(@i6oK{|78GLsWBRzP>N||jE%q!z`Bh`(z)@`gn=VbGtq}E?^sgHuNgRiIvp(Ol zxWc}(d$2irpSH8c-9nQ(i^D+RF@;(S6*iP{&w_$3z{-m-k?Ya2G3+>y&s9_`OWvvy zG$HJxFa&1s>r)9-ar_bW8}$Iw$9;ChM%`19k(LgaGcXi&6Bi|D0{36_`S%gc2(*2! zAD#XIY{yf*I}}9Bo`nn6(qBMTYwUnM^T%B;5`JPv7wUesM(;R&32m3z3Qv>pU}r@N zh*q$S)fX(TKkSIv*Ynrl%g6`U+bboh1b!K`)+K1!+uxrAy8_s2bPAg1i-;TQnM!Gv zrBQyX+BV+R=9ke@H`5gW~z2d(| zZ)rB_aVdVpbzs2$?S%aCBRMTK@z2*_VXtG7J>_5g($%63+8AQEOTPIz8f#pwg>()6K zsW}|BW8ip9X!$I}V7tAj2`lL8f2E=JmEbCxZrsa}#*#XZX+w)lItttE!JpI>R+O@I zbuXBymvVk}b$wh{7s}e}vC|>hnoJLaC|Z{Kfj@>tEuq+@WWvvIrsDP1m7Isql#L+- z?l(p%z!e5Q2a3j&)K9^6yL!DM^)js+(};g-wenCkEpA4Ah! z59=(B(wp~rR0$as9>~ebnMc@?{KK{W`#Tr?I!s3R4;`{EIU(4~@z?@c8O+HfJEkC5 zkqAA#=lE;~{LjR_d@7%Or@QFk<%f8iz*SZV7;1l!nS*Uha&`Q$hMp(n+Rnd_;F&p}H8?IxLNhJ)8oa!P|3?~kK zAZNXJ@j@R~(LrFL!Ta;O3|^T9h%>eVpa||_0uqvdfdP$s7JcpM`#BHbq!6)a+-Y4z zJ2b)HyauCbM$&|#2xq6tB$TNti%|ToTVqA%4-w*IrA!$~g7TlX&N8vLhASu!{-`1M z?o*fDHyq)nB(A9S{h(xgW%aNvfO*l^m9~7OH%d>j{`8}&oLex_Kb&;*_;d1}; zhcLhWNq*Irg!aAmGrRnjB-2M9_SJ`+C93Q$-*GEn+wC?#oW4AIRqMmY8=eKj-dA_E znYl(PY8tMs>x;Lzx;0$Coh+#rwtvztWzakA{M?__s`;9u`g3;YCBr~OzafteUKKPc z^Hp2X9ERUMKCZ92CYX{YdilZw35m?3WSD7%k?jJ}j}jw<_*q`)_SY_On|#HiC~hQI?S%hGk;3=yjN;@>^f^3Z28PQ_G5Uc7^gWmEnRdp!PN&LxSx#qY_up!={|qU&!fJ8RLy-2{#)nTu{YSY-&hjuz<+f9X#=_uN z3hU`f+S}^+`%|!Y@czm15zOQblz7Xt7r{n15Y%cZ8U+S#5%}c1Nd&Mmi2oYwJ}9`j z(w%{iY5D>B#Z_P(QQXl#b>=eplgxz{%01sSmTaeRs;EL<-6Wt#n5XmK zd_P4yLH@^S*zx-e$YswnAOO_;!i8;zVvsv5^MLYb`^LwE0i3#?1BTV_zaH~ISYXzu z->gyb6z+s-Dofr=UHR}vQ^`Md$N0Nk3d<73V|sCT!?3B4{@3@vBVaN*@T79&$`pC}$)ndgHx1 zDWXk`C9(BB2m=(+#7a1VIGq< zHzjK1xp*OWZe&9%wS&S$Be7ls@I~)`2$8|17mK-T{1CQ@Zn-n;>E0(Uk4dkr z6acn;uC+C<*P*Kr)2KBJfLz^Mx=GfTudCV|s)z{oe&T-W*y%;UCuCUuvpY*QdsDeL zGR{C|t}i!k-%1&Z?%s`@!*WOZ=+>!1>}Iq7ENT88`&vHvXiF{Acx(K_uh|Cs9EK^O zTGCV@#v!?w1O>_2*x0hXVY5e=z|I)J4~TU?2(us7P_yqL?!9H8pL_lWtlOa3p32Nf z5PL87Qbpa*-_K8``6p(b%?CK3sJ*6!20FJ+#*nLFR-y#>u$sG-gA=WND=ZZERb`Y< zg#U%*vFf;dBJJ1xiP7G=q3gZR93F4H6P1=eho*@zX*yulY6HmRCV~`QtqW_Aaw7^T zami^uf{lH9EY}4nN|h5C!M>GMyTbAIs2d|S)`e});F{2?z+b(O44d~Ff+{v2AXPmt zs|s06j24S;Q9J(`^d2R_%l}DmHK8FX?Bv=AP(Xoo^q|$V_KVQ1Q#YF|Sb`tqW=2*P zQ~C6Ff~Ki6_u9e1IcuT#O`7@PEy`#8?886FDPDe2XQv(Oy|iX+opn2O!!&p6>#?5! z2FVl4Q%XC33~QvSt_x44iH4k?-Qh1`IMw!Df50{GJnYXrV^1ijgXR%|+W(6zd-aRP zAmXW-gXQiN6(zpC(H}rl{stkkJ)W=oE?aKG5LcUiLlPs0KDvocm7!}Nk8s>7&x@?s zydK)G*ez4lz0MAxB;S2amlv_J;uub*3;2MVP~^B?Iq3`+o!XqtdL`hIX=Qta`9(jT z{@zCZ9~kXlqfLDiU+kvW&)%W`v0Mwey1U-Su2`w?jt+swAX1Z!K^deNpl}U1j5o7I znnq#XQXzl|%{M~<;!Wktk0-Z-rO{P~>uu)O*Tv-!WnWP4*bxl!VzBztf&Elx40ib~ z>Q=7lXr^ZL-o{LdxPL>?SoZ}4TX2hIINFX%_~f>S0GqG6;!3+hg6RTJjtXhe@F$6z z>iw3i^)PAriAKKwI7Xap07bR2(EkNy0w1V0O)bvEM`Jq^43t=ry&@q_!vL>6$*@@_ zYi4@dSlLr8*@qSvHkqGx8)wT8hv~TlID>LL{(=)Hrcri6sKW9Hm%V@9D04i^giP>Z z7M5f_nF(prUxaF~5){oevBQ5VmJtpOEqvVVPZ-*^5y+Ix3O>Bw287p>vgHH8fgVl!>1V6yOxvhUjIymgAe_kuo$oZx3PAIy4#a?zwbTx$)$syUN{x0Ra!YTVCJmW_Gf0 z{|V)~Vao^B+gaCcE8$p_j`?&sY^@EmGk=7tkk0AGy(gz&SznttYEY9HamW%VHeKMh zVS?fOV}^(xRHLA;>B-mAqfd&66Rn04;mN?qn{bu|78nNpf4mjB+tfUbh=aHr%6{!h z{}}__w5adhBU*S(MdJng6wL3_6&wJxWe23LEx}@efv-9a^sVuS(RYj2%mSr#%4;^7 zsk~KMT~aUIws#pHxy7gu{~7vNYP_Y?U`io=o-Y%Em{_9^XO-7|n+0~8q@YlH`<==z z)F)g0dfh!SyLD%0tq)yC`e;C=y4zk?Dd11dzi>xf!WJNdD>_^2+Xf8TfEH{d!D|zPZ zS@Gp3U1C_A=iq89(;q|z$%3=dyT{VQr8eqLsWsZ|U&OGA@H}8wR+v8#0(~1_>($!a z=?mN5e}+(67XFKWgifoNc&9&}+1?}SvhOM9vXv;(b`C9#EFGRLE(bi+Q* z9Zo^liP&bZO$9J(oXc}rNkZ4?UHz7P>FeUQ_-ehp;;xcG;f2>4iw#$`J?E~`@ty<= z;P?2uKNNlSz_!BLq_Pozxjv1p`l@aLlfkPf6+3m^Emf1a$DR=vq$hb1SJq%^D&C1K zwH*AB-X*}G$Kof2Re6D&-%*-AHY}A1Gq-tjTUmwRd}UX_rQabAaU8*5vX{S$Gew86 zn?tG8@tTndf@Ya21qKpZZi+Si#ajnBZ4GKd&B!x9JKss)^Z3Ye`7mblfO9W_S9qK4 zt2=SiFRJ5vH4Dht#Y2EEfc=w~#^uS$C?x7dwF;fyhYWkdcVaJtH<+6`zR{KIz?#Fn zCbmB-_`j#&Kfz+SN-Yl9_OJN?(k<_8^7$h({q?KV`4@mRR32vq6|1Tkm#51Z@L=gQ zKVjCU3ayL-dzhFlhoGg^-)*mMIu#MY;<6PDEz3xk{43Bv>Gxi{#w` z{-keyzD+{0@x-s|VL=UPE!?KE*nB#AC3`SbigEu*LV;UI{n7S>(RC{Prmcc)Q{{r6 z@q1i_KSnoYJ2+qWtsY=aIVgrJd)K$lZ-ifT!NV616n9sg{fhe_is{nIySSgu3w~lB z%AEPWFsq9{*?M%#ZUUd^y!4?U6W-6SHiwrL)2bCsqNvV~om1LM6UvBw!Yd__{KfB@ zq`UFM_0Un<+Js#`l_ub`Y4}W+zd_qY4!(0uPR-WxLY zf60!0t5_bUNM3TB`|+~XZev}h-FJYPMI))kA#!Da$7U?2Mv7gpMiA2!{Q9-DbZJlc zxO^ryd&Sc@sb_0_z3_1PcJ)Weknv|Rgj!^HW7-AoT@tdrla1OO2A{=O%>*ulhu^lj zdmU7BFy3ia5^)Rl@b-WSBp0s$Vi{H1_CE#nkn>@X(IfBmUsC%&p&D#uTfqm4L?9tZja z^K}q!K1q_&thn30|Cn?Q8M;;0z6~urpPPfT=NL4^Rpa~|ZrX<;Gw~}o@||q)k^Dl1Xr@{D+yNjl1%gQ?X+HHMoUmQC9x?{fRMIN?}2T2U)B5wZCL6S2~ zP`X~i4epZ3d+(xZ52!iUVPYJMG^*5qF+>y9jChB=wzgVkdmWZE4Wa}UkPFxC$t1cG zKEdebXO@uRjoT1}KbSeK^OBkfi5zKHv`+oNnpVb#b*q~ID3Y|_rQ{spKuyKL3Emj;R{ib<6Krcy(_-8?YJSk1PHrDb^;7*1y z^X7OJ-c^pYl51!!8GL00Fiv z0V5AN*PZ~aPjhH#`4WYf*Av*v+Oee>{_nWAsP%auX)4l(bSF-MP)k&!b;P4?o`qxqxfYno3i=dX&m1tjK-?|Lr}S$8*F{*c8hw?RIO7mi%RMym@UrTg0rW15j%KaNYh-h@_(e@??sC1iWMALo(F-4i zZCR8g8%E@5PIV7cPPL8nrHm`jIazYo!UuyH>gX}LIw41^s5v8))x_NQ!w{{(}k#|e8?pD_RL%Eqqkd6WwO=Gn{_=czYo7p89RVgT!e%Sa-X}ABCj_I zROb3GX>!lGsCbx>GEgN5)}W_~HnjWXB^U0cZ0GKTE|x@ouPVGdwz$@M*NkVhB5P39Vx+@MB>NcCRL63?k_Pmh}jv{>>p zRaGnZ=@HdnPkSbYoAqt>8-WvrN(R9=PK~1@6ORSOQc{%fDW-osYw+4l=5G0?zIR)z z=%c=_G&?t4QJ2@p1KvZu&2)2L?|xlxEmKM(Al#z2VU$RkyZEg;%Z+T~o>uFHHO=Pe zaJ_Xa&XoN@3igAlE%%wtv6D2ee1My?4gGQpWGB@S)aq5Pc9AVyxz5IAA;{(rrCXcn z1^v8QV=MDVVv|1>26Z<|r3CneIhz>TGN!s0dM)kdcO7{+7ao*oYV8EJf3na~uRV#d zR_JPbT2rz;^Ky5y05f8b)0~R%6r)P)C_9?l-Q<2!vXwp6c40w%v2cCtbKlehwfQ-R zGbTE<{KC~<9kZsM9tHHmnhe*^8>xQYcM@A6wkN+gT%h?DX%I=WWyimF_XOr3=3!2Y z0xru9z=;Wjmve)7Ly94>fvttvEH&#FesAlWAor|FX0JmXv&(!aPC7!krz+L1Gp zZ&0pZ6;TcOIu@K zbvcg765YH@892T^y(U$3Ef6soVbHfr$2PbOQKX9T#~Q-h{J_RK&mj=em+$qCQ_I6( zW|3v)#bjg(=~M&>JzD{~JbPp$mhaz)?*mezV^cE?<+Y0s7!$eBMR9^)ST;FR+Ayve zy)_cH+iJ>F)RZ9-7sn-hG{_?`Y_A~4Je(ldP7XnWAhE%$B)KyaVcVDX@V!_cGGen$ ztgNz9%bBixw^L4Hl3C-UenJ3pb^7cz6DIqxPurXp9^kU`s-tSHG1KasrOmC){ob>* zMU68i+WIWRiGx$!jJ`k)RG;J=CZinOHX`fE4>Soz8r*aDu(y3n(lKwE-mkr&fv%3U z^fqzm=9u4YcOEGULDqVIKM0_V8rBJvGT?OZDD>JoYs|T?*_@#_W$#`+zZVo0GeyWg zxV^d06_?mR>$N_H4Dp7jDEv+KyH53SZY4ow%2d=6QUtxbIJ>9C?rnYqoW<+RY8UO_ zt9Y@zyg=M(JDTczS+ay@P^1C*>NxmKw;yO7)$!06Rs-~8w>kz99`+vLyGAEY5a`al zv3${BNRcSirPJzOvbbzBX)@|JICgp-uH~L?$O`Oq|B|CwWD9xFDThg`gasP#jJ_@q z@^L_|2VDGQr8F6H_oyv~X3lcXeRQj`?Nrm2krup~o0*K(Q(okL_{S@>9v|J`gg;!$ zGp`>lzS1PffoqfJNl{8m!2U?Vi#*ItD=N52tH1Z?`I*Z-)rbmc2b%$8Q}M9BUmC9^ zJLVO1ofRb)5yO}!D7fkrl{Z`J#`(qISe{0`zD(M^AtlscqAwRwa)P#M+h*iIsIx7C zNWUa2d53iF(N3GR8{5`aiG`5Y%2;(6jt^4;l+8a`Unwk65KV^C1=h5cCmpG>_E2}g>1Ac;I00e zYB~Dyw#<>j&BkVXx8dPod)bPNrAbKF)1%n$$VtwH@|$ZYC+0OoxZ&%VR}G9_`<(fM zlM$|;5*KUXpdD`VagB1d@n2`BNZcJHNMv>yJ->cL^he#U%6!~wcU0|UosLxn`><1Vb)4lv%SzoYSxSDswsSjKvEs8|a|DIS=~Cl0OllyE>Yskk)1s}v+uZ0xvsha$0RIhI3GGk-t)-7bUNu-T_6 z1Iy6uN)p-0@TsC>xx8`1K?e$%VND(DrSwWotLB6@!_l`PvK5+8hdA8#lBZ;R``-S! zFl}J`o1QUnwq$gteBK*uc^KhpEnUmQHNNu2(WCGv@ZDIbm39?*z6nKQJ4=d#1s~o`Oz_QhC ztmxw^_Vi=!>xu=6t}An-BxUKuUy{YT58W8uXRW0(T8U7o9 z^&da7QuoVM&I(A)`p)T`GJALb;d~4$Z9)TM8!cl`2T7vQL1{>rrHkyh1?6QiYOi4A z%C!=wM%li6M_O81`I(HVh%J_deoL3QZ^KZc5wdI6+Lyxl(`;rWE{$6XlAzFYbo{gq z`Ep$xQ@{ryC&QPzph7M{9=5A}O8ou5xZM;E{GKCWz-j2Q?~1wdl@T-?v3$aAm%bFw4TA96fs@ zqw~JTJ2Jn_YL_1_wP8*yQytFDI-biCeMRIaa946<10hD1Uv|&Y(_|d1uFr2sleM<- z=D)mP4POxznWmOQ*sK{^T61pbY1t;@PLOOs{Vauzfy@S9mU*p>J2mg2+IlPbw)P5s z;Zp1I`>w_TPMZir@azd8iL})$$oGI2Rw8H4qLztSY5Ga?6Rx7;Y--X47R@%_1-pBYAKB6~4bqTEWbvgz{z=PAXhkh(y-OBB_(4(XqoswCX)W&^zaW}K&a z*#f7}UL-lCr>B<#_<6DBpjEV&XT+IllHBpO0jo2Embcg&GD5%qo_VTkWh@I%hW3X( zg0yezQ4z307Kcmm!7JnIuUI)xdkS#3&9^COih63XO~tg#}(fHCp1#5=dN;u3nFTOR> zLQ(g>O|H%vC;aLNWbB3<1bbb|N3t_j#W!UUXtX;D2KJA}EQSb>=1%A>^=-oH{8TkY z9)FISo~w^!Sqc*RiI zgzmPNbeZ;jrrc^2r7R4IAl3qMOh!?&!-9kQ`q0gS=uByk!b@N4bJhZ*8ccsVcoU?= zfHALFU%qhv&9&I~Ed@G#xlo8Q1|s|Nk8`Zg2n60gOpWFe9vm||ng>VVjqZczA))zc z<_?oof5(4PnW+<5t@d;@Dqat`r2@B^rnW2ao^WLhmoVR1+C-Nu zYpq^46Fa6K_x)A{w7Xi%mk1H>8S2~}3f#iG!nYQtsI%Zq(aUbvdN+ncc<@RN^hli7 zFn?D31JpqKjl_m0O}l7Ztx43b(fGH6SDJkV4U8OS&~s(<=R&@7Hz}dVy!p!tmFlB5y0V`jq~BsL%m+cmjXI_?;w&+nf|N@mE8}GM0)1s0t)EhA z_Ce7wr09MQ__m%SoY{#DrWA1`ep3FA8~SR_;lCDrD4isvu9`j!-&de-1!=6;8aPQs z9=xsR5z;91G`VYs%rfDnE8rucOE$pggqc6hd|z%5@cN7nv;(WBib$K9UO_mn)^*~k zmXKZIx?2s+zNx3R{I7St4i*xxi0TAZs-A<6nC8x%DbM3km+?j@_Bju$a;LfvY}BUO zUPZLa_GvzCeEROuP6p3w+UB|FoXU`RZ^?}xc1I%aF4(5ZdnZ_jhHC9EZfW%usP(B4 zN$h_2GYWcGNX+rp%e#;cB{qlvO0}j~fF4t!QAZ7O+mp=XPWH)>@KbA3wVlop_nDZO zt|_k0@)^MyzVQv=Hldvnhgzxrh<=7^6p73HgmIQd%VUYtBlm=~wK&&Cbo^S+c~Uut^9BE;)C4QN4mnpNE2yg>=xpy?R&ix=w?(3$77!!M(m=G z#9uLou&=vifEsH)A80*gUPl$9V!wd9bIJV~pBpPZ1H<`BZe(MV2)_Qx`&%&lI)mvt zV09yFx`yLY(Zwmrs$h1;+~$O%nPr7H4JY6e*$i~ao=tVDer8IK)%*St)pXy{LT7{C zzj+fcGG1gytkM#^RzB|#NPd#a%E#7reA7GRE$Hkr&A=|8veTVT7}ICFN#`(J<6B0^ z4TY@nl{#-8`0cjtb1fZGAMbOq3VT|~+js|el`kO^#}}56wNbqNuMW($RlK`)9O&Q%+8k3C>$p1ETrd6jBwPA;# zWEA-l?l6NMl3n@|5MC_pF(mJjJ0(9GN|l1gp=lVln`(4MMBOINewpULZw#qDT9ZRu zeI#AWnPxp&F;Hwl3?^zHhE{iW{4Z)%xfXDClvU?hx;!OK8}F9rOB^}oRdvJE1YmgdMun61rb5`Gy|mGchBZ1flWDb6wQS10txn zlj^3q-I4N>F=jt>ldQ-7MxL;@LY~*7U``=ny9k4>LI=kb=Mas>XxQA&Y0nM{>~2hV_F+>u4S*tte<;x=WV*~ z@VD^`ukr)E)?<{sxlKJn7IEzsW-To2myp|+y0`H$p>C0iq1kl)_@=dsvPzTAiigBM zV(wuGTrjo{<{5LPjbIZZj>FC)4k#x~A!seHF?P_ZvYk4^&#o2w3o8Mf(gDl9yL>j% z>~j675e90#M_Y@7gy2qlxx*0nEa&j>>^`tD{~zLk|7GTYCI?_@1+S>yI2;!fup?~FNo(8%*~dYF8)QoTd@>N@Lr z#8@QQG{88F{`*sMX)NS9Y5VI4+t0rb0Oz#y0p}#)vrl~#Fjw-x9vGUA=Du`pBRqsd z$quUq!}wGNwhPXma=q~wJjPDB*_*nQi-pMs-CxQ?It>w;9>L@g02I z8L!;9@e0VvNf=p0J~ZAf8=_u4Zd(rbyf~=XbPmY`oEHNk+LI0AfL2ZVe8p>*S@X^w zM>!a1qMLW%u_=3l_V(pP)Av4j*wEQ9yr?7j?IS)Td|?D{_}K>w6p9Z6EkMA2E#oC* z1kpUgh1zkigG=kHc~Gz}GPR~J_`lKEj8)lnmPWkup@oMYdalL214h#X?b*Oi zW7?~rLqt7DR-y}^1*6W;m70Ugpoe0!rV4F+`^E@mxmYD$see6fs&z*dpo&PvHI-CmBo+ z_f6ZQeStWf#SZ}e!+L0&o};~#8J8?d5fKcJf$76U>IFIg6#?Ly`nJ0RZ}^sGVJg?X z?f@f#oH4F^J>;-Y8=1 zaK-OWz8MIf+01(R1$X86qZT%J^+n~6HT1-2EtivH{F;GTYB$qK;jV)~f1z?1<{OA; z!p8XG;RXEQz1aCXWmW0s6#@d3{yd}*F;pANqfgSWnbq^ibv@Q3?wRir+&E@rOz#p2 z`6BTu(}4i-BqfM0{9v|7Z*4BAvh~U4YD2~PosY0p+++8rKa-*kSWysWH$5h@l@=8t zX@36|7|rKhALxTDg2^tn%3nhkJij6RY7j$IvA`r0;Uy8Fl#%!8$+!k`KmOG81PF zTAi14zD3vFR*qo3%r~%)tlA#3_@I`1gRWH@aJwFRSyXkpd|cMr`W<=1Cq`>Mk2Ty1 z$GPNRQ`3=~UGw(n7R-#Es}18H{v%PW0wH~io8Y4|j-h%l;R_1i`C1`%+C1m5@ z{QmO8_HfWr*ks(6wyt#+Js*6*A@2TBOa0G42vq-ehD6W6B==Pvb4Sz9W&Xka@^BJ#u}AE zX2fWfLMQ~%)2Z$nNu!+jo-9J5z;p>Ple?Ne7Vk#Ql9-~~{Wj$OX&+1pjC^K0FXW}P@$`7*V zRoF}}j`|Gn!Yj~;f?Hqem^cy~Y5foeYEm*rMsy{Xdpw!dht$ZiP~gtx|LU!Dv5|^> z{67t*ePnUbzKp_sjJXw`oVfq+68RgD(lUX~V?83Op%E<=rDVMr5qB!h9fs5`p+Ry? zeY@y066J24sWd!4+vN8NOdmCwu5XbHrsGoy2LsVyC{?xj&m1u)rVk6V!^?9&jA3uIc{JUtZi(fcAN0pUX86Lp zNis={Q;iR0-YgA0qjLd{RnAkLbU9L|+UTciUEU$O76Gqb6)L3f(`RPWu+D>g{!J0;@;uQ5%jO`wD}7zsfTom0IT} zlrSUdOu!gMiTw(hMO)HuN^|O~SZ?dpg1t3R69ooOQ=d3W%CEqD1T%-=~)eC|T!YyL~MpQC@~({vpTu08Z6Cpo+?|7mVrh=yi`;f-uw zF~EoKHH%E_vOHGn&dN~|OTA!65rpB$9UmWS0MlJbl{X%9jrAcN+EFqwCElb2xi-dL zhv{lO?R#CYFo8y;4&$l~xG6?}3NFr$MnCRl(vHV{6<5`B{fR66r45=lF@hQ3j^KkW z6CEAa4lET|DnL9FM2v9*y*`qp2yy^ZU|jXHT+_{2Mc2tdMiniqp-=ZgK57eWpceOe z_mygYV6$cLYF5)FL_{aJ{UR+^psR})jQ=lg85p(*Jhur1)?PhSPxFG2d*+Xn3O27Kdc}SkA-5WGl3$Z$5iUn)lu-R9 zIt#=D(eq8vs2)ww7Oas=`hFrH;V{6l9;?dqlD=o&bIZSeR?G8F$snrv$j<(?Ob7`X z*>k&&jGv?BHUcAO{!|D4UU@NHq3CEhRKwpkW$^{X*C+>f^2cvPjL$;2$ti}b=0R&3 z{5#9y68u%QvkBcFv2nF;Ce`MH7jXr1tV7moMk?lD*5MQReRNMlj-0O?-6~W(FuUR0 zrhiLk4)y@5`SgP^f;dX39IMfaYoI<*-eHt}#(Nv|Va2LRvj!? zxb@$! z4%kVImO=5~MzJVF!CWrO-7EDSl(+Y5HmpF|LD}&?DVd*Bu!Sk#k(vHyP{y2wFg6?v z3kE8`^dJqPtEqJE5oET?${@M!?M9_tLbTBE)W)hfdZ41^6M8Hkd3bqwVVaW)QjJ5p zz<7kjWJJc}wh}-K7&O5-)W{KQZ%xb>8@DGEmt3O&hK%6y867)+V=hJ!T()VU8Xjq-p<~7K2@|QF?g6v^Z2ym%)I@FrD!c4yNyFL|M}QQw^k_{5c)0mvVqFY4*fwTeW^`kYZDSliMgFkS?R_a7q4%}+HH{8+TQen*M zY?cEb>*mb(uyB9GVJgpXdfDp-^?1`Yuc5HZYy_NxADD`9`r(fDEf8w%AE&n55z?l# zE&~&GobDL@3AoZ4;CU3k3f3J#@LA2IB_Q-ZSitNzIY^UY^yof4J=6upxm&Wm*P{s|SM?VbEDG-A;XuMPGPfndZ6^j}hBq>==BKA|5%we} z{(NguNj6(`c&O$%{sk+5bu${LVv*u2xH@*s^KU5||8;Ix%S3?>hB0Z~5}yaf;MQlK z<tp`OD^(?J6|cyif_9rlO*X`qV6WE9^Qp^mvMh zDSnsbV1ve2H(i!TTKx*P+8I>XR*5V{S`{85y;6^&tww%LkzKt?5w0(I_FsfHBp&)} zq%3_XkR!>)ybi2Dhm33>TQ z_Z_V?QCJ3Y`LbG~6SvJ+FqA<07!hNgGnj>%bR|INZ=M8S!*%w(ztWaa^M}Xss_SLA zvOBkWf9mClM>4*eoIVj;{8;G05b;6*;{gCchdd$V8ipdt%Zy2pFv4K3OQd`I|9t~# z2|1=u-vs{~!1ULRf#_*ZyA5XjuQ8Qq%Eoj%Sd#?bywXB-VjO&}HBCAkV=d6@h_Ze5 z5_?Wn6qPDHS%&e6DJUo?d%9&_7_{E@{hEf0<)sRtUY`5aY)D+gsc?}yhEwVR)r4{X z=PgKM%($j`@`pj(Ilm0vkjI$r$L|KnDi;RmxW%Dw0x9WJEyvQ*7 zVQMXRaU$DlgR??w--F3A=05oT=A#6a1IEv-Dm~2SUoL*O1)>0T^gb77QqQyW{-6!w zZCJN;9^w|3|78lXCr_R{D?dKm=pqsE!UkTtFZlk_ldvP^(vg;-4#YGcC!@l6r~EyR z$td%8ujpoJad)n!>PoM#fKJ3<`fKE@k^2B1MrXr;Q&m-Ux9M4`?d{FtbRvb$*1sR^ zKdZOD3OPI+kL8i_2z~0m9m{{a6Z$X;#MHyDh}rW{t%_jqmE=Q+Q&cvDh&tYU$UTmX31V2ZlSJghwL+g@W>m?5W7W!updZrPi8``9=<9!~ODR`(f19_2SZSV5UZ1 zxsM-4cL~77ZuXy3Qz^p4psbU<6hY^@zu~7aYYRp{TnZIWqpPtne&2JFNwG_@Lx5&{ zwCiRdVpYN^wHa67Dd2qg=Og`*;Y0W80^C3Er+8?A%Y5vCi9KqldLh_IJCB_21Xia# z(wFV-aop{r0*mGq-d&!D4bH+2fLaMXa`N{szl;Ik2{XhCRzAPvoyuWHS5||m+vB+( zY39H_&h0f#0XW2h3zI75RH(tt#yU_C0#wPu9o?`zL2AUY9238Agn_}|4ZQxkbbnN; zVaK>0XzY9cEip}A08cXneONZYse~N3(;|YtKV z+tYuq2)XRBSkU|tn(AP%K#*4|GLZ)zVbk|k)oM(h#E6oiDUXj0iM$;~fc37WF2;=h zu{y+~GZ#rdxJpRKVt*NR)2NY z0T^k$2MBJSy)(c_w`C@%tt55%N96Vm9_x5Hs}N{m<*tU|gk$LEAbY~p6!g+V1~T!% z&;O{Ie1lo3XK2=mYo(PIFnN?QFmJl+Q3$2bt5N~4;QOBD6TaF!1%jjSh~z55Tt&!=eK%7@^y73=(!(s*r)GP86Iqu8@#? zNN3e9y91qC#6S)h>zJ`!0S`+UrQauDXgaA=jXm3Z>efW+XSmKEm)a8tyiM>Un)%F{ z=l?v2W$F`P5HZg=4Fc2D3Vgv;9~tgrU^)+)vb5r%H$HgyeY$=W)6LJ~b@H|N`4yF2 zJ|cD%q0SFrWq@9H$8z7!Z;o3sp9q(t4CEBPcdsYm#eEb<0~I^ogd@stca%vrOZ1rE zaW?4~iavknCnkXyALjmL{Z~hjKb046=OMuTuRz!;PSB0vx%>i0tbLf6-PEh`h~{_7 za>KeybDo6Z${P{(>`Q-jpTKstz z{s{gtk3_vfXCgCk%U1vScU#W`gP&<|jT`}aOcbX=aECnM^7$__WIO}+4Xi{|@Q=q& zu4otEkU@7^Q6;D#K_nASD|NYQt4~X#+@4-Cggg+i(hq3N+Bpipi=@w>f}&w!I*-{* z3GU@sefVJUFTb7S}BE|CTVW`Vp`h;ci)?d zJnA_b@3Be2b3^!Gk<$ZwW}qfuqFal5gDEY)yuiyk(LG^3IT9ywpVcJt{@_r=O&_n(CF^ghe zqbWkm2aJIu7fR-saT?`s#4R>l4&MAanMTk%798-P=!WW~-1q6}p_XeTS4>ItFt4@c z12*e;%qxaVZ9n%+pZCx>KRLi*)5B|iW5XlxsRb-96%(Btr$I-T-DR=QRr$|v`QQHa zvkn%O*nc@O)VF;haleOd7xDU+Ed=-oJODQdfwkQLFLqH@H(O4#hee&TNa5WBxcxn= zm^Ld9Ojh=4d!se-g^v%~PHeZEE*&_oxnsuopyinY^OIdb0lrl@S*XIGS@LK?p`zk} zl+@IZ#vs5Cn_(YJ5B>>^99}_XFq~yn_u2QflPYjN#gNQ!5kC`RqZS{c6mf8PkDq^o z_dyHyG2vY3#@|~j(e!H|mBN0+7_RLBoz1t_)?87HAJ*2i(1Cg$#S7v@G8!tR;%c1? zud_Yl@dyW%u&~KUdhz4>Gh3R*AcfnlJvk7u9IGN-cWdaGoT{HmiLJ0EiE_tf9Y0`$aKaye8DFklZcHuKxpB`?-0T ztZ_pm06)D$;-PQVZkarxtGnCdv6Z-wPo}u<<*t2--3A-32eoq>cIb9DcdbQCgA_)I zYhYmTJ!gri{V4tPyrACsW~6STi^$>hYVsneLKSrO^4O0*{t>DEsu}<76#ezDF%LzT zk*laUihsf=G4CiW8q=9WBv@*Yv;%XUFa!>RT=c2EtJQ}s#{dm!R64WLg~zjblS9%N zETYwVfRm?P{tSA;ImIlkN>@Ab>Ze?TP_Zed7avFKqN-aZ7E@(ZRERLG)8^7Jaj4+> zIpIAtVZ5Ll0kq*D(m(3agR-wK)eeDYUnYPH+}pHR{PXASXDkQ)-JDVX!{_yJkp~6- z33bQy3#-FTnUa!l0ptN+Y6Q6zHjjgn>^%#WIx}(2k{@YpA0F&hiFBF?E9eJ^ZkZ;k zhUaJ$d6^5XCpe{!)4^b$%n^PPc)Y7 z4qb)>i%-F7oXj5$Z(CTUM7ci|%a90v*53fdU zS`Gf9cyhEyhrWDKH1pZs)V+ho$;36In9BaMZA45yoa%X5Yp7i|*RPh2H#jeKBxFCc z^r~U1(_Z>I{mrhupNaJUG4|F0Ri*3u_lTe(DpCqaNh*y<$Ht`HDlMgeASs*fPyy+Z zj;(@p2uP>WqI8ES-QD@#%PD8hIp5#=&y0hPu-AIxj_dwhnz5dLTsr5TY&R=rsM(S# zR1C!iL_B-*_lf$itK+Y?T_tycD`4wjmu z$tn)|eqi~k-WZCiHTIl~Ddf0a7jeb96syf&qwgzK5G=ye_Oi_7bipao#_mz6U%#E6 zjXU&55y@Rm5oUCb6x{d_ZWmH2gG%iUtyy9UlII4f3+_sq!?o{G-9O%PsKr*!TL!!; zDHu~jPjI;%smyBY3Z1(X!+#o~^q$vta))zAcXeXSRq8$n)%-yJ4yo7k?CfkA30nx? zVG>{@zeh`xY2CzvNPS(`b)x9Af$_aDO zn-D;P&Fg{0Y6y zRfQa@r;3CO6I@C#pE)f2AywgM?W$Oc*6}?{vHcjO%K9iR|1no&VYC-Z$jPz0Z0}16 zYoGK)ADP76a^syWQx(Z_6O{`5FK{e~F8(Ztr?`y;to|TTrXJV%D|DATyVQ8jZLg*B zCA(S~6+wMCk4m#`Zr>dzIl0*M=2~*B?(CJ|2mM^>j2@PBJcD7C{1@l+r06*?XaDX@ zz)?fz-Gfwt4Y1D2kDx04Xrx9OOdrpkp%r&RzgA&Jf65Jr zm)~`msaR?jSxk8Zy|yawjZ?HJ7W7}n!y9A_ipI6bC4{^O2hwyK1uK*AziO;MAA`ho zcNlCqn_aeY5`Z>{bFvQHLHKO;<}VooFNk4|p7GN7SaBnwHS-49Rl~byh7YIgh=rs} zn8p!K4)mTQC7Pel2Ig7Bxrs`=ftgAu?bHD=hlu#oVyR|wQ+Rux+aNu$%`AUBJIM=< z<2PD$SJKe+PH}ypqln*clL- zi`vKfPJW$euawxhUJE3t{p{PEM}969aB_mtm>h!^8mRg(_|tzkff|-AzTVepGB^cp zKr5k(9ZJT&fJmT*PRyOJS3YeVEfXHCf27o7o3qg={i?wlb?l&|E|ni_VEqv?tMqR! zP>B&Vr4lr+I(RVi8JpkWzh+V9qs@4YngCCf>8$AhEr`1Oz)>OD;BwRh&c^+;wfuCmX$wSi(R{c!1?2yL%Y;6*h*sN3t^3bg@sBg^ z_jd}(S4iJan@;t@=FT%3b|>|&xFQ1=T^fmhw^;5$B-Oa z|IR20FhIvng2xd#R32V*1UEWn&UrcStX(rVf8WtziSyT4`uq2}3?FI*G_R5fK&zck zn%IED-vqlpzH?1RcF(W{lJ(?NfQix@1eio_$~*eS7agfkTTQs`QC4KPOmAhejjq)2 zTA)sUZCHI0#;FWqr%4>|LHl}ZcelE!iJ(Pv^%SF_I00UJf*Ye5j0jL5W)vW}eGAF) zG=_(q7f*w8si$ppN_63Zs8SLxTvG(JaxuOn=Q-22zwC_@W(?b&czlwqsRwxdy)WE}~<-&DEcsH`HCq@YvvgI#}jGXt3v|aDK7Qdh$%`kaD5U zT_UNF(lB+~i=D~_>j7d#WJHG805J-c*L}w5k#Pqyo+n#eOZiO06nr1V^}h@SoQ??; zDQjJcr$gb`&7>wP;uKGOjS&&$_(zBIA20Z?5DEFJL>*C)ZYj}6$%Fq@0++DBffFSK z0$U3uL7>b^8Q_4#?>5~1bSMc9=w+vo)KAw2z88~s{*olW!vq#0A8 zj*#7>_awQ;#00)<^rR}VFb7%U`u$1N`QvAaI2j9aNoZTkv?AbHl2f5aK&z`#&8C?0 zkQS?02_5c97&GdQNIRU!l%hgelWngY8yS38Ds9DhEij+7!IsuV^SnTDoOM~g>yJ;R z_)drr4RpI7fsze7s+)B#S)zm}=y+K}ei^K}O~2syyJZkGL*XM;3?KyNXk*^vt&wYOl*TDz;h(#sQM(LYrOUsHHQIRdQ%6 zRIxX9Yp{aaW4?66Or-H*!v-ke^Nn;(JTg zV`=7K(-71Q5~*Z3pl^V%s9kOBR0PiSjfc>gn*w$s(l~%SUzp4)v`4!h!J_3Epb-#a zs-fDyYysR@@Sv!esh?cB@+lZs1(4^mXY~~oPYG{EdPpaz|Hu}b%$b`!iV%+Rl@nKz zkIs&i(%R_EY9|xR#q_$--||T@M1+GOBY+msk)aBY$EE5kZ0}g%Rz?npX|>mYOh*)y zzIOpp)O8xH;P2i&3l(_0?K8I{KK0MfazTXr95LJbQ26FqDKI(DF{0 z)q8%$kdV#rXJ|_Mr8hyQW(}@3zh>Qk<$(YGYEUEY*biOtD3hq-qQ8Fcw-)gSl;F48 zYxVu5=8cdU{*)E+b595LY0p&}^s3AA%ufy@IVuvBzE>|)3NsWFc|G|`Ehw3kMfo7x z{wUb7GKL=%i{-Ta>7IlHq8?Qc_kb8Qz>0|NIq>wUNK`AFgvO8<)I6{X1ZaxYP&2R< zb{_;VE)gsacmO=^v5v}wKfQf^KS9qBG}u!R;N54fdhxiqskZLhHLnF;o^4+NqI2im zQ3s-_loaBx17v6lO(zY#C;{-!)n8zmKBHA^QTuJNwFVI!{vOvQowI8Q|DLI0&W%uq zpv@*|3a&yISll&!e8O9j2r!N;ow$-~KzrI)N*t%3JNhL$q1CBg=#fX)F zh{kr7C$7H+xU+^7)jF1?n39l)(qb0T>XXl@!|5?PQp3p)4b;NstDc|r2?k^KJm z4JrT_O_6CcEXHI|v&>}p#`f;+jgsKtU=T)GY_i804a4yQVh7fWmoHC@k0>5B%VJ;l z#%8dQjD(U$HZY8{m0Px`MP4l-vzTZIi0*pMy}Mia-noau>%!htLLgOElMkuXQyh19 z_bs5;A}n1<_^yI(*=y`%8SSU|M)9u$ClawyT8;%rjI zFcUE&voa0XAl%8u(Ry?Nb@o%;A77dyEvC33gLqnsof~#+jJGd2G1JZNF8*9O#fEAh z9YWUBF($UGR@)Y-`rmt+|8ZrAvd|4v>^A&T!l%o_ZwS?(<#=$yF%Wy-_uyKG$~@ZE zx#Ckbl$Eap)tHMH#H{PDPy0<^{qjhVP<7YV-@un9U%fWgG@8k_+)`yX2`GNg~3KOvG_%{(;bk1p{i-1xaA2RY zWA`RD05`UD6}Sw-O|ZxX>`7_|nLd@U-CZW$C60m8#EVuTlPhDNc&U_BcfT3LP>y#o$nJz2tv&R{nMJ1qtCfZFS~+DIO{A z{QZn`|HAoxt!4g%*&h8j8opcmtrBMKrCTi>51pOMOsmIOvhI3+8^Ll}QwvZJJGYW? zNXp%{9+SLu->KaB?pq0Qs~Ewf?rQtXhNb5q+0US4Ih5DjzL0d>Rx#Umvc>nww=#pm zM}+^#cfV`73tP{mjA1JGa_h=@b!OoyP#ux32y4f+Xm5pP3K10*B2V}M6C{}a34)VF z3g3ZvSgn8-^8jJc_r2}aJ6~l&>g9WPgy<6(mNiRh+w4|cW2584kbU##27XAk^|19m zXuTx{HVbSkEAs<%QFvGKBtULp4(FOl{|9`KDl~o})!0~LJ!>j!XU+R%zO8B3Yi}rL z|2c;c%=`@17?fsz4xjG5TA^6KI=?oZ<`3=w%w48J?QVnE?yaxVs#ntqlA8N{j<4Xp zHTz0@hcWQzH~UFyN&Q;kzpjw~*h;^ihe7zbV--hfx35J1oiyt4yH~bo-u0bZob}a$ z`HXbix!YY{vO+ayNiL+%)Yc5nKVT6yUpd9;@$IhbWVR>$@V?M|!n=xCM=}>~!sxD) zXTb#F1N9&u{qtu?Jnjx-v7s9G9naJ=jC6MWCDeJe*^A>188` zh=Tcyl>@){@;0jCKv4GiF2M)0A>n*crF7+5=t9M56@YCHDO@P^0>e&6(fcpkrs;&P zd6EQion=!>djW2A2{4HsdF8Rsji#x|`Qy?w0+?B;*fJNYwzjsdxxkOAtr(_nTO}9i z-#!)TJoAqkm@3vP^??k^x#X%!B<@6H4ZsTCUzFImM@Nl6SZr}dkm|?A%e-Eila~oS zU+r4!m~QSy+O$|Xc%$bS-D5Ai6J{E;<340{kT3K@tGPE`kX;~9CK%VU`BjFC%f^h_z7uBLVKA8~P;HM_D|LmO zHSCg4i_2D{R)pAJ-;5X<1MlX7>(<o!D7V)D7l%puq&g?nK-72*secfZSHLw;EKzMtG zB`9=BgV^<3qXzLGDirsxZLf~_M|ZWZcav-+@ua4t;i5sd-x~g z`QOhbC<$jpBE0fohwaX(6>bjnE7fn6i}?D@45yI|@ZRE@t>3;81G8%>*~R)S`mLdv zGm>MAi-C~xU88Ab@E!$mwm+oe!hgGR{Ca}@{WN}lm5%p>USkNJ)~{m0205G#mCRcA zP=hXdSHaQaep(-{ue%m+8FYoweskqErCFKy?2eIDdDNPLXS6joUirPoqbaR&w}wIx zvut)~FwCV;J%*CL&EmQnfV~c(L+8>{mF(KZQo@vjlqqrz!bW`E4VSz-$uxrBa`GpkbHK61qK~HuMqAb$FkNB6rry!C5I#hfZZ4(U` z#)6bu+NNEkD1o@9T(g+1EN_c3Wj3t#f@b`Jw|mnL{oIB>?x@gztUnC~x}Gz?x0UF| zaS(N8b6n|r5Wc(;_;eXAD5m#%cT}L9K~uUJr;vS~eaI_s@>6T23P-X>ceXa6{ljo5 z_jhzy{JUWC@3#uiT~E(lq`)h}{#RiI9WOp)uK14%&C+j)Tg|YW-MX1}kYLa}KoJmE z`4TD%KRRpKdR<5SC=WJ^eT&HK3m1yh-}G8sx_KJqw6h?8XXScG%RFQ)ELyz~^&(e~3q54SDv)i_{&lBIN#cMm!IO~;F?9ufr(()k7-}a3 zL!t3{gMf<;{05+Die3(Zkdz9fBS2fFcXA?To|3^-#|Ggn<3jJ&1FDiba6%w$S8lL! z!o|b;*wVtK^|gqr<(r^?+bpUsXj1Z1{p_%*BIrUi9Itw2lDjz@*bLnNy6o6kWbyBb z%_=?|f^+Ouuz5gzs?~F~K^a+~de_~-GYE=6>o8(jQW8Iqtz9XXQgtgyVg}dAxjYBi z4ZB7RcVf@fJ8updJiQyz;6YXD^F6Dj-;1ed72t5XpgM^ZcuIo^W`GROs1o=8BWVws z#?94h#L1Q`?9_PpSB&zV*`4-aizMNErc}ZD!SI0_=V%g(x)(Co_xqo5Ys7&fKcA3j z9Z0iPaiKfp1p^D}p6@~bEY*U8sQoLPwwHi%kvv)ZaL$teZjY2iOgA^`U`yA|(NX<4 zQ@?8+^bS_nZ*Wf)xBQ5!J+7rz29oOAAgy;!0Z(*cqT_#f?fkW?-DGh=+#ui84C96x z?KBsDwqMooW_q#%p{(-*0tWV zcbngs|DcC)KgP1MgZ)My#$d+}CN89G7KczGfJ!zp*aj!OLQl#C0W+r-Lsj>`!j=Dd z{YJ@GN#-{Eey9ANqa|vATkElVFQp6K5cFIRrEUrS*FMo;3WB#U7c1DN^fd?Olj!{M zT=v&h27&kZ(%)ZxR7!BykKG)~>bSmzAp7zvEX@PWZbG-K-^G?dFp*;Pykf6`gFf@G zK>GU`cPQ9^zt#ex#%}{lW~ZI$dOqe5tW)L^&VK+Z{_;Q0% z8K`L|U@Rtwkan$+c+CmCeJdV=dh+WKqs5h#4tHxF;{zL$0sCWWxq3N0=(J?`yOEKR zy}iAAuO(cpU{WkKjq1+d@&A85kDm|BUG6d>Mq`wso1C1CVDtI*d zUbsEArT0+|Aafz))=prDYj#)4K2*2@LgMyD9I63Twa($?69~clBXRAJ~ zFtg4kA43C7la9T$ov?kCfY4lQq~e-znBY6@k*ldw^XNf9Tp-Ysj*-xH*4-CcmCRtt zdMjHSUCXkX7xzN&3mxD1VnB4w@-$VvI{_;tHI_q=49lKOvcUNeli}?;68hPe>Lt3F zHbi9D+9WBUCuINnB2wB6Ku@_xTQt8N4b5WFq*4=gzVmKh&T%n+rxDZG2@r+qnk_x; z&PCdGzWH(iv6|#fZH0YC@$!A4+!n{&fB@NS19bC1u>JI^c*p3#2Sbui)z!;jdo7Zy zN|T;2ETHF^>)No~pZIoj2-*uyHoRZam9`DLo@-4mI``X_8|~fkm-pdJY`|9j2A!qM z=5;Hl5&e;TK5DEu;j7U%(zogX6<67~9A#$;BtNz6Or^{RWN?H@?(eK$Tuf*tolg$r z+SwBV`)bILo3D;rY4&w5T9<|GD_0t*?#9JO#W1%5uE44z<9=sG0J=MU0e$a=S+rC= z@NA=9j)Pk?kuiMBuY7>b%?RJQLV#tWPNjcwgA=D;MYu<;c~ z>TGgu-6k9j>5H85!u0?W(GJ&{w=KW<`9Y`4^hI&C?4-EiS!-5Jg9U=n{SK1d5OL-v z`>+LcU-(FTY6g$m?hvoQq0F46F?L+3lu4q$d8#TH4F}7 zFYeWg4M6LJlFPH@-eJ0pu4g$1m95RPZz+Xh(@AS(5*1!kUFqjbY!|b(#zhdzwl^>d zHREz*R@fUAh*5C40VacQLpi($1%~%MejJ^BxUne$#VxhnWmQ^TVnwj>d5w zGw2MnXEL1RuYoU{JTYz3D}0+|v?J$TH~L%U=u`D(;o592p6Pv+k|a&X;B`X>r|wZ- zZ(vnb)WKFGj>yn1j~{)CHQawt`p#=hPE?@PC70&0SkrPHEKAM0h}`_Q`)iJ&hKrTL z6>H}6GPK7P3YZ6Z!(0}_)>$WMlALX`Mngw^s1C>M{$*av$VE5VmZW(hq=jl{H70c# z9u}qY%BOhR^z8CT8f}N70_NF1SVF+tHQq|9P2SY(Tj^-$N*#^1+peLF0(~CirlJ}h z7&q+Nb#N9v7!CE{<*5J(e*f?jxw1&cS(V|3HCuBrB{#%!Lyb{=2at~K-}KRHIl~cq zoV5{8c{%iGDQPIczYu5&&@aPCXh`<;20~HZXqmmu+mqql>-pABIxMctb;(a#mu@72CVpDzE)|7vRt_hQ;)`& zMr$X4cCG@9XC8*dbXM}&I^dbio~eXUqI@&NF_7Q1KgC7zFm#>G)#BjoXgWB4!gTtv zX&MomFKtP&S(6PB>cX6c8av}uU5RgDaq);xcHc4D(<`;EKhV>}5h~1$*H){KYUP^b zB*vQ9<{m~XGSYa`x)K89Dnz^>Qj7)r9pG|9Fn*Pxrt)-lEb-6#f>`+D{sV=!C zn^D}>HQd^4(M?z&Y->!Aqqb&iZ99+G<%)l&t!=Qb&lgErbvY67*{zyu^;2df2K_zD z)4d@pj-XwK*3Em4RHYZf*sz)>fOQb3r>75zjbqe-VMXnbQIZSGkFukCi^ds0J-t1W zo|D;{H%!cjQmbEyP;~OnAD?>) zu{!}Rh7^+bo49}>M^7>u+N&4m;Fv7$w6j||HmA4S(WAwvY|sR=rv?Mrj%m(w@KY#D zk3lK+5vrv~<anf{(h)#eXBnoESmo#h)kx2!aT@7P8Qb`-!_tU|j`4bCK3Zt@wJqPgL z>(SAxY|f`1{v)!Y(3BXa)o-`>%*SR7heOO|o*Cm%VNL}&A6($?F*e@m4>Pe$(z?*@ z0$X$u!@b-emZ3oF&%%}1;1QYVGGu;y(z>vCa$ZIT+T4KmENExw! z_7x0?P7Y}7mrpZ$aH_EG-EIecK;lHIZmvyeTFklX@e!ba->Q#1hhgMHQ-|iqC=Puf zH}jX>Ouj`W{Z*l!QFFHBPFh8>*KA}4#zEL~Y{CG3lSO5?W7JBnJ4;>n1c66SR;j?4 z&=uNkI=V>_Vyw6JD{gVgZk=}P*!3nINBT??f_T>M{ZB|?Vw)VBa36nmdh-lL0yRmu zOzA~oW@CZ*x6*8JSRtT{G>55_54ZBZXqKv-=1Ax$i&%bVM)m|{EMU!1Vq-)d z@xf@`c3$KDw`k;H*c)eI+u`xp?!#B!!cDtVE;yc9>>@)Q%6F%yg=w7Q!D##b<)>fQ z6=otcG*w!dz`&;7#QPhF6DHOs@58sZS}!>OMN}8JH0d_+g@-(k)Wi*+*)ixRl9mi~5nYN$G;?pA8vDPRtzAh(x%vi45MeN%PgbgkK zvXSyR{5x}0ZmI_ZkBCGkx9;_5hvsb2hlN1@{mre%I!?&r%KVzK8c~!ONrmO(r_Q#f zfEc4*pHHsIZlp!M-eA5iJ2X5y6El7A!H?yjEE6vJ(H`0Ko^G{I=Y#)b0Yql(8R0;wj(U9- zu6l6Fdx=Q0qnuY7S*Bnz4w+*au=RP2aA^3-B;0X=#w_p%&fN^Aztx%ll|eFKaCIjs zquS+Ti|%H{>Xzv~k99^<{LuLXFa9c5uMEFDY@(Cl=pD#1?vUw1>$xr8SOvk)P@}Or@4n(o?{Sn3#GSZCHIGA*6$n8v}3{rITe@<|>4#(vku%VG-E zl%e^NuCF_HOi()LWJr2Jq z{Ph(fmcLSbNJA3QN1P8#?ym_mPe&j0sni>#VH=mdDd6U5%2^;`-ibPgC0Fw;+wev$ zL073;7_+mkkfQe;`Z{MH%T_(QpHs)u^ytCuYu@OJxmTxe>_K>n8V^{0XOiCSVo{x% zp}nu@^(ud2C)JAoZr=hqcD2I6`7;K+r-$N6l@bLCb+W`2@yQ-Jho#VWAuPF{cl-~( z&F>MH+MM*3EU1Kc0bDboc)VlBg!9ja=*e~G8SZ9jov2G@y5DVGhyHdvRAg9Q4c8mZ zwCnLrd;K8T?&}ANG+>C2_X1v2QLkJkcwbpZ*Qq&^dO6gZZ89a-CDbvk(2}DxsX(i8 zXRzZzIgh+qRQ`R`ydQ4bcUaZelM z6;!iN16OUkpA4Q9L+h*xwsNUI+R_t_+*s|#4TChSII6WrCsti%vuh$hzq4;hUlE_9dcd8IE+J|W89g3D?E<})c>_t(!O_h=Ox>3l(+ojvsIH{gx*VAx- zHaqj(!jrUY%|;i%oTv6Mk2|Z5@Xq&#Z5$ojW1Sx@MXCHY;WBhi(}C;OI%_TWdo;%> znw+`=8kYJ`i9Vuh*NM9T{BaZza<#w`nCoETlQ;5ea>%bZ&T?McXfiBhI&;!>g~mk3 zX<^B-Ym#`sPZe7UftY-EY5+RR8v5P0m|TO6kAXX*Or!p2u3-(j;2I`$6kDM@mP?VC zd$HUFE>ILVhd6a$s*A9=0l@2=#Q}Dcs^Pd9uQ8Dj=m-g}4N&^l4vdYQ`q3rcVOJi1 zPDwNeqSuE&2+G*S5BDq|b9n=$^Va3;iXB#$-Fbms+W?DsO|DAkk(&<3*6feO6vQev zj_Q4o%iHOxK0)AH!*X=yjb)4d%ocrh++~Qap;XI+wC8ThlsVX4d0&MMuR zHB(R8h6Os)ln4N)U}=@BHybA!w{>GWqrOV-f>c8Aj@Zq`CPUKO&-y<9M4WG^BjJrk zzKf>wymmcPPdC6Tm-~YwR3mMR~cc`&f1SQ&ukf8gEmVQY*&zlL!+ zY6_NXjD{b;8q3Y()hkzSGvrKfB^uwC=31UMZMljPdad4*ZKz$~tM2d;o&B?hV4oL0 z`a$|ucV?utiq2Jzimd@`DFFLh1F{&r>vtxntm4xQ{J##_TvkhhZNwgEk{5qzXHapm zG(I{zp$UP3PECD?PhnYZjF`7L!(apSNJ|4#K>G>bMrQ~}PQF21XmsGm?9b?Wz$0t zp%AryU<^5phI$NiBzK59puaxvn6%L`c`Rw3b{Tk^KF&wli@bWe?-$~Hz>04~*_bvc z^c=vDd@Q{b2JA8xEBhChepEv*GEV*JopAd`j6gB{s5P~*t3`*MMQjb@BBq;MOz6<@ zD_ccWz^Yb#lA z5eA9_+JEW@*@|*-3T6tKza#Ttv9frPuqx0}_>FGhtrL|L{$!O@%9#DadP{Qt83Ah- z>|pUK2q5WPL-uaD%$0%tGGBS=VF%Bb9O+$vp{h7@wk?*Hh;@7$9)Y831uUuE zq3a8RKN@nFF70O#&52{;Cv-NIsw|w=mDjQE&{2iPYk^2{wsgS_sE~9lQU}zr47iJP z7F*iu(O4|7)YgpV@i7}$ipa+rs_!Dzj0XdkVB!*DLSlnKkok>v_H;~VIrWem8(RYN ztUHN#&C&kxN3U|DM=cer8zA(N?hme1zqdKMlyfOVV@+Fh#qKzu2w3i1fCe!}OZKgx zaTNEXXX{L$n@XZNxaj=^xCZ#!6_3G%9y24jdcDAMpJn%@mWx5ZxxvuXlxwy~%of9O z9^UnGm2O#w;sWM@*Q&w~5DeG0JnAwCht12cqVCg14ty#)uO>%+G94dtWRT&MlXgW3FeZC-ZLU8Eo<)gJ?Cw`w6 zIutv9n^<~R|Le)8>bEVm59eNfJ%?$5iJ^~_SQr!<^!8gDn_Cp(Do*X|8P?u@{9X85LiV-WMMU+*8Uo=g1u;=IJWDVq?b;ApgtI9= zmTB@|?9r-=?#F5DegkBnkAf}KSW@o3dFI^fKYQMMq)KH==kqn(Fgw-L5o0P2!qW7U z^Yb2u8+J6+xA%=eIt=2P5gZHZLr5EHfD?Ha%wS>ui+)!%}Y6Rv~QveYTeG}}a`M^HD{mR%!*twx`yKf&mc5Oj# z?BUqfI%cLqb@qtK0MWC?VY&LRF#@B0q35AvA;bMe_#wD>bw_{-H;FiC^?AIQW7;Aq zGQwPWcp##{fja-MQImfzv)?QE6t}7*iFyB)UHq){Pit4PsQ}H-@&NpBRH-^r-nxn$hxo5wWi!- zAe(?RrTs>cUocM8{ny|xbqV|e`#%_tu8gBFBe=~2A#AU>RGP<4^RE4C4K<%c{MbYM zfXnFwve(gmyHA9ZqhT3UCO<=`=*=MerdjJ|K-bVguMlO*QkpXFlr}5rh@;LAN{&7{@LA@!s3YAo{}RC7Qalv_v?|=u3RPJ z=vEB|d;IsChi=nkSSZui)avtDl=Yq^7DNP(k_F<1v_7Lx|m zV76DJS8!=zw6^qW16Rcs4m1Yxm^4pZ^EgR%_T0IN_KiLmzx;g({ND0%uffGRdUScv zvgHSiW4{cg;{VKd-I!v)g$0; z*gqBlZSML36$h(#Y^H^IkAaD_e!_d>7HPSdd?L`5+kU|B1}*9VQRG!aVjW#wp2wd_ zqwiKdIdah5IMr4C{U0CW=lcD%iN}4jiUsf&o-aOeBY#j&?+BX4__0=eEH-bJL#$?U z?n-gO0k!Sb&-{P2hmkY*iaQXeQVL+?CJ-c9r5T$1AnZ-N^BQolg4Q#NGn79->F1`7 z2V78hxX+1@SwWaloNBj+O5Z8OJp%|At?4RH!49(Z-FzO;zt*?1J2FZJQ2+vNqSSzi zSV64iSpOrL&ymuVujemxogExkbK==vm}Hiw+5Gq&i?4R+nyTV@FZmrBod%Xe_{WGyUrFEz+g-6A zgvW}oO$MIdJ1j3$qse7(1qYIs-rktuXG!lLgLy$%gYf4Ky4U3AQKv3>TOVrDt2n(UP00A+w~K46Cw*S}yqxlRdx=bV*ue82Jh^VC3K(p9pd8NAk#6+`W z%h1~02d1U@3H?0+$|)p{uN>4=EJo6kbn;f5>pyK>X^H*x=Fr7#C`nI(bSVrW_gHs8 zvbEMl-&&%ixi;N*3}&em(0B8fG^X?T466V5xWgx4G+J9g^hqlnqURSNc$5x{p$BK> z#*quIdOy~E%#WQ^eCQ5h^V$3uV3R`7t1)9N?0Vqj1YXcmGAp8~*RNf>YV1(4gK6eT zG)N><^cekh`AN9Tum^>Od4Pc95$Gc9#=}(J1E%bLN96wE(|bUt^P}j(JD;EFg&~Px z_)(*l-QRN8n+A62c$X-!_Iy|o2E#P2#fo_(9E?6C(HdMQ@4hBJ0i9>iRwzE>8)v=$ z+6tGkEz${U2{Y-|^lICFbBpxS%>lHi1&xfsMRt5TaAgmUjrDu=igfbo1qa3oCoTJI;BY!IZlYuL^Rm9)6wL`Z#&l;oQ-fkW6B`2M5M&3K z4dYDGpjK^ZQZ3* z8x^+-D_5Kt20V{JWH6b~-N%l1>F$G{j-#-b?>+cBZpdQ0QWP0U4(&d2uJX0}@g;cv zMMXnoMf(MgM8w2C0^j0Q@8*k+9&Qv?{s8ZI>kC}o9JG#eJcSs%(+z=rAnG90W{%=| z()W|d_4h_0Wp6EawB0YiPIKvz4`W?;ME2*k!tRGPL9^Vp2h3D~Xo~~+HkBsbQqq(u z9Os=ucceX7+1NBZt@h_Rm$HQeXXwp5{jZ2f;MJ{_A|I|Ve275e*Yo@z8}a8(mFPPu zc*Xja=_w6i_@nM8+0F)qo=yFfMW^y58Rv+&X`H`8)fsmv6X^o#Hi$O5VHVM!RCWp? zMT1WC+gC33I3@ZJIgBW?17apEtDz!ojwHKY+(yobVSU)l@b2uDwa8i}xcC8vE)j`zE?miqr zK|yXW8ybAdLo`HAzT!P1O=k>Z{ki}$Yb8+s+W^ziK!k;iRzC)f$F66!NG_x7d?y~Y{raXR`eJ` zZ+`1+88YokBclQTr@@3(>hOX@`OEEm``gMB{}@TX`&tzzBU1IASnjXaX+jj#@)lh2Y&}=Ob+h5PqL?VemCi?FPF*$a zC%r;NN}A~Ugy!5iwl^?-HA_@ zZBNAXmOB<6&>-={RY;s(a9G&Dsh9!G{bJFouj{)uYV|eae?kzxUvPhO!xKU7SHr-q zbKY+SNM!%_M*i==e3j}pHhbb#;@N*p4qPH||M1~zST9FY@ssHY3?7+1^r zKzUDkZRAkK80a{5z)8N^dD37-khl8jKm2=gc%eH#}IV+k7p-MEWE(WLv5|o{~t(Id?-oVfOW5e%z{QsbRVB zlcAJ~f%I$h54OA4*Bkn~7%)BSns@owzZ9peQr1oNMt7ypQq|MIBHTOi!qb!f%Xnls zZF7^Lg3OBAdhW()bHNR{_%Teo4LmlY^H~2W;YW50#fJvxCg;GtSCu7I9XJFFC9|B9 zTc2Bb9lL}@+e?pYm1LuKG@S7cO6}9NOxJ6VsN@^^J05PI(RbQmN(wBg_h(SuH%HNN z|AswW;&mBzJ<)RLcv*kXAnex#lB?&fm3r(nrD9pwDCHl=)gIka4GH>TogW3vJ9yBB z+n5m{R?<*%u%<5rXz1v3Lh-5!XIJ_K^J6YMkMSt^OM-0fVI{VjARrxo*|c)C zSp=#jSryIZ5DGbTon!lRoBn>~P2w{4^<$Rp^j>hQ?_`%0D0Vsap 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%0Db+{X3q2HHGWFKc=c*Z}tp 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 literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/普通类型节点.png b/extensions/shader-graph/readme/普通类型节点.png new file mode 100644 index 0000000000000000000000000000000000000000..26b7293563895d43bc3792aca687d240e729e72d GIT binary patch literal 10647 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 literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/自定义节点.png b/extensions/shader-graph/readme/自定义节点.png new file mode 100644 index 0000000000000000000000000000000000000000..70d65287fd96d7b58a22be641b98bb97132f59bf GIT binary patch literal 13126 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 + +Node: + + + +--- + +### Known issues + +- Boolean variables are not currently supported diff --git a/extensions/shader-graph/shader-node/README.zh-CN.md b/extensions/shader-graph/shader-node/README.zh-CN.md new file mode 100644 index 0000000..0ac214f --- /dev/null +++ b/extensions/shader-graph/shader-node/README.zh-CN.md @@ -0,0 +1,216 @@ +## Shader Node + +用于创建与解析 shader node + +--- + +### 自动创建节点库 + +节点库的代码是通过执行 **.scripts/generate.js** 对 **shader-templates** 内部定义的 **chunk 与 master** 进行解析,动态 +创建代码到 **assets/operation** 目录下。 + +**模版** +- chunk + - common + - input_basic + - math + - noise + - range + - shape + - uv +- master + - SurfaceMasterNode + - UnlitMasterNode + +--- + +**生成后的节点** +- Input + - Basic + - Float + - Boolean + - Slider + - Vector2 + - Vector3 + - Vector4 + - Color + - Time + - Geometry + - NormalVector + - Position + - UV + - VertexColor + - ViewDirection + - Texture + - SimpleTexture2D + - Variable + - GetLocalVar + - RegisterLocalVar +- Math + - Advanced + - Absolute + - Exponential + - Length + - Log + - Module + - Negate + - Normalize + - Posterize + - ReciprocalSquare + - Reciprocal + - Basic + - Add + - Divide + - Multiply + - Power + - Square + - Substract + - Derivative + - DDX + - DDXY + - DDY + - Interpolation + - InverseLerp + - Lerp + - Smoothstep + - Range + - Clamp + - Fraction + - Max + - Min + - OneMinus + - RandomRange + - Remap + - Saturate + - Round + - Ceil + - Floor + - Round + - Sign + - Step + - Truncate + - Trigonometry + - Arccosine + - Arcsine + - Arctangent + - Arctangent2 + - Cosine + - DegressToRadians + - HyperbolicCosine + - HyperbolicSine + - Hyperbolic + - RadiansToDegrees + - Sine + - Tangent + - Vector + - CrossProduct + - Distance + - DotProduct + - Fresnel + - Projection + - Reflection + - SphereMask + - Wave + - NoiseSineWave + - SawtoothWave + - SquareWave + - TriangleWave +- Procedural + - Noise + - GradientNoise + - SimpleNoise + - Shape + - Ellipse + - Rectangle + - RoundRectangle +- Uv + - PolarCoordinates + - RotateCoordinates + - TillingAndOffset +- Channel + - Combine + - Split +- Logic + - AI + - And + - Any + - Branch + - Comparison + - IsNan + - Not + - Or + +--- + +## 如何定义节点类 + +```typescript +// 这路径需要根据你存放的路径进行修改 +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { slot } from '../../../utils'; + +@register({ + // 创建节点的菜单 + menu: 'Custom/Foo', + // 节点的名字 + title: 'Foo', + // 节点的样式 + style: { + headerColor: '#ff1e00' + }, + // 是否是主节点(主节点不会被删除,只有一个主节点) + master: false, +}) +export class Foo extends ShaderNode { + // 定义节点上的属性 + // slot 与 prop 相近,都是定义节点上属性的信息 + // 参数一[string]:名字 + // 参数二[any]:默认值 + // 参数三[string]:类型 + // 参数四[string]:连接的类型 + // 参数五[Object]:自定义对象 + data = { + // 输入属性列表 + inputs: [ + slot('In', 0, 'float', 'vector'), + ], + // 输出属性列表 + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + // 属性列表 + props: [ + prop('Prop', 99, 'float'), + ], + }; + + /** + * 生成 effect + */ + generateCode() { + const input0 = this.getInputValue(0); + const output0 = this.getOutputVarDefine(0); + + return ` + ${output0} = ${input0}; + `; + } +} +``` + +### 效果图: + +菜单: + + + +节点: + + + +--- + +### 已知问题 + +- Boolean 变量目前暂不支持 diff --git a/extensions/shader-graph/shader-node/assets/graph.meta b/extensions/shader-graph/shader-node/assets/graph.meta new file mode 100644 index 0000000..e963448 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/graph.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "821bb093-72ff-445b-be14-5567cc18294b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/graph/index.ts b/extensions/shader-graph/shader-node/assets/graph/index.ts new file mode 100644 index 0000000..412f070 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/graph/index.ts @@ -0,0 +1 @@ +export * from './register'; diff --git a/extensions/shader-graph/shader-node/assets/graph/index.ts.meta b/extensions/shader-graph/shader-node/assets/graph/index.ts.meta new file mode 100644 index 0000000..72d0ca9 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/graph/index.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ca80820d-3bb1-4b1a-b242-34a454f928e7", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/graph/register.ts b/extensions/shader-graph/shader-node/assets/graph/register.ts new file mode 100644 index 0000000..3008b06 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/graph/register.ts @@ -0,0 +1,61 @@ +import type { ShaderNode } from '../operation/base'; +import type { IRegisterOptions, NodeDefine, PropertyDefine } from '../operation/type'; + +import { ShaderPropertyType, ShaderProperty } from '../operation/property'; + +declare const cce: any; + +export const shaderNodeMap: Map = new Map(); +export const shaderPropertyMap: Map = new Map(); +export const shaderNodeClassMap: Map = new Map(); + +/** + * 转换成 dump 数据 + * @param options + */ + +export function register(options: IRegisterOptions) { + return function(sclass: typeof ShaderNode) { + const nodeCls = new sclass(); + const extend = Object.getPrototypeOf(nodeCls.constructor).name; + const nodeDefine = { + type: nodeCls.type, + extend: extend, + details: options, + node: nodeCls.data, + }; + + const node = nodeDefine.node; + if (nodeCls.type === 'PropertyNode') { + collectShaderProperty(nodeCls.type); + } + + shaderNodeClassMap.set(nodeCls.type, sclass); + shaderNodeMap.set(nodeCls.type, nodeDefine); + }; +} + +/** + * 收集 ShaderProperty 类型 + * @param declareType - 实际需要创建的 Block 类型 + */ +function collectShaderProperty(declareType: string) { + // 收集 property + shaderPropertyMap.clear(); + for (const key in ShaderPropertyType) { + const type = ShaderPropertyType[key as ShaderPropertyType]; + if (typeof type === 'string') { + const shaderProperty = new ShaderProperty(type); + shaderProperty.type = type; + shaderPropertyMap.set(type, { + type: type, + declareType: declareType, + name: shaderProperty.name, + outputs: shaderProperty.outputs, + default: shaderProperty.value, + details: shaderProperty.details, + }); + } + } +} + diff --git a/extensions/shader-graph/shader-node/assets/graph/register.ts.meta b/extensions/shader-graph/shader-node/assets/graph/register.ts.meta new file mode 100644 index 0000000..7a67776 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/graph/register.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "663ba445-e906-458b-ace1-73c42deba345", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation.meta b/extensions/shader-graph/shader-node/assets/operation.meta new file mode 100644 index 0000000..89577df --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "53001bff-e1cf-41fb-8ed5-4e29cd9e05a6", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/base.ts b/extensions/shader-graph/shader-node/assets/operation/base.ts new file mode 100644 index 0000000..374dcb9 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/base.ts @@ -0,0 +1,200 @@ +import { getJsonObject, getFloatString, getValueElement, getValueElementStr, getValueConcretePrecision, getPrecisionName } from './utils'; +// import { relative } from "path"; +import { ConcretePrecisionType, INodeDataDefine, PropDefine, SlotDefine, TextureConcretePrecision } from './type'; +import { Vec2, Vec3, Vec4 } from 'cc'; +import { ValueType } from 'cc'; +import { ShaderSlot } from './slot'; + +export class ShaderNodeProp { + value: Vec4 | Vec3 | Vec2 | Number | String; + data: PropDefine; + + constructor(defValue: Vec4 | Vec3 | Vec2 | Number | String, data: PropDefine) { + if (defValue instanceof ValueType) { + this.value = defValue.clone(); + } + else { + this.value = defValue; + } + + this.data = data; + } +} + +export class ShaderNode { + priority = 0; + uuid = ''; + slots: ShaderSlot[] = []; + + depChunks: string[] = []; + defines: any[] = []; + + isMasterNode = false; + isPropertyNode = false; + concretePrecisionType = ConcretePrecisionType.Min; + fixedConcretePrecision = 0; + + // subgraphNode: SubGraphNode | null = null; + + inputs: ShaderSlot[] = []; + outputs: ShaderSlot[] = []; + props: Map = new Map; + + data: INodeDataDefine = { }; + + get type() { + return this.constructor.name; + } + + init() { + this.slots.length = 0; + this.inputs.length = 0; + this.outputs.length = 0; + + if (this.data.inputs) { + this.data.inputs.forEach(s => { + const slot = new ShaderSlot(s, this); + this.inputs.push(slot); + this.slots.push(slot); + }); + } + + if (this.data.outputs) { + this.data.outputs.forEach(s => { + const slot = new ShaderSlot(s, this); + this.outputs.push(slot); + this.slots.push(slot); + }); + } + + if (this.data.props) { + this.data.props.forEach(prop => { + const p = new ShaderNodeProp(prop.default, prop); + this.props.set(prop.display, p); + }); + } + } + + get deps() { + const deps: ShaderNode[] = []; + this.inputs.forEach(i => { + if (i.connectSlot) { + deps.push(i.connectSlot.node); + } + }); + return deps; + } + + beforeGenreateCode() { + } + + addDependency(dep: ShaderNode) { + if (dep === this) { + return; + } + if (!this.deps.includes(dep)) { + this.deps.push(dep); + } + } + + calcConcretePrecision() { + if (this.fixedConcretePrecision > 0) { + this.slots.forEach(slot => { + slot._concretePrecision = this.fixedConcretePrecision; + }); + } + if (this.concretePrecisionType !== ConcretePrecisionType.Fixed) { + let finalPrecision = 1; + if (this.concretePrecisionType === ConcretePrecisionType.Min) { + finalPrecision = 999; + this.inputs.forEach(slot => { + let concretePrecision = slot.concretePrecision; + if (slot.connectSlot) { + concretePrecision = slot.connectSlot.concretePrecision; + } + finalPrecision = Math.min(finalPrecision, concretePrecision); + }); + } + else if (this.concretePrecisionType === ConcretePrecisionType.Max) { + finalPrecision = -999; + this.inputs.forEach(slot => { + let concretePrecision = slot.concretePrecision; + if (slot.connectSlot) { + concretePrecision = slot.connectSlot.concretePrecision; + } + finalPrecision = Math.max(finalPrecision, concretePrecision); + }); + } + else if (this.concretePrecisionType === ConcretePrecisionType.Texture) { + finalPrecision = TextureConcretePrecision.Texture2D; + } + else { + console.error('Not supported ConcretePrecisionType : ' + this.concretePrecisionType); + } + + this.slots.forEach(slot => { + slot._concretePrecision = finalPrecision; + }); + } + } + + setPriority(priority: number) { + this.priority = Math.max(priority, this.priority); + for (let i = 0; i < this.deps.length; i++) { + this.deps[i].setPriority(this.priority + 1); + } + } + + getPropWithName(name: string) { + let p; + if (this.props) { + p = this.props.get(name); + } + return p || new ShaderNodeProp(null, null); + } + getSlotWithSlotName(name: string) { + return this.slots.find(s => s.displayName === name); + } + getOutputSlotWithSlotName(name: string) { + return this.outputs.find(s => s.displayName === name); + } + getOutputVarName(idx: number) { + return this.outputs[idx].varName; + } + getOutputVarDefine(idx: number) { + return this.outputs[idx].varDefine; + } + getInputValue(idx: number): any { + return this.inputs[idx].slotValue; + } + + generateCode() { + return ''; + } +} + +// export class ShaderEdgeSlot { +// id = 0; +// nodeUuid = ''; + +// set (data: any) { +// this.id = data.m_SlotId; +// this.nodeUuid = data.m_NodeGUIDSerialized; +// } +// } + +// export class ShaderEdge { +// type = {}; +// data: any = {} + +// input: ShaderEdgeSlot = new ShaderEdgeSlot; +// output: ShaderEdgeSlot = new ShaderEdgeSlot; + +// constructor (data: any) { +// this.type = data.typeInfo; +// this.data = getJsonObject(data.JSONnodeData); + +// this.input.set(this.data.m_InputSlot); +// this.output.set(this.data.m_OutputSlot); +// } +// } diff --git a/extensions/shader-graph/shader-node/assets/operation/base.ts.meta b/extensions/shader-graph/shader-node/assets/operation/base.ts.meta new file mode 100644 index 0000000..4354fbd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/base.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d07516ab-6735-4c76-bbe7-42be2b00c242", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/context.ts b/extensions/shader-graph/shader-node/assets/operation/context.ts new file mode 100644 index 0000000..6b9e139 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/context.ts @@ -0,0 +1,21 @@ +import { ShaderNode } from './base'; +import { ShaderProperty } from './property'; + +export class ShaderContext { + shaderTemplatesDir: ''; + allNodes: ShaderNode[] = []; + properties: ShaderProperty[] = []; + + localVars: any[] = []; + getLocalVars: any[] = []; + + reset() { + this.allNodes.length = 0; + this.properties.length = 0; + + this.localVars.length = 0; + this.getLocalVars.length = 0; + } +} + +export const shaderContext = new ShaderContext(); diff --git a/extensions/shader-graph/shader-node/assets/operation/context.ts.meta b/extensions/shader-graph/shader-node/assets/operation/context.ts.meta new file mode 100644 index 0000000..5e59efd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/context.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "130e02eb-46f3-4eab-b18e-15fe7fe48195", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated.meta b/extensions/shader-graph/shader-node/assets/operation/generated.meta new file mode 100644 index 0000000..cbbf4dd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "81cb0745-02de-4f7f-95d1-4bed08b32051", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input.meta new file mode 100644 index 0000000..b5fabef --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "f5125ddf-a5de-4ee3-a3b7-e558d914689a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic.meta new file mode 100644 index 0000000..fe34285 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "369858dc-a91f-488b-8ece-c45680b354b6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts new file mode 100644 index 0000000..33e90d3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts @@ -0,0 +1,38 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Input/Basic/Boolean', + title: 'Boolean', +}) +export default class Boolean extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('In', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts.meta new file mode 100644 index 0000000..7f82a30 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/boolean.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "21fbeb3d-6cc2-4dea-805b-dd3455319677", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts new file mode 100644 index 0000000..c0b7651 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts @@ -0,0 +1,38 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Input/Basic/Float', + title: 'Float', +}) +export default class Float extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('In', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts.meta new file mode 100644 index 0000000..bee731c --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/float.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "68e4b515-5124-472a-8e41-ddb98c6ec315", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts new file mode 100644 index 0000000..4230ab7 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Input/Basic/Slider', + title: 'Slider', +}) +export default class Slider extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + get type() { return 'Slider'; } + + data = { + inputs: [ + slot('In', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts.meta new file mode 100644 index 0000000..08c1e54 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/slider.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "263a8562-9525-42a7-8132-a3c62d2c99d7", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts new file mode 100644 index 0000000..f991593 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Input/Basic/Vector2', + title: 'Vector2', +}) +export default class Vector2 extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('X', 0, 'float', 'vector'), + slot('Y', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', Vec2.ZERO, 'vec2', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = vec2(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts.meta new file mode 100644 index 0000000..34467bd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector2.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "7f0589e6-a7e6-4843-a14f-2322c9df0a4a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts new file mode 100644 index 0000000..6f5d579 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts @@ -0,0 +1,42 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Input/Basic/Vector3', + title: 'Vector3', +}) +export default class Vector3 extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('X', 0, 'float', 'vector'), + slot('Y', 0, 'float', 'vector'), + slot('Z', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', Vec3.ZERO, 'vec3', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = vec3(${input0}, ${input1}, ${input2}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts.meta new file mode 100644 index 0000000..63236ce --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector3.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "994865a9-980a-483e-850b-6465caf5d092", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts new file mode 100644 index 0000000..db0ac4d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts @@ -0,0 +1,44 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Input/Basic/Vector4', + title: 'Vector4', +}) +export default class Vector4 extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('X', 0, 'float', 'vector'), + slot('Y', 0, 'float', 'vector'), + slot('Z', 0, 'float', 'vector'), + slot('W', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + const input3 = this.getInputValue(3); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = vec4(${input0}, ${input1}, ${input2}, ${input3}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts.meta new file mode 100644 index 0000000..36d6042 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/input/basic/vector4.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "4e4e9560-8527-4c02-8871-4b80090c5d26", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math.meta new file mode 100644 index 0000000..c5109b6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "07f4c502-d376-4702-ac51-7ce71a189f8f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced.meta new file mode 100644 index 0000000..7cd7179 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "b3ac6e02-3e8c-4f1a-98f6-33a0505f9687", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts new file mode 100644 index 0000000..d970b10 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Absolute', + title: 'Absolute', +}) +export default class Absolute extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = abs(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts.meta new file mode 100644 index 0000000..8416906 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/absolute.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "bf087fce-808f-4721-a20a-3fe656a7fb54", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts new file mode 100644 index 0000000..47f9829 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Exponential', + title: 'Exponential', +}) +export default class Exponential extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = exp(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts.meta new file mode 100644 index 0000000..c1f99af --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/exponential.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "5c491dca-4c22-468e-a6dc-4f1702fd4990", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts new file mode 100644 index 0000000..6cb3f68 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Length', + title: 'Length', +}) +export default class Length extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = length(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts.meta new file mode 100644 index 0000000..8787ac9 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/length.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d1665f0e-0eee-4d3c-a514-ef8694e5b039", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts new file mode 100644 index 0000000..22bfaf6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Log', + title: 'Log', +}) +export default class Log extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = log(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts.meta new file mode 100644 index 0000000..7734012 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/log.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "40ca6c8e-8da2-44f0-9faa-45dbbadbf25d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts new file mode 100644 index 0000000..e1b67b5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Modulo', + title: 'Modulo', +}) +export default class Modulo extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = mod(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts.meta new file mode 100644 index 0000000..4b2cf5f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/modulo.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "208071b5-6e2a-4646-b885-386c862716d6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts new file mode 100644 index 0000000..191df6a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Negate', + title: 'Negate', +}) +export default class Negate extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = -${input0}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts.meta new file mode 100644 index 0000000..1397a47 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/negate.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "1b741c8f-1109-4454-bf75-d71498d2a1a2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts new file mode 100644 index 0000000..db6d38f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Normalize', + title: 'Normalize', +}) +export default class Normalize extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = normalize(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts.meta new file mode 100644 index 0000000..0d23500 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/normalize.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "007751f2-0424-4a62-a8ed-81314c12d228", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts new file mode 100644 index 0000000..0ee6fae --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Posterize', + title: 'Posterize', +}) +export default class Posterize extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + slot('Steps', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = floor(${input0} / (1. / ${input1})) * (1. / ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts.meta new file mode 100644 index 0000000..4b8eb75 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/posterize.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "83ac43a3-fc83-4763-bb42-09fc2e69ae9d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts new file mode 100644 index 0000000..fb36c36 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/ReciprocalSquare', + title: 'ReciprocalSquare', +}) +export default class ReciprocalSquare extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 1. / (${input0} * ${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts.meta new file mode 100644 index 0000000..ca3eb46 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal-square.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "eae1ead7-8abc-445e-ae3a-b25d05a71574", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts new file mode 100644 index 0000000..f109451 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Advanced/Reciprocal', + title: 'Reciprocal', +}) +export default class Reciprocal extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 1. / ${input0}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts.meta new file mode 100644 index 0000000..989fe61 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/advanced/reciprocal.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "5e330af6-c060-407e-8b8b-2f48e9b2aba5", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic.meta new file mode 100644 index 0000000..51b04a2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "0acf5b0d-9a32-4758-98bf-c18cc51fad38", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts new file mode 100644 index 0000000..2a67f49 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Basic/Add', + title: 'Add', +}) +export default class Add extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0} + ${input1}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts.meta new file mode 100644 index 0000000..befb04b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/add.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "377629de-bfb0-4b80-8461-f54eeb25790f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts new file mode 100644 index 0000000..2f1e62d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Basic/Divide', + title: 'Divide', +}) +export default class Divide extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0} / ${input1}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts.meta new file mode 100644 index 0000000..c2f9a0b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/divide.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "02792e9d-ebc3-41ee-bc76-6114db874c2e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts new file mode 100644 index 0000000..0bcb63a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Basic/Multiply', + title: 'Multiply', +}) +export default class Multiply extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0} * ${input1}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts.meta new file mode 100644 index 0000000..efacc9b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/multiply.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "eb609477-de09-437e-92f6-2b2b661d441e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts new file mode 100644 index 0000000..5ea03ad --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Basic/Power', + title: 'Power', +}) +export default class Power extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = pow(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts.meta new file mode 100644 index 0000000..d8eeb7b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/power.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "94eaa0b8-a267-4771-a4c7-ac35fad3eb6a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts new file mode 100644 index 0000000..17d294c --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Basic/Square', + title: 'Square', +}) +export default class Square extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = sqrt(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts.meta new file mode 100644 index 0000000..1bf7096 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/square.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "861ee8c0-c44f-4a93-9307-9336ce757948", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts new file mode 100644 index 0000000..778b8bb --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Basic/Substract', + title: 'Substract', +}) +export default class Substract extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0} - ${input1}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts.meta new file mode 100644 index 0000000..7dedfd9 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/basic/substract.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "5fbb90cd-1632-4e0d-9147-75b0def9cb2f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative.meta new file mode 100644 index 0000000..99b04f0 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "b218c091-a9db-4031-a11a-07b7d92154b1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts new file mode 100644 index 0000000..5a60faf --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Derivative/DDX', + title: 'DDX', +}) +export default class DDX extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = dFdx(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts.meta new file mode 100644 index 0000000..8e2df86 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddx.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "a9e8cbbf-f00c-4982-a2fa-327e8663bb20", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts new file mode 100644 index 0000000..289756c --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Derivative/DDXY', + title: 'DDXY', +}) +export default class DDXY extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = abs(dFdx(${input0})) + abs(dFdy(${input0})); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts.meta new file mode 100644 index 0000000..fa50d52 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddxy.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ec1af9fb-f70a-448b-94fb-39814df8e228", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts new file mode 100644 index 0000000..933ccf3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Derivative/DDY', + title: 'DDY', +}) +export default class DDY extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = dFdy(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts.meta new file mode 100644 index 0000000..b776fb0 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/derivative/ddy.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "8231c7ad-b08e-4900-a97f-938e78ff8f63", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation.meta new file mode 100644 index 0000000..800a45d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "2a30962a-d33d-4344-a979-b1b9c622a245", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts new file mode 100644 index 0000000..f14e0eb --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts @@ -0,0 +1,41 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Interpolation/InverseLerp', + title: 'InverseLerp', +}) +export default class InverseLerp extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + slot('T', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = (${input2} - ${input0}) / (${input1} - ${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts.meta new file mode 100644 index 0000000..6e2b458 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/inverse-lerp.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c589f46c-8f09-4e6f-9173-c741bae3297f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts new file mode 100644 index 0000000..e88bef4 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts @@ -0,0 +1,42 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Interpolation/Lerp', + title: 'Lerp', +}) +export default class Lerp extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + slot('T', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = mix(${input0}, ${input1}, ${input2}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts.meta new file mode 100644 index 0000000..e8b4ba6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/lerp.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "0583a685-71f1-437e-bdd2-ba0acb2d7e2d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts new file mode 100644 index 0000000..25ce6fc --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts @@ -0,0 +1,41 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Interpolation/Smoothstep', + title: 'Smoothstep', +}) +export default class Smoothstep extends ShaderNode { + + data = { + inputs: [ + slot('Edge1', Vec4.ZERO, 'vec4', 'vector'), + slot('Edge2', Vec4.ZERO, 'vec4', 'vector'), + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = smoothstep(${input0}, ${input1}, ${input2}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts.meta new file mode 100644 index 0000000..a7f6bef --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/interpolation/smoothstep.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d4d9c32e-3690-4728-8095-2555d3c9744e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range.meta new file mode 100644 index 0000000..a71e78a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "8949b5a7-071c-4c5d-bbfd-f680961b51da", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts new file mode 100644 index 0000000..13d07e2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts @@ -0,0 +1,41 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/Clamp', + title: 'Clamp', +}) +export default class Clamp extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + slot('Min', Vec4.ZERO, 'vec4', 'vector'), + slot('Max', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = clamp(${input0}, ${input1}, ${input2}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts.meta new file mode 100644 index 0000000..c926609 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/clamp.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "4637ab9d-8ec1-4f10-a681-26f9d4b0ee6d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts new file mode 100644 index 0000000..152fa46 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/Fraction', + title: 'Fraction', +}) +export default class Fraction extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = fract(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts.meta new file mode 100644 index 0000000..ade6c14 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/fraction.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "1be9ae52-5b7f-4faf-b629-baaeb3b82f43", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts new file mode 100644 index 0000000..54c1325 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/Max', + title: 'Max', +}) +export default class Max extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = max(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts.meta new file mode 100644 index 0000000..4fe4f04 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/max.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "6e8a0bc9-3096-472d-a4e4-3b7cc80717e5", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts new file mode 100644 index 0000000..b913573 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/Min', + title: 'Min', +}) +export default class Min extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = min(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts.meta new file mode 100644 index 0000000..cf6efb6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/min.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "65629c20-5fb6-4596-8b1a-ad77cf32e7f0", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts new file mode 100644 index 0000000..8f0ad84 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/OneMinus', + title: 'OneMinus', +}) +export default class OneMinus extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 1. - ${input0}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts.meta new file mode 100644 index 0000000..5c57334 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/one-minus.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "cd61f55d-ed42-4107-a9e0-5cefb7d27552", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts new file mode 100644 index 0000000..2d9d72d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts @@ -0,0 +1,41 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/RandomRange', + title: 'RandomRange', +}) +export default class RandomRange extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['range']; + + data = { + inputs: [ + slot('seed', Vec2.ZERO, 'vec2', 'vector'), + slot('minv', 0, 'float', 'vector'), + slot('maxv', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = RandomRange(${input0}, ${input1}, ${input2});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts.meta new file mode 100644 index 0000000..51744bf --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/random-range.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "33710454-4d3d-495d-90f3-ab2860451c52", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts new file mode 100644 index 0000000..c1ad4fc --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts @@ -0,0 +1,42 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/Remap', + title: 'Remap', +}) +export default class Remap extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + slot('InMinMax', Vec2.ZERO, 'vec2', 'vector'), + slot('OutMinMax', Vec2.ZERO, 'vec2', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input2}.x + (${input0} - ${input1}.x) * (${input2}.y - ${input2}.x) / (${input1}.y - ${input1}.x); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts.meta new file mode 100644 index 0000000..3688f89 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/remap.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c8987537-cd49-425d-99fc-396fa64f3f23", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts new file mode 100644 index 0000000..423e91a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Range/Saturate', + title: 'Saturate', +}) +export default class Saturate extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = saturate(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts.meta new file mode 100644 index 0000000..f92be0d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/range/saturate.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "28c0b6b0-f43d-43c2-b0de-cdf9f0b8628d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round.meta new file mode 100644 index 0000000..550b0bd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "57b4e659-8d45-4b82-b772-0722e9eb0158", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts new file mode 100644 index 0000000..a9e52e0 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Round/Ceil', + title: 'Ceil', +}) +export default class Ceil extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ceil(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts.meta new file mode 100644 index 0000000..40753b1 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/ceil.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "9c519823-a62b-45e9-86c4-6904cb384bde", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts new file mode 100644 index 0000000..d8c12e5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Round/Floor', + title: 'Floor', +}) +export default class Floor extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = floor(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts.meta new file mode 100644 index 0000000..766244b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/floor.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ee049883-fd94-4c02-a620-717b303e5d17", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts new file mode 100644 index 0000000..2113be2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Round/Round', + title: 'Round', +}) +export default class Round extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = floor(${input0} + 0.5); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts.meta new file mode 100644 index 0000000..13beba8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/round.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "62b43fb3-25d4-42a9-a084-c8a49814ab45", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts new file mode 100644 index 0000000..2c71128 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Round/Sign', + title: 'Sign', +}) +export default class Sign extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = sign(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts.meta new file mode 100644 index 0000000..12de5ec --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/sign.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "48af62b1-8e02-43ac-b1be-875e7becca02", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts new file mode 100644 index 0000000..7e5315d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Round/Step', + title: 'Step', +}) +export default class Step extends ShaderNode { + + data = { + inputs: [ + slot('Edge', Vec4.ZERO, 'vec4', 'vector'), + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = step(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts.meta new file mode 100644 index 0000000..62847a6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/step.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "2b4cbf65-0510-4caa-b413-3ea7357be5cd", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts new file mode 100644 index 0000000..71e4ac6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Round/Truncate', + title: 'Truncate', +}) +export default class Truncate extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = trunc(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts.meta new file mode 100644 index 0000000..1585a6a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/round/truncate.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "96ddf63e-3704-4d29-af85-d3f9c7257230", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry.meta new file mode 100644 index 0000000..9fa5cc7 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "f8e1ea91-8bf0-4deb-9b93-805f20294004", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts new file mode 100644 index 0000000..4a9ae7a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Arccosine', + title: 'Arccosine', +}) +export default class Arccosine extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = acos(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts.meta new file mode 100644 index 0000000..5faa7b3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arccosine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d296ea3c-7a38-40cf-8489-f807e1dc27a8", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts new file mode 100644 index 0000000..f29bc5f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Arcsine', + title: 'Arcsine', +}) +export default class Arcsine extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = asin(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts.meta new file mode 100644 index 0000000..07cf741 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arcsine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "63135766-8b34-49e0-97fc-06954a17e5a6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts new file mode 100644 index 0000000..0464ee8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Arctangent', + title: 'Arctangent', +}) +export default class Arctangent extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = atan(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts.meta new file mode 100644 index 0000000..839a0f3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "29869f7d-3799-4e1b-8df7-332605de5058", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts new file mode 100644 index 0000000..22ad5cf --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Arctangent2', + title: 'Arctangent2', +}) +export default class Arctangent2 extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = atan2(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts.meta new file mode 100644 index 0000000..7776d17 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/arctangent2.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "2a9c8ae7-e3e5-4759-ae01-5e9b1405fd51", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts new file mode 100644 index 0000000..b3795e2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Cosine', + title: 'Cosine', +}) +export default class Cosine extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = cos(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts.meta new file mode 100644 index 0000000..11627c3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/cosine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "2e9b7994-8a4e-428f-bfc7-b701b91a33a0", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts new file mode 100644 index 0000000..967f2d6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/DegreesToRadians', + title: 'DegreesToRadians', +}) +export default class DegreesToRadians extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = radians(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts.meta new file mode 100644 index 0000000..01942e8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/degrees-to-radians.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "54ccc2e7-c9a9-4dfa-b194-f5155d7f439b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts new file mode 100644 index 0000000..72cb245 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/HyperbolicCosine', + title: 'HyperbolicCosine', +}) +export default class HyperbolicCosine extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = cosh(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts.meta new file mode 100644 index 0000000..11e7ab8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-cosine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d1158cd4-c65e-4aec-a4af-94bd85efec12", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts new file mode 100644 index 0000000..f311b37 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/HyperbolicSine', + title: 'HyperbolicSine', +}) +export default class HyperbolicSine extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = sinh(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts.meta new file mode 100644 index 0000000..850849b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic-sine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d0e30c9c-1317-4097-8a0b-23beb925f4d2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts new file mode 100644 index 0000000..bb871f1 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Hyperbolic', + title: 'Hyperbolic', +}) +export default class Hyperbolic extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = tanh(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts.meta new file mode 100644 index 0000000..043c3fd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/hyperbolic.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b180bb2b-53a7-4238-a771-e6c953879a7d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts new file mode 100644 index 0000000..8f46b6f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/RadiansToDegrees', + title: 'RadiansToDegrees', +}) +export default class RadiansToDegrees extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = degrees(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts.meta new file mode 100644 index 0000000..8342709 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/radians-to-degrees.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "12229d2c-2f96-41a2-90b2-00fd9ba60f13", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts new file mode 100644 index 0000000..70e7b6f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Sine', + title: 'Sine', +}) +export default class Sine extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = sin(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts.meta new file mode 100644 index 0000000..4f15aec --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/sine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "203eade2-3249-4050-af45-cc979abd6245", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts new file mode 100644 index 0000000..894d740 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Trigonometry/Tangent', + title: 'Tangent', +}) +export default class Tangent extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = tan(${input0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts.meta new file mode 100644 index 0000000..5a84f7f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/trigonometry/tangent.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "adcb4b6b-7ffd-42eb-adbb-cb3ed87935e7", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector.meta new file mode 100644 index 0000000..9edcc9a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "ed404d59-a2fa-47f2-a2a4-08f8042ad5c7", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts new file mode 100644 index 0000000..72333a4 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/CrossProduct', + title: 'CrossProduct', +}) +export default class CrossProduct extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = cross(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts.meta new file mode 100644 index 0000000..9301d91 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/cross-product.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "13009a40-e2f9-4a23-98d2-ba157db80255", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts new file mode 100644 index 0000000..488d7f3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/Distance', + title: 'Distance', +}) +export default class Distance extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = distance(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts.meta new file mode 100644 index 0000000..254f3ad --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/distance.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "1d67f823-16de-4f60-8228-48813bb8fd37", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts new file mode 100644 index 0000000..979af30 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/DotProduct', + title: 'DotProduct', +}) +export default class DotProduct extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = dot(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts.meta new file mode 100644 index 0000000..9316f8a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/dot-product.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "fe81faec-eb9b-4baa-aa76-40f7c5d6d089", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts new file mode 100644 index 0000000..90c2f98 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts @@ -0,0 +1,42 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/Fresnel', + title: 'Fresnel', +}) +export default class Fresnel extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('Normal', Vec3.ZERO, 'vec3', 'vector'), + slot('ViewDir', Vec3.ZERO, 'vec3', 'vector'), + slot('Power', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = pow((1.0 - saturate(dot(normalize(${input0}), normalize(${input1})))), ${input2}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts.meta new file mode 100644 index 0000000..2f8c9ed --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/fresnel.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "861c8258-c5a9-4a07-aea9-b5b9c3e9674c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts new file mode 100644 index 0000000..0ccb879 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/Projection', + title: 'Projection', +}) +export default class Projection extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input1} * dot(${input0}, ${input1}) / dot(${input1}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts.meta new file mode 100644 index 0000000..15fdec1 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/projection.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "76ce87de-4880-4c2f-bc7a-531299fe20c9", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts new file mode 100644 index 0000000..bdf770b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/Reflection', + title: 'Reflection', +}) +export default class Reflection extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + slot('Normal', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = reflect(${input0}, ${input1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts.meta new file mode 100644 index 0000000..4f48aa4 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/reflection.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "83264b3c-1f60-4a95-bf35-3c8b3a7db2e6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts new file mode 100644 index 0000000..0399d64 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/Rejection', + title: 'Rejection', +}) +export default class Rejection extends ShaderNode { + + data = { + inputs: [ + slot('A', Vec4.ZERO, 'vec4', 'vector'), + slot('B', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0} - (${input1} * dot(${input0}, ${input1}) / dot(${input1}, ${input1})) + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts.meta new file mode 100644 index 0000000..b2a789b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/rejection.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "3617675c-4218-489b-bb60-f298a11a19b4", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts new file mode 100644 index 0000000..b04187f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts @@ -0,0 +1,43 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Vector/SphereMask', + title: 'SphereMask', +}) +export default class SphereMask extends ShaderNode { + + data = { + inputs: [ + slot('Coords', Vec4.ZERO, 'vec4', 'vector'), + slot('Center', Vec4.ZERO, 'vec4', 'vector'), + slot('Radius', 0, 'float', 'vector'), + slot('Hardness', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + const input3 = this.getInputValue(3); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 1 - saturate((distance(${input0}, ${input1}) - ${input2}) / (1 - ${input3})); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts.meta new file mode 100644 index 0000000..d4d1649 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/vector/sphere-mask.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "2fd4c014-d224-4815-b0f8-a7c99e5878f1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave.meta new file mode 100644 index 0000000..a278051 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "f4cc74c5-a0f1-4b20-9fd8-46f99626e9d2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts new file mode 100644 index 0000000..59d9b4f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts @@ -0,0 +1,43 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Wave/NoiseSineWave', + title: 'NoiseSineWave', +}) +export default class NoiseSineWave extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + slot('MinMax', Vec2.ZERO, 'vec2', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return ` + float sinIn = sin(${input0}); + float sinInOffset = sin(${input0} + 1.0); + float randomno = frac(sin((sinIn - sinInOffset) * (12.9898 + 78.233))*43758.5453); + float noise = lerp(${input1}.x, ${input1}.y, randomno); + ${output0} = sinIn + noise; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts.meta new file mode 100644 index 0000000..0b728bf --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/noise-sine-wave.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "fdd3a7c6-8eca-4a21-beed-d38143a58565", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts new file mode 100644 index 0000000..91f0660 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Wave/SawtoothWave', + title: 'SawtoothWave', +}) +export default class SawtoothWave extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 2 * (${input0} - floor(0.5 + ${input0})); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts.meta new file mode 100644 index 0000000..47987ea --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/sawtooth-wave.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "00c7bc00-69ff-4765-8a60-7fd5b385b65a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts new file mode 100644 index 0000000..6bbcac5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Wave/SquareWave', + title: 'SquareWave', +}) +export default class SquareWave extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 1.0 - 2.0 * round(frac(${input0})); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts.meta new file mode 100644 index 0000000..7a3c399 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/square-wave.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d9905844-bdf5-4887-a230-a3efffad97d5", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts new file mode 100644 index 0000000..e7b7fa3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts @@ -0,0 +1,37 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Math/Wave/TriangleWave', + title: 'TriangleWave', +}) +export default class TriangleWave extends ShaderNode { + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + const input0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = 2.0 * abs( 2 * (${input0} - floor(0.5 + ${input0})) ) - 1.0; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts.meta new file mode 100644 index 0000000..3797451 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/math/wave/triangle-wave.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "92a3e64f-1a16-466e-9c60-5813442801ac", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural.meta new file mode 100644 index 0000000..8a9e12e --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "d5c15a8e-de77-477c-af71-5c7636cb23e9", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise.meta new file mode 100644 index 0000000..b866736 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "0a45c81e-d549-4c8b-9fe4-f5e766e3f83c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts new file mode 100644 index 0000000..3de6537 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts @@ -0,0 +1,43 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Procedural/Noise/GradientNoise', + title: 'GradientNoise', +}) +export default class GradientNoise extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['noise']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('scale', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = GradientNoise(${input0}, ${input1});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts.meta new file mode 100644 index 0000000..c7d4cd9 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/gradient-noise.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "5ccd4955-9f62-4bb0-a37e-d4358da48173", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts new file mode 100644 index 0000000..97afbb8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts @@ -0,0 +1,43 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Procedural/Noise/SimpleNoise', + title: 'SimpleNoise', +}) +export default class SimpleNoise extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['noise']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('scale', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = SimpleNoise(${input0}, ${input1});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts.meta new file mode 100644 index 0000000..867ae49 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/noise/simple-noise.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "35746bee-b451-44fd-8d35-092f0044c1ea", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape.meta new file mode 100644 index 0000000..1b3d062 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "d16b7f04-4727-49b5-9740-51c535f82d07", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts new file mode 100644 index 0000000..d65f480 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts @@ -0,0 +1,45 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Procedural/Shape/Ellipse', + title: 'Ellipse', +}) +export default class Ellipse extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['shape']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('width', 0.5, 'float', 'vector'), + slot('height', 0.5, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = Ellipse(${input0}, ${input1}, ${input2});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts.meta new file mode 100644 index 0000000..e60ddde --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/ellipse.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "71cb8a34-bfbc-44bc-90c4-681d4f08784c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts new file mode 100644 index 0000000..84d7cfc --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts @@ -0,0 +1,43 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Procedural/Shape/Rectangle', + title: 'Rectangle', +}) +export default class Rectangle extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['shape']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('width', 0.5, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = Rectangle(${input0}, ${input1});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts.meta new file mode 100644 index 0000000..be3af82 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/rectangle.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c5bfec72-1f7f-45c3-8ce8-0be6b68aa544", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts new file mode 100644 index 0000000..3aee18f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts @@ -0,0 +1,45 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../../graph/register'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { slot } from '../../../utils'; + +@register({ + menu: 'Procedural/Shape/RoundRectangle', + title: 'RoundRectangle', +}) +export default class RoundRectangle extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['shape']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('width', 0.5, 'float', 'vector'), + slot('radius', 0.1, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'float', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = RoundRectangle(${input0}, ${input1}, ${input2});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts.meta new file mode 100644 index 0000000..e235bb0 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/procedural/shape/round-rectangle.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ce89be7b-2c0e-424e-9108-6b7095ee29a2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv.meta b/extensions/shader-graph/shader-node/assets/operation/generated/uv.meta new file mode 100644 index 0000000..7cc9b50 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "12090d26-979b-42a3-92d1-f3da021aaa16", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts b/extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts new file mode 100644 index 0000000..03069eb --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts @@ -0,0 +1,47 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { slot } from '../../utils'; + +@register({ + menu: 'Uv/PolarCoordinates', + title: 'PolarCoordinates', +}) +export default class PolarCoordinates extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['uv']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('center', Vec2.ZERO, 'vec2', 'vector'), + slot('radialScale', 0, 'float', 'vector'), + slot('lengthScale', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', Vec2.ZERO, 'vec2', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + const input3 = this.getInputValue(3); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = PolarCoordinates(${input0}, ${input1}, ${input2}, ${input3});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts.meta new file mode 100644 index 0000000..4977bc3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv/polar-coordinates.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "db4275ec-d2ae-4231-b440-4acf2ab87a98", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts b/extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts new file mode 100644 index 0000000..58a3b05 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts @@ -0,0 +1,45 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { slot } from '../../utils'; + +@register({ + menu: 'Uv/RotateCoordinates', + title: 'RotateCoordinates', +}) +export default class RotateCoordinates extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['uv']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('center', Vec2.ZERO, 'vec2', 'vector'), + slot('rotation', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', Vec2.ZERO, 'vec2', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return `${output0} = RotateCoordinates(${input0}, ${input1}, ${input2});`; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts.meta new file mode 100644 index 0000000..826b47f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv/rotate-coordinates.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d691278b-7075-418e-bab8-53f6f5aa9a64", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts b/extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts new file mode 100644 index 0000000..53d97f5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts @@ -0,0 +1,47 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { slot } from '../../utils'; + +@register({ + menu: 'Uv/TillingAndOffset', + title: 'TillingAndOffset', +}) +export default class TillingAndOffset extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + depChunks = ['uv']; + + data = { + inputs: [ + slot('uv', Vec2.ZERO, 'vec2', 'vector'), + slot('tilling', Vec2.ZERO, 'vec2', 'vector'), + slot('offset', Vec2.ZERO, 'vec2', 'vector'), + ], + outputs: [ + slot('Out', Vec2.ZERO, 'vec2', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + + let input0 = this.getInputValue(0); + if (!this.inputs[0].connectSlot) { + input0 = 'v_uv.xy'; + } + + const input1 = this.getInputValue(1); + const input2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + return ` + ${output0} = ${input0} * ${input1} + ${input2}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts.meta b/extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts.meta new file mode 100644 index 0000000..88aaf3d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/generated/uv/tilling-and-offset.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "5f40ef91-59af-4e41-826c-fe4020774793", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/index.ts b/extensions/shader-graph/shader-node/assets/operation/index.ts new file mode 100644 index 0000000..8e25e26 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/index.ts @@ -0,0 +1,107 @@ +import './generated/uv/polar-coordinates.ts'; +import './generated/uv/rotate-coordinates.ts'; +import './generated/uv/tilling-and-offset.ts'; +import './generated/input/basic/boolean.ts'; +import './generated/input/basic/float.ts'; +import './generated/input/basic/slider.ts'; +import './generated/input/basic/vector2.ts'; +import './generated/input/basic/vector3.ts'; +import './generated/input/basic/vector4.ts'; +import './generated/math/advanced/absolute.ts'; +import './generated/math/advanced/exponential.ts'; +import './generated/math/advanced/length.ts'; +import './generated/math/advanced/log.ts'; +import './generated/math/advanced/modulo.ts'; +import './generated/math/advanced/negate.ts'; +import './generated/math/advanced/normalize.ts'; +import './generated/math/advanced/posterize.ts'; +import './generated/math/advanced/reciprocal-square.ts'; +import './generated/math/advanced/reciprocal.ts'; +import './generated/math/basic/add.ts'; +import './generated/math/basic/divide.ts'; +import './generated/math/basic/multiply.ts'; +import './generated/math/basic/power.ts'; +import './generated/math/basic/square.ts'; +import './generated/math/basic/substract.ts'; +import './generated/math/derivative/ddx.ts'; +import './generated/math/derivative/ddxy.ts'; +import './generated/math/derivative/ddy.ts'; +import './generated/math/interpolation/inverse-lerp.ts'; +import './generated/math/interpolation/lerp.ts'; +import './generated/math/interpolation/smoothstep.ts'; +import './generated/math/range/clamp.ts'; +import './generated/math/range/fraction.ts'; +import './generated/math/range/max.ts'; +import './generated/math/range/min.ts'; +import './generated/math/range/one-minus.ts'; +import './generated/math/range/random-range.ts'; +import './generated/math/range/remap.ts'; +import './generated/math/range/saturate.ts'; +import './generated/math/round/ceil.ts'; +import './generated/math/round/floor.ts'; +import './generated/math/round/round.ts'; +import './generated/math/round/sign.ts'; +import './generated/math/round/step.ts'; +import './generated/math/round/truncate.ts'; +import './generated/math/trigonometry/arccosine.ts'; +import './generated/math/trigonometry/arcsine.ts'; +import './generated/math/trigonometry/arctangent.ts'; +import './generated/math/trigonometry/arctangent2.ts'; +import './generated/math/trigonometry/cosine.ts'; +import './generated/math/trigonometry/degrees-to-radians.ts'; +import './generated/math/trigonometry/hyperbolic-cosine.ts'; +import './generated/math/trigonometry/hyperbolic-sine.ts'; +import './generated/math/trigonometry/hyperbolic.ts'; +import './generated/math/trigonometry/radians-to-degrees.ts'; +import './generated/math/trigonometry/sine.ts'; +import './generated/math/trigonometry/tangent.ts'; +import './generated/math/vector/cross-product.ts'; +import './generated/math/vector/distance.ts'; +import './generated/math/vector/dot-product.ts'; +import './generated/math/vector/fresnel.ts'; +import './generated/math/vector/projection.ts'; +import './generated/math/vector/reflection.ts'; +import './generated/math/vector/rejection.ts'; +import './generated/math/vector/sphere-mask.ts'; +import './generated/math/wave/noise-sine-wave.ts'; +import './generated/math/wave/sawtooth-wave.ts'; +import './generated/math/wave/square-wave.ts'; +import './generated/math/wave/triangle-wave.ts'; +import './generated/procedural/noise/gradient-noise.ts'; +import './generated/procedural/noise/simple-noise.ts'; +import './generated/procedural/shape/ellipse.ts'; +import './generated/procedural/shape/rectangle.ts'; +import './generated/procedural/shape/round-rectangle.ts'; +import './manual/index.ts'; +import './manual/channel/combine.ts'; +import './manual/channel/split.ts'; +import './manual/input/input-node.ts'; +import './manual/input/property-node.ts'; +import './manual/logic/all.ts'; +import './manual/logic/and.ts'; +import './manual/logic/any.ts'; +import './manual/logic/branch.ts'; +import './manual/logic/comparison.ts'; +import './manual/logic/is-nan.ts'; +import './manual/logic/not.ts'; +import './manual/logic/or.ts'; +import './manual/master/MasterNode.ts'; +import './manual/master/SurfaceMasterNode.ts'; +import './manual/master/UnlitMasterNode.ts'; +import './manual/subgraph/SubGraphNode.ts'; +import './manual/subgraph/SubGraphOutputNode.ts'; +import './manual/utility/PreviewNode.ts'; +import './manual/input/basic/color.ts'; +import './manual/input/basic/time.ts'; +import './manual/input/geometry/normal-vector.ts'; +import './manual/input/geometry/position.ts'; +import './manual/input/geometry/uv.ts'; +import './manual/input/geometry/vertex-color.ts'; +import './manual/input/geometry/view-direction.ts'; +import './manual/input/texture/cubemap-asset.ts'; +import './manual/input/texture/sample-cubemap.ts'; +import './manual/input/texture/sample-texture2d.ts'; +import './manual/input/texture/texture-asset.ts'; +import './manual/input/texture/texture2d-asset.ts'; +import './manual/input/variable/get-local-var.ts'; +import './manual/input/variable/register-local-var.ts'; diff --git a/extensions/shader-graph/shader-node/assets/operation/index.ts.meta b/extensions/shader-graph/shader-node/assets/operation/index.ts.meta new file mode 100644 index 0000000..017a115 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/index.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "00450c9d-2c84-414b-a6f3-4c234d4639a6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual.meta b/extensions/shader-graph/shader-node/assets/operation/manual.meta new file mode 100644 index 0000000..8db7eb4 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "d84c0713-acbc-4ba3-8303-f44c1f6169b2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/artistic.meta b/extensions/shader-graph/shader-node/assets/operation/manual/artistic.meta new file mode 100644 index 0000000..3ed3e36 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/artistic.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "3d4755f8-2ca1-4826-b050-f97df95c41a3", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/channel.meta b/extensions/shader-graph/shader-node/assets/operation/manual/channel.meta new file mode 100644 index 0000000..addd20a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/channel.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "7f28f4c8-26b6-4de9-8d14-469a0a0092da", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts b/extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts new file mode 100644 index 0000000..b263ca2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts @@ -0,0 +1,53 @@ +import { Vec4, Vec3, Vec2 } from 'cc'; +import { register } from '../../../graph'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { slot } from '../../utils'; + +@register({ + menu: 'Channel/Combine', + title: 'Combine', +}) +export default class CombineNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('R', 0, 'float', 'vector'), + slot('G', 0, 'float', 'vector'), + slot('B', 0, 'float', 'vector'), + slot('A', 0, 'float', 'vector'), + ], + outputs: [ + slot('RGBA', Vec4.ZERO, 'vec4', 'vector'), + slot('RGB', Vec3.ZERO, 'vec3', 'vector'), + slot('RG', Vec2.ZERO, 'vec2', 'vector'), + ], + }; + + generateCode() { + + const slotR = this.getSlotWithSlotName('R'); + const slotG = this.getSlotWithSlotName('G'); + const slotB = this.getSlotWithSlotName('B'); + const slotA = this.getSlotWithSlotName('A'); + + const slotRGBA = this.getSlotWithSlotName('RGBA'); + const slotRGB = this.getSlotWithSlotName('RGB'); + const slotRG = this.getSlotWithSlotName('RG'); + + let code = ''; + + if (slotRGBA && slotRGBA.connectSlot) { + code += `${slotRGBA?.varDefine} = vec4(${slotR?.slotValue}, ${slotG?.slotValue}, ${slotB?.slotValue}, ${slotA?.slotValue});\n`; + } + if (slotRGB && slotRGB.connectSlot) { + code += `${slotRGB?.varDefine} = vec3(${slotR?.slotValue}, ${slotG?.slotValue}, ${slotB?.slotValue});\n`; + } + if (slotRG && slotRG.connectSlot) { + code += `${slotRG?.varDefine} = vec2(${slotR?.slotValue}, ${slotG?.slotValue});\n`; + } + + return code; + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts.meta new file mode 100644 index 0000000..f620848 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/channel/combine.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c9cd7714-c732-467e-aac1-c72a3a8bd1a6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts b/extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts new file mode 100644 index 0000000..1f6b11b --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts @@ -0,0 +1,38 @@ +import { Vec4 } from 'cc'; +import { register } from '../../../graph'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { slot } from '../../utils'; + +@register({ + menu: 'Channel/Split', + title: 'Split', +}) +export default class SplitNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + + data = { + inputs: [ + slot('Vector', new Vec4, 'vec4', 'vector'), + ], + outputs: [ + slot('R', 0, 'float', 'vector'), + slot('G', 0, 'float', 'vector'), + slot('B', 0, 'float', 'vector'), + slot('A', 0, 'float', 'vector'), + ], + }; + + generateCode() { + const Value = this.getInputValue(0); + const codes: string[] = []; + this.data.outputs.forEach(o => { + const slot = this.getOutputSlotWithSlotName(o.display); + if (slot && slot.connectSlot) { + codes.push(`float ${slot?.varName} = ${Value}.${o.display.toLowerCase()};`); + } + }); + + return codes.join('\n'); + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts.meta new file mode 100644 index 0000000..39c92b5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/channel/split.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "3da06cb8-854d-4ec3-87c7-32e69587d3b1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/index.ts b/extensions/shader-graph/shader-node/assets/operation/manual/index.ts new file mode 100644 index 0000000..7ff54fb --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/index.ts @@ -0,0 +1,27 @@ +// import { ShaderNode } from '../base'; +// import globby from 'globby'; +// import path from 'fire-path'; + +// let nodePaths = globby.sync([ +// path.join(__dirname, './**').replace(/\\/g, '/'), +// path.join(__dirname, '!./index.*').replace(/\\/g, '/'), +// ]) +// let nodes = {}; +// for (let i = 0; i < nodePaths.length; i++) { +// let nodePath = nodePaths[i]; +// let nodeName = path.basenameNoExt(nodePath); +// nodes[nodeName] = require(nodePath).default; +// } + +// export function createNode (data: any) { +// let type = data.typeInfo; +// let name = type.fullName; +// name = name.replace('UnityEditor.ShaderGraph.', ''); + +// let ctor = nodes[name]; +// if (!ctor) { +// console.warn(`Can not find Node with Name [${name}]`) +// ctor = ShaderNode +// } +// return ctor && new ctor(data); +// } diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/index.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/index.ts.meta new file mode 100644 index 0000000..1e566dd --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/index.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ce045985-d7fc-4550-aa8a-73b6144e0a39", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input.meta new file mode 100644 index 0000000..24c51e7 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "9b4e7d66-8af4-4cd6-b21e-9e6b29bd4834", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/InputNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/InputNode.ts.meta new file mode 100644 index 0000000..87c3a34 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/InputNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "89e26a63-4e80-4c5c-bd93-94024a1c81b7", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/basic.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic.meta new file mode 100644 index 0000000..0c732ca --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "b01ae50d-31ff-40d3-8dfe-405a944fa882", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts new file mode 100644 index 0000000..4f68671 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts @@ -0,0 +1,28 @@ +import { Color, Vec4 } from 'cc'; +import InputNode from '../input-node'; +import { prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Basic/Color', + title: 'Color', +}) +export default class ColorNode extends InputNode { + fixedConcretePrecision = 4; + + data = { + props: [ + prop('Color', new Vec4, 'color'), + ], + outputs: [ + slot('Out', new Vec4, 'vec4', 'vector'), + ], + }; + + generateCode() { + const prop = this.getPropWithName('Color'); + const c = prop.value as Color; + return `vec4 ${this.getOutputVarName(0)} = vec4(${c.x}, ${c.y}, ${c.z}, ${c.w});`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts.meta new file mode 100644 index 0000000..a9dcec6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/color.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "e3d3490d-0e60-490b-b3f9-95d300e7281a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts new file mode 100644 index 0000000..fc800c5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts @@ -0,0 +1,49 @@ +import { slot } from '../../../utils'; +import InputNode from '../input-node'; + +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Basic/Time', + title: 'Time', +}) +export default class TimeNode extends InputNode { + data = { + outputs: [ + slot('Time', 0, 'float', 'vector'), + slot('Sine Time', 0, 'float', 'vector'), + slot('Cosine Time', 0, 'float', 'vector'), + slot('Delta Time', 0, 'float', 'vector'), + slot('Smooth Delta', 0, 'float', 'vector'), + ], + }; + + generateCode() { + const Time = this.getOutputSlotWithSlotName('Time'); + const SineTime = this.getOutputSlotWithSlotName('Sine Time'); + const CosineTime = this.getOutputSlotWithSlotName('Cosine Time'); + const DeltaTime = this.getOutputSlotWithSlotName('Delta Time'); + const SmoothDelta = this.getOutputSlotWithSlotName('Smooth Delta'); + + let code = ''; + if (Time?.connectSlot) { + code += `float ${Time.varName} = cc_time.x;`; + } + if (SineTime?.connectSlot) { + code += `float ${SineTime.varName} = sin(cc_time.x);`; + } + if (CosineTime?.connectSlot) { + code += `float ${CosineTime.varName} = cos(cc_time.x);`; + } + if (DeltaTime?.connectSlot) { + code += `float ${DeltaTime.varName} = cc_time.y;`; + } + if (SmoothDelta?.connectSlot) { + console.warn('Not support smooth delta time'); + code += `float ${SmoothDelta.varName} = cc_time.y;`; + } + + return code; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts.meta new file mode 100644 index 0000000..2cf9dc6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/basic/time.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "d78e78a8-c222-475d-b568-d89fa38525e8", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry.meta new file mode 100644 index 0000000..e0c4591 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "c9afd016-01cf-497d-96e5-9b04607e80ba", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts new file mode 100644 index 0000000..99c1c84 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts @@ -0,0 +1,48 @@ +import { Vec3 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType, NormalSpace } from '../../../type'; +import { getEnumDefine, prop, slot } from '../../../utils'; + +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Geometry/NormalVector', + title: 'NormalVector', +}) +export default class NormalVectorNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 3; + + data = { + props: [ + prop('Space', NormalSpace.World, 'enum', { enum: NormalSpace }), + ], + outputs: [ + slot('Normal', Vec3.ZERO, 'vec3', 'vector'), + ], + }; + + generateCode() { + const prop = this.getPropWithName('Space'); + + let name = 'normal'; + if (prop.value === NormalSpace.Local) { + name = 'normal'; + } + else if (prop.value === NormalSpace.View) { + name = 'viewNormal'; + } + // else if (prop.value === NormalSpace.Tangent) { + // // name = 'tangentNormal'; + // name = 'worldNormal'; + // } + else if (prop.value === NormalSpace.World) { + name = 'worldNormal'; + } + + this.defines = [getEnumDefine(NormalSpace, prop.value)]; + + return `${this.getOutputVarDefine(0)} = ${name};`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts.meta new file mode 100644 index 0000000..444d171 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/normal-vector.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "f4d52b63-1826-4ad4-9b0a-b19e10503342", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts new file mode 100644 index 0000000..c850c6d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts @@ -0,0 +1,50 @@ +import { Vec3 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType, PositionSpace } from '../../../type'; +import { getEnumDefine, prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Geometry/Position', + title: 'Position', +}) +export default class PositionNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 3; + + data = { + props: [ + prop('Space', PositionSpace.World, 'enum', { enum: PositionSpace }), + ], + outputs: [ + slot('Position', new Vec3, 'vec3', 'vector'), + ], + }; + + generateCode() { + const prop = this.getPropWithName('Space'); + + let name = 'position'; + if (prop.value === PositionSpace.Local) { + name = 'position'; + } + else if (prop.value === PositionSpace.View) { + name = 'viewPos'; + } + // else if (prop.value === PositionSpace.Tangent) { + // // name = 'v_tangentPos'; + // name = 'worldPos'; + // } + else if (prop.value === PositionSpace.World) { + name = 'worldPos'; + } + // else if (prop.value === PositionSpace.AbsoluteWorld) { + // name = 'worldPos'; + // } + + this.defines = [getEnumDefine(PositionSpace, prop.value)]; + + return `${this.getOutputVarDefine(0)} = ${name}.xyz;`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts.meta new file mode 100644 index 0000000..e924bba --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/position.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c4117179-6029-4858-a425-f8696d08da90", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts new file mode 100644 index 0000000..4af19fa --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts @@ -0,0 +1,34 @@ +import { Vec2 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Geometry/UV', + title: 'UV', +}) +export default class UVNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 2; + + data = { + props: [ + prop('Channel', 0, 'float'), + ], + outputs: [ + slot('UV', new Vec2, 'vec2', 'vector'), + ], + }; + + generateCode() { + const prop = this.getPropWithName('Channel'); + if (!prop) { + console.warn('UV Node generate code undefined'); + return ''; + } + const uvName = `v_uv${(prop.value as number) > 0 ? prop.value : ''}`; + return `${this.getOutputVarDefine(0)} = ${uvName};`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts.meta new file mode 100644 index 0000000..ca558c6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/uv.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "95b7b48d-922d-416b-93e4-e004175dc1b9", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts new file mode 100644 index 0000000..e94240a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts @@ -0,0 +1,25 @@ +import { Vec4 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Geometry/VertexColor', + title: 'VertexColor', +}) +export default class VertexColorNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 4; + + data = { + outputs: [ + slot('Out', new Vec4, 'vec4', 'vector'), + ], + }; + + generateCode() { + return `${this.getOutputVarDefine(0)} = FSInput_vertexColor;`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts.meta new file mode 100644 index 0000000..9f09d41 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/vertex-color.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "57f73c67-41c9-4d26-81ff-2d90db0a8f0d", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts new file mode 100644 index 0000000..530f9f0 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts @@ -0,0 +1,51 @@ +import { Vec3 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType, ViewDirSpace, PositionSpace } from '../../../type'; +import { getEnumDefine, prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Geometry/ViewDirection', + title: 'ViewDirection', +}) +export default class ViewDirection extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 3; + + get type() { + return 'ViewDirection'; + } + + data = { + props: [ + prop('Space', ViewDirSpace.World, 'enum', { enum: ViewDirSpace }), + ], + outputs: [ + slot('ViewDirection', new Vec3, 'vec3', 'vector'), + ], + }; + + generateCode() { + const space = this.getPropWithName('Space'); + + let name = 'view'; + if (space.value === ViewDirSpace.Local) { + name = 'view'; + } + else if (space.value === ViewDirSpace.View) { + name = 'viewView'; + } + // else if (space.value === ViewDirSpace.Tangent) { + // // name = 'tangentView'; + // name = 'worldView'; + // } + else if (space.value === ViewDirSpace.World) { + name = 'worldView'; + } + + this.defines = [getEnumDefine(ViewDirSpace, space.value)]; + + return `${this.getOutputVarDefine(0)} = ${name};`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts.meta new file mode 100644 index 0000000..24c6b28 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/geometry/view-direction.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "fbe7300f-e8dc-414e-a3ab-2f4ee7836cc3", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts new file mode 100644 index 0000000..4851ab6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts @@ -0,0 +1,7 @@ +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; + +export default class InputNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts.meta new file mode 100644 index 0000000..4b0274a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/input-node.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "fcee978c-06f2-41b7-9483-2db584a5b6ce", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts new file mode 100644 index 0000000..4980f10 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts @@ -0,0 +1,66 @@ +import { ShaderNode } from '../../base'; +import { shaderContext } from '../../context'; +import { ShaderProperty, ShaderPropertyType } from '../../property'; +import { ShaderSlot } from '../../slot'; +import { ConcretePrecisionType, TextureConcretePrecision } from '../../type'; +import { prop, slot } from '../../utils'; +import { register } from '../../../graph/register'; + +@register({ + style: { + headerColor: '#ec7063', + }, +}) +export default class PropertyNode extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + property: ShaderProperty | null = null; + + name = ''; + + data = { + outputs: [ + slot('Out', {} as any, 'any', 'any'), + ], + }; + + calcConcretePrecision(): void { + // super.calcConcretePrecision() + + let concretePrecision = 0; + const prop = shaderContext.properties.find(p => p.name === this.name)!; + switch (prop.type) { + case ShaderPropertyType.Float: + case ShaderPropertyType.Boolean: + concretePrecision = 1; + break; + case ShaderPropertyType.Vector2: + concretePrecision = 2; + break; + case ShaderPropertyType.Vector3: + concretePrecision = 4; + break; + case ShaderPropertyType.Vector4: + case ShaderPropertyType.Color: + concretePrecision = 4; + break; + } + this.slots[0]._concretePrecision = concretePrecision; + } + + isPropertyNode = true; + generateCode() { + const code = ''; + // let prop = shaderContext.properties.find(p => p.name === this.name) + // if (prop) { + // this.outputs.forEach((o, i) => { + // if (o.connectSlot) { + // o.value = prop.value; + // code += `${this.getOutputVarDefine(i)} = ${this.name};\n` + // } + // }) + // } + + return code; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts.meta new file mode 100644 index 0000000..4ade951 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/property-node.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "9319472c-3043-49fa-8582-3f1142c7ef5c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture.meta new file mode 100644 index 0000000..9394de4 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "a4a78e41-b567-4e7d-855f-ba68ce22dfa8", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts new file mode 100644 index 0000000..09bec92 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts @@ -0,0 +1,7 @@ +import TextureAsset from './texture-asset'; + +export default class CubemapAsset extends TextureAsset { + generateCode() { + return `samplerCube ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts.meta new file mode 100644 index 0000000..84f84ab --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/cubemap-asset.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "f593bebc-7a34-476e-8613-70f0cbedd65e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts new file mode 100644 index 0000000..c31eaf4 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts @@ -0,0 +1,34 @@ +import InputNode from '../input-node'; +import { NormalMapSpace, NormalSpace, ConcretePrecisionType, ViewDirSpace } from '../../../type'; +import PropertyNode from '../property-node'; + +export default class SampleTexture2D extends InputNode { + + generateCode() { + const cubeSlot = this.getSlotWithSlotName('Cube'); + const node = cubeSlot?.connectSlot && cubeSlot?.connectSlot.node as PropertyNode; + if (!node) { + return ''; + } + + let V = 'view'; + let N = 'normal'; + + const viewSlot = this.getSlotWithSlotName('ViewDir'); + if (viewSlot?.connectSlot) { + V = viewSlot?.connectSlot.varName; + } + const normalSlot = this.getSlotWithSlotName('Normal'); + if (normalSlot?.connectSlot) { + N = normalSlot?.connectSlot.varName; + } + + const R = `${this.getOutputVarName(0)}_R`; + + let code = ''; + code += `vec3 ${R} = reflect( -normalize( ${V} ), ${N} );\n`; + code += `${this.getOutputVarDefine(0)} = texture(${node.property?.name}, ${R});\n`; + return code; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts.meta new file mode 100644 index 0000000..b57d834 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-cubemap.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "6f28aec4-0ff8-4694-b483-83545dfe739f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts new file mode 100644 index 0000000..a8728c8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts @@ -0,0 +1,96 @@ +import InputNode from '../input-node'; +import { NormalMapSpace, NormalSpace } from '../../../type'; +import { Vec2, Vec4, Texture2D } from 'cc'; +import { prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +enum TextureType { + Default, + Normal, +} + +enum TextureNormalSpace { + Tangent, + Object, +} + +@register({ + menu: 'Input/Texture/SampleTexture2D', + title: 'SampleTexture2D', +}) +export default class SampleTexture2D extends InputNode { + + data = { + props: [ + prop('TextureType', TextureType.Default, 'enum', { enum: TextureType }), + prop('NormalSpace', TextureNormalSpace.Tangent, 'enum', { enum: TextureNormalSpace }), + ], + inputs: [ + slot('Texture', new Texture2D, 'texture2D', 'texture2D'), + slot('UV', Vec2.ZERO, 'vec2', 'vector'), + ], + outputs: [ + slot('RGBA', Vec4.ZERO, 'vec4', 'vector'), + slot('R', 0, 'float', 'vector'), + slot('G', 0, 'float', 'vector'), + slot('B', 0, 'float', 'vector'), + slot('A', 0, 'float', 'vector'), + ], + }; + + generateCode() { + const textureSlot = this.getSlotWithSlotName('Texture'); + const uvSlot = this.getSlotWithSlotName('UV'); + + const rgbaSlot = this.getSlotWithSlotName('RGBA'); + + const rgbaVarName = rgbaSlot?.varName; + let code; + if (!textureSlot?.connectSlot) { + code = `vec4 ${rgbaVarName} = vec4(1.);\n`; + } + else { + let uv; + if (!uvSlot.connectSlot) { + uv = 'v_uv'; + } + else { + uv = uvSlot.slotValue; + } + code = `vec4 ${rgbaVarName} = texture(${textureSlot?.connectSlot.varName}, ${uv});\n`; + } + + const textureType = this.getPropWithName('TextureType'); + const normalSpace = this.getPropWithName('NormalSpace'); + + if (textureType.value === TextureType.Normal && normalSpace.value === TextureNormalSpace.Tangent) { + code += `${rgbaVarName}.xyz -= vec3(0.5);\n`; + code += `${rgbaVarName}.xyz = \n`; + code += ` ${rgbaVarName}.x * normalize(worldTangent) +\n`; + code += ` ${rgbaVarName}.y * normalize(worldBinormal) +\n`; + code += ` ${rgbaVarName}.z * normalize(worldNormal);\n`; + + this.defines.push('CC_SURFACES_USE_TANGENT_SPACE'); + } + + const r = this.getSlotWithSlotName('R'); + if (r && r.connectSlot) { + code += `float ${r.varName} = ${rgbaVarName}.r;\n`; + } + const g = this.getSlotWithSlotName('G'); + if (g && g.connectSlot) { + code += `float ${g.varName} = ${rgbaVarName}.g;\n`; + } + const b = this.getSlotWithSlotName('B'); + if (b && b.connectSlot) { + code += `float ${b.varName} = ${rgbaVarName}.b;\n`; + } + const a = this.getSlotWithSlotName('A'); + if (a && a.connectSlot) { + code += `float ${a.varName} = ${rgbaVarName}.a;\n`; + } + + return code; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts.meta new file mode 100644 index 0000000..ee06f96 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/sample-texture2d.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "5895a329-8c92-440f-96d8-18d9b426652a", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts new file mode 100644 index 0000000..5bc0ffa --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts @@ -0,0 +1,7 @@ +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; + +export default class TextureAsset extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Texture; +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts.meta new file mode 100644 index 0000000..f5cedf6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture-asset.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ae6c5758-47f7-4cde-a30d-ae194163d1ec", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts new file mode 100644 index 0000000..a68b5b8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts @@ -0,0 +1,7 @@ +import TextureAssetNode from './texture-asset'; + +export default class Texture2DAsset extends TextureAssetNode { + generateCode() { + return `sampler2D ${this.getOutputVarName(0)} = ${this.getInputValue(0)};`; + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts.meta new file mode 100644 index 0000000..df5b34e --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/texture/texture2d-asset.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "1e7d587f-7693-4a38-a3f2-70f7557e20d9", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/variable.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable.meta new file mode 100644 index 0000000..c1fd3cf --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "e160a4e8-d9ba-4ea5-b78e-d9d7b2e5d287", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts new file mode 100644 index 0000000..27e1c09 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts @@ -0,0 +1,41 @@ +import { Vec2, Vec4 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; +import RegisterLocalVar from './register-local-var'; + +@register({ + menu: 'Input/Variable/GetLocalVar', + title: 'GetLocalVar', +}) +export default class GetLocalVar extends ShaderNode { + get name() { + const name = this.getPropWithName('Name'); + return name && name.value; + } + set name(v) { + const name = this.getPropWithName('Name'); + name.value = v; + } + + data = { + props: [ + prop('Name', 'local_var', 'dynamicEnum', { + registerEnum: { + type: 'RegisterLocalVarName', + property: 'Name', + }, + }), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + generateCode() { + const precisionName = this.inputs[0].connectSlot.precisionName; + return `${precisionName} ${this.name}= ${this.getInputValue(0)};`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts.meta new file mode 100644 index 0000000..b46b6b8 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/get-local-var.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "30fea624-74ab-4eb3-9768-4a131c803280", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts new file mode 100644 index 0000000..d13e240 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts @@ -0,0 +1,42 @@ +import { Vec2, Vec4 } from 'cc'; +import { ShaderNode } from '../../../base'; +import { ConcretePrecisionType } from '../../../type'; +import { prop, slot } from '../../../utils'; +import { register } from '../../../../graph'; + +@register({ + menu: 'Input/Variable/RegisterLocalVar', + title: 'RegisterLocalVar', +}) +export default class RegisterLocalVar extends ShaderNode { + isRegisterLocalVar = true; + + get name() { + const name = this.getPropWithName('Name'); + return name.value; + } + set name(v) { + const name = this.getPropWithName('Name'); + name.value = v; + } + + data = { + props: [ + prop('Name', 'local_var', 'string', { + registerEnumType: 'RegisterLocalVarName', + }), + ], + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + generateCode() { + return ''; + + // const name = this.getPropWithName('Name'); + // const precisionName = this.inputs[0].connectSlot.precisionName; + // return `${precisionName} ${name.value}= ${this.getInputValue(0)};`; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts.meta new file mode 100644 index 0000000..a637f56 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/input/variable/register-local-var.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b61a90ef-15cc-4448-adbf-7cd16da98d21", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic.meta new file mode 100644 index 0000000..442f051 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "768c726a-a499-4173-984a-9022d1afa9ff", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts new file mode 100644 index 0000000..726eb4d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts @@ -0,0 +1,45 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/All', + title: 'All', +}) +export default class All extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Min; + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', false, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + const output0 = this.getOutputVarDefine(0); + + const elements = ['x', 'y', 'z', 'w']; + + const conditions: string[] = []; + const precision = this.slots[0].concretePrecision; + for (let i = 0; i < precision; i++) { + conditions.push(`(${i0}.${elements[i]} > 0.)`); + } + + return ` + ${output0} = (${conditions.join(' && ')}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts.meta new file mode 100644 index 0000000..f0f4935 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/all.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "08b1e905-4683-4b43-9503-063e98b4138e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts new file mode 100644 index 0000000..7a15eee --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/And', + title: 'And', +}) +export default class And extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', false, 'boolean', 'boolean'), + slot('B', false, 'boolean', 'boolean'), + ], + outputs: [ + slot('Out', false, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + const i1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + + return ` + ${output0} = (${i0} && ${i1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts.meta new file mode 100644 index 0000000..f1dfa41 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/and.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "ad796a9a-277e-4ad6-956d-02888b010c27", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts new file mode 100644 index 0000000..99ad8e6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts @@ -0,0 +1,45 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/Any', + title: 'Any', +}) +export default class Any extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Min; + + data = { + inputs: [ + slot('In', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', false, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + const output0 = this.getOutputVarDefine(0); + + const elements = ['x', 'y', 'z', 'w']; + + const conditions: string[] = []; + const precision = this.slots[0].concretePrecision; + for (let i = 0; i < precision; i++) { + conditions.push(`(${i0}.${elements[i]} > 0.)`); + } + + return ` + ${output0} = (${conditions.join(' || ')}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts.meta new file mode 100644 index 0000000..26c750d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/any.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c213e378-aa5d-45a3-9102-928ac63866a6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts new file mode 100644 index 0000000..d84fd29 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts @@ -0,0 +1,42 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/Branch', + title: 'Branch', +}) +export default class Branch extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('Predicate', false, 'boolean', 'boolean'), + slot('True', Vec4.ZERO, 'vec4', 'vector'), + slot('False', Vec4.ZERO, 'vec4', 'vector'), + ], + outputs: [ + slot('Out', Vec4.ZERO, 'vec4', 'vector'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + const i1 = this.getInputValue(1); + const i2 = this.getInputValue(2); + + const output0 = this.getOutputVarDefine(0); + + return ` + ${output0} = (${i0}) ? (${i1}) : (${i2}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts.meta new file mode 100644 index 0000000..d6e109d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/branch.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "2f31ffe5-2ba8-467c-89cc-55535d4bc4b2", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts new file mode 100644 index 0000000..aa1fa5a --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts @@ -0,0 +1,77 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +enum ComparisonType { + Equal, + NotEqual, + Less, + LessOrEqual, + Greater, + GreaterOrEqual, +} + +@register({ + menu: 'Logic/Comparison', + title: 'Comparison', +}) +export default class Comparison extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 1; + + data = { + props: [ + prop('Type', ComparisonType.Equal, 'enum', { enum: ComparisonType }), + ], + inputs: [ + slot('A', 0, 'float', 'vector'), + slot('B', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', 0, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const A = this.getInputValue(0); + const B = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + + let code = ''; + + const type = this.getPropWithName('Type'); + switch (type.value) { + case ComparisonType.Equal: + code = `(${A} == ${B})`; + break; + case ComparisonType.NotEqual: + code = `(${A} != ${B})`; + break; + case ComparisonType.Less: + code = `(${A} < ${B})`; + break; + case ComparisonType.LessOrEqual: + code = `(${A} <= ${B})`; + break; + case ComparisonType.Greater: + code = `(${A} > ${B})`; + break; + case ComparisonType.GreaterOrEqual: + code = `(${A} >= ${B})`; + break; + } + + return ` + ${output0} = ${code}; + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts.meta new file mode 100644 index 0000000..835d613 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/comparison.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "29cf0756-1c72-48a3-8755-25cbfcaba224", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts new file mode 100644 index 0000000..909fd76 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts @@ -0,0 +1,39 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/IsNan', + title: 'IsNan', +}) +export default class IsNan extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Fixed; + fixedConcretePrecision = 1; + + data = { + inputs: [ + slot('In', 0, 'float', 'vector'), + ], + outputs: [ + slot('Out', false, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + + return ` + ${output0} = isnan(${i0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts.meta new file mode 100644 index 0000000..bee8396 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/is-nan.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c8ed686c-193d-4738-a27d-42bf72f3e68c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts new file mode 100644 index 0000000..eba34fa --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts @@ -0,0 +1,38 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/Not', + title: 'Not', +}) +export default class Not extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('In', false, 'boolean', 'boolean'), + ], + outputs: [ + slot('Out', false, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + + const output0 = this.getOutputVarDefine(0); + + return ` + ${output0} = (!${i0}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts.meta new file mode 100644 index 0000000..d33ee66 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/not.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "aad298d5-0ef6-495f-b787-8150a4cee4b1", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts b/extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts new file mode 100644 index 0000000..ebb70cf --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts @@ -0,0 +1,40 @@ + +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '../../../graph/register'; +import { ShaderNode } from '../../base'; +import { ConcretePrecisionType } from '../../type'; +import { prop, slot } from '../../utils'; + +@register({ + menu: 'Logic/Or', + title: 'Or', +}) +export default class Or extends ShaderNode { + concretePrecisionType = ConcretePrecisionType.Max; + + data = { + inputs: [ + slot('A', false, 'boolean', 'boolean'), + slot('B', false, 'boolean', 'boolean'), + ], + outputs: [ + slot('Out', false, 'boolean', 'boolean'), + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + const i0 = this.getInputValue(0); + const i1 = this.getInputValue(1); + + const output0 = this.getOutputVarDefine(0); + + return ` + ${output0} = (${i0} || ${i1}); + `; + } +} + \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts.meta new file mode 100644 index 0000000..b3ba2f6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/logic/or.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "a2b3f474-fe0f-440b-b85a-4fee8da9310b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master.meta b/extensions/shader-graph/shader-node/assets/operation/manual/master.meta new file mode 100644 index 0000000..26a910c --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "40116e55-e3a9-49a9-ba20-1c6aacbe2ee5", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts b/extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts new file mode 100644 index 0000000..ccca1b6 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts @@ -0,0 +1,330 @@ +import { EDITOR } from 'cc/env'; +import { ShaderNode } from '../../base'; +import { + ConcretePrecisionType, + TextureConcretePrecision, + NormalSpace, + NormalMapSpace, + ViewDirSpace, + PositionSpace, + SlotDefine, + INodeDataDefine, +} from '../../type'; +import { ensureEnumDefines, fs, getEnumDefine, getEnumNames, path } from '../../utils'; +import { ShaderSlot } from '../../slot'; +import { ShaderProperty, ShaderPropertyType } from '../../property'; +import { shaderContext } from '../../context'; +import { Asset, Material, Texture2D, assetManager } from 'cc'; + +export enum MasterSlotType { + Vertex, + Fragment, +} + +export declare class MasterSlotDefine extends SlotDefine { + slotType: MasterSlotType; + codeChunk: number; +} + +function findConnectNodes(slot: ShaderSlot, nodes: ShaderNode[]) { + if (!slot.connectSlot) return; + + const connectNode = slot.connectNode; + if (connectNode) { + if (nodes.includes(connectNode)) { + return; + } + + connectNode.inputs.forEach(slot => { + findConnectNodes(slot, nodes); + }); + + nodes.push(connectNode); + } +} + +export default class MasterNode extends ShaderNode { + + // vsSlotIndices: string[] = []; + // fsSlotIndices: string[] = []; + + get templatePath() { + return ''; + } + + isMasterNode = true; + concretePrecisionType = ConcretePrecisionType.Fixed; + + properties: ShaderProperty[] = []; + + data: INodeDataDefine = { + inputs: [], + }; + + getConnectNodes(slots: ShaderSlot[]) { + const nodes: ShaderNode[] = []; + slots.forEach(slot => { + findConnectNodes(slot, nodes); + }); + + nodes.sort((a, b) => b.priority - a.priority); + return nodes; + } + + generatePropertiesCode() { + let uniform = '\n'; + let mtl = '\n'; + let uniformSampler = ''; + + const properties = shaderContext.properties; + properties.sort((a, b) => { + return b.concretePrecision - a.concretePrecision; + }); + + let blockUniformCount = 0; + + properties.forEach(p => { + let precision = ''; + let mtlValue = ''; + + const value = p.value; + const isColor = p.type === ShaderPropertyType.Color; + const x = value.x; + const y = value.y; + const z = value.z; + const w = value.w; + + if (p.type === ShaderPropertyType.Texture2D) { + precision = 'sampler2D'; + mtlValue = 'white'; + } + else if (p.type === ShaderPropertyType.TextureCube) { + precision = 'samplerCube'; + mtlValue = 'white'; + } + else { + const concretePrecision = p.concretePrecision; + if (concretePrecision === 1) { + precision = 'float'; + mtlValue = `${value}`; + } + else if (concretePrecision === 2) { + precision = 'vec2'; + mtlValue = `[${x}, ${y}]`; + } + else if (concretePrecision === 3) { + precision = 'vec4'; + mtlValue = `[${x}, ${y}, ${z}, 0]`; + } + else if (concretePrecision === 4) { + precision = 'vec4'; + mtlValue = `[${x}, ${y}, ${z}, ${w}]`; + } + } + + const editorStr = isColor ? `, editor: { type: color }` : ''; + + if (!p.isTexture()) { + uniform += ` ${precision} ${p.name};\n`; + blockUniformCount++; + } + else { + uniformSampler += ` uniform ${precision} ${p.name};\n`; + } + mtl += ` ${p.name}: { value: ${mtlValue} ${editorStr}}\n`; + }); + + if (blockUniformCount === 0) { + uniform += ' vec4 empty_value;\n'; + } + + return { + uniform, + uniformSampler, + mtl, + }; + } + + replaceChunks(code: string) { + const depChunks: string[] = ['common']; + const allNodes = shaderContext.allNodes; + allNodes.forEach(node => { + for (let k = 0; k < node.depChunks.length; k++) { + if (!depChunks.includes(node.depChunks[k])) { + depChunks.push(node.depChunks[k]); + } + } + }); + + let chunkIncludes = '\n'; + let chunks = '\n'; + depChunks.forEach(chunkName => { + const chunkPath = path.join(shaderContext.shaderTemplatesDir, `chunks/${chunkName}.chunk`); + const chunk = fs.readFileSync(chunkPath, 'utf-8'); + if (!chunk) { + console.error(`Can not find chunk with path [${chunkPath}]`); + return; + } + chunks += chunk + '\n'; + chunkIncludes += ` #include \n`; + }); + + code = code.replace('{{chunks}}', chunks); + code = code.replace('{{vs_chunks}}', chunkIncludes); + code = code.replace('{{fs_chunks}}', chunkIncludes); + + return code; + } + + generateDefines(code: string) { + const defines: string[] = []; + const allNodes = shaderContext.allNodes; + allNodes.forEach(node => { + node.defines.forEach(def => { + if (!defines.includes(def)) { + defines.push(def); + } + }); + }); + + let define = ''; + defines.forEach(df => { + define += `${df}\n`; + }); + + define = ensureEnumDefines(NormalSpace, define); + define = ensureEnumDefines(PositionSpace, define); + define = ensureEnumDefines(ViewDirSpace, define); + + // add spaces + let lines = define.split('\n'); + lines = lines.map(l => ' ' + l); + define = lines.join('\n'); + + return code.replace(/{{defines}}/g, define); + } + + generateSlotsCode(slots: ShaderSlot[]) { + const code: string[] = ['\n']; + + const nodes = this.getConnectNodes(slots); + nodes.forEach(node => { + node.calcConcretePrecision(); + node.generateCode().split('\n').forEach(c => { + if (c) { + c += ` // ${node.constructor.name}`; + code.push(' ' + c); + } + }); + }); + + return code.join('\n'); + } + + generateCodeChunk(code) { + const codeChunkSlots: any[] = []; + this.inputs.forEach(input => { + const data = input.data as MasterSlotDefine; + if (!codeChunkSlots[data.codeChunk]) { + codeChunkSlots[data.codeChunk] = []; + } + + codeChunkSlots[data.codeChunk].push(input); + }); + + codeChunkSlots.forEach((slots, chunkIdx) => { + const codeChunk = this.generateSlotsCode(slots); + code = code.replace(`{{code_chunk_${chunkIdx}}}`, codeChunk); + + // console.log(`{{code_chunk_${chunkIdx}}} : \n ` + codeChunk); + }); + + return code; + } + + generateCode() { + let code = fs.readFileSync(this.templatePath, 'utf-8'); + + code = this.generateCodeChunk(code); + code = this.generateDefines(code); + code = this.replaceChunks(code); + + if (!shaderContext.properties || shaderContext.properties.length === 0) { + code = code.replace(/properties: &props/g, ''); + code = code.replace(/properties: \*props/g, ''); + } + + const props = this.generatePropertiesCode(); + code = code.replace('{{properties}}', props.uniform); + code = code.replace('{{properties_sampler}}', props.uniformSampler); + code = code.replace('{{properties_mtl}}', props.mtl); + + // 如果 slot 没有连接,使用 template 中定义的默认值 + const slotsToUseTemplateDefault = ['Vertex Position', 'Vertex Normal', 'Vertex Tangent', 'Position']; + + this.inputs.forEach(slot => { + const tempName = `slot_${slot.displayName.replace(/ /g, '_')}`; + let value; + if (slotsToUseTemplateDefault.includes(slot.displayName) || slot.displayName === 'Normal') { + if (slot.connectSlot) { + value = slot.slotValue; + } + } + else { + value = slot.slotValue; + } + + const reg = new RegExp(`{{${tempName} *= *(.*)}}`, 'g'); + if (value === undefined) { + const res = reg.exec(code); + if (res) { + value = res[1]; + } + } + code = code.replace(reg, value); + }); + + // vertexSlotNames.forEach(name => { + // const tempName = `slot_${name.replace(/ /g, '_')}`; + // let value = ''; + // const reg = new RegExp(`{{${tempName} *= *(.*)}}`, 'g'); + // const res = reg.exec(code); + // if (res) { + // value = res[1]; + // } + // code = code.replace(reg, value); + // }); + + return code; + } + + async createMaterial(buildEffect: (name: string, code: string) => Promise) { + const code = this.generateCode(); + + const material = new Material(); + const name = 'shader-graph-preview.effect'; + const effect = await buildEffect(name, code); + const result = new cc.EffectAsset(); + Object.assign(result, effect); + result.onLoaded(); + material.initialize({ effectAsset: effect }); + + await Promise.all(shaderContext.properties.map(async p => { + if (p.type === ShaderPropertyType.Texture2D || p.type === ShaderPropertyType.TextureCube) { + const uuid = (p.value as Texture2D).uuid; + return new Promise(resolve => { + assetManager.loadAny(uuid, (err: any, asset: Texture2D) => { + if (err) { + console.error(err); + return resolve(null); + } + material.setProperty(p.name, asset); + resolve(null); + }); + }); + } + })); + + return material; + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts.meta new file mode 100644 index 0000000..06b7fab --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master/MasterNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "1eab7a6d-080d-4a88-af82-ead98c54e37f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts b/extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts new file mode 100644 index 0000000..a937716 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts @@ -0,0 +1,54 @@ +import MasterNode, { MasterSlotDefine, MasterSlotType } from './MasterNode'; +import { slot } from '../../utils'; +import { NormalSpace, PositionSpace } from '../../type'; + +import { Vec3, Color, Vec4 } from 'cc'; +import { path } from '../../utils'; +import { register } from '../../../graph'; +import { shaderContext } from '../../context'; + +@register({ + title: 'Surface', + master: true, +}) +export default class SurfaceMasterNode extends MasterNode { + get templatePath() { + return path.join(shaderContext.shaderTemplatesDir, 'master/SurfaceMasterNode.effect'); + } + + data = { + inputs: [ + slot('Vertex Position', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Vertex, codeChunk: 0 }), + slot('Vertex Normal', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Vertex, codeChunk: 0 }), + slot('Vertex Tangent', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Vertex, codeChunk: 0 }), + + slot('Albedo', new Vec4(0.5, 0.5, 0.5, 0.5), 'color', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Normal', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Emission', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Metallic', 0.6, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Roughness', 0.5, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Occlusion', 1, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('SpecularIntensity', 0.5, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Alpha', 1, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('AlphaClipThreshold', 0.5, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + + slot('AnisotropyRotation', 0, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('AnisotropyShape', 1, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + ], + }; + + generateCode() { + const AnisotropyRotationConnected = this.getSlotWithSlotName('AnisotropyRotation')?.connectSlot; + const AnisotropyShapeConnected = this.getSlotWithSlotName('AnisotropyShape')?.connectSlot; + + // if (AnisotropyRotationConnected || AnisotropyShapeConnected) { + // this.defines = [ + // '#define CC_SURFACES_LIGHTING_ANISOTROPIC IS_ANISOTROPY', + // '#define CC_SURFACES_LIGHTING_ANISOTROPIC_ENVCONVOLUTION_COUNT 15', + // ]; + // } + + return super.generateCode(); + } + +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts.meta new file mode 100644 index 0000000..0eb38bb --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master/SurfaceMasterNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "3dc0b965-6e4c-40b0-acef-520bf372b81b", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts b/extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts new file mode 100644 index 0000000..07f4082 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts @@ -0,0 +1,43 @@ +import MasterNode, { MasterSlotType } from './MasterNode'; +import { slot, path } from '../../utils'; +import { register } from '../../../graph'; +import { Color, Vec3, Vec4 } from 'cc'; +import { shaderContext } from '../../context'; +import { ShaderNode } from '../../base'; + +@register({ + title: 'Unlit', + master: true, +}) +export default class UnlitMasterNode extends MasterNode { + + get templatePath() { + return path.join(shaderContext.shaderTemplatesDir, 'master/UnlitMasterNode.effect'); + } + + data = { + inputs: [ + slot('Vertex Position', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Vertex, codeChunk: 0 }), + slot('Vertex Normal', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Vertex, codeChunk: 0 }), + slot('Vertex Tangent', Vec3.ZERO, 'vec3', 'vector', { slotType: MasterSlotType.Vertex, codeChunk: 0 }), + + slot('BaseColor', new Vec4(0.5, 0.5, 0.5, 0.5), 'color', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('Alpha', 1, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + slot('AlphaClipThreshold', 0, 'float', 'vector', { slotType: MasterSlotType.Fragment, codeChunk: 3 }), + + ], + }; + + static generatePreviewCode(node: ShaderNode) { + const tempNode = new UnlitMasterNode(); + tempNode.init(); + + const baseColor = tempNode.getSlotWithSlotName('BaseColor'); + if (baseColor) { + baseColor.connectSlots[0] = node.outputs[0]; + } + + return tempNode.generateCode(); + } + +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts.meta new file mode 100644 index 0000000..eb5a1f7 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/master/UnlitMasterNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "f3fa2908-eae9-4124-ac94-7db7d3093d8f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/math.meta b/extensions/shader-graph/shader-node/assets/operation/manual/math.meta new file mode 100644 index 0000000..fb17386 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/math.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "73d60c62-7f72-4970-8842-362d88f8761c", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/procedural.meta b/extensions/shader-graph/shader-node/assets/operation/manual/procedural.meta new file mode 100644 index 0000000..4f5e992 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/procedural.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "961356a6-060b-44e5-af55-e4cf258e2afa", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/subgraph.meta b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph.meta new file mode 100644 index 0000000..7e99927 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "6b6b28a7-6d20-4478-9457-e4f20421c504", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts new file mode 100644 index 0000000..5257a00 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts @@ -0,0 +1,142 @@ +// import { ShaderNode, ShaderSlot, ShaderPropery, ShaderEdgeSlot } from '../../base'; +// import globby from 'globby'; +// import path from 'path'; +// import ShaderGraph from '../../shadergraph'; +// import SubGraphOutputNode from './SubGraphOutputNode'; +// import PropertyNode from '../input/PropertyNode'; +// import { ConcretePrecisionType } from '../../type'; + +import { ShaderNode } from '../../base'; +import { register } from '../../../graph'; +import { slot } from '../../utils'; + +@register({ + style: { + headerColor: '#757575', + }, +}) +export default class SubGraphNode extends ShaderNode { + data = { + inputs: [ + slot('In', 0, 'any', 'any'), + ], + outputs: [ + slot('Out', 0, 'any', 'any'), + ], + }; + + // nodes: ShaderNode[] = [] + // nodeMap: Map = new Map + // properties: ShaderPropery[] = [] + // + // subgraphOutNode: SubGraphOutputNode | null = null; + // + // concretePrecisionType = ConcretePrecisionType.Fixed; + // + // constructor (data) { + // super(data) + // + // let name = this.data.m_Name; + // let subgraphPath = path.join(ShaderGraph.subgraphPath, `**/${name}.*`).replace(/\\/g, '/'); + // let paths = globby.sync(subgraphPath) + // paths = paths.filter(p => path.extname(p).toLowerCase() === '.shadersubgraph') + // if (!paths[0]) { + // console.error(`Can not find sub graph with name [${name}]`) + // return; + // } + // + // let res = ShaderGraph.searchNodes(paths[0]); + // if (!res) { + // return; + // } + // + // let { properties, nodeMap, nodes, edges } = res; + // + // this.nodes = nodes; + // this.nodeMap = nodeMap; + // this.properties = properties; + // + // let subgraphOutNode = nodes.find(n => n instanceof SubGraphOutputNode) + // if (!subgraphOutNode) { + // console.error(`Can not find SubGraphOutputNode for [${name}]`) + // return; + // } + // + // this.subgraphOutNode = subgraphOutNode; + // + // } + // + // excahngeSubGraphOutNode (outputEdgeSlot: ShaderEdgeSlot) { + // let outputNode = this as ShaderNode; + // + // let outputSlot = this.slotsMap.get(outputEdgeSlot.id); + // let subgraphSlot = this.subgraphOutNode?.getSlotWithSlotName(outputSlot?.displayName); + // + // if (subgraphSlot && subgraphSlot.connectSlot) { + // //@ts-ignore + // outputNode = subgraphSlot.connectSlot.node; + // outputEdgeSlot.id = subgraphSlot.connectSlot.id; + // //@ts-ignore + // outputEdgeSlot.nodeUuid = subgraphSlot.connectSlot.node?.uuid; + // if (outputNode && subgraphSlot) { + // subgraphSlot.connectSlots.length = 0; + // } + // } + // + // return outputNode; + // } + // + // exchangeSubGraphInputNodes () { + // let inputSlots = this.inputSlots; + // + // let propertyNodes = this.nodes.filter(n => n instanceof PropertyNode); + // propertyNodes.forEach(node => { + // let propertySlot = node.outputSlots[0]; + // let propertyName = propertySlot.displayName; + // + // let inputSlot = inputSlots.find(slot => slot.displayName === propertyName); + // + // if (inputSlot) { + // let outputSlot = inputSlot.connectSlot; + // if (outputSlot) { + // propertySlot.connectSlots.forEach(inputSlotInSubGraph => { + // inputSlotInSubGraph.connectSlot = outputSlot; + // outputSlot.connectSlots = outputSlot.connectSlots.filter(slot => slot === inputSlot); + // + // if (outputSlot.node) { + // inputSlotInSubGraph.node?.addDependency(outputSlot.node); + // //@ts-ignore + // outputSlot.node.setPriority(inputSlotInSubGraph.node.priority + 1); + // } + // }) + // + // //@ts-ignore + // inputSlot.connectSlot = null; + // } + // else { + // propertySlot.connectSlots.forEach(inputSlotInSubGraph => { + // inputSlotInSubGraph.connectSlot = inputSlot!; + // // inputSlot.connectSlots.push(inputSlotInSubGraph); + // + // if (inputSlot!.node) { + // inputSlotInSubGraph.node?.addDependency(this); + // //@ts-ignore + // this.setPriority(inputSlotInSubGraph.node.priority + 1); + // } + // }); + // } + // } + // + // }) + // } + // + // generateCode () { + // let code = ''; + // let inputSlots = this.inputSlots; + // for (let i = 0; i < inputSlots.length; i++) { + // // if (!inputSlots[i].connectSlot) continue; + // code += `${inputSlots[i].varDefine} = ${inputSlots[i].defaultValueStr};\n`; + // } + // return code; + // } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts.meta new file mode 100644 index 0000000..a9d7a90 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "159aba9f-8dc9-4262-9d20-aa3cca232ebd", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts new file mode 100644 index 0000000..274eafa --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts @@ -0,0 +1,19 @@ +import { ShaderNode } from '../../base'; +import { register } from '../../../graph'; +import { slot } from '../../utils'; + +@register({ + title: 'Output', + master: true, + style: { + headerColor: '#81ff2f', + }, +}) +export default class SubGraphOutputNode extends ShaderNode { + data = { + inputs: [ + slot('Out', 0, 'any', 'any'), + ], + }; +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts.meta new file mode 100644 index 0000000..8de108f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/subgraph/SubGraphOutputNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "a7a1d5a5-f763-4523-b37a-0795941c170e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/utility.meta b/extensions/shader-graph/shader-node/assets/operation/manual/utility.meta new file mode 100644 index 0000000..0a4f3ea --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/utility.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "c46cd314-c43d-4d44-8ead-9d0966430e67", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts b/extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts new file mode 100644 index 0000000..145afb9 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts @@ -0,0 +1,7 @@ +import { ShaderNode } from '../../base'; + +export default class PreviewNode extends ShaderNode { + generateCode() { + return `${this.getOutputVarDefine(0)} = ${this.getInputValue(0)};`; + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts.meta b/extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts.meta new file mode 100644 index 0000000..5f7419f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/utility/PreviewNode.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "f8b0f765-8953-417a-b78b-44d84b8af4df", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/manual/uv.meta b/extensions/shader-graph/shader-node/assets/operation/manual/uv.meta new file mode 100644 index 0000000..4dce63c --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/manual/uv.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "51eddf44-3965-4a7f-b48f-a4e84314fba9", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes.meta b/extensions/shader-graph/shader-node/assets/operation/nodes.meta new file mode 100644 index 0000000..730a24f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "b505bf78-444e-44a8-9656-4cb08b45cd9a", + "files": [], + "subMetas": {}, + "userData": { + "compressionType": {}, + "isRemoteBundle": {} + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math.meta new file mode 100644 index 0000000..45e08a2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "7ba923ae-1846-449d-95ec-49315f08fbd3", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/advanced.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/advanced.meta new file mode 100644 index 0000000..d1d5f97 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/advanced.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "63d22451-008b-4e03-a950-b5f829113d1c", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/basic.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/basic.meta new file mode 100644 index 0000000..9732198 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/basic.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "6a4f6ef4-513e-4bdf-921f-d22f93141f39", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/derivative.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/derivative.meta new file mode 100644 index 0000000..4b490be --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/derivative.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "c1dcd5aa-a99e-451d-b42c-f1dec0cd0709", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/interpolation.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/interpolation.meta new file mode 100644 index 0000000..061cc7d --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/interpolation.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "41960e02-4bf1-40ae-994b-e052e9e82ae6", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/range.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/range.meta new file mode 100644 index 0000000..3911dd3 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/range.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "1dd0ff67-5e75-45f4-9f1e-1836de1a90f4", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/round.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/round.meta new file mode 100644 index 0000000..12ae32f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/round.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "4b214877-6c6c-4281-a8f7-91020409b611", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/trigonometry.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/trigonometry.meta new file mode 100644 index 0000000..7b9dd22 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/trigonometry.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "1a3df9f5-ac78-4d6c-bddc-55023b426b25", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/vector.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/vector.meta new file mode 100644 index 0000000..9341a9e --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/vector.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "588e2fb0-509a-44f8-b87a-fd11cee766b5", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/math/wave.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/math/wave.meta new file mode 100644 index 0000000..0f38bde --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/math/wave.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "2ab50b7f-a1c9-4f35-9bda-323f9da4b0c4", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/procedural.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/procedural.meta new file mode 100644 index 0000000..e172f70 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/procedural.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "98e0b37b-f186-4092-af09-82ae447ad426", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/procedural/noise.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/procedural/noise.meta new file mode 100644 index 0000000..71bd117 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/procedural/noise.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "4b803390-09a7-48b1-9333-46e084e134c0", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/procedural/shape.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/procedural/shape.meta new file mode 100644 index 0000000..9491037 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/procedural/shape.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "c488881f-9e1f-452b-b4b4-d5ff354a5c2f", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/subgraph.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/subgraph.meta new file mode 100644 index 0000000..0f8eab7 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/subgraph.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "4513f5f7-65b4-450a-847b-3f91fc2b1718", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/utility.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/utility.meta new file mode 100644 index 0000000..821cbe5 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/utility.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "de7c8b6a-0f2b-4737-9739-7d0219ceebcf", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/nodes/uv.meta b/extensions/shader-graph/shader-node/assets/operation/nodes/uv.meta new file mode 100644 index 0000000..9a3c25c --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/nodes/uv.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.0", + "importer": "directory", + "imported": true, + "uuid": "aa89aef2-19c7-47e7-b417-998a0ce7f744", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/property.ts b/extensions/shader-graph/shader-node/assets/operation/property.ts new file mode 100644 index 0000000..7954204 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/property.ts @@ -0,0 +1,129 @@ +import { Color, Vec2, Vec3, Vec4, Texture2D, TextureCube, ValueType } from 'cc'; +import { ShaderNode } from './base'; +import { getJsonObject, getValueConcretePrecision, prop, slot } from './utils'; +import { ShaderSlot } from './slot'; +import { PropertyValueType, SlotDefine } from './type'; + +export enum ShaderPropertyType { + Float = 'Float', + Boolean = 'Boolean', + Vector2 = 'Vector2', + Vector3 = 'Vector3', + Vector4 = 'Vector4', + Color = 'Color', + Texture2D = 'Texture2D', + // Texture2DArray = 'Texture2DArray', + // Texture3D = 'Texture3D', + TextureCube = 'TextureCube', + // Gradient = 'Gradient', + // Matrix2 = 'Matrix2', + // Matrix3 = 'Matrix3', + // Matrix4 = 'Matrix4', +} + +export class ShaderProperty { + details = { + menu: '', + // -> IBlockStyle, + style: { + headerColor: '#ec7063', + }, + // feature: { } // -> IBlockFeature, + }; + name = ''; + type: ShaderPropertyType = ShaderPropertyType.Float; + value: PropertyValueType = 0; + + outputs: SlotDefine[] = []; + + public constructor(type: ShaderPropertyType | string) { + if (typeof type === 'string') { + this.type = ShaderPropertyType[type as ShaderPropertyType]; + } + else { + this.type = type; + } + this.name = ShaderPropertyType[type as ShaderPropertyType]; + this.details.menu = this.name; + this.updateDefaultValue(); + } + + setValue(value) { + if (this.value instanceof ValueType) { + this.value.set(value); + } + else if (this.type === ShaderPropertyType.Texture2D || this.type === ShaderPropertyType.TextureCube) { + (this.value as Texture2D)._uuid = value.uuid; + } + else { + this.value = value; + } + } + + updateDefaultValue() { + switch (this.type) { + case ShaderPropertyType.Float: + this.value = 0; + this.outputs = [ + slot('Out', this.value, 'float', 'vector'), + ]; + break; + case ShaderPropertyType.Boolean: + this.value = false; + this.outputs = [ + slot('Out', this.value, 'boolean', 'boolean'), + ]; + break; + case ShaderPropertyType.Vector2: + this.value = new Vec2; + this.outputs = [ + slot('Out', this.value, 'vec2', 'vector'), + ]; + break; + case ShaderPropertyType.Vector3: + this.value = new Vec3; + this.outputs = [ + slot('Out', this.value, 'vec3', 'vector'), + ]; + break; + case ShaderPropertyType.Vector4: + this.value = new Vec4; + this.outputs = [ + slot('Out', this.value, 'vec4', 'vector'), + ]; + break; + case ShaderPropertyType.Color: + this.value = new Color; + this.outputs = [ + slot('Out', this.value, 'color', 'vector'), + ]; + break; + case ShaderPropertyType.Texture2D: + this.value = new Texture2D; + this.outputs = [ + slot('Out', this.value, 'texture2D', 'texture2D'), + ]; + break; + case ShaderPropertyType.TextureCube: + this.value = new TextureCube; + this.outputs = [ + slot('Out', this.value, 'textureCube', 'textureCube'), + ]; + break; + } + } + + isTexture() { + switch (this.type) { + case ShaderPropertyType.Texture2D: + case ShaderPropertyType.TextureCube: + return true; + } + + return false; + } + + get concretePrecision() { + return getValueConcretePrecision(this.value); + } +} diff --git a/extensions/shader-graph/shader-node/assets/operation/property.ts.meta b/extensions/shader-graph/shader-node/assets/operation/property.ts.meta new file mode 100644 index 0000000..ee555f2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/property.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "b05a879a-ef88-434d-bef0-02b4f9d4ac67", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/shadergraph.ts b/extensions/shader-graph/shader-node/assets/operation/shadergraph.ts new file mode 100644 index 0000000..6a6dd33 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/shadergraph.ts @@ -0,0 +1,132 @@ +// import { ShaderPropery, ShaderNode, ShaderEdge, resetGlobalShaderSlotID } from "./base"; +// import { getJsonObject } from "./utils"; +// import { createNode } from "./nodes"; +// import MasterNode from "./nodes/master/MasterNode"; +// import SubGraphNode from "./nodes/subgraph/SubGraphNode"; + +// import fs from 'fs' +// import PropertyNode from "./nodes/input/PropertyNode"; + +// export default class ShaderGraph { +// static subgraphPath = '' + +// static allNodes: ShaderNode[][] = []; + +// static searchNodes (graphPath: string) { +// let contentStr = fs.readFileSync(graphPath, 'utf-8'); +// let content = getJsonObject(contentStr); +// if (!content) return; + +// let properties: ShaderPropery[] = content.m_SerializedProperties.map(d => new ShaderPropery(d)); +// let nodeMap: Map = new Map; + +// let propertyNodeMap: Map = new Map; + +// let nodes: ShaderNode[] = content.m_SerializableNodes.map(d => { +// let node = createNode(d); + +// if (node instanceof PropertyNode) { +// node.searchProperties(properties); + +// let propertyNode = propertyNodeMap.get(node.property!); +// if (propertyNode) { +// nodeMap.set(node.uuid, propertyNode); +// return propertyNode; +// } + +// propertyNodeMap.set(node.property!, node); + +// } + +// nodeMap.set(node.uuid, node); +// return node; +// }); + +// let edges: ShaderEdge[] = content.m_SerializableEdges.map(d => { +// return new ShaderEdge(d) +// }) + +// for (let i = 0; i < edges.length; i++) { +// let edge = edges[i]; +// let inputSlot = edge.input; +// let outputSlot = edge.output; + +// let inputNode = nodeMap.get(inputSlot.nodeUuid); +// let outputNode = nodeMap.get(outputSlot.nodeUuid); + +// if (outputNode instanceof SubGraphNode) { +// outputNode = outputNode.excahngeSubGraphOutNode(outputSlot); +// } + +// if (!inputNode) { +// console.warn(`Can not find input [${inputSlot.nodeUuid}] for edge.`) +// continue; +// } +// if (!outputNode) { +// console.warn(`Can not find input [${outputSlot.nodeUuid}] for edge.`) +// continue; +// } + +// inputNode.addDependency(outputNode); +// outputNode.setPriority(inputNode.priority + 1); + +// let inputNodeSlot = inputNode.slotsMap.get(inputSlot.id); +// let outputNodeSlot = outputNode.slotsMap.get(outputSlot.id); + +// if (inputNodeSlot && outputNodeSlot) { +// inputNodeSlot.connectSlots.push(outputNodeSlot); +// outputNodeSlot.connectSlots.push(inputNodeSlot); +// } +// } + +// nodes.sort((a, b) => b.priority - a.priority); + +// nodes.forEach(node => { +// if (node instanceof SubGraphNode) { +// node.exchangeSubGraphInputNodes(); +// } + +// node.calcConcretePrecision(); +// }) + +// this.allNodes.push(nodes); + +// return { +// properties, +// nodeMap, +// nodes, +// edges +// } +// } + +// static decode (path: string) { + +// resetGlobalShaderSlotID(); + +// this.allNodes.length = 0; + +// let res = this.searchNodes(path); +// if (!res) { +// return; +// } + +// let { properties, nodeMap, nodes, edges } = res; + +// let masterNode = nodes.find(n => n instanceof MasterNode); +// if (!masterNode) { +// console.error('Can not find master node.'); +// return; +// } + +// (masterNode as MasterNode).properties = properties; + +// this.allNodes.forEach(nodes => { +// nodes.forEach(node => { +// node.beforeGenreateCode() +// }); +// }) + +// let code = masterNode.generateCode(); +// return code; +// } +// } diff --git a/extensions/shader-graph/shader-node/assets/operation/shadergraph.ts.meta b/extensions/shader-graph/shader-node/assets/operation/shadergraph.ts.meta new file mode 100644 index 0000000..2195031 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/shadergraph.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "c03d0c99-6c8e-423c-9c88-be99e26b974e", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/slot.ts b/extensions/shader-graph/shader-node/assets/operation/slot.ts new file mode 100644 index 0000000..7cdd203 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/slot.ts @@ -0,0 +1,247 @@ +import { ValueType } from 'cc'; +import { ShaderNode } from './base'; +import { SlotDefine } from './type'; +import { getFloatString, getPrecisionName, getValueConcretePrecision, getValueElementStr } from './utils'; +import PropertyNode from './nodes/input/PropertyNode'; +import { shaderContext } from './context'; + +let _GlobalShaderSlotID_ = 0; +export function resetGlobalShaderSlotID() { + _GlobalShaderSlotID_ = 0; +} + +export enum ShaderSlotType { + Input, + Output, +} + +export class ShaderSlot { + // typeInfo = {}; + data: SlotDefine; + + globalID = 0; + + // serialized + id = 0; + displayName = ''; + type = ShaderSlotType.Input; + defaultValue: any; + value: any; + + get connectSlot() { + const slot = this.connectSlots[0]; + if (slot && shaderContext.getLocalVars.includes(slot.node)) { + const v = shaderContext.localVars.find(v => { + return v.name === (slot.node as any).name; + }); + return v.inputs[0].connectSlot; + } + return this.connectSlots[0]; + } + set connectSlot(v) { + this.connectSlots.length = 0; + if (v) { + this.connectSlots[0] = v; + } + } + connectSlots: ShaderSlot[] = []; + + node: ShaderNode | undefined = undefined; + get connectNode() { + return this.connectSlot && this.connectSlot.node; + } + // otherNode: ShaderNode | undefined = undefined; + + constructor(data: SlotDefine, node: ShaderNode) { + this.displayName = data.display; + this.defaultValue = data.default; + + if (data.default instanceof ValueType) { + this.value = data.default.clone(); + } + else { + this.value = data.default; + } + + this.data = data; + this.node = node; + + // console.log(`Slot ID ${this.displayName} : ${_GlobalShaderSlotID_}`) + + this.globalID = _GlobalShaderSlotID_++; + } + + // deserialize (obj: any, node: ShaderNode) { + // this.typeInfo = obj.typeInfo; + // this.data = getJsonObject(obj.JSONnodeData); + + // this.type = this.data.m_SlotType as ShaderSlotType; + + // this.node = node; + + // this.id = this.data.m_Id; + // this.globalID = _GlobalShaderSlotID_++; + // this.displayName = this.data.m_DisplayName; + // this.defaultValue = this.data.m_DefaultValue; + // this.value = this.data.m_Value; + // } + + get varName(): string { + if (this.node?.isPropertyNode) { + return (this.node as PropertyNode).name; + } + return 'var_' + this.globalID; + } + + get varDefine(): string { + let name = getPrecisionName(this.concretePrecision, this.data.type); + if (name) { + name += ' '; + } + return name + this.varName; + } + + get precisionName(): string { + return getPrecisionName(this.concretePrecision, this.data.type); + } + + // get defaultValueStr () { + // let defaultValue = this.defaultValue; + + // let x = getFloatString(defaultValue.x); + // let y = getFloatString(defaultValue.y); + // let z = getFloatString(defaultValue.z); + // let w = getFloatString(defaultValue.w); + + // let result = getFloatString(defaultValue); + // if (typeof defaultValue === 'object') { + // if (defaultValue.w !== undefined) { + // result = `vec4(${x}, ${y}, ${z}, ${w})`; + // } + // else if (defaultValue.z !== undefined) { + // result = `vec3(${x}, ${y}, ${z})`; + // } + // else if (defaultValue.y !== undefined) { + // result = `vec2(${x}, ${y})`; + // } + // } + + // return result; + // } + + get isVector() { + return this.data.connectType === 'vector'; + } + + get slotValue() { + let valueConretePresition = this.defaultConcretePrecision; + const selfConcretePresition = this.concretePrecision; + + let valueStr = ''; + if (!this.connectSlot) { + const value = this.value; + if (!this.isVector) { + valueStr = value; + } + else { + let x = getValueElementStr(value, 0); + const y = getValueElementStr(value, 1); + const z = getValueElementStr(value, 2); + const w = getValueElementStr(value, 3); + + if (typeof value !== 'object') { + x = getFloatString(value); + } + + valueConretePresition = getValueConcretePrecision(value); + + const values = [x, y, z, w]; + const concreteValues: any[] = []; + for (let i = 0; i < selfConcretePresition; i++) { + concreteValues.push(values[i] === undefined ? 0 : values[i]); + } + valueStr = concreteValues.join(', '); + } + } + else { + valueConretePresition = this.connectSlot.concretePrecision; + + valueStr = this.connectSlot.varName; + if (this.isVector && selfConcretePresition !== valueConretePresition) { + if (selfConcretePresition < valueConretePresition) { + if (selfConcretePresition === 1) { + valueStr += '.x'; + } + else if (selfConcretePresition === 2) { + valueStr += '.xy'; + } + else if (selfConcretePresition === 3) { + valueStr += '.xyz'; + } + } + else { + if (valueConretePresition !== 1) { + const dif = selfConcretePresition - valueConretePresition; + const difValues: any[] = []; + for (let i = 0; i < dif; i++) { + difValues.push('0.'); + } + valueStr += ', ' + difValues.join(', '); + } + } + } + } + + let result = `${valueStr}`; + if (this.isVector) { + if (selfConcretePresition === 2) { + result = `vec2(${valueStr})`; + } + else if (selfConcretePresition === 3) { + result = `vec3(${valueStr})`; + } + else if (selfConcretePresition === 4) { + result = `vec4(${valueStr})`; + } + } + + return result; + } + + get defaultConcretePrecision() { + let concretePrecision = 1; + + const value = this.defaultValue; + if (typeof value === 'object') { + if (value.w !== undefined) { + concretePrecision = 4; + } + else if (value.z !== undefined) { + concretePrecision = 3; + } + else if (value.y !== undefined) { + concretePrecision = 2; + } + } + + return concretePrecision; + } + + _concretePrecision = -1; + get concretePrecision() { + if (this._concretePrecision === -1) { + let value = this.defaultValue; + if (value === undefined) { + if (this.node?.isPropertyNode) { + value = (this.node as PropertyNode).property!.value; + } + } + if (value === undefined) { + console.error('Slot Value is undefined, concrete precision maybe wrong.'); + } + this._concretePrecision = getValueConcretePrecision(value); + } + return this._concretePrecision; + } +} + diff --git a/extensions/shader-graph/shader-node/assets/operation/slot.ts.meta b/extensions/shader-graph/shader-node/assets/operation/slot.ts.meta new file mode 100644 index 0000000..130a79e --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/slot.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "37bc895c-264a-40b9-916b-ba4c1c020f87", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/type.ts b/extensions/shader-graph/shader-node/assets/operation/type.ts new file mode 100644 index 0000000..3ca4b2f --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/type.ts @@ -0,0 +1,126 @@ +import { Vec2, Vec3, Vec4, ccenum, Color, Texture2D, TextureCube } from 'cc'; +import { IBlockFeature, IBlockStyle } from '../../../src/block-forge/interface'; + +export enum ConcretePrecisionType { + Min, + Max, + Fixed, + Texture, +} +(ConcretePrecisionType as any)._name = 'ConcretePrecisionType'; + +export enum TextureConcretePrecision { + Texture2D = 100, + TextureCube = 101, +} +(TextureConcretePrecision as any)._name = 'TextureConcretePrecision'; + +export enum PositionSpace { + Local = 0, + View, + World, + // Tangent, + // AbsoluteWorld +} +(PositionSpace as any)._name = 'PositionSpace'; + +export enum NormalSpace { + Local = 0, + View, + World, + // Tangent, +} +(NormalSpace as any)._name = 'NormalSpace'; + +export enum ViewDirSpace { + Local = 0, + View, + World, + // Tangent, +} +(ViewDirSpace as any)._name = 'ViewDirSpace'; + +export const NormalMapSpace = 300; + +export interface IRegisterOptions { + menu?: string; + title?: string; + // 节点的样式 + style?: IBlockStyle; + // 是否是主节点 + master?: boolean; +} + +export interface INodeDataDefine { + inputs?: SlotDefine[]; + outputs?: SlotDefine[]; + props?: SlotDefine[]; +} + +export declare class NodeDefine { + type: string; + extend?: string; + node: INodeDataDefine; + details?: { [key: string]: any } & IRegisterOptions; +} + +export type PropertyValueType = Vec2 | Vec3 | Vec4 | number | boolean | Color | Texture2D | TextureCube; + +export declare class PropertyDefine { + name: string; + type: string; + // 实际对应的 block 类型 + declareType: string; + default: PropertyValueType; + outputs: SlotDefine[]; + details: { + menu: string, + style?: IBlockStyle, + feature?: IBlockFeature, + [key: string]: any + }; +} + +export type SlotDefaultValueType = Boolean | Vec4 | Vec3 | Vec2 | Number | Color | String | Texture2D | TextureCube | null; +// 如果类型是 any,会走动态定义 slot 类型 +export type SlotOrPropType = 'any' | 'number' | 'float' | 'color' | 'vec4' | 'vec3' | 'vec2' | 'boolean' | 'string' | 'texture2D' | 'textureCube' | 'enum' | 'dynamicEnum'; +export type SlotConnectType = 'any' | 'vector' | 'texture2D' | 'textureCube' | 'boolean' | 'string' | 'color'; + +/** + * 该类型动态搜集指定 shader node 的指定属性 key + */ +export type RegisterEnum = { + /** + * 枚举类型 + */ + type: string; + /** + * 需要搜集 Shader Node 中指定属性 + */ + property: string; +} + +export interface SlotPropDetail { + enum?: any; + /** + * 为了识别是否把 slot 注册到 enum 上 + */ + registerEnumType?: string; + /** + * 获取注册 enum 信息 + */ + registerEnum?: RegisterEnum; +} + +export declare class SlotDefine { + display: string; + default: SlotDefaultValueType; + type: SlotOrPropType; + connectType: SlotConnectType; +} +export declare class PropDefine { + display: string; + default: Vec4 | Vec3 | Vec2 | Number | String; + type: string; //'Number' | 'Texture' | 'Enum' + enum: any; +} diff --git a/extensions/shader-graph/shader-node/assets/operation/type.ts.meta b/extensions/shader-graph/shader-node/assets/operation/type.ts.meta new file mode 100644 index 0000000..b7f2af2 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/type.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "298c3210-ad90-4fe8-bc7b-5c4f8ddfddf3", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/assets/operation/utils.ts b/extensions/shader-graph/shader-node/assets/operation/utils.ts new file mode 100644 index 0000000..3cbb465 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/utils.ts @@ -0,0 +1,169 @@ +import { EDITOR } from 'cc/env'; +import { + SlotConnectType, + SlotDefaultValueType, + SlotDefine, + SlotOrPropType, SlotPropDetail, + TextureConcretePrecision, +} from './type'; +import { Vec2, Vec3, Vec4, Color } from 'cc'; + +const useNpm = (EDITOR || globalThis.electron); + +export const Editor = useNpm && globalThis.Editor; +export const projectPath = EDITOR && Editor.Project.path; +export const fs = useNpm && globalThis.require('fs-extra'); +export const path = useNpm && globalThis.require('path'); + +// export const shaderTemplatesDir = path.join(__dirname, '../../compile-shader/shader-templates'); + +export function getJsonObject(str: string) { + let content; + try { + content = JSON.parse(str); + } + catch (err) { + console.error(err); + } + return content; +} + +export function getFloatString(value: number) { + if (typeof value !== 'number') { + return value; + } + + let str = value + ''; + if (!str.includes('.')) { + str += '.'; + } + return str; +} + +const ValueElements = { + vector: ['x', 'y', 'z', 'w'], + color: ['r', 'g', 'b', 'a'], + mat4: ['e00', 'e01', 'e02', 'e03'], +}; + +export function getValueElement(value: any | number, index: number): number { + if (typeof value === 'number') { + return value; + } + + let elements; + + if (value.x !== undefined) { + elements = ValueElements.vector; + } + else if (value.r !== undefined) { + elements = ValueElements.color; + } + else if (value.e00 !== undefined) { + elements = ValueElements.mat4; + } + + return value[elements[index]] || 0; +} + +export function getValueElementStr(value: object | number, index: number): string { + return getFloatString(getValueElement(value, index)); +} + +export function getValueConcretePrecision(value: any) { + let valueConretePresition = 1; + if (typeof value === 'object') { + if (value.w !== undefined || value.a !== undefined) { + valueConretePresition = 4; + } + else if (value.z !== undefined || value.b !== undefined) { + valueConretePresition = 3; + } + else if (value.y !== undefined || value.g !== undefined) { + valueConretePresition = 2; + } + else if (value.m_SerializedTexture !== undefined) { + valueConretePresition = TextureConcretePrecision.Texture2D; + } + else if (value.m_SerializedCubemap !== undefined) { + valueConretePresition = TextureConcretePrecision.TextureCube; + } + } + return valueConretePresition; +} + +export function getPrecisionName(precision: number, type: SlotOrPropType) { + let name = ''; + if (type === 'boolean') { + name = 'bool'; + } + else if (precision === 1) { + name = 'float'; + } + else if (precision === 2) { + name = 'vec2'; + } + else if (precision === 3) { + name = 'vec3'; + } + else if (precision === 4) { + name = 'vec4'; + } + else if (precision === TextureConcretePrecision.Texture2D) { + name = 'sampler2D'; + } + else if (precision === TextureConcretePrecision.TextureCube) { + name = 'samplerCube'; + } + return name; +} + +export function getEnumNames(type) { + let names = Object.getOwnPropertyNames(type); + names = names.filter(name => Number.isNaN(Number.parseFloat(name)) && name !== '_name'); + return names; +} + +export function slot(display: string, + defaultValue: SlotDefaultValueType, + type: SlotOrPropType, + connectType: SlotConnectType, + opts: { [key: string]: any } = {} +): SlotDefine { + const data = { display, default: defaultValue, type, connectType }; + + Object.assign(data, opts); + return data; +} + +export function prop( + display: string, + defaultValue: Vec4 | Vec3 | Vec2 | Number | Color | String | null, + type: SlotOrPropType, + details: SlotPropDetail = {} +) { + const data = { display, default: defaultValue, type }; + Object.assign(data, details); + return data as any; +} + +export function getEnumDefineName(enumObj, value) { + return `CC_${enumObj._name.replace('Space', '')}_${enumObj[value]}`.toUpperCase(); +} + +export function getEnumDefine(enumObj, value) { + const name = getEnumDefineName(enumObj, value); + return `#define ${name} 1`; +} + +export function ensureEnumDefines(enumObj, define: string) { + getEnumNames(enumObj).forEach(name => { + const def = getEnumDefineName(enumObj, enumObj[name]); + + if (!define.includes(def)) { + define += `#define ${def} 0\n`; + } + }); + + return define; +} diff --git a/extensions/shader-graph/shader-node/assets/operation/utils.ts.meta b/extensions/shader-graph/shader-node/assets/operation/utils.ts.meta new file mode 100644 index 0000000..64be277 --- /dev/null +++ b/extensions/shader-graph/shader-node/assets/operation/utils.ts.meta @@ -0,0 +1,9 @@ +{ + "ver": "4.0.23", + "importer": "typescript", + "imported": true, + "uuid": "7ceab5c1-cffb-4005-aec2-4d70c0331267", + "files": [], + "subMetas": {}, + "userData": {} +} diff --git a/extensions/shader-graph/shader-node/compile-shader/scripts/generate.js b/extensions/shader-graph/shader-node/compile-shader/scripts/generate.js new file mode 100644 index 0000000..0d30d16 --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/scripts/generate.js @@ -0,0 +1,348 @@ + +const fs = require('fs-extra'); +const path = require('path'); +const { makeFirstCharUppcase, getFileName } = require('./utils'); +const globby = require('globby'); + +const chunkPaths = [ + path.join(__dirname, '../shader-templates/chunks/math.chunk'), + path.join(__dirname, '../shader-templates/chunks/noise.chunk'), + path.join(__dirname, '../shader-templates/chunks/shape.chunk'), + path.join(__dirname, '../shader-templates/chunks/range.chunk'), + path.join(__dirname, '../shader-templates/chunks/uv.chunk'), + path.join(__dirname, '../shader-templates/chunks/input_basic.chunk'), +]; + +const nodeDir = path.join(__dirname, '../../assets/operation/generated'); + +const ignoredFuncs = []; + +let currentChunk; +function generateChunk(chunkPath) { + const content = fs.readFileSync(chunkPath, 'utf-8'); + + currentChunk = ''; + if (content.includes('// @depChunk')) { + currentChunk = path.basename(chunkPath).split('.')[0]; + } + + const funcs = fetchFuncs(content); + fetchParams(content, funcs); + + generateCode(funcs); + + // console.log(objs) +} + +// 获取所有 glsl 函数,标记了注释的函数才会被纳入 +function fetchFuncs(content) { + // https://stackoverflow.com/questions/65367401/extract-glsl-function-body-with-regexp + const reg = /^(\s*)(vec4|vec3|vec2|float|int|void) *(\w*) *\((.*)\) *{([\s\S]*?^\1)}\s*$/gm; + const funcRegs = content.match(reg); + + const funcs = []; + + funcRegs.forEach(funcReg => { + const res = new RegExp(reg).exec(funcReg); + // let res = func.match(reg); + + if (!res) { + throw new Error('Failed to get Function.'); + } + + const func = { + return: '', + outputs: [], + inputs: [], + + name: res[3], + body: res[5], + }; + + const inputs = res[4].split(','); + func.inputs = inputs.map((i, idx) => { + const res = /(\w+) +(\w+)/.exec(i); + return { type: res[1], name: res[2] }; + }); + + func.return = res[2]; + func.outputs.push({ type: res[2], name: 'Out' }); + + funcs.push(func); + }); + + return funcs; +} + +// 从注释中获取生成节点的参数 + +// 生成的文件夹路径 +// @folder procedural/noise + +/** + * @param uv notConnect=v_uv.xy + * @param width default=0.5 + * @param radius default=0.1 + * @presicion fixed + * @inline + * @type Slider +*/ +function fetchParams(content, funcs) { + + const lines = content.split('\n'); + let folder = ''; + let params = {}; + const paramNames = [ + 'inline', + 'presicion', + 'param', + 'type', + ]; + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + if (line.includes('@folder')) { + folder = /@folder *(.+)/g.exec(line)[1]; + console.log('--- ', folder); + continue; + } + else { + paramNames.forEach(name => { + if (line.includes('@' + name)) { + if (name === 'inline') { + params[name] = true; + } + else if (name === 'param') { + let setting = new RegExp(`@${name} *(.+)`).exec(line)[1]; + setting = setting.split(' '); + const inputName = setting[0]; + if (!params.inputs) { + params.inputs = {}; + } + + params.inputs[inputName] = {}; + for (let i = 1; i < setting.length; i++) { + const inputSetting = setting[i].split('='); + params.inputs[inputName][inputSetting[0]] = inputSetting[1]; + } + } + else { + params[name] = new RegExp(`@${name} *(.+)`).exec(line)[1]; + } + } + }); + } + + funcs.forEach(obj => { + const test = new RegExp(`${obj.return} * ${obj.name} *\\(`); + if (test.exec(line)) { + obj.folder = folder; + obj.params = params; + params = {}; + } + }); + } + + for (let i = funcs.length - 1; i >= 0; i--) { + const params = funcs[i].params; + if (!Object.getOwnPropertyNames(params).length) { + ignoredFuncs.push(funcs[i]); + funcs.splice(i, 1); + } + } +} + +// 生成节点代码 +function generateCode(funcs) { + + const glsl2CCType = { + sampler2D: 'texture2D', + samplerCube: 'textureCube', + float: 'float', + vec2: 'vec2', + vec3: 'vec3', + vec4: 'vec4', + }; + + const type2Default = { + texture2D: 'white', + textureCube: 'white', + float: '0', + vec2: 'Vec2.ZERO', + vec3: 'Vec3.ZERO', + vec4: 'Vec4.ZERO', + }; + + const type2ConnectType = { + texture2D: 'texture2D', + textureCube: 'textureCube', + float: 'vector', + vec2: 'vector', + vec3: 'vector', + vec4: 'vector', + }; + + funcs.forEach(func => { + let inputsDatas = ``; + let inputs = ``; + func.inputs.forEach((i, idx) => { + const type = glsl2CCType[i.type]; + if (!type) { + throw new Error(`Not found type for ${i.type}`); + } + + const inputParam = func.params.inputs && func.params.inputs[i.name]; + + const defaultValue = (inputParam && inputParam.default) || type2Default[type]; + const connectType = type2ConnectType[type]; + + const valueDefine = inputParam && inputParam.notConnect ? 'let' : 'const'; + + inputsDatas += `\n slot('${i.name}', ${defaultValue}, '${type}', '${connectType}'),`; + inputs += `\n ${valueDefine} input${idx} = this.getInputValue(${idx});`; + + if (inputParam) { + if (inputParam.notConnect) { + inputs += ` + if (!this.inputs[${idx}].connectSlot) { + input${idx} = '${inputParam.notConnect}'; + } + `; + } + } + }); + + let outputsDatas = ``; + let outputs = ``; + func.outputs.forEach((o, idx) => { + const type = glsl2CCType[o.type]; + if (!type) { + throw new Error(`Not found type for ${o.type}`); + } + const def = type2Default[type]; + const connectType = type2ConnectType[type]; + + outputsDatas += `\n slot('${o.name}', ${def}, '${type}', '${connectType}'),`; + outputs += `\n const output${idx} = this.getOutputVarDefine(${idx});`; + }); + + let funcCode = ``; + if (func.params && func.params.inline) { + funcCode = func.body.replace('return ', '${output0} = '); + + func.inputs.forEach((input, idx) => { + funcCode = funcCode.replace(new RegExp(`\\b${input.name}\\b`, 'g'), '${input' + idx + '}'); + }); + + const lines = funcCode.split('\n'); + let newFunc = ``; + for (let i = 0; i < lines.length; i++) { + const newLine = lines[i].replace(/^ */g, ''); + if (!newLine || newLine === '\r') { + continue; + } + newFunc += '\n ' + newLine; + } + newFunc += '\n '; + funcCode = newFunc; + } + else { + const params = func.inputs.map((input, idx) => '${input' + idx + '}'); + funcCode = '${output0}' + ` = ${func.name}(${params.join(', ')});`; + } + + const folderLevel = func.folder.split('/').length; + const pathRel = new Array(folderLevel - 1).fill(1).map(a => '../').join(); + + let presicion = ''; + if (func.params.presicion) { + presicion = ` concretePrecisionType = ConcretePrecisionType.${makeFirstCharUppcase(func.params.presicion)};\n`; + } + + let depChunks = ''; + if (currentChunk) { + depChunks = ` depChunks = ['${currentChunk}'];\n`; + } + + let nodeType = ''; + if (func.params.type) { + nodeType = ` get type() { return '${func.params.type}'; }\n`; + } + + const preDefine = presicion + depChunks + nodeType; + + let folder = func.folder; + let folders = folder.split('/'); + folders = folders.map(f => makeFirstCharUppcase(f)); + folder = folders.join('/'); + + const code = ` +import { Vec2, Vec3, Vec4 } from 'cc'; +import { register } from '${pathRel}../../../graph/register'; +import { ShaderNode } from '${pathRel}../../base'; +import { ConcretePrecisionType } from '${pathRel}../../type'; +import { slot } from '${pathRel}../../utils'; + +@register({ + menu: '${folder}/${func.name}', + title: '${func.name}', +}) +export default class ${func.name} extends ShaderNode { +${preDefine} + data = { + inputs: [${inputsDatas} + ], + outputs: [${outputsDatas} + ], + }; + + calcConcretePrecision() { + super.calcConcretePrecision(); + } + + generateCode() { + ${inputs} + ${outputs} + return \`${funcCode}\`; + } +} + `; + const nodePath = path.join(nodeDir, func.folder, getFileName(func.name) + '.ts'); + fs.ensureDirSync(path.dirname(nodePath)); + fs.writeFileSync(nodePath, code); + }); + +} + +// 在 index.ts 中 import 所有节点文件,作为加载所有节点的入口 +function generateIndex() { + const generatedDir = path.join(nodeDir, '**/*.ts'); + const manualDir = path.join(__dirname, '../../assets/operation/manual', '**/*.ts'); + + const baseDir = path.join(__dirname, '../../assets/operation'); + + const paths = globby.sync([ + generatedDir.replace(/\\/g, '/'), + manualDir.replace(/\\/g, '/'), + ]); + + let index = ''; + paths.forEach(p => { + index += `import './${path.relative(baseDir, p).replace(/\\/g, '/')}';\n`; + }); + + fs.writeFileSync(path.join(baseDir, 'index.ts'), index); +} + +function run() { + chunkPaths.forEach(chunkPath => { + generateChunk(chunkPath); + }); + + ignoredFuncs.forEach(obj => { + console.warn(`Ignored function ${obj.name}`); + }); + + generateIndex(); +} + +run(); diff --git a/extensions/shader-graph/shader-node/compile-shader/scripts/utils.js b/extensions/shader-graph/shader-node/compile-shader/scripts/utils.js new file mode 100644 index 0000000..dc06892 --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/scripts/utils.js @@ -0,0 +1,18 @@ + +function makeFirstCharUppcase(str) { + const f = str[0].toUpperCase(); + str = f + str.substring(1, str.length); + return str; +} + +function getFileName(str) { + let res = str.match(/[A-Z]+[a-z0-9]*/g); + if (!res) return ''; + res = res.map(f => f.toLowerCase()); + return res.join('-'); +} + +module.exports = { + makeFirstCharUppcase, + getFileName, +}; \ No newline at end of file diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/common.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/common.chunk new file mode 100644 index 0000000..2f6c987 --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/common.chunk @@ -0,0 +1,9 @@ + + +CCProgram shader_graph_common %{ + +// #include +#define frac(uv) fract(uv) +#define lerp(min, max, t) mix(min, max, t) + +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/input_basic.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/input_basic.chunk new file mode 100644 index 0000000..e0dc64d --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/input_basic.chunk @@ -0,0 +1,53 @@ + +CCProgram shader_graph_input_basic %{ + // @folder input/basic + + /** + * @inline + * @presicion fixed + */ + float Boolean (float In) { + return In; + } + + /** + * @inline + * @presicion fixed + */ + float Float (float In) { + return In; + } + + /** + * @inline + * @presicion fixed + */ + vec2 Vector2 (float X, float Y) { + return vec2(X, Y); + } + + /** + * @inline + * @presicion fixed + */ + vec3 Vector3 (float X, float Y, float Z) { + return vec3(X, Y, Z); + } + + /** + * @inline + * @presicion fixed + */ + vec4 Vector4 (float X, float Y, float Z, float W) { + return vec4(X, Y, Z, W); + } + + /** + * @inline + * @type Slider + * @presicion fixed + */ + float Slider (float In) { + return In; + } +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/math.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/math.chunk new file mode 100644 index 0000000..0479baf --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/math.chunk @@ -0,0 +1,451 @@ + +CCProgram shader_graph_math %{ + // @folder math/advanced + + /** + * @inline + */ + vec4 Absolute(vec4 In) { + return abs(In); + } + + /** + * @inline + */ + vec4 Exponential(vec4 In) { + return exp(In); + } + + /** + * @inline + */ + vec4 Length(vec4 In) { + return length(In); + } + + /** + * @inline + */ + vec4 Log(vec4 In) { + return log(In); + } + + /** + * @inline + */ + vec4 Modulo(vec4 A, vec4 B) { + return mod(A, B); + } + + /** + * @inline + */ + vec4 Negate(vec4 In) { + return -In; + } + + /** + * @inline + */ + vec4 Normalize(vec4 In) { + return normalize(In); + } + + /** + * @inline + */ + vec4 Posterize(vec4 In, vec4 Steps) { + return floor(In / (1. / Steps)) * (1. / Steps); + } + + /** + * @inline + */ + vec4 Reciprocal(vec4 In) { + return 1. / In; + } + + /** + * @inline + */ + vec4 ReciprocalSquare(vec4 In) { + return 1. / (In * In); + } + + + // @folder math/basic + + /** + * @presicion max + * @inline + */ + vec4 Add (vec4 A, vec4 B) { + return A + B; + } + + /** + * @presicion max + * @inline + */ + vec4 Substract (vec4 A, vec4 B) { + return A - B; + } + + /** + * @presicion max + * @inline + */ + vec4 Divide (vec4 A, vec4 B) { + return A / B; + } + + /** + * @presicion max + * @inline + */ + vec4 Multiply (vec4 A, vec4 B) { + return A * B; + } + + /** + * @presicion fixed + * @inline + */ + vec4 Power (vec4 A, vec4 B) { + return pow(A, B); + } + + /** + * @inline + */ + vec4 Square (vec4 A) { + return sqrt(A); + } + + // @folder math/round + + /** + * @inline + */ + vec4 Ceil (vec4 In) { + return ceil(In); + } + + /** + * @inline + */ + vec4 Floor (vec4 In) { + return floor(In); + } + + /** + * @inline + */ + vec4 Round (vec4 In) { + return floor(In + 0.5); + } + + /** + * @inline + */ + vec4 Sign (vec4 In) { + return sign(In); + } + + /** + * @inline + */ + vec4 Step (vec4 Edge, vec4 In) { + return step(Edge, In); + } + + /** + * @inline + */ + vec4 Truncate (vec4 In) { + return trunc(In); + } + + // @folder math/interpolation + + /** + * @inline + */ + vec4 InverseLerp (vec4 A, vec4 B, vec4 T) { + return (T - A) / (B - A); + } + + /** + * @inline + * @presicion max + */ + vec4 Lerp (vec4 A, vec4 B, vec4 T) { + return mix(A, B, T); + } + + /** + * @inline + */ + vec4 Smoothstep (vec4 Edge1, vec4 Edge2, vec4 In) { + return smoothstep(Edge1, Edge2, In); + } + + + // @folder math/trigonometry + + /** + * @inline + */ + vec4 Arccosine (vec4 In) { + return acos(In); + } + + /** + * @inline + */ + vec4 Arcsine (vec4 In) { + return asin(In); + } + + /** + * @inline + */ + vec4 Arctangent2 (vec4 A, vec4 B) { + return atan2(A, B); + } + + /** + * @inline + */ + vec4 Arctangent (vec4 In) { + return atan(In); + } + + /** + * @inline + */ + vec4 Cosine (vec4 In) { + return cos(In); + } + + /** + * @inline + */ + vec4 Sine (vec4 In) { + return sin(In); + } + + /** + * @inline + */ + vec4 Tangent (vec4 In) { + return tan(In); + } + + /** + * @inline + */ + vec4 DegreesToRadians (vec4 In) { + return radians(In); + } + + /** + * @inline + */ + vec4 RadiansToDegrees (vec4 In) { + return degrees(In); + } + + /** + * @inline + */ + vec4 HyperbolicCosine (vec4 In) { + return cosh(In); + } + + /** + * @inline + */ + vec4 HyperbolicSine (vec4 In) { + return sinh(In); + } + + /** + * @inline + */ + vec4 Hyperbolic (vec4 In) { + return tanh(In); + } + + // @folder math/vector + + /** + * @inline + */ + vec4 CrossProduct (vec4 A, vec4 B) { + return cross(A, B); + } + + /** + * @inline + * @presicion fixed + */ + float Distance (vec4 A, vec4 B) { + return distance(A, B); + } + + /** + * @inline + * @presicion fixed + */ + float DotProduct (vec4 A, vec4 B) { + return dot(A, B); + } + + /** + * @inline + * @presicion fixed + */ + float Fresnel (vec3 Normal, vec3 ViewDir, float Power) { + return pow((1.0 - saturate(dot(normalize(Normal), normalize(ViewDir)))), Power); + } + + /** + * @inline + */ + vec4 Projection (vec4 A, vec4 B) { + return B * dot(A, B) / dot(B, B); + } + + /** + * @inline + */ + vec4 Reflection(vec4 In, vec4 Normal) { + return reflect(In, Normal); + } + + /** + * @inline + */ + vec4 Rejection(vec4 A, vec4 B) { + return A - (B * dot(A, B) / dot(B, B)) + } + + /** + * @inline + */ + vec4 SphereMask(vec4 Coords, vec4 Center, float Radius, float Hardness) { + return 1 - saturate((distance(Coords, Center) - Radius) / (1 - Hardness)); + } + + + // @folder math/range + + /** + * @inline + */ + vec4 Clamp(vec4 In, vec4 Min, vec4 Max) { + return clamp(In, Min, Max); + } + + /** + * @inline + */ + vec4 Fraction(vec4 In) { + return fract(In); + } + + /** + * @inline + */ + vec4 Max(vec4 A, vec4 B) { + return max(A, B); + } + + /** + * @inline + */ + vec4 Min(vec4 A, vec4 B) { + return min(A, B); + } + + /** + * @inline + */ + vec4 OneMinus(vec4 In) { + return 1. - In; + } + + /** + * @inline + * @presicion max + */ + vec4 Remap(vec4 In, vec2 InMinMax, vec2 OutMinMax) { + return OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x); + } + + /** + * @inline + */ + vec4 Saturate(vec4 In) { + return saturate(In); + } + + + // @folder math/derivative + + /** + * @inline + */ + vec4 DDX (vec4 In) { + return dFdx(In); + } + + /** + * @inline + */ + vec4 DDY (vec4 In) { + return dFdy(In); + } + + /** + * @inline + */ + vec4 DDXY (vec4 In) { + return abs(dFdx(In)) + abs(dFdy(In)); + } + + // @folder math/wave + + /** + * @inline + */ + vec4 TriangleWave (vec4 In) { + return 2.0 * abs( 2 * (In - floor(0.5 + In)) ) - 1.0; + } + + /** + * @inline + */ + vec4 NoiseSineWave(vec4 In, vec2 MinMax) { + float sinIn = sin(In); + float sinInOffset = sin(In + 1.0); + float randomno = frac(sin((sinIn - sinInOffset) * (12.9898 + 78.233))*43758.5453); + float noise = lerp(MinMax.x, MinMax.y, randomno); + return sinIn + noise; + } + + /** + * @inline + */ + vec4 SawtoothWave(vec4 In) { + return 2 * (In - floor(0.5 + In)); + } + + /** + * @inline + */ + vec4 SquareWave(vec4 In) { + return 1.0 - 2.0 * round(frac(In)); + } +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/noise.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/noise.chunk new file mode 100644 index 0000000..12369d2 --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/noise.chunk @@ -0,0 +1,85 @@ +// @depChunk +CCProgram shader_graph_noise %{ + // @folder procedural/noise + + float noise_randomValue (vec2 uv) + { + return fract(sin(dot(uv, vec2(12.9898, 78.233)))*43758.5453); + } + + float noise_interpolate (float a, float b, float t) + { + return (1.0-t)*a + (t*b); + } + + float simpleNoise_valueNoise (vec2 uv) + { + vec2 i = floor(uv); + vec2 f = fract(uv); + f = f * f * (3.0 - 2.0 * f); + + uv = abs(fract(uv) - 0.5); + vec2 c0 = i + vec2(0.0, 0.0); + vec2 c1 = i + vec2(1.0, 0.0); + vec2 c2 = i + vec2(0.0, 1.0); + vec2 c3 = i + vec2(1.0, 1.0); + float r0 = noise_randomValue(c0); + float r1 = noise_randomValue(c1); + float r2 = noise_randomValue(c2); + float r3 = noise_randomValue(c3); + + float bottomOfGrid = noise_interpolate(r0, r1, f.x); + float topOfGrid = noise_interpolate(r2, r3, f.x); + float t = noise_interpolate(bottomOfGrid, topOfGrid, f.y); + return t; + } + + + /* + * @presicion fixed + * @param uv notConnect=v_uv.xy + */ + float SimpleNoise (vec2 uv, float scale) { + float t = 0.0; + + float freq = pow(2.0, 0.); + float amp = pow(0.5, 3.); + t += simpleNoise_valueNoise(vec2(uv.x*scale/freq, uv.y*scale/freq))*amp; + + freq = pow(2.0, 1.); + amp = pow(0.5, 3.-1.); + t += simpleNoise_valueNoise(vec2(uv.x*scale/freq, uv.y*scale/freq))*amp; + + freq = pow(2.0, 2.); + amp = pow(0.5, 3.-2.); + t += simpleNoise_valueNoise(vec2(uv.x*scale/freq, uv.y*scale/freq))*amp; + + return t; + } + + vec2 gradientNoiseDir (vec2 p) { + // Permutation and hashing used in webgl-nosie goo.gl/pX7HtC + p = mod(p, 289.); + float x = mod((34. * p.x + 1.) * p.x, 289.) + p.y; + x = mod((34. * x + 1.) * x, 289.); + x = frac(x / 41.) * 2. - 1.; + return normalize(vec2(x - floor(x + 0.5), abs(x) - 0.5)); + } + + /* + * @presicion fixed + * @param uv notConnect=v_uv.xy + */ + float GradientNoise (vec2 uv, float scale) { + vec2 p = uv * scale; + vec2 ip = floor(p); + vec2 fp = frac(p); + float d00 = dot(gradientNoiseDir(ip), fp); + float d01 = dot(gradientNoiseDir(ip + vec2(0., 1.)), fp - vec2(0., 1.)); + float d10 = dot(gradientNoiseDir(ip + vec2(1., 0.)), fp - vec2(1., 0.)); + float d11 = dot(gradientNoiseDir(ip + vec2(1., 1.)), fp - vec2(1., 1.)); + fp = fp * fp * fp * (fp * (fp * 6. - 15.) + 10.); + return lerp(lerp(d00, d01, fp.y), lerp(d10, d11, fp.y), fp.x) + 0.5; + } + +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/range.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/range.chunk new file mode 100644 index 0000000..a3ef25e --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/range.chunk @@ -0,0 +1,13 @@ +// @depChunk +CCProgram shader_graph_range %{ + // @folder math/range + + /* + * @presicion fixed + */ + float RandomRange (vec2 seed, float minv, float maxv) { + float randomno = fract(sin(dot(seed, vec2(12.9898, 78.233)))*43758.5453); + return mix(minv, maxv, randomno); + } + +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/shape.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/shape.chunk new file mode 100644 index 0000000..2044f98 --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/shape.chunk @@ -0,0 +1,54 @@ + + +// @depChunk +CCProgram shader_graph_shape %{ + // @folder procedural/shape + + /* + * @presicion fixed + * @param uv notConnect=v_uv.xy + * @param width default=0.5 + * @param height default=0.5 + */ + float Ellipse (vec2 uv, float width, float height) { + #if CC_USE_derivatives + float d = length((uv * 2. - 1.) / vec2(width, height)); + return saturate((1. - d) / fwidth(d)); + #else + return 1.; + #endif + } + + /* + * @presicion fixed + * @param uv notConnect=v_uv.xy + * @param width default=0.5 + */ + float Rectangle (vec2 uv, float width) { + #if CC_USE_derivatives + vec2 d = abs(uv * 2. - 1.) - vec2(width, width); + d = 1. - d / fwidth(d); + return saturate(min(d.x, d.y)); + #else + return 1.; + #endif + } + + /* + * @presicion fixed + * @param uv notConnect=v_uv.xy + * @param width default=0.5 + * @param radius default=0.1 + */ + float RoundRectangle (vec2 uv, float width, float radius) { + #if CC_USE_derivatives + radius = max(min(min(abs(radius * 2.), abs(width)), abs(width)), float(1e-5)); + uv = abs(uv * 2. - 1.) - vec2(width, width) + radius; + float d = length(max(vec2(0.), uv)) / radius; + return saturate((1. - d) / fwidth(d)); + #else + return 1.; + #endif + } + +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/uv.chunk b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/uv.chunk new file mode 100644 index 0000000..1cec91f --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/chunks/uv.chunk @@ -0,0 +1,50 @@ + + +// @depChunk +CCProgram shader_graph_uv %{ + // @folder uv + + /** + * @param uv notConnect=v_uv.xy + * @presicion fixed + */ + vec2 PolarCoordinates (vec2 uv, vec2 center, float radialScale, float lengthScale) { + vec2 delta = uv - center; + float radius = length(delta) * 2. * radialScale; + float angle = atan(delta.y, delta.x) * 1.0/6.28 * lengthScale; + return vec2(radius, angle); + } + + /** + * @param uv notConnect=v_uv.xy + * @presicion fixed + */ + vec2 RotateCoordinates (vec2 uv, vec2 center, float rotation) { + //rotation matrix + uv -= center; + float s = sin(rotation); + float c = cos(rotation); + + //center rotation matrix + mat2 rMatrix = mat2(c, -s, s, c); + rMatrix *= 0.5; + rMatrix += 0.5; + rMatrix = rMatrix*2. - 1.; + + //multiply the UVs by the rotation matrix + uv *= rMatrix; + uv += center; + + return uv; + } + + /** + * @param uv notConnect=v_uv.xy + * @presicion fixed + * @inline + */ + vec2 TillingAndOffset (vec2 uv, vec2 tilling, vec2 offset) { + return uv * tilling + offset; + } + +}% diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/master/SurfaceMasterNode.effect b/extensions/shader-graph/shader-node/compile-shader/shader-templates/master/SurfaceMasterNode.effect new file mode 100644 index 0000000..b9be1ae --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/master/SurfaceMasterNode.effect @@ -0,0 +1,399 @@ +// Copyright (c) 2017-2022 Xiamen Yaji Software Co., Ltd. + +CCEffect %{ + techniques: + - name: opaque + passes: + - vert: standard-vs + frag: standard-fs + properties: &props + {{properties_mtl}} + + - &forward-add + vert: standard-vs + frag: standard-fs + phase: forward-add + propertyIndex: 0 + embeddedMacros: { CC_FORWARD_ADD: true } + depthStencilState: + depthFunc: equal + depthTest: true + depthWrite: false + blendState: + targets: + - blend: true + blendSrc: one + blendDst: one + blendSrcAlpha: zero + blendDstAlpha: one + - &shadow-caster + vert: shadow-caster-vs + frag: shadow-caster-fs + phase: shadow-caster + propertyIndex: 0 + rasterizerState: + cullMode: front + properties: *props + - &reflect-map + vert: standard-vs + frag: reflect-map-fs + phase: reflect-map + propertyIndex: 0 + - &planar-shadow + vert: planar-shadow-vs + frag: planar-shadow-fs + phase: planar-shadow + propertyIndex: 0 + depthStencilState: + depthTest: true + depthWrite: false + stencilTestFront: true + stencilFuncFront: not_equal + stencilPassOpFront: replace + stencilRef: 0x80 # only use the leftmost bit + stencilReadMask: 0x80 + stencilWriteMask: 0x80 + blendState: + targets: + - blend: true + blendSrc: src_alpha + blendDst: one_minus_src_alpha + blendDstAlpha: one_minus_src_alpha + - name: transparent + passes: + - vert: standard-vs + frag: standard-fs + embeddedMacros: { CC_FORCE_FORWARD_SHADING: true } + depthStencilState: + depthTest: true + depthWrite: false + blendState: + targets: + - blend: true + blendSrc: src_alpha + blendDst: one_minus_src_alpha + blendDstAlpha: one_minus_src_alpha + properties: *props + - *forward-add + # - *shadow-caster + # - *planar-shadow +}% + +{{chunks}} + +CCProgram shared-ubos %{ + uniform ShaderGraph_Properties { + {{properties}} + }; + + {{properties_sampler}} +}% + +CCProgram macro-remapping %{ + // ui displayed macros + #pragma define-meta HAS_SECOND_UV + #pragma define-meta USE_TWOSIDE + #pragma define-meta IS_ANISOTROPY + #pragma define-meta USE_VERTEX_COLOR + + #define CC_SURFACES_USE_SECOND_UV HAS_SECOND_UV + #define CC_SURFACES_USE_TWO_SIDED USE_TWOSIDE + #define CC_SURFACES_USE_VERTEX_COLOR USE_VERTEX_COLOR + + #define CC_SURFACES_LIGHTING_ANISOTROPIC IS_ANISOTROPY + #define CC_SURFACES_LIGHTING_ANISOTROPIC_ENVCONVOLUTION_COUNT 15 + + #if __VERSION__ < 300 + #ifdef GL_OES_standard_derivatives + #define CC_USE_derivatives 1 + #else + #define CC_USE_derivatives 0 + #endif + #else + #define CC_USE_derivatives 1 + #endif + +{{defines}} +}% + + +CCProgram surface-vertex %{ + #if CC_POSITION_LOCAL + out vec3 v_locPos; + #endif + + #if CC_NORMAL_LOCAL + out vec3 v_locNormal; + #endif + + + {{vs_chunks}} + + + #define CC_SURFACES_VERTEX_MODIFY_LOCAL_SHARED_DATA + void SurfacesVertexModifyLocalSharedData(inout SurfacesStandardVertexIntermediate In) + { + vec3 position = In.position.xyz; + vec3 normal = In.normal.xyz; + + #if CC_SURFACES_USE_TANGENT_SPACE + vec4 tangent = In.tangent; + #endif + + #if CC_POSITION_WORLD || CC_POSITION_VIEW || CC_NORMAL_WORLD || CC_NORMAL_VIEW + mat4 matWorld, matWorldIT; + CCGetWorldMatrixFull(matWorld, matWorldIT); + #endif + + #if CC_POSITION_WORLD || CC_POSITION_VIEW + vec3 worldPos = (matWorld * In.position).xyz; + #endif + + #if CC_POSITION_VIEW + vec3 viewPos = (cc_matView * vec4(worldPos, 1.)).xyz; + #endif + + #if CC_NORMAL_WORLD || CC_NORMAL_VIEW + vec3 worldNormal = normalize((matWorldIT * vec4(In.normal.xyz, 0.0)).xyz); + #endif + + #if CC_NORMAL_VIEW + vec3 viewNormal = cc_matView * vec4(worldNormal, 0.0); + #endif + + {{code_chunk_0}} + + In.position.xyz = {{slot_Vertex_Position = position}}.xyz; + In.normal = {{slot_Vertex_Normal = normal}}.xyz; + + #if CC_SURFACES_USE_TANGENT_SPACE + In.tangent = {{slot_Vertex_Tangent = tangent}}; + #endif + + #if CC_POSITION_LOCAL + v_locPos = In.position.xyz; + #endif + + #if CC_NORMAL_LOCAL + v_locNormal = In.normal.xyz; + #endif + } +}% + +CCProgram surface-fragment %{ + #include + + #if CC_POSITION_LOCAL + in vec3 v_locPos; + #endif + + #if CC_NORMAL_LOCAL + in vec3 v_locNormal; + #endif + + {{fs_chunks}} + + // definition of SurfacesMaterialData structure with corresponding shading-model + #include + + #define CC_SURFACES_FRAGMENT_MODIFY_SHARED_DATA + void SurfacesFragmentModifySharedData(inout SurfacesMaterialData surfaceData) + { + vec3 worldPos = surfaceData.worldPos; + vec3 worldNormal = surfaceData.worldNormal; + vec3 worldTangent = surfaceData.worldTangent; + vec3 worldBinormal = surfaceData.worldBinormal; + + #if CC_VIEWDIR_WORLD || CC_VIEWDIR_VIEW || CC_VIEWDIR_LOCAL + vec3 worldView = cc_cameraPos.xyz - worldPos.xyz; + #endif + #if CC_VIEWDIR_VIEW + vec3 viewView = (cc_matView * vec4(worldView, 0.0)).xyz; + #endif + #if CC_VIEWDIR_LOCAL + vec3 view = (matWorldIT * vec4(worldView, 0.0)).xyz; + #endif + + #if CC_POSITION_LOCAL + vec3 position = v_locPos; + #endif + + #if CC_NORMAL_LOCAL + vec3 normal = v_locNormal; + #endif + + #if CC_POSITION_VIEW + vec4 viewPos = cc_matView * vec4(worldPos, 1.); + #endif + + {{code_chunk_3}} + + surfaceData.baseColor.a = {{slot_Alpha = 1.}}; + if (surfaceData.baseColor.a <= {{slot_AlphaClipThreshold = 0.}}) { + discard; + } + + surfaceData.baseColor.rgb = {{slot_Albedo = vec3(1.)}}.rgb; + surfaceData.emissive = {{slot_Emission = vec3(0.)}}.rgb; + surfaceData.specularIntensity = {{slot_SpecularIntensity = 0.5}}; + surfaceData.metallic = {{slot_Metallic = 0.6}}; + surfaceData.roughness = {{slot_Roughness = 0.5}}; + surfaceData.ao = {{slot_Occlusion = 1.0}}; + + #if CC_SURFACES_LIGHTING_ANISOTROPIC + float anisotropyRotation = {{slot_AnisotropyRotation = 0.}}; + float anisotropyShape = {{slot_AnisotropyShape = 1.}}; + + surfaceData.anisotropyShape = anisotropyShape; + RotateTangentAndBinormal(surfaceData.worldTangent, surfaceData.worldBinormal, surfaceData.worldNormal, anisotropyRotation); + #endif + } + +}% + +CCProgram test-fs %{ + + layout(location = 0) out vec4 fragColorX; + + void main() { + SurfacesMaterialData surfaceData; + CCSurfacesFragmentGetMaterialData(surfaceData); + + LightingResult lightingResult; + CCSurfacesLighting(lightingResult, surfaceData, vec2(0.)); + + vec4 color = CCSurfacesShading(surfaceData, lightingResult); + + // Color output + #if CC_USE_RGBE_OUTPUT + color = packRGBE(color.rgb); // for reflection-map + #else + color = CCSurfacesDebugDisplayInvalidNumber(color); + // #if !CC_USE_FLOAT_OUTPUT + // color.rgb = HDRToLDR(color.rgb); + // color.rgb = LinearToSRGB(color.rgb); + // #endif + #endif + + fragColorX = color; + + // fragColorX = vec4(surfaceData.worldPos, 1.); + } +}% + +CCProgram standard-vs %{ + precision highp float; + + // 1. surface internal macros, for technique usage or remapping some user (material) macros to surface internal macros + #include + #include + + // 2. common include with corresponding shader stage, include before surface functions + #include + + // 3. user surface functions that can use user (effect) parameters (ubo Constants) + // see surfaces/default-functions/xxx.chunk + #include + #include + + // 4. surface include with corresponding shader stage and shading-model (optional) + #include + + // 5. shader entry with corresponding shader stage and technique usage/type + #include +}% + + +CCProgram shadow-caster-vs %{ + precision highp float; + #include + #include + #include + #include + #include + #include +}% + +CCProgram planar-shadow-vs %{ + precision highp float; + #include + #include + #include + #include + #include + #include +}% + + +CCProgram standard-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + // shading-model : standard + // lighting-model : standard (isotropy / anisotropy pbr) + // shader stage : fs + // technique usage/type : render-to-scene + + precision highp float; + // 1. surface internal macros, for technique usage or remapping some user (material) macros to surface internal macros + #include + #include + + // 2. common include with corresponding shader stage, include before surface functions + #include + + // 3. user surface functions that can use user (effect) parameters (ubo Constants) + // see surfaces/default-functions/xxx.chunk + #include + #include + + // 4. lighting-model (optional) + #include + + // 5. surface include with corresponding shader stage and shading-model (optional) + #include + + // 6. shader entry with corresponding shader stage and technique usage/type + #include + + // #include + +}% + +CCProgram shadow-caster-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + precision highp float; + #include + #include + #include + #include + #include + #include +}% + +CCProgram planar-shadow-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + precision highp float; + #include + #include + #include + #include + #include + #include +}% + +CCProgram reflect-map-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + precision highp float; + #include + #include + #include + #include + #include + #include + #include + #include +}% + diff --git a/extensions/shader-graph/shader-node/compile-shader/shader-templates/master/UnlitMasterNode.effect b/extensions/shader-graph/shader-node/compile-shader/shader-templates/master/UnlitMasterNode.effect new file mode 100644 index 0000000..68b5db7 --- /dev/null +++ b/extensions/shader-graph/shader-node/compile-shader/shader-templates/master/UnlitMasterNode.effect @@ -0,0 +1,349 @@ +// Copyright (c) 2017-2020 Xiamen Yaji Software Co., Ltd. +CCEffect %{ + techniques: + - name: opaque + passes: + - vert: unlit-vs + frag: unlit-fs + properties: &props + {{properties_mtl}} + - &shadow-caster + vert: shadow-caster-vs + frag: shadow-caster-fs + phase: shadow-caster + propertyIndex: 0 + rasterizerState: + cullMode: front + properties: *props + - &reflect-map + vert: unlit-vs + frag: reflect-map-fs + phase: reflect-map + propertyIndex: 0 + - &planar-shadow + vert: planar-shadow-vs + frag: planar-shadow-fs + phase: planar-shadow + propertyIndex: 0 + depthStencilState: + depthTest: true + depthWrite: false + stencilTestFront: true + stencilFuncFront: not_equal + stencilPassOpFront: replace + stencilRef: 0x80 # only use the leftmost bit + stencilReadMask: 0x80 + stencilWriteMask: 0x80 + blendState: + targets: + - blend: true + blendSrc: src_alpha + blendDst: one_minus_src_alpha + blendDstAlpha: one_minus_src_alpha + - name: transparent + passes: + - vert: unlit-vs + frag: unlit-fs + depthStencilState: &d1 + depthTest: true + depthWrite: false + blendState: + targets: + - blend: true + blendSrc: src_alpha + blendDst: one_minus_src_alpha + blendDstAlpha: one_minus_src_alpha + properties: *props + - *planar-shadow + - name: add + passes: + - vert: unlit-vs + frag: unlit-fs + rasterizerState: &r1 { cullMode: none } + depthStencilState: *d1 + blendState: + targets: + - blend: true + blendSrc: src_alpha + blendDst: one + blendSrcAlpha: src_alpha + blendDstAlpha: one + properties: *props + - name: alpha-blend + passes: + - vert: unlit-vs + frag: unlit-fs + rasterizerState: *r1 + depthStencilState: *d1 + blendState: + targets: + - blend: true + blendSrc: src_alpha + blendDst: one_minus_src_alpha + blendSrcAlpha: src_alpha + blendDstAlpha: one_minus_src_alpha + properties: *props +}% + +{{chunks}} + + +CCProgram shared-ubos %{ + uniform ShaderGraph_Properties { + {{properties}} + }; + + {{properties_sampler}} +}% + +CCProgram macro-remapping %{ + #if __VERSION__ < 300 + #ifdef GL_OES_standard_derivatives + #define CC_USE_derivatives 1 + #else + #define CC_USE_derivatives 0 + #endif + #else + #define CC_USE_derivatives 1 + #endif + +{{defines}} +}% + + +CCProgram surface-vertex %{ + #if CC_POSITION_LOCAL + out vec3 v_locPos; + #endif + + #if CC_NORMAL_LOCAL + out vec3 v_locNormal; + #endif + + {{vs_chunks}} + + #define CC_SURFACES_VERTEX_MODIFY_LOCAL_SHARED_DATA + void SurfacesVertexModifyLocalSharedData(inout SurfacesStandardVertexIntermediate In) + { + vec3 position = In.position.xyz; + vec3 normal = In.normal.xyz; + + #if CC_SURFACES_USE_TANGENT_SPACE + vec4 tangent = In.tangent; + #endif + + #if CC_POSITION_WORLD || CC_POSITION_VIEW || CC_NORMAL_WORLD || CC_NORMAL_VIEW + mat4 matWorld, matWorldIT; + CCGetWorldMatrixFull(matWorld, matWorldIT); + #endif + + #if CC_POSITION_WORLD || CC_POSITION_VIEW + vec3 worldPos = (matWorld * In.position).xyz; + #endif + + #if CC_POSITION_VIEW + vec3 viewPos = (cc_matView * vec4(worldPos, 1.)).xyz; + #endif + + #if CC_NORMAL_WORLD || CC_NORMAL_VIEW + vec3 worldNormal = normalize((matWorldIT * vec4(In.normal.xyz, 0.0)).xyz); + #endif + + #if CC_NORMAL_VIEW + vec3 viewNormal = cc_matView * vec4(worldNormal, 0.0); + #endif + + {{code_chunk_0}} + + In.position.xyz = {{slot_Vertex_Position = position}}.xyz; + In.normal = {{slot_Vertex_Normal = normal}}.xyz; + + #if CC_SURFACES_USE_TANGENT_SPACE + In.tangent = {{slot_Vertex_Tangent = tangent}}; + #endif + + #if CC_POSITION_LOCAL + v_locPos = In.position.xyz; + #endif + + #if CC_NORMAL_LOCAL + v_locNormal = In.normal.xyz; + #endif + } +}% + +CCProgram surface-fragment %{ + precision highp float; + // #include + // #include + + #if CC_POSITION_LOCAL + in vec3 v_locPos; + #endif + + #if CC_NORMAL_LOCAL + in vec3 v_locNormal; + #endif + + {{fs_chunks}} + + #define CC_SURFACES_FRAGMENT_MODIFY_BASECOLOR_AND_TRANSPARENCY + vec4 SurfacesFragmentModifyBaseColorAndTransparency() + { + vec3 worldPos = FSInput_worldPos.xyz; + vec3 worldNormal = FSInput_worldNormal.xyz; + vec3 worldTangent = FSInput_worldTangent.xyz; + // vec3 worldBinormal = surfaceData.worldBinormal; + + #if CC_VIEWDIR_WORLD || CC_VIEWDIR_VIEW || CC_VIEWDIR_LOCAL + vec3 worldView = cc_cameraPos.xyz - worldPos.xyz; + #endif + #if CC_VIEWDIR_VIEW + vec3 viewView = (cc_matView * vec4(worldView, 0.0)).xyz; + #endif + #if CC_VIEWDIR_LOCAL + vec3 view = (matWorldIT * vec4(worldView, 0.0)).xyz; + #endif + + #if CC_POSITION_LOCAL + vec3 position = v_locPos; + #endif + + #if CC_NORMAL_LOCAL + vec3 normal = v_locNormal; + #endif + + #if CC_POSITION_VIEW + vec4 viewPos = cc_matView * vec4(worldPos, 1.); + #endif + + {{code_chunk_3}} + + vec4 baseColor; + baseColor.a = {{slot_Alpha = 1.}}; + + #if USE_ALPHA_TEST + if (baseColor.a <= {{slot_AlphaClipThreshold = 0.}}) { + discard; + } + #endif + + baseColor.rgb = {{slot_BaseColor = vec3(1.)}}.rgb; + + return baseColor; + } +}% + + +CCProgram unlit-vs %{ + precision highp float; + + // 1. surface internal macros, for technique usage or remapping some user (material) macros to surface internal macros + #include + #include + + // 2. common include with corresponding shader stage, include before surface functions + #include + + // 3. user surface functions that can use user (effect) parameters (ubo Constants) + // see surfaces/default-functions/xxx.chunk + #include + #include + + // 4. surface include with corresponding shader stage and shading-model (optional) + #include + + // 5. shader entry with corresponding shader stage and technique usage/type + #include +}% + + +CCProgram shadow-caster-vs %{ + precision highp float; + #include + #include + #include + #include + #include + #include +}% + +CCProgram planar-shadow-vs %{ + precision highp float; + #include + #include + #include + #include + #include + #include +}% + + +CCProgram unlit-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + // shading-model : standard + // lighting-model : standard (isotropy / anisotropy pbr) + // shader stage : fs + // technique usage/type : render-to-scene + + precision highp float; + // 1. surface internal macros, for technique usage or remapping some user (material) macros to surface internal macros + #include + #include + + // 2. common include with corresponding shader stage, include before surface functions + #include + + // 3. user surface functions that can use user (effect) parameters (ubo Constants) + // see surfaces/default-functions/xxx.chunk + #include + #include + + // 4. lighting-model (optional) + #include + + // 5. surface include with corresponding shader stage and shading-model (optional) + #include + + // 6. shader entry with corresponding shader stage and technique usage/type + #include +}% + +CCProgram shadow-caster-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + precision highp float; + #include + #include + #include + #include + #include + #include +}% + +CCProgram planar-shadow-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + precision highp float; + #include + #include + #include + #include + #include + #include +}% + +CCProgram reflect-map-fs %{ + #pragma extension([GL_OES_standard_derivatives, __VERSION__ < 300]) + + precision highp float; + #include + #include + #include + #include + #include + #include + #include + #include +}% diff --git a/extensions/shader-graph/shader-node/test b/extensions/shader-graph/shader-node/test new file mode 100644 index 0000000..220f856 --- /dev/null +++ b/extensions/shader-graph/shader-node/test @@ -0,0 +1,846 @@ +#version 300 es +#define CC_DEVICE_SUPPORT_FLOAT_TEXTURE 1 +#define CC_ENABLE_CLUSTERED_LIGHT_CULLING 0 +#define CC_DEVICE_MAX_VERTEX_UNIFORM_VECTORS 4095 +#define CC_DEVICE_MAX_FRAGMENT_UNIFORM_VECTORS 1024 +#define CC_DEVICE_CAN_BENEFIT_FROM_INPUT_ATTACHMENT 0 +#define CC_PLATFORM_ANDROID_AND_WEBGL 0 +#define CC_ENABLE_WEBGL_HIGHP_STRUCT_VALUES 0 +#define CC_JOINT_UNIFORM_CAPACITY 256 +#define CC_EFFECT_USED_VERTEX_UNIFORM_VECTORS 97 +#define CC_EFFECT_USED_FRAGMENT_UNIFORM_VECTORS 127 +#define HAS_SECOND_UV 0 +#define USE_TWOSIDE 0 +#define IS_ANISOTROPY 0 +#define USE_VERTEX_COLOR 0 +#define FIX_ANISOTROPIC_ROTATION_MAP 0 +#define USE_NORMAL_MAP 0 +#define USE_INSTANCING 0 +#define CC_USE_LIGHTMAP 0 +#define CC_USE_SKINNING 0 +#define CC_USE_BAKED_ANIMATION 0 +#define CC_RECEIVE_SHADOW 1 +#define CC_USE_REFLECTION_PROBE 0 +#define CC_USE_LIGHT_PROBE 0 +#define CC_USE_MORPH 0 +#define CC_FORWARD_ADD 0 +#define CC_USE_FOG 4 +#define CC_USE_ACCURATE_FOG 0 +#define CC_USE_GPU_DRIVEN 0 +#define CC_MORPH_TARGET_COUNT 2 +#define CC_MORPH_TARGET_HAS_POSITION 0 +#define CC_MORPH_TARGET_HAS_NORMAL 0 +#define CC_MORPH_TARGET_HAS_TANGENT 0 +#define CC_MORPH_PRECOMPUTED 0 +#define CC_USE_REAL_TIME_JOINT_TEXTURE 0 +#define CC_DISABLE_STRUCTURE_IN_FRAGMENT_SHADER 0 +#define CC_PIPELINE_TYPE 0 +#define CC_FORCE_FORWARD_SHADING 0 +#define CC_ENABLE_CLUSTERED_LIGHT_CULLING 0 +#define CC_SUPPORT_CASCADED_SHADOW_MAP 1 +#define CC_USE_IBL 0 +#define CC_USE_DIFFUSEMAP 0 +#define USE_ALBEDO_MAP 0 +#define ALBEDO_UV v_uv +#define NORMAL_UV v_uv +#define DEFAULT_UV v_uv +#define USE_PBR_MAP 0 +#define USE_OCCLUSION_MAP 0 +#define USE_EMISSIVE_MAP 0 +#define EMISSIVE_UV v_uv +#define USE_ANISOTROPY_MAP 0 +#define USE_ALPHA_TEST 0 +#define ALPHA_TEST_CHANNEL a +#define CC_SHADOWMAP_USE_LINEAR_DEPTH 0 +#define CC_SHADOWMAP_FORMAT 0 + +precision highp float; +#define CC_SURFACES_USE_SECOND_UV HAS_SECOND_UV +#define CC_SURFACES_USE_TWO_SIDED USE_TWOSIDE +#define CC_SURFACES_LIGHTING_ANISOTROPIC IS_ANISOTROPY +#define CC_SURFACES_USE_VERTEX_COLOR USE_VERTEX_COLOR +#if IS_ANISOTROPY || USE_NORMAL_MAP + #define CC_SURFACES_USE_TANGENT_SPACE 1 +#endif +#define CC_SURFACES_LIGHTING_ANISOTROPIC_ENVCONVOLUTION_COUNT 31 +#ifndef CC_SURFACES_USE_SECOND_UV + #define CC_SURFACES_USE_SECOND_UV 0 +#endif +#ifndef CC_SURFACES_USE_TANGENT_SPACE + #define CC_SURFACES_USE_TANGENT_SPACE 0 +#endif +#ifndef CC_SURFACES_USE_VERTEX_COLOR + #define CC_SURFACES_USE_VERTEX_COLOR 0 +#endif +#ifndef CC_SURFACES_TRANSFER_LOCAL_POS + #define CC_SURFACES_TRANSFER_LOCAL_POS 0 +#endif +#ifndef CC_SURFACES_TRANSFER_CLIP_POS + #define CC_SURFACES_TRANSFER_CLIP_POS 0 +#endif +#ifndef CC_SURFACES_USE_LIGHT_MAP + #ifdef CC_USE_LIGHTMAP + #define CC_SURFACES_USE_LIGHT_MAP CC_USE_LIGHTMAP + #else + #define CC_SURFACES_USE_LIGHT_MAP 0 + #endif +#endif +#ifndef CC_SURFACES_FLIP_UV + #define CC_SURFACES_FLIP_UV 0 +#endif +#ifndef CC_SURFACES_USE_TWO_SIDED + #define CC_SURFACES_USE_TWO_SIDED 0 +#endif +#ifndef CC_SURFACES_USE_REFLECTION_DENOISE + #define CC_SURFACES_USE_REFLECTION_DENOISE 0 +#endif +#ifndef CC_SURFACES_LIGHTING_ANISOTROPIC + #define CC_SURFACES_LIGHTING_ANISOTROPIC 0 +#endif +#ifndef CC_SURFACES_LIGHTING_ANISOTROPIC_ENVCONVOLUTION_COUNT + #define CC_SURFACES_LIGHTING_ANISOTROPIC_ENVCONVOLUTION_COUNT 0 +#endif +#ifndef CC_SURFACES_USE_LEGACY_COMPATIBLE_LIGHTING + #define CC_SURFACES_USE_LEGACY_COMPATIBLE_LIGHTING 0 +#endif +#ifndef CC_SURFACES_LIGHTING_USE_FRESNEL + #define CC_SURFACES_LIGHTING_USE_FRESNEL 0 +#endif +#ifndef CC_SURFACES_LIGHTING_TRANSMIT_SPECULAR + #define CC_SURFACES_LIGHTING_TRANSMIT_SPECULAR 0 +#endif +#ifndef CC_SURFACES_LIGHTING_TRANSMIT_DIFFUSE + #define CC_SURFACES_LIGHTING_TRANSMIT_DIFFUSE 0 +#endif +#ifndef CC_SURFACES_LIGHTING_USE_SHADOWMAP_TRANSMIT + #define CC_SURFACES_LIGHTING_USE_SHADOWMAP_TRANSMIT 0 +#endif +#ifndef CC_SURFACES_LIGHTING_TRT + #define CC_SURFACES_LIGHTING_TRT 0 +#endif +#ifndef CC_SURFACES_LIGHTING_DUAL_LOBE_SPECULAR + #define CC_SURFACES_LIGHTING_DUAL_LOBE_SPECULAR 0 +#endif +#ifndef CC_SURFACES_LIGHTING_CLEAR_COAT + #define CC_SURFACES_LIGHTING_CLEAR_COAT 0 +#endif +#ifndef CC_SURFACES_LIGHTING_TT + #define CC_SURFACES_LIGHTING_TT 0 +#endif +#ifndef CC_SURFACES_LIGHTING_SSS + #define CC_SURFACES_LIGHTING_SSS 0 +#endif +#ifndef CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR + #if CC_SURFACES_LIGHTING_TRT || CC_SURFACES_LIGHTING_DUAL_LOBE_SPECULAR || CC_SURFACES_LIGHTING_CLEAR_COAT + #define CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR 1 + #endif +#endif +#ifndef CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR + #define CC_SURFACES_LIGHTING_2ND_LAYER_SPECULAR 0 +#endif +#ifndef CC_SURFACES_LIGHTING_USE_MULTIPLE_LAYER_BLEND + #if CC_SURFACES_LIGHTING_CLEAR_COAT + #define CC_SURFACES_LIGHTING_USE_MULTIPLE_LAYER_BLEND 1 + #endif +#endif +#ifndef CC_SURFACES_LIGHTING_USE_MULTIPLE_LAYER_BLEND + #define CC_SURFACES_LIGHTING_USE_MULTIPLE_LAYER_BLEND 0 +#endif +#ifndef CC_SURFACES_ENABLE_DEBUG_VIEW + #define CC_SURFACES_ENABLE_DEBUG_VIEW 1 +#endif +#define CC_USE_SURFACE_SHADER 1 +in vec3 a_position; +in vec3 a_normal; +in vec2 a_texCoord; +#if CC_SURFACES_USE_TANGENT_SPACE + in vec4 a_tangent; +#endif +#if CC_SURFACES_USE_VERTEX_COLOR + in vec4 a_color; +#endif +#if CC_SURFACES_USE_SECOND_UV || CC_USE_LIGHTMAP + in vec2 a_texCoord1; +#endif +#if CC_USE_SKINNING + in vec4 a_joints; + in vec4 a_weights; +#endif +#if USE_INSTANCING + #if CC_USE_BAKED_ANIMATION + in highp vec4 a_jointAnimInfo; + #endif + in vec4 a_matWorld0; + in vec4 a_matWorld1; + in vec4 a_matWorld2; + #if CC_USE_LIGHTMAP + in vec4 a_lightingMapUVParam; + #endif + #if CC_RECEIVE_SHADOW || CC_USE_REFLECTION_PROBE + in vec4 a_localShadowBiasAndProbeId; + #endif + #if CC_USE_REFLECTION_PROBE + in vec4 a_reflectionProbeData; + #endif + #if CC_USE_LIGHT_PROBE + in vec4 a_sh_linear_const_r; + in vec4 a_sh_linear_const_g; + in vec4 a_sh_linear_const_b; + #endif +#endif +#if CC_USE_MORPH + in float a_vertexId; +#endif +#define QUATER_PI 0.78539816340 +#define HALF_PI 1.57079632679 +#define PI 3.14159265359 +#define PI2 6.28318530718 +#define PI4 12.5663706144 +#define INV_QUATER_PI 1.27323954474 +#define INV_HALF_PI 0.63661977237 +#define INV_PI 0.31830988618 +#define INV_PI2 0.15915494309 +#define INV_PI4 0.07957747155 +#define EPSILON 1e-6 +#define EPSILON_LOWP 1e-4 +#define LOG2 1.442695 +#define EXP_VALUE 2.71828183 +#define FP_MAX 65504.0 +#define FP_SCALE 0.0009765625 +#define FP_SCALE_INV 1024.0 +#define GRAY_VECTOR vec3(0.299, 0.587, 0.114) +#define LIGHT_MAP_TYPE_DISABLED 0 +#define LIGHT_MAP_TYPE_ALL_IN_ONE 1 +#define LIGHT_MAP_TYPE_INDIRECT_OCCLUSION 2 +#define REFLECTION_PROBE_TYPE_NONE 0 +#define REFLECTION_PROBE_TYPE_CUBE 1 +#define REFLECTION_PROBE_TYPE_PLANAR 2 +#define REFLECTION_PROBE_TYPE_BLEND 3 +#define REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX 4 +#define LIGHT_TYPE_DIRECTIONAL 0.0 +#define LIGHT_TYPE_SPHERE 1.0 +#define LIGHT_TYPE_SPOT 2.0 +#define LIGHT_TYPE_POINT 3.0 +#define LIGHT_TYPE_RANGED_DIRECTIONAL 4.0 +#define IS_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_DIRECTIONAL)) < EPSILON_LOWP) +#define IS_SPHERE_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPHERE)) < EPSILON_LOWP) +#define IS_SPOT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_SPOT)) < EPSILON_LOWP) +#define IS_POINT_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_POINT)) < EPSILON_LOWP) +#define IS_RANGED_DIRECTIONAL_LIGHT(light_type) (abs(float(light_type) - float(LIGHT_TYPE_RANGED_DIRECTIONAL)) < EPSILON_LOWP) +#define TONE_MAPPING_ACES 0 +#define TONE_MAPPING_LINEAR 1 +#define SURFACES_MAX_TRANSMIT_DEPTH_VALUE 999999.0 +#ifndef CC_SURFACES_DEBUG_VIEW_SINGLE + #define CC_SURFACES_DEBUG_VIEW_SINGLE 1 +#endif +#ifndef CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC + #define CC_SURFACES_DEBUG_VIEW_COMPOSITE_AND_MISC 2 +#endif +out highp vec3 v_worldPos; +out vec4 v_normal; +out vec2 v_uv; +#if CC_SURFACES_USE_VERTEX_COLOR + out lowp vec4 v_color; +#endif +#if CC_SURFACES_USE_TANGENT_SPACE + out mediump vec4 v_tangent; +#endif +#if CC_SURFACES_USE_SECOND_UV + out mediump vec2 v_uv1; +#endif +#if CC_USE_LIGHTMAP && !CC_FORWARD_ADD + out mediump vec3 v_luv; +#endif +#if CC_RECEIVE_SHADOW || CC_USE_REFLECTION_PROBE + out mediump vec4 v_shadowBiasAndProbeId; +#endif +#if CC_USE_REFLECTION_PROBE && USE_INSTANCING + out mediump vec4 v_reflectionProbeData; +#endif +#if CC_USE_FOG ! = 4 && !CC_USE_ACCURATE_FOG + out mediump float v_fogFactor; +#endif +#if CC_SURFACES_TRANSFER_LOCAL_POS + out highp vec4 v_localPos; +#endif +#if CC_SURFACES_TRANSFER_CLIP_POS + out highp vec4 v_clipPos; +#endif +#if CC_USE_LIGHT_PROBE + #if USE_INSTANCING + out mediump vec4 v_sh_linear_const_r; + out mediump vec4 v_sh_linear_const_g; + out mediump vec4 v_sh_linear_const_b; + #endif +#endif +#define VSOutput_worldPos v_worldPos +#define VSOutput_worldNormal v_normal.xyz +#define VSOutput_faceSideSign v_normal.w +#define VSOutput_texcoord v_uv +#if CC_SURFACES_USE_VERTEX_COLOR + #define VSOutput_vertexColor v_color +#endif +#if CC_SURFACES_USE_TANGENT_SPACE + #define VSOutput_worldTangent v_tangent.xyz + #define VSOutput_mirrorNormal v_tangent.w +#endif +#if CC_SURFACES_USE_SECOND_UV + #define VSOutput_texcoord1 v_uv1 +#endif +#if CC_USE_LIGHTMAP && !CC_FORWARD_ADD + #define VSOutput_lightMapUV v_luv +#endif +#if CC_RECEIVE_SHADOW + #define VSOutput_shadowBias v_shadowBiasAndProbeId.xy +#endif +#if CC_USE_REFLECTION_PROBE + #define VSOutput_reflectionProbeId v_shadowBiasAndProbeId.z + #if CC_USE_REFLECTION_PROBE == REFLECTION_PROBE_TYPE_BLEND || CC_USE_REFLECTION_PROBE == REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX + #define VSOutput_reflectionProbeBlendId v_shadowBiasAndProbeId.w + #endif + #if USE_INSTANCING + #define VSOutput_reflectionProbeData v_reflectionProbeData + #endif +#endif +#if CC_USE_FOG ! = 4 && !CC_USE_ACCURATE_FOG + #define VSOutput_fogFactor v_fogFactor +#endif +#if CC_SURFACES_TRANSFER_LOCAL_POS + #define VSOutput_localPos v_localPos +#endif +#if CC_SURFACES_TRANSFER_CLIP_POS + #define VSOutput_clipPos v_clipPos +#endif +struct SurfacesStandardVertexIntermediate { + highp vec4 position; + vec3 normal; + #if CC_SURFACES_USE_TANGENT_SPACE + vec4 tangent; + #endif + #if CC_SURFACES_USE_VERTEX_COLOR + vec4 color; + #endif + vec2 texCoord; + #if CC_SURFACES_USE_SECOND_UV + vec2 texCoord1; + #endif + highp vec4 clipPos; + highp vec3 worldPos; + vec4 worldNormal; + #if CC_SURFACES_USE_TANGENT_SPACE + vec3 worldTangent, worldBinormal; + #endif + #if CC_RECEIVE_SHADOW || CC_USE_REFLECTION_PROBE + vec4 shadowBiasAndProbeId; + #endif + #if CC_USE_FOG ! = 4 && !CC_USE_ACCURATE_FOG + float fogFactor; + #endif + #if CC_USE_LIGHTMAP && !CC_FORWARD_ADD + vec3 lightmapUV; + #endif +}; +#if CC_USE_MORPH + int getVertexId() { + return int(a_vertexId); + } +#endif +layout(std140) uniform CCGlobal { + highp vec4 cc_time; + mediump vec4 cc_screenSize; + mediump vec4 cc_nativeSize; + mediump vec4 cc_probeInfo; + mediump vec4 cc_debug_view_mode; +}; +layout(std140) uniform CCCamera { + highp mat4 cc_matView; + highp mat4 cc_matViewInv; + highp mat4 cc_matProj; + highp mat4 cc_matProjInv; + highp mat4 cc_matViewProj; + highp mat4 cc_matViewProjInv; + highp vec4 cc_cameraPos; + mediump vec4 cc_surfaceTransform; + mediump vec4 cc_screenScale; + mediump vec4 cc_exposure; + mediump vec4 cc_mainLitDir; + mediump vec4 cc_mainLitColor; + mediump vec4 cc_ambientSky; + mediump vec4 cc_ambientGround; + mediump vec4 cc_fogColor; + mediump vec4 cc_fogBase; + mediump vec4 cc_fogAdd; + mediump vec4 cc_nearFar; + mediump vec4 cc_viewPort; +}; +layout(std140) uniform CCShadow { + highp mat4 cc_matLightView; + highp mat4 cc_matLightViewProj; + highp vec4 cc_shadowInvProjDepthInfo; + highp vec4 cc_shadowProjDepthInfo; + highp vec4 cc_shadowProjInfo; + mediump vec4 cc_shadowNFLSInfo; + mediump vec4 cc_shadowWHPBInfo; + mediump vec4 cc_shadowLPNNInfo; + lowp vec4 cc_shadowColor; + mediump vec4 cc_planarNDInfo; +}; +highp float decode32 (highp vec4 rgba) { + rgba = rgba * 255.0; + highp float Sign = 1.0 - (step(128.0, (rgba[3]) + 0.5)) * 2.0; + highp float Exponent = 2.0 * (mod(float(int((rgba[3]) + 0.5)), 128.0)) + (step(128.0, (rgba[2]) + 0.5)) - 127.0; + highp float Mantissa = (mod(float(int((rgba[2]) + 0.5)), 128.0)) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0; + return Sign * exp2(Exponent - 23.0) * Mantissa; +} +#if !USE_INSTANCING + #if !CC_USE_GPU_DRIVEN + layout(std140) uniform CCLocal { + highp mat4 cc_matWorld; + highp mat4 cc_matWorldIT; + highp vec4 cc_lightingMapUVParam; + highp vec4 cc_localShadowBias; + highp vec4 cc_reflectionProbeData1; + highp vec4 cc_reflectionProbeData2; + highp vec4 cc_reflectionProbeBlendData1; + highp vec4 cc_reflectionProbeBlendData2; + }; + #endif +#endif +#if CC_USE_GPU_DRIVEN + struct ObjectData { + mat4 matWorld; + mat4 matWorldIT; + vec4 center; + vec4 halfExtents; + vec4 lightingMapUVParam; + vec4 localShadowBias; + }; + struct InstanceData { + uint objectId; + uint batchId; + }; + layout(std430) readonly buffer cc_objectBuffer { + ObjectData cc_objects[]; + }; + layout(std430) readonly buffer cc_instanceBuffer { + InstanceData cc_instances[]; + }; +#endif +#if CC_USE_GPU_DRIVEN + #ifdef VULKAN + #define cc_InstanceIndex gl_InstanceIndex + #else + #define cc_InstanceIndex gl_InstanceID + #endif + mat4 CCGetWorld() { + uint objectId = cc_instances[cc_InstanceIndex].objectId; + return cc_objects[objectId].matWorld; + } + mat4 CCGetWorldIT() { + uint objectId = cc_instances[cc_InstanceIndex].objectId; + return cc_objects[objectId].matWorldIT; + } +#endif +void CCGetWorldMatrixFull(out mat4 matWorld, out mat4 matWorldIT) { + #if CC_USE_GPU_DRIVEN + matWorld = CCGetWorld(); + matWorldIT = CCGetWorldIT(); + #elif USE_INSTANCING + matWorld = mat4( + vec4(a_matWorld0.xyz, 0.0), vec4(a_matWorld1.xyz, 0.0), vec4(a_matWorld2.xyz, 0.0), vec4(a_matWorld0.w, a_matWorld1.w, a_matWorld2.w, 1.0) + ); + vec3 scale = 1.0 / vec3(length(a_matWorld0.xyz), length(a_matWorld1.xyz), length(a_matWorld2.xyz)); + vec3 scale2 = scale * scale; + matWorldIT = mat4( + vec4(a_matWorld0.xyz * scale2.x, 0.0), vec4(a_matWorld1.xyz * scale2.y, 0.0), vec4(a_matWorld2.xyz * scale2.z, 0.0), vec4(0.0, 0.0, 0.0, 1.0) + ); + #else + matWorld = cc_matWorld; + matWorldIT = cc_matWorldIT; + #endif +} +#if CC_USE_MORPH + layout(std140) uniform CCMorph { + vec4 cc_displacementWeights[15]; + vec4 cc_displacementTextureInfo; + }; + #if CC_MORPH_TARGET_HAS_POSITION + uniform sampler2D cc_PositionDisplacements; + #endif + #if CC_MORPH_TARGET_HAS_NORMAL + uniform sampler2D cc_NormalDisplacements; + #endif + #if CC_MORPH_TARGET_HAS_TANGENT + uniform sampler2D cc_TangentDisplacements; + #endif + vec2 getPixelLocation(vec2 textureResolution, int pixelIndex) { + float pixelIndexF = float(pixelIndex); + float x = mod(pixelIndexF, textureResolution.x); + float y = floor(pixelIndexF / textureResolution.x); + return vec2(x, y); + } + vec2 getPixelCoordFromLocation(vec2 location, vec2 textureResolution) { + return (vec2(location.x, location.y) + .5) / textureResolution; + } + #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE + vec4 fetchVec3ArrayFromTexture(sampler2D tex, int pixelIndex) { + ivec2 texSize = textureSize(tex, 0); + return texelFetch(tex, ivec2(pixelIndex % texSize.x, pixelIndex / texSize.x), 0); + } + #else + vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) { + int pixelIndex = elementIndex * 4; + vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex); + vec2 x = getPixelCoordFromLocation(location + vec2(0.0, 0.0), cc_displacementTextureInfo.xy); + vec2 y = getPixelCoordFromLocation(location + vec2(1.0, 0.0), cc_displacementTextureInfo.xy); + vec2 z = getPixelCoordFromLocation(location + vec2(2.0, 0.0), cc_displacementTextureInfo.xy); + return vec4( + decode32(texture(tex, x)), decode32(texture(tex, y)), decode32(texture(tex, z)), 1.0 + ); + } + #endif + float getDisplacementWeight(int index) { + int quot = index / 4; + int remainder = index - quot * 4; + if (remainder == 0) { + return cc_displacementWeights[quot].x; + } + else if (remainder == 1) { + return cc_displacementWeights[quot].y; + } + else if (remainder == 2) { + return cc_displacementWeights[quot].z; + } + else { + return cc_displacementWeights[quot].w; + } + + } + vec3 getVec3DisplacementFromTexture(sampler2D tex, int vertexIndex) { + #if CC_MORPH_PRECOMPUTED + return fetchVec3ArrayFromTexture(tex, vertexIndex).rgb; + #else + vec3 result = vec3(0, 0, 0); + int nVertices = int(cc_displacementTextureInfo.z); + for (int iTarget = 0; iTarget < CC_MORPH_TARGET_COUNT; ++iTarget) { + result += (fetchVec3ArrayFromTexture(tex, nVertices * iTarget + vertexIndex).rgb * getDisplacementWeight(iTarget)); + } + return result; + #endif + } + #if CC_MORPH_TARGET_HAS_POSITION + vec3 getPositionDisplacement(int vertexId) { + return getVec3DisplacementFromTexture(cc_PositionDisplacements, vertexId); + } + #endif + #if CC_MORPH_TARGET_HAS_NORMAL + vec3 getNormalDisplacement(int vertexId) { + return getVec3DisplacementFromTexture(cc_NormalDisplacements, vertexId); + } + #endif + #if CC_MORPH_TARGET_HAS_TANGENT + vec3 getTangentDisplacement(int vertexId) { + return getVec3DisplacementFromTexture(cc_TangentDisplacements, vertexId); + } + #endif + void applyMorph (inout vec4 position, inout vec3 normal, inout vec4 tangent) { + int vertexId = getVertexId(); + #if CC_MORPH_TARGET_HAS_POSITION + position.xyz = position.xyz + getPositionDisplacement(vertexId); + #endif + #if CC_MORPH_TARGET_HAS_NORMAL + normal.xyz = normal.xyz + getNormalDisplacement(vertexId); + #endif + #if CC_MORPH_TARGET_HAS_TANGENT + tangent.xyz = tangent.xyz + getTangentDisplacement(vertexId); + #endif + } + void applyMorph (inout vec4 position) { + #if CC_MORPH_TARGET_HAS_POSITION + position.xyz = position.xyz + getPositionDisplacement(getVertexId()); + #endif + } +#endif +#if CC_USE_SKINNING + #if CC_USE_BAKED_ANIMATION + layout(std140) uniform CCSkinningTexture { + highp vec4 cc_jointTextureInfo; + }; + layout(std140) uniform CCSkinningAnimation { + highp vec4 cc_jointAnimInfo; + }; + uniform highp sampler2D cc_jointTexture; + void CCGetJointTextureCoords(float pixelsPerJoint, float jointIdx, out highp float x, out highp float y, out highp float invSize) { + #if USE_INSTANCING + highp float temp = pixelsPerJoint * (a_jointAnimInfo.x * a_jointAnimInfo.y + jointIdx) + a_jointAnimInfo.z; + #else + highp float temp = pixelsPerJoint * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + jointIdx) + cc_jointTextureInfo.z; + #endif + invSize = cc_jointTextureInfo.w; + highp float tempY = floor(temp * invSize); + x = floor(temp - tempY * cc_jointTextureInfo.x); + y = (tempY + 0.5) * invSize; + } + #else + #if CC_USE_REAL_TIME_JOINT_TEXTURE + uniform highp sampler2D cc_realtimeJoint; + #else + layout(std140) uniform CCSkinning { + highp vec4 cc_joints[CC_JOINT_UNIFORM_CAPACITY * 3]; + }; + #endif + #endif + #if CC_USE_BAKED_ANIMATION + #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE + mat4 getJointMatrix (float i) { + highp float x, y, invSize; + CCGetJointTextureCoords(3.0, i, x, y, invSize); + vec4 v1 = texture(cc_jointTexture, vec2((x + 0.5) * invSize, y)); + vec4 v2 = texture(cc_jointTexture, vec2((x + 1.5) * invSize, y)); + vec4 v3 = texture(cc_jointTexture, vec2((x + 2.5) * invSize, y)); + return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0)); + } + #else + mat4 getJointMatrix (float i) { + highp float x, y, invSize; + CCGetJointTextureCoords(12.0, i, x, y, invSize); + vec4 v1 = vec4( + decode32(texture(cc_jointTexture, vec2((x + 0.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 1.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 2.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 3.5) * invSize, y))) + ); + vec4 v2 = vec4( + decode32(texture(cc_jointTexture, vec2((x + 4.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 5.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 6.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 7.5) * invSize, y))) + ); + vec4 v3 = vec4( + decode32(texture(cc_jointTexture, vec2((x + 8.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 9.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 10.5) * invSize, y))), decode32(texture(cc_jointTexture, vec2((x + 11.5) * invSize, y))) + ); + return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0)); + } + #endif + #else + #if CC_USE_REAL_TIME_JOINT_TEXTURE + #if CC_DEVICE_SUPPORT_FLOAT_TEXTURE + mat4 getJointMatrix (float i) { + float x = i; + vec4 v1 = texture(cc_realtimeJoint, vec2( x / 256.0, 0.5 / 3.0)); + vec4 v2 = texture(cc_realtimeJoint, vec2( x / 256.0, 1.5 / 3.0)); + vec4 v3 = texture(cc_realtimeJoint, vec2( x / 256.0, 2.5 / 3.0)); + return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0)); + } + #else + mat4 getJointMatrix (float i) { + float x = 4.0 * i; + vec4 v1 = vec4( + decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 0.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 0.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 0.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 0.5 / 3.0))) + ); + vec4 v2 = vec4( + decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 1.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 1.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 1.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 1.5 / 3.0))) + ); + vec4 v3 = vec4( + decode32(texture(cc_realtimeJoint, vec2((x + 0.5)/ 1024.0, 2.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 1.5)/ 1024.0, 2.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 2.5)/ 1024.0, 2.5 / 3.0))), decode32(texture(cc_realtimeJoint, vec2((x + 3.5)/ 1024.0, 2.5 / 3.0))) + ); + return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0)); + } + #endif + #else + mat4 getJointMatrix (float i) { + int idx = int(i); + vec4 v1 = cc_joints[idx * 3]; + vec4 v2 = cc_joints[idx * 3 + 1]; + vec4 v3 = cc_joints[idx * 3 + 2]; + return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0)); + } + #endif + #endif + mat4 skinMatrix () { + vec4 joints = vec4(a_joints); + return getJointMatrix(joints.x) * a_weights.x + + getJointMatrix(joints.y) * a_weights.y + + getJointMatrix(joints.z) * a_weights.z + + getJointMatrix(joints.w) * a_weights.w; + } + void CCSkin (inout vec4 position) { + mat4 m = skinMatrix(); + position = m * position; + } + void CCSkin (inout vec4 position, inout vec3 normal, inout vec4 tangent) { + mat4 m = skinMatrix(); + position = m * position; + normal = (m * vec4(normal, 0.0)).xyz; + tangent.xyz = (m * vec4(tangent.xyz, 0.0)).xyz; + } +#endif +#if CC_USE_FOG ! = 4 && !CC_USE_ACCURATE_FOG + #if CC_USE_FOG ! = 4 + #endif +#endif +layout(std140) uniform Constants { + vec4 tilingOffset; + vec4 albedo; + vec4 albedoScaleAndCutoff; + vec4 pbrParams; + vec4 emissive; + vec4 emissiveScaleParam; + vec4 anisotropyParam; +}; +#define CC_SURFACES_VERTEX_MODIFY_SHADOW_BIAS +#define CC_SURFACES_VERTEX_MODIFY_UV +void SurfacesVertexModifyUV(inout SurfacesStandardVertexIntermediate In) { + In.texCoord = In.texCoord * tilingOffset.xy + tilingOffset.zw; + #if CC_SURFACES_USE_SECOND_UV + In.texCoord1 = In.texCoord1 * tilingOffset.xy + tilingOffset.zw; + #endif +} +#ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_POS + vec3 SurfacesVertexModifyLocalPos(in SurfacesStandardVertexIntermediate In) { + return vec3(In.position.xyz); + } +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_NORMAL +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_TANGENT + #if CC_SURFACES_USE_TANGENT_SPACE + #endif +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_LOCAL_SHARED_DATA + void SurfacesVertexModifyLocalSharedData(inout SurfacesStandardVertexIntermediate In) { + + } +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_WORLD_POS + vec3 SurfacesVertexModifyWorldPos(in SurfacesStandardVertexIntermediate In) { + return In.worldPos; + } +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_CLIP_POS + vec4 SurfacesVertexModifyClipPos(in SurfacesStandardVertexIntermediate In) { + return In.clipPos; + } +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_UV + void SurfacesVertexModifyUV(inout SurfacesStandardVertexIntermediate In) { + + } +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_WORLD_NORMAL +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_SHADOW_BIAS +#endif +#ifndef CC_SURFACES_VERTEX_MODIFY_SHARED_DATA + void SurfacesVertexModifySharedData(inout SurfacesStandardVertexIntermediate In) { + + } +#endif +void CCSurfacesVertexInput(out SurfacesStandardVertexIntermediate In) { + In.position = vec4(a_position, 1.0); + In.normal = a_normal; + #if CC_SURFACES_USE_TANGENT_SPACE + In.tangent = a_tangent; + #endif + #if CC_SURFACES_USE_VERTEX_COLOR + In.color = a_color; + #endif + In.texCoord = a_texCoord; + #if CC_SURFACES_USE_SECOND_UV + In.texCoord1 = a_texCoord1; + #endif +} +void CCSurfacesVertexOutput(in SurfacesStandardVertexIntermediate In) { + gl_Position = In.clipPos; + VSOutput_worldNormal = In.worldNormal.xyz; + VSOutput_faceSideSign = In.worldNormal.w; + VSOutput_worldPos = In.worldPos; + #if CC_SURFACES_USE_TANGENT_SPACE + VSOutput_worldTangent = In.worldTangent.xyz; + VSOutput_mirrorNormal = In.tangent.w > 0.0 ? 1.0 : -1.0; + #endif + #if CC_SURFACES_USE_VERTEX_COLOR + VSOutput_vertexColor = In.color; + #endif + VSOutput_texcoord = In.texCoord; + #if CC_SURFACES_USE_SECOND_UV + VSOutput_texcoord1 = In.texCoord1; + #endif + #if CC_USE_FOG ! = 4 && !CC_USE_ACCURATE_FOG + VSOutput_fogFactor = In.fogFactor; + #endif + #if CC_RECEIVE_SHADOW + VSOutput_shadowBias = In.shadowBiasAndProbeId.xy; + #endif + #if CC_USE_REFLECTION_PROBE + VSOutput_reflectionProbeId = In.shadowBiasAndProbeId.z; + #if CC_USE_REFLECTION_PROBE == REFLECTION_PROBE_TYPE_BLEND || CC_USE_REFLECTION_PROBE == REFLECTION_PROBE_TYPE_BLEND_AND_SKYBOX + VSOutput_reflectionProbeBlendId = In.shadowBiasAndProbeId.w; + #endif + #if USE_INSTANCING + v_reflectionProbeData = a_reflectionProbeData; + #endif + #endif + #if CC_USE_LIGHTMAP && !CC_FORWARD_ADD + VSOutput_lightMapUV = In.lightmapUV; + #endif + #if CC_SURFACES_TRANSFER_LOCAL_POS + VSOutput_localPos = In.position; + #endif + #if CC_SURFACES_TRANSFER_CLIP_POS + VSOutput_clipPos = In.clipPos; + #endif + #if CC_USE_LIGHT_PROBE + #if USE_INSTANCING + v_sh_linear_const_r = a_sh_linear_const_r; + v_sh_linear_const_g = a_sh_linear_const_g; + v_sh_linear_const_b = a_sh_linear_const_b; + #endif + #endif +} +void CCSurfacesVertexAnimation(inout SurfacesStandardVertexIntermediate In) { + vec4 temp = vec4(0.0); + #if CC_USE_MORPH + #if CC_SURFACES_USE_TANGENT_SPACE + applyMorph(In.position, In.normal, In.tangent); + #else + applyMorph(In.position, In.normal, temp); + #endif + #endif + #if CC_USE_SKINNING + #if CC_SURFACES_USE_TANGENT_SPACE + CCSkin(In.position, In.normal, In.tangent); + #else + CCSkin(In.position, In.normal, temp); + #endif + #endif +} +void CCSurfacesVertexWorldTransform(inout SurfacesStandardVertexIntermediate In) { + mat4 matWorld, matWorldIT; + CCGetWorldMatrixFull(matWorld, matWorldIT); + In.worldPos = (matWorld * In.position).xyz; + In.worldNormal.xyz = normalize((matWorldIT * vec4(In.normal.xyz, 0.0)).xyz); + #if CC_SURFACES_USE_TANGENT_SPACE + In.worldTangent = normalize((matWorld * vec4(In.tangent.xyz, 0.0)).xyz); + In.worldBinormal = cross(In.worldNormal.xyz, In.worldTangent) * In.tangent.w; + #endif +} +void CCSurfacesVertexTransformUV(inout SurfacesStandardVertexIntermediate In) { + #if CC_SURFACES_FLIP_UV + In.texCoord = cc_cameraPos.w > 1.0 ? vec2(In.texCoord.x, 1.0 - In.texCoord.y) : In.texCoord; + #if CC_SURFACES_USE_SECOND_UV + In.texCoord1 = cc_cameraPos.w > 1.0 ? vec2(In.texCoord1.x, 1.0 - In.texCoord1.y) : In.texCoord1; + #endif + #endif +} +out highp vec2 v_clip_depth; +void main() { + SurfacesStandardVertexIntermediate In; + CCSurfacesVertexInput(In); + CCSurfacesVertexAnimation(In); + In.position.xyz = SurfacesVertexModifyLocalPos(In); + SurfacesVertexModifyLocalSharedData(In); + CCSurfacesVertexWorldTransform(In); + In.worldPos = SurfacesVertexModifyWorldPos(In); + In.clipPos = cc_matLightViewProj * vec4(In.worldPos, 1.0); + In.clipPos = SurfacesVertexModifyClipPos(In); + SurfacesVertexModifyUV(In); + SurfacesVertexModifySharedData(In); + CCSurfacesVertexTransformUV(In); + CCSurfacesVertexOutput(In); + v_clip_depth = In.clipPos.zw; +} \ No newline at end of file diff --git a/extensions/shader-graph/static/asset-icon.png b/extensions/shader-graph/static/asset-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b1c3a59d85283bd8f07eb2af26de3366ca674e GIT binary patch literal 493 zcmVPx$r%6OXR9HvtmoZPmP!PxO+JXrbF;Pl%a&Um+!0rHk30L(4n7BCtU%@XRyNQb* zfI7H1IGFG-Iuo=c)}%FIke(@|hVUBTHDXO{mkxb*_j~_$_wI@i@q-b^2VnraSE!CfL96L z8)d0Q1PyRqLr%EQsg0-ZuK@TEK0qeVctsW@5v~H?@Ay6#D-Z+33jCM?&P(wWBs>Iw z@`6b$vE(;7RN2C!fCIwJ5> z@r;4QHuZA^IN>)#20Err!6iqAs&z(cOg>>ovRO7UK=cZXlZq(#rk zfZ~VR2N)wlb9!I$MQFcNubATUYUkuDtIxAYFy9JKie=P{lf*$lsmd2HP} zX8B$T-^*Cjyf%pW#x2et!42Ej<+IlJW;RW#-F3)YAZ^mdKI;Vst0Jz&^Qvd(} literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/static/shader-graph/create-node.less b/extensions/shader-graph/static/shader-graph/create-node.less new file mode 100644 index 0000000..ec45559 --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/create-node.less @@ -0,0 +1,47 @@ +.create-node { + box-shadow: rgb(63 63 63 / 30%) 0px 0px 10px 2px; + + display: flex; + + .header { + display: flex; + align-items: center; + background-color: #141414; + width: 100%; + height: 25px; + } + + .title-label { + margin-left: 8px; + } + + .close { + position: absolute; + right: 8px; + cursor: pointer; + } + + .section { + height: 100%; + display: flex; + flex-direction: column; + overflow-y: auto; + padding: 4px; + } + + .search-group { + display: flex; + .icon { + margin-left: 4px; + margin-right: 4px; + } + .input { + flex: 1; + margin-right: 4px; + } + } + + .menus { + height: 100%; + } +} diff --git a/extensions/shader-graph/static/shader-graph/float-window.less b/extensions/shader-graph/static/shader-graph/float-window.less new file mode 100644 index 0000000..f4fc9b8 --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/float-window.less @@ -0,0 +1,160 @@ +.float-window { + position: absolute; + pointer-events: auto; + background-color: #2B2B2B; + box-sizing: content-box; + display: flex; + flex-direction: column; + user-select: none; + border-radius: 2px; + + --point-width: 4px; + --point-height: 4px; + --point-position: absolute; + --point-background-color: #fffa00; + --point-cursor-tl: nwse-resize; + --point-cursor-lb: nesw-resize; + + --line-width: 100%; + --line-width-4: 4px; + --line-height: 100%; + --line-height-4: 4px; + --line-position: absolute; + --line-opacity: 0; + --line-background-color: #7882ff; + --line-cursor-lr: ew-resize; + --line-cursor-tb: ns-resize; + + &[hidden] { + display: none; + } + + .header { + display: flex; + align-items: center; + background-color: #141414; + width: 100%; + height: 25px; + + .hide-button { + position: absolute; + right: 5px; + color: #8F8F8F; + cursor: pointer; + } + .hide-button:hover { + color: #cccccc; + } + + .title { + display: flex; + line-height: 25px; + height: 25px; + padding-left: 16px; + padding-right: 16px; + background-color: #2B2B2B; + justify-content: space-between; + color: #cccccc; + } + } + + .top { + width: var(--line-width); + height: var(--line-height-4); + cursor: var(--line-cursor-tb); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + + top: 0; + } + + .bottom { + width: var(--line-width); + height: var(--line-height-4); + cursor: var(--line-cursor-tb); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + + bottom: 0; + } + + .left { + width: var(--line-width-4); + height: var(--line-height); + cursor: var(--line-cursor-lr); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + + left: 0; + } + + .right { + width: var(--line-width-4); + height: var(--line-height); + cursor: var(--line-cursor-lr); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + + right: 0; + } + + .top-left { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-tl); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + + top: 0; + left: 0; + } + + .top-right { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-lb); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + + top: 0; + right: 0; + } + + .bottom-left { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-lb); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + + bottom: 0; + left: 0; + } + + .bottom-right { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-tl); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + + bottom: 0; + right: 0; + } + + .section { + + } +} + +@import './graph-property.less'; +@import './create-node.less'; +@import './preview.less'; diff --git a/extensions/shader-graph/static/shader-graph/graph-property.less b/extensions/shader-graph/static/shader-graph/graph-property.less new file mode 100644 index 0000000..2d8b2ca --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/graph-property.less @@ -0,0 +1,133 @@ +.graph-property { + + .input { + color: white; + } + + .section { + display: flex; + flex-direction: column; + overflow-y: auto; + padding: 4px; + } + + .property-title { + display: flex; + flex-direction: row; + padding: 2px 0 2px 8px; + + .name { + flex: 1; + font-size: 12px; + color: var(--color-normal-contrast-emphasis); + } + + .add { + cursor: pointer; + padding: 0 6px; + font-size: 12px; + + &:hover { + color: var(--color-primary-contrast-emphasis); + } + } + } + + .property-contents { + overflow-y: auto; + + .item { + display: flex; + padding: 2px; + + .prop { + flex: 1; + --left-width: 150px; + width: ceil(100% - 30px); + .input { + height: 22px; + } + + .label { + border: 1px solid black; + border-radius: 4px; + background-color: black; + width: 100%; + user-select: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + display: flex; + + .name { + padding-left: 2px; + text-overflow: ellipsis; + } + + .key { + font-size: 8px; + padding-left: 2px; + } + + &:hover { + border-color: var(--color-focus-fill-emphasis); + } + } + + .content { + display: flex; + + ui-prop { + flex: 1; + } + } + } + + .delete { + width: 20px; + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + + .icon { + &:hover { + background-color: var(--color-hover-fill-normal); + } + } + } + } + } + + .property-menu { + position: absolute; + top: 45px; + right: 4px; + z-index: 2; + background-color: var(--color-normal-fill-important); + border: 1px solid var(--color-border-weak); + border-radius: 4px; + padding: 2px; + + .option { + display: block; + padding: 0 12px; + border-radius: 2px; + margin: 2px; + cursor: default; + + &:hover { + background-color: var(--color-hover-fill-normal); + } + } + } + + .loading { + position: absolute; + display: flex; + align-items: center; + top: 25px; + width: 100%; + height: calc(100% - 25px); + justify-content: center; + } +} diff --git a/extensions/shader-graph/static/shader-graph/index.html b/extensions/shader-graph/static/shader-graph/index.html new file mode 100644 index 0000000..efdaa23 --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/index.html @@ -0,0 +1,94 @@ +

diff --git a/extensions/shader-graph/static/shader-graph/preview.less b/extensions/shader-graph/static/shader-graph/preview.less new file mode 100644 index 0000000..0061117 --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/preview.less @@ -0,0 +1,107 @@ +.preview { + display: flex; + flex-wrap: nowrap; + flex-direction: column; + + .header { + display: flex; + align-items: center; + background-color: #141414; + width: 100%; + height: 25px; + } + + .title-label { + margin-left: 8px; + } + + .section { + flex: 1; + min-height: 0; + box-sizing: border-box; + display: flex; + justify-content: center; + flex-direction: row; + height: 100%; + width: 100%; + } + + .section > canvas { + + } + + .section > .loading { + position: absolute; + display: flex; + align-items: center; + top: 25px; + width: 100%; + height: calc(100% - 25px); + justify-content: center; + } + + .section > .tools { + position: absolute; + display: flex; + flex-direction: row; + justify-content: center; + flex-wrap: nowrap; + align-content: center; + align-items: center; + right: 20px; + top: 28px; + + .refresh { + opacity: 0.3; + margin-left: 2px; + margin-right: 2px; + } + .refresh:hover { + opacity: 1; + } + + .light { + opacity: 0.3; + margin-left: 2px; + margin-right: 2px; + --ui-button-bg-color-pressed: rgba(255, 255, 255, 0); + } + .light[pressed] { + opacity: 1; + color: white; + } + .light:hover { + opacity: 1; + } + } + + .section > .primitive-group { + position: absolute; + bottom: 6px; + left: 25px; + display: flex; + justify-content: flex-start; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + width: 100%; + + ui-label { + width: 50px; + } + + ui-asset { + width: calc(100% - 100px); + } + } + + .close { + position: absolute; + right: 5px; + color: #8F8F8F; + cursor: pointer; + } + .close:hover { + color: #cccccc; + } +} diff --git a/extensions/shader-graph/static/shader-graph/style.css b/extensions/shader-graph/static/shader-graph/style.css new file mode 100644 index 0000000..b50c6ff --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/style.css @@ -0,0 +1,487 @@ +#shader-graph { + height: 100%; + display: flex; + flex-direction: column; +} +#shader-graph ui-link { + margin-left: 2px; + margin-right: 2px; +} +#shader-graph ui-graph-forge { + flex: 1; + background-color: #222; +} +#shader-graph .foreground { + overflow: hidden; + position: absolute; + z-index: 998; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +#shader-graph .foreground .drag-area { + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; +} +#shader-graph .foreground .drag-area[disallowed-event] { + pointer-events: none; +} +#shader-graph .foreground[disallowed-event] { + pointer-events: none; +} +#shader-graph .mask[show] { + opacity: 1; +} +#shader-graph .mask { + position: absolute; + z-index: 999; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + opacity: 0; +} +#shader-graph .mask .mask-child { + display: flex; + z-index: 999; + width: 100%; + height: 100%; + text-align: center; + align-items: center; + justify-content: center; + background-color: rgba(2, 2, 2, 0.9); + pointer-events: auto; +} +#shader-graph .mask .mask-child .button { + margin: 2px; + width: 100px; + height: 24px; + border: 1px solid; + border-radius: 4px; + line-height: 24px; +} +#shader-graph .mask .mask-child .button:hover { + border: 1px solid var(--color-success-fill); + color: var(--color-success-fill-emphasis); +} +#shader-graph .mask .mask-child .asset-missing { + display: flex; + align-items: center; +} +#shader-graph .mask .mask-child .need-create-new-asset { + display: flex; + align-items: center; +} +#shader-graph .mask .mask-child .asset-change { + display: flex; + align-items: center; +} +#shader-graph .mask .mask-child .button-group-horizontal { + padding: 4px; + display: flex; + flex-direction: row; + align-items: stretch; +} +#shader-graph .mask .mask-child .button-group-vertical { + padding: 4px; + display: flex; + flex-direction: column; + align-items: stretch; +} +#shader-graph .right-tabs { + position: absolute; + width: 28px; + z-index: 999; + top: 28px; + right: 1px; + display: flex; + flex-wrap: wrap; + background-color: #1F1F1F; + box-shadow: inset 0 0 1px #2b2b2b; +} +#shader-graph .right-tabs .tab { + width: 28px; + height: 115px; + writing-mode: tb; + text-align: center; + padding: 2px; + cursor: pointer; +} +#shader-graph .right-tabs .tab[pressed] { + background-color: #2B2B2B; +} +.float-window { + position: absolute; + pointer-events: auto; + background-color: #2B2B2B; + box-sizing: content-box; + display: flex; + flex-direction: column; + user-select: none; + border-radius: 2px; + --point-width: 4px; + --point-height: 4px; + --point-position: absolute; + --point-background-color: #fffa00; + --point-cursor-tl: nwse-resize; + --point-cursor-lb: nesw-resize; + --line-width: 100%; + --line-width-4: 4px; + --line-height: 100%; + --line-height-4: 4px; + --line-position: absolute; + --line-opacity: 0; + --line-background-color: #7882ff; + --line-cursor-lr: ew-resize; + --line-cursor-tb: ns-resize; +} +.float-window[hidden] { + display: none; +} +.float-window .header { + display: flex; + align-items: center; + background-color: #141414; + width: 100%; + height: 25px; +} +.float-window .header .hide-button { + position: absolute; + right: 5px; + color: #8F8F8F; + cursor: pointer; +} +.float-window .header .hide-button:hover { + color: #cccccc; +} +.float-window .header .title { + display: flex; + line-height: 25px; + height: 25px; + padding-left: 16px; + padding-right: 16px; + background-color: #2B2B2B; + justify-content: space-between; + color: #cccccc; +} +.float-window .top { + width: var(--line-width); + height: var(--line-height-4); + cursor: var(--line-cursor-tb); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + top: 0; +} +.float-window .bottom { + width: var(--line-width); + height: var(--line-height-4); + cursor: var(--line-cursor-tb); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + bottom: 0; +} +.float-window .left { + width: var(--line-width-4); + height: var(--line-height); + cursor: var(--line-cursor-lr); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + left: 0; +} +.float-window .right { + width: var(--line-width-4); + height: var(--line-height); + cursor: var(--line-cursor-lr); + position: var(--line-position); + background-color: var(--line-background-color); + opacity: var(--line-opacity); + right: 0; +} +.float-window .top-left { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-tl); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + top: 0; + left: 0; +} +.float-window .top-right { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-lb); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + top: 0; + right: 0; +} +.float-window .bottom-left { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-lb); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + bottom: 0; + left: 0; +} +.float-window .bottom-right { + width: var(--point-width); + height: var(--point-height); + cursor: var(--point-cursor-tl); + position: var(--point-position); + background-color: var(--point-background-color); + opacity: var(--line-opacity); + bottom: 0; + right: 0; +} +.graph-property .input { + color: white; +} +.graph-property .section { + display: flex; + flex-direction: column; + overflow-y: auto; + padding: 4px; +} +.graph-property .property-title { + display: flex; + flex-direction: row; + padding: 2px 0 2px 8px; +} +.graph-property .property-title .name { + flex: 1; + font-size: 12px; + color: var(--color-normal-contrast-emphasis); +} +.graph-property .property-title .add { + cursor: pointer; + padding: 0 6px; + font-size: 12px; +} +.graph-property .property-title .add:hover { + color: var(--color-primary-contrast-emphasis); +} +.graph-property .property-contents { + overflow-y: auto; +} +.graph-property .property-contents .item { + display: flex; + padding: 2px; +} +.graph-property .property-contents .item .prop { + flex: 1; + --left-width: 150px; + width: 70%; +} +.graph-property .property-contents .item .prop .input { + height: 22px; +} +.graph-property .property-contents .item .prop .label { + border: 1px solid black; + border-radius: 4px; + background-color: black; + width: 100%; + user-select: none; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; + display: flex; +} +.graph-property .property-contents .item .prop .label .name { + padding-left: 2px; + text-overflow: ellipsis; +} +.graph-property .property-contents .item .prop .label .key { + font-size: 8px; + padding-left: 2px; +} +.graph-property .property-contents .item .prop .label:hover { + border-color: var(--color-focus-fill-emphasis); +} +.graph-property .property-contents .item .prop .content { + display: flex; +} +.graph-property .property-contents .item .prop .content ui-prop { + flex: 1; +} +.graph-property .property-contents .item .delete { + width: 20px; + cursor: pointer; + padding-left: 2px; + padding-right: 2px; +} +.graph-property .property-contents .item .delete .icon:hover { + background-color: var(--color-hover-fill-normal); +} +.graph-property .property-menu { + position: absolute; + top: 45px; + right: 4px; + z-index: 2; + background-color: var(--color-normal-fill-important); + border: 1px solid var(--color-border-weak); + border-radius: 4px; + padding: 2px; +} +.graph-property .property-menu .option { + display: block; + padding: 0 12px; + border-radius: 2px; + margin: 2px; + cursor: default; +} +.graph-property .property-menu .option:hover { + background-color: var(--color-hover-fill-normal); +} +.graph-property .loading { + position: absolute; + display: flex; + align-items: center; + top: 25px; + width: 100%; + height: calc(100% - 25px); + justify-content: center; +} +.create-node { + box-shadow: rgba(63, 63, 63, 0.3) 0px 0px 10px 2px; + display: flex; +} +.create-node .header { + display: flex; + align-items: center; + background-color: #141414; + width: 100%; + height: 25px; +} +.create-node .title-label { + margin-left: 8px; +} +.create-node .close { + position: absolute; + right: 8px; + cursor: pointer; +} +.create-node .section { + height: 100%; + display: flex; + flex-direction: column; + overflow-y: auto; + padding: 4px; +} +.create-node .search-group { + display: flex; +} +.create-node .search-group .icon { + margin-left: 4px; + margin-right: 4px; +} +.create-node .search-group .input { + flex: 1; + margin-right: 4px; +} +.create-node .menus { + height: 100%; +} +.preview { + display: flex; + flex-wrap: nowrap; + flex-direction: column; +} +.preview .header { + display: flex; + align-items: center; + background-color: #141414; + width: 100%; + height: 25px; +} +.preview .title-label { + margin-left: 8px; +} +.preview .section { + flex: 1; + min-height: 0; + box-sizing: border-box; + display: flex; + justify-content: center; + flex-direction: row; + height: 100%; + width: 100%; +} +.preview .section > .loading { + position: absolute; + display: flex; + align-items: center; + top: 25px; + width: 100%; + height: calc(100% - 25px); + justify-content: center; +} +.preview .section > .tools { + position: absolute; + display: flex; + flex-direction: row; + justify-content: center; + flex-wrap: nowrap; + align-content: center; + align-items: center; + right: 20px; + top: 28px; +} +.preview .section > .tools .refresh { + opacity: 0.3; + margin-left: 2px; + margin-right: 2px; +} +.preview .section > .tools .refresh:hover { + opacity: 1; +} +.preview .section > .tools .light { + opacity: 0.3; + margin-left: 2px; + margin-right: 2px; + --ui-button-bg-color-pressed: rgba(255, 255, 255, 0); +} +.preview .section > .tools .light[pressed] { + opacity: 1; + color: white; +} +.preview .section > .tools .light:hover { + opacity: 1; +} +.preview .section > .primitive-group { + position: absolute; + bottom: 6px; + left: 25px; + display: flex; + justify-content: flex-start; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + width: 100%; +} +.preview .section > .primitive-group ui-label { + width: 50px; +} +.preview .section > .primitive-group ui-asset { + width: calc(100% - 100px); +} +.preview .close { + position: absolute; + right: 5px; + color: #8F8F8F; + cursor: pointer; +} +.preview .close:hover { + color: #cccccc; +} diff --git a/extensions/shader-graph/static/shader-graph/style.less b/extensions/shader-graph/static/shader-graph/style.less new file mode 100644 index 0000000..f0e2993 --- /dev/null +++ b/extensions/shader-graph/static/shader-graph/style.less @@ -0,0 +1,139 @@ +#shader-graph { + height: 100%; + display: flex; + flex-direction: column; + + ui-link { + margin-left: 2px; + margin-right: 2px; + } + + ui-graph-forge { + flex: 1; + background-color: #222; + } + + .foreground { + overflow: hidden; + position: absolute; + z-index: 998; + top: 0; + left: 0; + right: 0; + bottom: 0; + + .drag-area { + position: absolute; + top: 0; // graph header 的高度 + left: 0; + right: 0; + bottom: 0; + + &[disallowed-event] { + pointer-events: none; + } + } + + &[disallowed-event] { + pointer-events: none; + } + + } + + .mask[show] { + opacity: 1; + } + + .mask { + position: absolute; + z-index: 999; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + opacity: 0; + + .mask-child { + display: flex; + z-index: 999; + width: 100%; + height: 100%; + text-align: center; + align-items: center; + justify-content: center; + background-color: rgba(2, 2, 2, 0.9); + pointer-events: auto; + //font-size: 16px; + + .button { + margin: 2px; + width: 100px; + height: 24px; + //border: 1px solid var(--color-normal-fill); + border: 1px solid; + border-radius: 4px; + line-height: 24px; + //color: var(--color-normal-fill); + } + .button:hover { + border: 1px solid var(--color-success-fill); + color: var(--color-success-fill-emphasis); + } + + .asset-missing { + display: flex; + align-items: center; + } + + .need-create-new-asset { + display: flex; + align-items: center; + } + + .asset-change { + display: flex; + align-items: center; + } + + .button-group-horizontal { + padding: 4px; + display: flex; + flex-direction: row; + align-items: stretch; + } + .button-group-vertical { + padding: 4px; + display: flex; + flex-direction: column; + align-items: stretch; + } + } + } + + .right-tabs { + position: absolute; + width: 28px; + z-index: 999; + top: 28px; + right: 1px; + display: flex; + flex-wrap: wrap; + background-color: #1F1F1F; + box-shadow: inset 0 0 1px #2b2b2b; + + .tab { + width: 28px; + height: 115px; + writing-mode: tb; + text-align: center; + padding: 2px; + cursor: pointer; + } + .tab[pressed] { + background-color: #2B2B2B; + } + } +} + +@import './float-window.less';

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 UnDI#j_`zdk1~Dx@_vg)j0p5c1YybcN literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/创建后的资源.png b/extensions/shader-graph/readme/创建后的资源.png new file mode 100644 index 0000000000000000000000000000000000000000..b66c9ff1568439694b0656fa639e2b58a9fab186 GIT binary patch literal 30887 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 OmWGP1a)qK**#7`lArqef literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/创建属性窗口.png b/extensions/shader-graph/readme/创建属性窗口.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6696808c69fddf246bdaf8044b32859488a6ed GIT binary patch literal 17835 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 M<$IEGJmS0G0b)C{$p8QV literal 0 HcmV?d00001 diff --git a/extensions/shader-graph/readme/整体结构-EN.png b/extensions/shader-graph/readme/整体结构-EN.png new file mode 100644 index 0000000000000000000000000000000000000000..49846346e22450f63129545cc8d147e7fae22914 GIT binary patch literal 201672 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 z/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