From dea7780c0155849aa7459d9772f72d32920a7ee5 Mon Sep 17 00:00:00 2001 From: SmallMain Date: Fri, 10 Jun 2022 15:08:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E7=89=88=E5=BC=95=E6=93=8E=E6=8F=92?= =?UTF-8?q?=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 42 +++++ .../inspectors/comps/label.js | 129 +++++++++++++++ .../inspectors/comps/richtext.js | 70 ++++++++ .../inspectors/comps/sprite.js | 155 ++++++++++++++++++ extension/service-pack-support/main.js | 3 + extension/service-pack-support/package.json | 16 ++ .../sp/effects/multi-2d-sprite.effect | 114 +++++++++++++ 7 files changed, 529 insertions(+) create mode 100644 .gitignore create mode 100644 extension/service-pack-support/inspectors/comps/label.js create mode 100644 extension/service-pack-support/inspectors/comps/richtext.js create mode 100644 extension/service-pack-support/inspectors/comps/sprite.js create mode 100644 extension/service-pack-support/main.js create mode 100644 extension/service-pack-support/package.json create mode 100644 extension/service-pack-support/resources/sp/effects/multi-2d-sprite.effect diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2cd0c603 --- /dev/null +++ b/.gitignore @@ -0,0 +1,42 @@ +#///////////////////////////////////////////////////////////////////////////// +# npm files +#///////////////////////////////////////////////////////////////////////////// + +npm-debug.log +node_modules/ +package-lock.json + +#///////////////////////////////////////////////////////////////////////////// +# OS generated files +#///////////////////////////////////////////////////////////////////////////// + +.DS_Store +ehthumbs.db +Thumbs.db + +#///////////////////////////////////////////////////////////////////////////// +# WebStorm files +#///////////////////////////////////////////////////////////////////////////// + +.idea/ + +#///////////////////////////////////////////////////////////////////////////// +# VS Code files +#///////////////////////////////////////////////////////////////////////////// + +.vscode/* +!.vscode/settings.json +!.vscode/launch.json +!.vscode/**/*.code-snippets + +#///////////////////////////////////////////////////////////////////////////// +# Temp files +#///////////////////////////////////////////////////////////////////////////// + +temp + +#///////////////////////////////////////////////////////////////////////////// +# 使用 Creator 调试时会为每个脚本生成 .meta 文件 +#///////////////////////////////////////////////////////////////////////////// + +**/*.meta diff --git a/extension/service-pack-support/inspectors/comps/label.js b/extension/service-pack-support/inspectors/comps/label.js new file mode 100644 index 00000000..15e476dc --- /dev/null +++ b/extension/service-pack-support/inspectors/comps/label.js @@ -0,0 +1,129 @@ +"use strict"; +Vue.component("cc-label", { + dependencies: ["packages://inspector/share/blend.js"], + template: ` + + + + + + + :multi-values="multi" + + + + + + + + + + + + + + + + + + + + + + + `, + props: { + target: { + twoWay: !0, + type: Object + }, + multi: { + type: Boolean + } + }, + methods: { + T: Editor.T, + _isBMFont() { + return this.target._bmFontOriginalSize.value > 0 + }, + _isSystemFont() { + return this.target.useSystemFont.value + }, + _hiddenWrapText() { + let t = this.target.overflow.value; + return 0 === t || 3 === t + }, + _hiddenActualFontSize() { + return 2 !== this.target.overflow.value + }, + _isCharCacheMode() { + return 2 === this.target.cacheMode.value + }, + } +}); diff --git a/extension/service-pack-support/inspectors/comps/richtext.js b/extension/service-pack-support/inspectors/comps/richtext.js new file mode 100644 index 00000000..d2328806 --- /dev/null +++ b/extension/service-pack-support/inspectors/comps/richtext.js @@ -0,0 +1,70 @@ +"use strict"; +Vue.component("cc-richtext", { + template: ` + + + + :multi-values="multi" + + + + + + + + + + + + + + + `, + props: { + target: { + twoWay: !0, + type: Object + }, + multi: { + type: Boolean + } + }, + methods: { + T: Editor.T, + _isSystemFont() { + return this.target.useSystemFont.value + } + } +}); diff --git a/extension/service-pack-support/inspectors/comps/sprite.js b/extension/service-pack-support/inspectors/comps/sprite.js new file mode 100644 index 00000000..30b36cf1 --- /dev/null +++ b/extension/service-pack-support/inspectors/comps/sprite.js @@ -0,0 +1,155 @@ +"use strict"; +Vue.component("cc-sprite", { + dependencies: ["packages://inspector/share/blend.js"], + template: ` + + + + {{T('COMPONENT.sprite.select_button')}} + + + + + + + {{T('COMPONENT.sprite.edit_button')}} + + + + + +
+ + + + +
+ + + + + + + + + + `, + props: { + target: { + twoWay: !0, + type: Object + }, + multi: { + twoWay: !0, + type: Boolean + } + }, + data: ()=>({ + atlasUuid: "", + atlasUuids: "", + atlasMulti: !1, + spriteUuid: "", + spriteUuids: "", + spriteMulti: !1 + }), + created() { + this.target && (this._updateAtlas(), + this._updateSprite()) + }, + watch: { + target() { + this._updateAtlas(), + this._updateSprite() + } + }, + methods: { + T: Editor.T, + selectAtlas() { + Editor.Ipc.sendToPanel("assets", "change-filter", "t:sprite-atlas") + }, + editSprite() { + Editor.Panel.open("sprite-editor", { + uuid: this.target.spriteFrame.value.uuid + }) + }, + allowTrim() { + return this.target.type.value === cc.Sprite.Type.SIMPLE + }, + isFilledType() { + return this.target.type.value === cc.Sprite.Type.FILLED + }, + isRadialFilled() { + return this.target.fillType.value === cc.Sprite.FillType.RADIAL + }, + _updateAtlas() { + if (!this.target) + return this.atlasUuid = "", + this.atlasUuids = "", + this.atlasMulti = !1, + void 0; + this.atlasUuid = this.target._atlas.value.uuid, + this.atlasUuids = this.target._atlas.values.map(t=>t.uuid); + var t = this.atlasUuids[0]; + this.atlasMulti = !this.atlasUuids.every((i,e)=>0 === e || i === t) + }, + _updateSprite() { + if (!this.target) + return this.spriteUuid = "", + this.spriteUuids = "", + this.spriteMulti = !1, + void 0; + this.spriteUuid = this.target.spriteFrame.value.uuid, + this.spriteUuids = this.target.spriteFrame.values.map(t=>t.uuid); + var t = this.spriteUuids[0]; + this.spriteMulti = !this.spriteUuids.every((i,e)=>0 === e || i === t) + } + } +}); diff --git a/extension/service-pack-support/main.js b/extension/service-pack-support/main.js new file mode 100644 index 00000000..8b46fbba --- /dev/null +++ b/extension/service-pack-support/main.js @@ -0,0 +1,3 @@ +'use strict'; + +module.exports = {}; diff --git a/extension/service-pack-support/package.json b/extension/service-pack-support/package.json new file mode 100644 index 00000000..eccbc425 --- /dev/null +++ b/extension/service-pack-support/package.json @@ -0,0 +1,16 @@ +{ + "name": "service-pack", + "version": "1.0.0", + "description": "This extension provides support for cocos service pack.", + "author": "SmallMain", + "main": "main.js", + "runtime-resource": { + "path": "resources", + "name": "resources" + }, + "reload": { + "ignore": [ + "resources/**/*" + ] + } +} diff --git a/extension/service-pack-support/resources/sp/effects/multi-2d-sprite.effect b/extension/service-pack-support/resources/sp/effects/multi-2d-sprite.effect new file mode 100644 index 00000000..d45dc10e --- /dev/null +++ b/extension/service-pack-support/resources/sp/effects/multi-2d-sprite.effect @@ -0,0 +1,114 @@ +// Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. + +CCEffect %{ + techniques: + - passes: + - vert: vs + frag: fs + blendState: + targets: + - blend: true + rasterizerState: + cullMode: none + properties: + texture: { value: white } + texture2: { value: white } + texture3: { value: white } + texture4: { value: white } + texture5: { value: white } + texture6: { value: white } + texture7: { value: white } + texture8: { value: white } + alphaThreshold: { value: 0.5 } +}% + + +CCProgram vs %{ + precision highp float; + + #include + #include + + in vec3 a_position; + in vec4 a_color; + out vec4 v_color; + + #if USE_TEXTURE + in vec2 a_uv0; + out vec2 v_uv0; + in float a_texId; + out float v_texId; + #endif + + void main () { + vec4 pos = vec4(a_position, 1); + + #if CC_USE_MODEL + pos = cc_matViewProj * cc_matWorld * pos; + #else + pos = cc_matViewProj * pos; + #endif + + #if USE_TEXTURE + v_uv0 = a_uv0; + v_texId = a_texId; + #endif + + v_color = a_color; + + gl_Position = pos; + } +}% + + +CCProgram fs %{ + precision highp float; + + #include + #include + + in vec4 v_color; + + #if USE_TEXTURE + in vec2 v_uv0; + in float v_texId; + uniform sampler2D texture; + uniform sampler2D texture2; + uniform sampler2D texture3; + uniform sampler2D texture4; + uniform sampler2D texture5; + uniform sampler2D texture6; + uniform sampler2D texture7; + uniform sampler2D texture8; + #endif + + void main () { + vec4 o = vec4(1, 1, 1, 1); + + #if USE_TEXTURE + if(v_texId < 1.0){ + CCTexture(texture, v_uv0, o); + } else if(v_texId < 2.0){ + CCTexture(texture2, v_uv0, o); + } else if(v_texId < 3.0){ + CCTexture(texture3, v_uv0, o); + } else if(v_texId < 4.0){ + CCTexture(texture4, v_uv0, o); + } else if(v_texId < 5.0){ + CCTexture(texture5, v_uv0, o); + } else if(v_texId < 6.0){ + CCTexture(texture6, v_uv0, o); + } else if(v_texId < 7.0){ + CCTexture(texture7, v_uv0, o); + } else { + CCTexture(texture8, v_uv0, o); + } + #endif + + o *= v_color; + + ALPHA_TEST(o); + + gl_FragColor = o; + } +}%