diff --git a/demo/assets/common/effects.meta b/demo/assets/common/effects.meta new file mode 100644 index 00000000..08c8f342 --- /dev/null +++ b/demo/assets/common/effects.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "50a4982f-e892-44a2-9d49-202a0a10a446", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/effects/custom-2d-sprite.effect b/demo/assets/common/effects/custom-2d-sprite.effect new file mode 100644 index 00000000..9099a2fa --- /dev/null +++ b/demo/assets/common/effects/custom-2d-sprite.effect @@ -0,0 +1,167 @@ +// 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 } + wh_ratio: { + value: 1, + editor: { + tooltip: "宽高比" + } + } + blur: { + value: 0.35, + editor: { + tooltip: "光圈模糊程度" + } + } + radius: { + value: 0.5, + editor: { + tooltip: "光圈半径" + } + } + center: { + value: [0.5, 0.5], + editor: { + tooltip: "光圈起点" + } + } +}% + + +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; + + #if USE_MULTI_TEXTURE + in float a_texId; + out float v_texId; + #endif + + #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; + + #if USE_MULTI_TEXTURE + v_texId = a_texId; + #endif + + #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; + uniform sampler2D texture; + + #if USE_MULTI_TEXTURE + in float v_texId; + uniform sampler2D texture2; + uniform sampler2D texture3; + uniform sampler2D texture4; + uniform sampler2D texture5; + uniform sampler2D texture6; + uniform sampler2D texture7; + uniform sampler2D texture8; + #endif + + #endif + + uniform ARGS{ + float radius; + float blur; + vec2 center; + float wh_ratio; + }; + + void main () { + vec4 o = vec4(1, 1, 1, 1); + + #if USE_TEXTURE + #if USE_MULTI_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); + } + #else + CCTexture(texture, v_uv0, o); + #endif + #endif + + o *= v_color; + + ALPHA_TEST(o); + + float circle = radius * radius; + float rx = center.x * wh_ratio; + float ry = center.y; + float dis = (v_uv0.x * wh_ratio - rx) * (v_uv0.x * wh_ratio - rx) + (v_uv0.y - ry) * (v_uv0.y - ry); + + o.a = smoothstep(circle, circle - blur, dis); + gl_FragColor = o; + } +}% diff --git a/demo/assets/common/effects/custom-2d-sprite.effect.meta b/demo/assets/common/effects/custom-2d-sprite.effect.meta new file mode 100644 index 00000000..0488736d --- /dev/null +++ b/demo/assets/common/effects/custom-2d-sprite.effect.meta @@ -0,0 +1,17 @@ +{ + "ver": "1.0.25", + "uuid": "3edf42b2-00b8-4d91-9b6d-cae5b403a114", + "compiledShaders": [ + { + "glsl1": { + "vert": "\nprecision highp float;\nuniform mat4 cc_matViewProj;\nuniform mat4 cc_matWorld;\nattribute vec3 a_position;\nattribute vec4 a_color;\nvarying vec4 v_color;\n#if USE_TEXTURE\nattribute vec2 a_uv0;\nvarying vec2 v_uv0;\n#if USE_MULTI_TEXTURE\nattribute float a_texId;\nvarying float v_texId;\n#endif\n#endif\nvoid main () {\n vec4 pos = vec4(a_position, 1);\n #if CC_USE_MODEL\n pos = cc_matViewProj * cc_matWorld * pos;\n #else\n pos = cc_matViewProj * pos;\n #endif\n #if USE_TEXTURE\n v_uv0 = a_uv0;\n #if USE_MULTI_TEXTURE\n v_texId = a_texId;\n #endif\n #endif\n v_color = a_color;\n gl_Position = pos;\n}", + "frag": "\nprecision highp float;\n#if USE_ALPHA_TEST\n uniform float alphaThreshold;\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nvarying vec4 v_color;\n#if USE_TEXTURE\nvarying vec2 v_uv0;\nuniform sampler2D texture;\n#if USE_MULTI_TEXTURE\nvarying float v_texId;\nuniform sampler2D texture2;\nuniform sampler2D texture3;\nuniform sampler2D texture4;\nuniform sampler2D texture5;\nuniform sampler2D texture6;\nuniform sampler2D texture7;\nuniform sampler2D texture8;\n#endif\n#endif\nuniform float radius;\nuniform float blur;\nuniform vec2 center;\nuniform float wh_ratio;\nvoid main () {\n vec4 o = vec4(1, 1, 1, 1);\n #if USE_TEXTURE\n #if USE_MULTI_TEXTURE\n if(v_texId < 1.0){\n vec4 texture_tmp = texture2D(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n o.a *= texture_tmp.a;\n #else\n o *= texture_tmp;\n #endif\n } else if(v_texId < 2.0){\n vec4 texture2_tmp = texture2D(texture2, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture2\n texture2_tmp.a *= texture2D(texture2, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture2_tmp.rgb * texture2_tmp.rgb);\n o.a *= texture2_tmp.a;\n #else\n o *= texture2_tmp;\n #endif\n } else if(v_texId < 3.0){\n vec4 texture3_tmp = texture2D(texture3, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture3\n texture3_tmp.a *= texture2D(texture3, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture3_tmp.rgb * texture3_tmp.rgb);\n o.a *= texture3_tmp.a;\n #else\n o *= texture3_tmp;\n #endif\n } else if(v_texId < 4.0){\n vec4 texture4_tmp = texture2D(texture4, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture4\n texture4_tmp.a *= texture2D(texture4, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture4_tmp.rgb * texture4_tmp.rgb);\n o.a *= texture4_tmp.a;\n #else\n o *= texture4_tmp;\n #endif\n } else if(v_texId < 5.0){\n vec4 texture5_tmp = texture2D(texture5, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture5\n texture5_tmp.a *= texture2D(texture5, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture5_tmp.rgb * texture5_tmp.rgb);\n o.a *= texture5_tmp.a;\n #else\n o *= texture5_tmp;\n #endif\n } else if(v_texId < 6.0){\n vec4 texture6_tmp = texture2D(texture6, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture6\n texture6_tmp.a *= texture2D(texture6, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture6_tmp.rgb * texture6_tmp.rgb);\n o.a *= texture6_tmp.a;\n #else\n o *= texture6_tmp;\n #endif\n } else if(v_texId < 7.0){\n vec4 texture7_tmp = texture2D(texture7, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture7\n texture7_tmp.a *= texture2D(texture7, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture7_tmp.rgb * texture7_tmp.rgb);\n o.a *= texture7_tmp.a;\n #else\n o *= texture7_tmp;\n #endif\n } else {\n vec4 texture8_tmp = texture2D(texture8, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture8\n texture8_tmp.a *= texture2D(texture8, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture8_tmp.rgb * texture8_tmp.rgb);\n o.a *= texture8_tmp.a;\n #else\n o *= texture8_tmp;\n #endif\n }\n #else\n vec4 texture_tmp = texture2D(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n o.a *= texture_tmp.a;\n #else\n o *= texture_tmp;\n #endif\n #endif\n #endif\n o *= v_color;\n ALPHA_TEST(o);\n float circle = radius * radius;\n float rx = center.x * wh_ratio;\n float ry = center.y;\n float dis = (v_uv0.x * wh_ratio - rx) * (v_uv0.x * wh_ratio - rx) + (v_uv0.y - ry) * (v_uv0.y - ry);\n o.a = smoothstep(circle, circle - blur, dis);\n gl_FragColor = o;\n}" + }, + "glsl3": { + "vert": "\nprecision highp float;\nuniform CCGlobal {\n mat4 cc_matView;\n mat4 cc_matViewInv;\n mat4 cc_matProj;\n mat4 cc_matProjInv;\n mat4 cc_matViewProj;\n mat4 cc_matViewProjInv;\n vec4 cc_cameraPos;\n vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_screenScale;\n};\nuniform CCLocal {\n mat4 cc_matWorld;\n mat4 cc_matWorldIT;\n};\nin vec3 a_position;\nin vec4 a_color;\nout vec4 v_color;\n#if USE_TEXTURE\nin vec2 a_uv0;\nout vec2 v_uv0;\n#if USE_MULTI_TEXTURE\nin float a_texId;\nout float v_texId;\n#endif\n#endif\nvoid main () {\n vec4 pos = vec4(a_position, 1);\n #if CC_USE_MODEL\n pos = cc_matViewProj * cc_matWorld * pos;\n #else\n pos = cc_matViewProj * pos;\n #endif\n #if USE_TEXTURE\n v_uv0 = a_uv0;\n #if USE_MULTI_TEXTURE\n v_texId = a_texId;\n #endif\n #endif\n v_color = a_color;\n gl_Position = pos;\n}", + "frag": "\nprecision highp float;\n#if USE_ALPHA_TEST\n uniform ALPHA_TEST {\n float alphaThreshold;\n };\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nin vec4 v_color;\n#if USE_TEXTURE\nin vec2 v_uv0;\nuniform sampler2D texture;\n#if USE_MULTI_TEXTURE\nin float v_texId;\nuniform sampler2D texture2;\nuniform sampler2D texture3;\nuniform sampler2D texture4;\nuniform sampler2D texture5;\nuniform sampler2D texture6;\nuniform sampler2D texture7;\nuniform sampler2D texture8;\n#endif\n#endif\nuniform ARGS{\n float radius;\n float blur;\n vec2 center;\n float wh_ratio;\n};\nvoid main () {\n vec4 o = vec4(1, 1, 1, 1);\n #if USE_TEXTURE\n #if USE_MULTI_TEXTURE\n if(v_texId < 1.0){\n vec4 texture_tmp = texture(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n o.a *= texture_tmp.a;\n #else\n o *= texture_tmp;\n #endif\n } else if(v_texId < 2.0){\n vec4 texture2_tmp = texture(texture2, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture2\n texture2_tmp.a *= texture(texture2, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture2_tmp.rgb * texture2_tmp.rgb);\n o.a *= texture2_tmp.a;\n #else\n o *= texture2_tmp;\n #endif\n } else if(v_texId < 3.0){\n vec4 texture3_tmp = texture(texture3, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture3\n texture3_tmp.a *= texture(texture3, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture3_tmp.rgb * texture3_tmp.rgb);\n o.a *= texture3_tmp.a;\n #else\n o *= texture3_tmp;\n #endif\n } else if(v_texId < 4.0){\n vec4 texture4_tmp = texture(texture4, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture4\n texture4_tmp.a *= texture(texture4, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture4_tmp.rgb * texture4_tmp.rgb);\n o.a *= texture4_tmp.a;\n #else\n o *= texture4_tmp;\n #endif\n } else if(v_texId < 5.0){\n vec4 texture5_tmp = texture(texture5, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture5\n texture5_tmp.a *= texture(texture5, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture5_tmp.rgb * texture5_tmp.rgb);\n o.a *= texture5_tmp.a;\n #else\n o *= texture5_tmp;\n #endif\n } else if(v_texId < 6.0){\n vec4 texture6_tmp = texture(texture6, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture6\n texture6_tmp.a *= texture(texture6, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture6_tmp.rgb * texture6_tmp.rgb);\n o.a *= texture6_tmp.a;\n #else\n o *= texture6_tmp;\n #endif\n } else if(v_texId < 7.0){\n vec4 texture7_tmp = texture(texture7, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture7\n texture7_tmp.a *= texture(texture7, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture7_tmp.rgb * texture7_tmp.rgb);\n o.a *= texture7_tmp.a;\n #else\n o *= texture7_tmp;\n #endif\n } else {\n vec4 texture8_tmp = texture(texture8, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture8\n texture8_tmp.a *= texture(texture8, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture8_tmp.rgb * texture8_tmp.rgb);\n o.a *= texture8_tmp.a;\n #else\n o *= texture8_tmp;\n #endif\n }\n #else\n vec4 texture_tmp = texture(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_texture\n texture_tmp.a *= texture(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #if INPUT_IS_GAMMA\n o.rgb *= (texture_tmp.rgb * texture_tmp.rgb);\n o.a *= texture_tmp.a;\n #else\n o *= texture_tmp;\n #endif\n #endif\n #endif\n o *= v_color;\n ALPHA_TEST(o);\n float circle = radius * radius;\n float rx = center.x * wh_ratio;\n float ry = center.y;\n float dis = (v_uv0.x * wh_ratio - rx) * (v_uv0.x * wh_ratio - rx) + (v_uv0.y - ry) * (v_uv0.y - ry);\n o.a = smoothstep(circle, circle - blur, dis);\n gl_FragColor = o;\n}" + } + } + ], + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/fonts.meta b/demo/assets/common/fonts.meta new file mode 100644 index 00000000..f5df5341 --- /dev/null +++ b/demo/assets/common/fonts.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "cbc55b3e-df40-4e8f-9499-8ee247cdbf84", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/fonts/SFNSMonoItalic.ttf b/demo/assets/common/fonts/SFNSMonoItalic.ttf new file mode 100644 index 00000000..41ee30e3 Binary files /dev/null and b/demo/assets/common/fonts/SFNSMonoItalic.ttf differ diff --git a/demo/assets/common/fonts/SFNSMonoItalic.ttf.meta b/demo/assets/common/fonts/SFNSMonoItalic.ttf.meta new file mode 100644 index 00000000..5a7d673f --- /dev/null +++ b/demo/assets/common/fonts/SFNSMonoItalic.ttf.meta @@ -0,0 +1,5 @@ +{ + "ver": "1.1.0", + "uuid": "e8aa5e1c-0730-4ebe-81a1-e7fa0db9be7d", + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/fonts/normalFont.fnt b/demo/assets/common/fonts/normalFont.fnt new file mode 100644 index 00000000..54bb90f9 --- /dev/null +++ b/demo/assets/common/fonts/normalFont.fnt @@ -0,0 +1,296 @@ +info face="Arial" size=64 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=2,2 +common lineHeight=72 base=60 scaleW=742 scaleH=786 pages=1 packed=0 +page id=0 file="normalFont.png" +chars count=196 +char id=32 x=446 y=710 width=0 height=0 xoffset=0 yoffset=58 xadvance=18 page=0 chnl=0 letter="space" +char id=33 x=328 y=661 width=8 height=47 xoffset=6 yoffset=11 xadvance=18 page=0 chnl=0 letter="!" +char id=34 x=284 y=710 width=18 height=18 xoffset=3 yoffset=10 xadvance=23 page=0 chnl=0 letter=""" +char id=35 x=221 y=560 width=36 height=49 xoffset=1 yoffset=10 xadvance=36 page=0 chnl=0 letter="#" +char id=36 x=59 y=500 width=32 height=58 xoffset=2 yoffset=7 xadvance=36 page=0 chnl=0 letter="$" +char id=37 x=661 y=500 width=51 height=50 xoffset=4 yoffset=10 xadvance=57 page=0 chnl=0 letter="%" +char id=38 x=139 y=560 width=40 height=49 xoffset=3 yoffset=10 xadvance=43 page=0 chnl=0 letter="&" +char id=39 x=304 y=710 width=8 height=18 xoffset=3 yoffset=10 xadvance=12 page=0 chnl=0 letter="'" +char id=40 x=109 y=2 width=17 height=62 xoffset=4 yoffset=9 xadvance=21 page=0 chnl=0 letter="(" +char id=41 x=128 y=2 width=17 height=62 xoffset=4 yoffset=9 xadvance=21 page=0 chnl=0 letter=")" +char id=42 x=260 y=710 width=22 height=21 xoffset=2 yoffset=10 xadvance=25 page=0 chnl=0 letter="*" +char id=43 x=162 y=710 width=32 height=32 xoffset=4 yoffset=19 xadvance=37 page=0 chnl=0 letter="+" +char id=44 x=314 y=710 width=8 height=17 xoffset=5 yoffset=50 xadvance=18 page=0 chnl=0 letter="," +char id=45 x=384 y=710 width=19 height=7 xoffset=2 yoffset=37 xadvance=21 page=0 chnl=0 letter="-" +char id=46 x=374 y=710 width=8 height=8 xoffset=6 yoffset=50 xadvance=18 page=0 chnl=0 letter="." +char id=47 x=292 y=560 width=19 height=49 xoffset=0 yoffset=10 xadvance=18 page=0 chnl=0 letter="/" +char id=48 x=578 y=560 width=31 height=48 xoffset=3 yoffset=11 xadvance=36 page=0 chnl=0 letter="0" +char id=49 x=86 y=611 width=18 height=48 xoffset=7 yoffset=10 xadvance=36 page=0 chnl=0 letter="1" +char id=50 x=374 y=560 width=32 height=48 xoffset=2 yoffset=10 xadvance=36 page=0 chnl=0 letter="2" +char id=51 x=408 y=560 width=32 height=48 xoffset=3 yoffset=11 xadvance=36 page=0 chnl=0 letter="3" +char id=52 x=78 y=661 width=33 height=47 xoffset=1 yoffset=11 xadvance=36 page=0 chnl=0 letter="4" +char id=53 x=113 y=661 width=32 height=47 xoffset=3 yoffset=12 xadvance=36 page=0 chnl=0 letter="5" +char id=54 x=442 y=560 width=32 height=48 xoffset=2 yoffset=11 xadvance=36 page=0 chnl=0 letter="6" +char id=55 x=181 y=661 width=31 height=47 xoffset=3 yoffset=11 xadvance=36 page=0 chnl=0 letter="7" +char id=56 x=476 y=560 width=32 height=48 xoffset=3 yoffset=11 xadvance=36 page=0 chnl=0 letter="8" +char id=57 x=510 y=560 width=32 height=48 xoffset=3 yoffset=11 xadvance=36 page=0 chnl=0 letter="9" +char id=58 x=84 y=710 width=8 height=35 xoffset=6 yoffset=23 xadvance=18 page=0 chnl=0 letter=":" +char id=59 x=366 y=661 width=8 height=44 xoffset=5 yoffset=23 xadvance=18 page=0 chnl=0 letter=";" +char id=60 x=94 y=710 width=32 height=33 xoffset=4 yoffset=18 xadvance=37 page=0 chnl=0 letter="<" +char id=61 x=226 y=710 width=32 height=21 xoffset=4 yoffset=24 xadvance=37 page=0 chnl=0 letter="=" +char id=62 x=128 y=710 width=32 height=33 xoffset=4 yoffset=18 xadvance=37 page=0 chnl=0 letter=">" +char id=63 x=611 y=560 width=31 height=48 xoffset=3 yoffset=10 xadvance=36 page=0 chnl=0 letter="?" +char id=64 x=2 y=2 width=61 height=62 xoffset=3 yoffset=9 xadvance=65 page=0 chnl=0 letter="@" +char id=65 x=215 y=611 width=44 height=47 xoffset=0 yoffset=11 xadvance=43 page=0 chnl=0 letter="A" +char id=66 x=683 y=611 width=36 height=47 xoffset=5 yoffset=11 xadvance=43 page=0 chnl=0 letter="B" +char id=67 x=95 y=560 width=42 height=49 xoffset=3 yoffset=10 xadvance=46 page=0 chnl=0 letter="C" +char id=68 x=442 y=611 width=39 height=47 xoffset=5 yoffset=11 xadvance=46 page=0 chnl=0 letter="D" +char id=69 x=2 y=661 width=36 height=47 xoffset=5 yoffset=11 xadvance=43 page=0 chnl=0 letter="E" +char id=70 x=147 y=661 width=32 height=47 xoffset=5 yoffset=11 xadvance=39 page=0 chnl=0 letter="F" +char id=71 x=49 y=560 width=44 height=49 xoffset=3 yoffset=10 xadvance=50 page=0 chnl=0 letter="G" +char id=72 x=644 y=611 width=37 height=47 xoffset=5 yoffset=11 xadvance=46 page=0 chnl=0 letter="H" +char id=73 x=338 y=661 width=8 height=47 xoffset=6 yoffset=11 xadvance=18 page=0 chnl=0 letter="I" +char id=74 x=34 y=611 width=27 height=48 xoffset=2 yoffset=11 xadvance=32 page=0 chnl=0 letter="J" +char id=75 x=483 y=611 width=39 height=47 xoffset=5 yoffset=11 xadvance=43 page=0 chnl=0 letter="K" +char id=76 x=214 y=661 width=30 height=47 xoffset=5 yoffset=11 xadvance=36 page=0 chnl=0 letter="L" +char id=77 x=168 y=611 width=45 height=47 xoffset=5 yoffset=11 xadvance=53 page=0 chnl=0 letter="M" +char id=78 x=524 y=611 width=38 height=47 xoffset=5 yoffset=11 xadvance=46 page=0 chnl=0 letter="N" +char id=79 x=2 y=560 width=45 height=49 xoffset=3 yoffset=10 xadvance=50 page=0 chnl=0 letter="O" +char id=80 x=40 y=661 width=36 height=47 xoffset=5 yoffset=11 xadvance=43 page=0 chnl=0 letter="P" +char id=81 x=613 y=500 width=46 height=52 xoffset=3 yoffset=10 xadvance=50 page=0 chnl=0 letter="Q" +char id=82 x=398 y=611 width=42 height=47 xoffset=5 yoffset=11 xadvance=46 page=0 chnl=0 letter="R" +char id=83 x=181 y=560 width=38 height=49 xoffset=3 yoffset=10 xadvance=43 page=0 chnl=0 letter="S" +char id=84 x=564 y=611 width=38 height=47 xoffset=2 yoffset=11 xadvance=39 page=0 chnl=0 letter="T" +char id=85 x=334 y=560 width=38 height=48 xoffset=5 yoffset=11 xadvance=46 page=0 chnl=0 letter="U" +char id=86 x=353 y=611 width=43 height=47 xoffset=0 yoffset=11 xadvance=43 page=0 chnl=0 letter="V" +char id=87 x=106 y=611 width=60 height=47 xoffset=1 yoffset=11 xadvance=60 page=0 chnl=0 letter="W" +char id=88 x=261 y=611 width=44 height=47 xoffset=0 yoffset=11 xadvance=43 page=0 chnl=0 letter="X" +char id=89 x=307 y=611 width=44 height=47 xoffset=0 yoffset=11 xadvance=43 page=0 chnl=0 letter="Y" +char id=90 x=604 y=611 width=38 height=47 xoffset=1 yoffset=11 xadvance=39 page=0 chnl=0 letter="Z" +char id=91 x=330 y=377 width=14 height=60 xoffset=4 yoffset=11 xadvance=18 page=0 chnl=0 letter="[" +char id=92 x=313 y=560 width=19 height=49 xoffset=0 yoffset=10 xadvance=18 page=0 chnl=0 letter="\" +char id=93 x=346 y=377 width=14 height=60 xoffset=1 yoffset=11 xadvance=18 page=0 chnl=0 letter="]" +char id=94 x=196 y=710 width=28 height=27 xoffset=2 yoffset=9 xadvance=30 page=0 chnl=0 letter="^" +char id=95 x=405 y=710 width=39 height=6 xoffset=-1 yoffset=65 xadvance=36 page=0 chnl=0 letter="_" +char id=96 x=359 y=710 width=13 height=10 xoffset=3 yoffset=11 xadvance=21 page=0 chnl=0 letter="`" +char id=97 x=411 y=661 width=32 height=36 xoffset=2 yoffset=23 xadvance=36 page=0 chnl=0 letter="a" +char id=98 x=644 y=560 width=30 height=48 xoffset=4 yoffset=11 xadvance=36 page=0 chnl=0 letter="b" +char id=99 x=479 y=661 width=30 height=36 xoffset=3 yoffset=23 xadvance=32 page=0 chnl=0 letter="c" +char id=100 x=676 y=560 width=30 height=48 xoffset=2 yoffset=11 xadvance=36 page=0 chnl=0 letter="d" +char id=101 x=445 y=661 width=32 height=36 xoffset=2 yoffset=23 xadvance=36 page=0 chnl=0 letter="e" +char id=102 x=63 y=611 width=21 height=48 xoffset=1 yoffset=10 xadvance=18 page=0 chnl=0 letter="f" +char id=103 x=259 y=560 width=31 height=49 xoffset=2 yoffset=22 xadvance=36 page=0 chnl=0 letter="g" +char id=104 x=246 y=661 width=29 height=47 xoffset=4 yoffset=11 xadvance=36 page=0 chnl=0 letter="h" +char id=105 x=348 y=661 width=7 height=47 xoffset=4 yoffset=11 xadvance=14 page=0 chnl=0 letter="i" +char id=106 x=660 y=66 width=14 height=61 xoffset=-3 yoffset=10 xadvance=14 page=0 chnl=0 letter="j" +char id=107 x=277 y=661 width=29 height=47 xoffset=4 yoffset=11 xadvance=32 page=0 chnl=0 letter="k" +char id=108 x=357 y=661 width=7 height=47 xoffset=4 yoffset=11 xadvance=14 page=0 chnl=0 letter="l" +char id=109 x=591 y=661 width=46 height=35 xoffset=4 yoffset=23 xadvance=53 page=0 chnl=0 letter="m" +char id=110 x=2 y=710 width=28 height=35 xoffset=4 yoffset=23 xadvance=36 page=0 chnl=0 letter="n" +char id=111 x=376 y=661 width=33 height=36 xoffset=2 yoffset=23 xadvance=36 page=0 chnl=0 letter="o" +char id=112 x=708 y=560 width=30 height=48 xoffset=4 yoffset=23 xadvance=36 page=0 chnl=0 letter="p" +char id=113 x=2 y=611 width=30 height=48 xoffset=2 yoffset=23 xadvance=36 page=0 chnl=0 letter="q" +char id=114 x=62 y=710 width=20 height=35 xoffset=4 yoffset=23 xadvance=21 page=0 chnl=0 letter="r" +char id=115 x=511 y=661 width=29 height=36 xoffset=2 yoffset=23 xadvance=32 page=0 chnl=0 letter="s" +char id=116 x=308 y=661 width=18 height=47 xoffset=1 yoffset=11 xadvance=18 page=0 chnl=0 letter="t" +char id=117 x=32 y=710 width=28 height=35 xoffset=4 yoffset=24 xadvance=36 page=0 chnl=0 letter="u" +char id=118 x=674 y=661 width=32 height=35 xoffset=1 yoffset=23 xadvance=32 page=0 chnl=0 letter="v" +char id=119 x=542 y=661 width=47 height=35 xoffset=0 yoffset=23 xadvance=46 page=0 chnl=0 letter="w" +char id=120 x=639 y=661 width=33 height=35 xoffset=0 yoffset=23 xadvance=32 page=0 chnl=0 letter="x" +char id=121 x=544 y=560 width=32 height=48 xoffset=1 yoffset=23 xadvance=32 page=0 chnl=0 letter="y" +char id=122 x=708 y=661 width=31 height=35 xoffset=1 yoffset=23 xadvance=32 page=0 chnl=0 letter="z" +char id=123 x=65 y=2 width=20 height=62 xoffset=2 yoffset=9 xadvance=21 page=0 chnl=0 letter="{" +char id=124 x=147 y=2 width=6 height=62 xoffset=6 yoffset=9 xadvance=17 page=0 chnl=0 letter="|" +char id=125 x=87 y=2 width=20 height=62 xoffset=1 yoffset=9 xadvance=21 page=0 chnl=0 letter="}" +char id=126 x=324 y=710 width=33 height=12 xoffset=3 yoffset=29 xadvance=37 page=0 chnl=0 letter="~" +char id=19978 x=476 y=439 width=58 height=58 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="上" +char id=20010 x=676 y=66 width=61 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="个" +char id=20026 x=118 y=377 width=55 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="为" +char id=20080 x=277 y=500 width=57 height=57 xoffset=5 yoffset=8 xadvance=64 page=0 chnl=0 letter="买符" +char id=20154 x=2 y=129 width=61 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=20215 x=65 y=129 width=61 height=60 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="价元宝" +char id=20302 x=128 y=129 width=61 height=60 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="低" +char id=20313 x=362 y=377 width=61 height=59 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="余时效小" +char id=20323 x=307 y=66 width=58 height=61 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="佣天" +char id=20803 x=155 y=500 width=59 height=57 xoffset=3 yoffset=8 xadvance=64 page=0 chnl=0 letter="元宝" +char id=20805 x=490 y=253 width=58 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=20813 x=2 y=66 width=59 height=61 xoffset=3 yoffset=3 xadvance=64 page=0 chnl=0 letter="免费" +char id=20853 x=2 y=253 width=59 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="兵骑弓军曹官武卒" +char id=20869 x=175 y=377 width=52 height=60 xoffset=7 yoffset=4 xadvance=64 page=0 chnl=0 letter="内" +char id=20891 x=656 y=439 width=57 height=58 xoffset=4 yoffset=7 xadvance=64 page=0 chnl=0 letter="军曹官武卒" +char id=20986 x=229 y=377 width=52 height=60 xoffset=7 yoffset=4 xadvance=64 page=0 chnl=0 letter="出" +char id=20998 x=632 y=129 width=60 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="分" +char id=21015 x=2 y=439 width=57 height=59 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="列" +char id=21040 x=61 y=439 width=57 height=59 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="到" +char id=21069 x=63 y=66 width=59 height=61 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="前" +char id=21097 x=542 y=315 width=57 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="剩余时效小" +char id=21160 x=550 y=253 width=58 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=21215 x=407 y=2 width=60 height=61 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="募" +char id=21319 x=610 y=253 width=58 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="升" +char id=21330 x=670 y=253 width=58 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="卒" +char id=21407 x=216 y=500 width=59 height=57 xoffset=3 yoffset=7 xadvance=64 page=0 chnl=0 letter="原价元宝" +char id=21475 x=563 y=500 width=48 height=52 xoffset=9 yoffset=11 xadvance=64 page=0 chnl=0 letter="口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=21487 x=336 y=500 width=59 height=56 xoffset=4 yoffset=8 xadvance=64 page=0 chnl=0 letter="可" +char id=21518 x=2 y=191 width=60 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="后" +char id=22478 x=191 y=129 width=61 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=22681 x=64 y=191 width=60 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="墙" +char id=22823 x=126 y=191 width=60 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="大" +char id=22825 x=93 y=500 width=60 height=57 xoffset=3 yoffset=8 xadvance=64 page=0 chnl=0 letter="天" +char id=23041 x=488 y=377 width=60 height=59 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=23432 x=2 y=377 width=56 height=60 xoffset=5 yoffset=4 xadvance=64 page=0 chnl=0 letter="守" +char id=23448 x=546 y=66 width=55 height=61 xoffset=5 yoffset=3 xadvance=64 page=0 chnl=0 letter="官武卒" +char id=23453 x=2 y=500 width=55 height=58 xoffset=5 yoffset=5 xadvance=64 page=0 chnl=0 letter="宝" +char id=23567 x=425 y=377 width=61 height=59 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="小" +char id=24050 x=505 y=500 width=56 height=55 xoffset=6 yoffset=7 xadvance=64 page=0 chnl=0 letter="已激活" +char id=24065 x=60 y=377 width=56 height=60 xoffset=4 yoffset=5 xadvance=64 page=0 chnl=0 letter="币木材镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=24182 x=124 y=66 width=59 height=61 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="并" +char id=24314 x=63 y=253 width=59 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=24320 x=397 y=500 width=58 height=56 xoffset=4 yoffset=8 xadvance=64 page=0 chnl=0 letter="开" +char id=24339 x=457 y=500 width=46 height=56 xoffset=11 yoffset=8 xadvance=64 page=0 chnl=0 letter="弓军曹官武卒" +char id=24403 x=178 y=439 width=50 height=59 xoffset=7 yoffset=5 xadvance=64 page=0 chnl=0 letter="当" +char id=24449 x=254 y=129 width=61 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="征" +char id=24471 x=188 y=191 width=60 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="得" +char id=25552 x=250 y=191 width=60 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="提" +char id=25910 x=185 y=66 width=59 height=61 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="收" +char id=25928 x=155 y=2 width=61 height=61 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="效果已激活" +char id=26009 x=317 y=129 width=61 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="料箱金红紫步兵骑弓军曹官武卒" +char id=26102 x=673 y=377 width=58 height=59 xoffset=5 yoffset=5 xadvance=64 page=0 chnl=0 letter="时效小" +char id=26361 x=2 y=315 width=58 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="曹官武卒" +char id=26368 x=536 y=439 width=58 height=58 xoffset=4 yoffset=7 xadvance=64 page=0 chnl=0 letter="最" +char id=26395 x=120 y=439 width=56 height=59 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="望绿料箱金红紫步兵骑弓军曹官武卒" +char id=26408 x=62 y=315 width=58 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="木材镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=26426 x=380 y=129 width=61 height=60 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="机" +char id=26448 x=124 y=253 width=59 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="材镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=26524 x=230 y=439 width=60 height=58 xoffset=3 yoffset=6 xadvance=64 page=0 chnl=0 letter="果已激活" +char id=27425 x=218 y=2 width=61 height=61 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="次" +char id=27493 x=367 y=66 width=58 height=61 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="步兵骑弓军曹官武卒" +char id=27494 x=550 y=377 width=60 height=59 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="武卒" +char id=27599 x=281 y=2 width=61 height=61 xoffset=3 yoffset=3 xadvance=64 page=0 chnl=0 letter="每" +char id=27963 x=185 y=253 width=59 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="活" +char id=28608 x=443 y=129 width=61 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="激活" +char id=28857 x=312 y=191 width=60 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="点" +char id=31181 x=122 y=315 width=58 height=60 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="种" +char id=31526 x=246 y=253 width=59 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="符" +char id=31569 x=307 y=253 width=59 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="筑" +char id=31574 x=469 y=2 width=60 height=61 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="策" +char id=31665 x=531 y=2 width=60 height=61 xoffset=2 yoffset=3 xadvance=64 page=0 chnl=0 letter="箱金红紫步兵骑弓军曹官武卒" +char id=31918 x=344 y=2 width=61 height=61 xoffset=2 yoffset=3 xadvance=64 page=0 chnl=0 letter="粮草银币木材镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=32043 x=182 y=315 width=58 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="紫步兵骑弓军曹官武卒" +char id=32418 x=354 y=439 width=59 height=58 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="红紫步兵骑弓军曹官武卒" +char id=32493 x=593 y=2 width=60 height=61 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="续费" +char id=32511 x=374 y=191 width=60 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="绿料箱金红紫步兵骑弓军曹官武卒" +char id=32791 x=436 y=191 width=60 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="耗" +char id=33258 x=283 y=377 width=45 height=60 xoffset=10 yoffset=4 xadvance=64 page=0 chnl=0 letter="自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=33457 x=246 y=66 width=59 height=61 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="花" +char id=33609 x=242 y=315 width=58 height=60 xoffset=4 yoffset=5 xadvance=64 page=0 chnl=0 letter="草银币木材镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=33719 x=368 y=253 width=59 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="获" +char id=33829 x=601 y=315 width=57 height=60 xoffset=4 yoffset=4 xadvance=64 page=0 chnl=0 letter="营" +char id=34917 x=498 y=191 width=60 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=35745 x=560 y=191 width=60 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="计" +char id=36141 x=302 y=315 width=58 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="购买符" +char id=36153 x=603 y=66 width=55 height=61 xoffset=5 yoffset=4 xadvance=64 page=0 chnl=0 letter="费" +char id=36824 x=612 y=377 width=59 height=59 xoffset=4 yoffset=6 xadvance=64 page=0 chnl=0 letter="还" +char id=36896 x=429 y=253 width=59 height=60 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=37327 x=415 y=439 width=59 height=58 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="量" +char id=37329 x=292 y=439 width=60 height=58 xoffset=3 yoffset=5 xadvance=64 page=0 chnl=0 letter="金红紫步兵骑弓军曹官武卒" +char id=38047 x=362 y=315 width=58 height=60 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="钟" +char id=38081 x=506 y=129 width=61 height=60 xoffset=2 yoffset=5 xadvance=64 page=0 chnl=0 letter="铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=38134 x=622 y=191 width=60 height=60 xoffset=3 yoffset=4 xadvance=64 page=0 chnl=0 letter="银币木材镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=38228 x=655 y=2 width=60 height=61 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="镔铁自动建造补充城防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=38431 x=422 y=315 width=58 height=60 xoffset=6 yoffset=4 xadvance=64 page=0 chnl=0 letter="队" +char id=38450 x=487 y=66 width=57 height=61 xoffset=5 yoffset=4 xadvance=64 page=0 chnl=0 letter="防人口威望绿料箱金红紫步兵骑弓军曹官武卒" +char id=38477 x=482 y=315 width=58 height=60 xoffset=5 yoffset=4 xadvance=64 page=0 chnl=0 letter="降" +char id=38480 x=596 y=439 width=58 height=58 xoffset=5 yoffset=6 xadvance=64 page=0 chnl=0 letter="限" +char id=38543 x=660 y=315 width=57 height=60 xoffset=5 yoffset=4 xadvance=64 page=0 chnl=0 letter="随" +char id=38599 x=427 y=66 width=58 height=61 xoffset=3 yoffset=3 xadvance=64 page=0 chnl=0 letter="雇佣天" +char id=39569 x=569 y=129 width=61 height=60 xoffset=2 yoffset=4 xadvance=64 page=0 chnl=0 letter="骑弓军曹官武卒" +kernings count=95 +kerning first=84 second=65 amount=-4 +kerning first=87 second=58 amount=-1 +kerning first=76 second=89 amount=-4 +kerning first=89 second=105 amount=-2 +kerning first=82 second=87 amount=-1 +kerning first=86 second=46 amount=-5 +kerning first=86 second=65 amount=-4 +kerning first=89 second=59 amount=-4 +kerning first=87 second=46 amount=-3 +kerning first=87 second=65 amount=-2 +kerning first=89 second=112 amount=-4 +kerning first=65 second=119 amount=-1 +kerning first=80 second=44 amount=-8 +kerning first=84 second=79 amount=-1 +kerning first=32 second=89 amount=-1 +kerning first=49 second=49 amount=-4 +kerning first=65 second=84 amount=-4 +kerning first=89 second=58 amount=-3 +kerning first=80 second=32 amount=-1 +kerning first=65 second=118 amount=-1 +kerning first=84 second=44 amount=-7 +kerning first=89 second=46 amount=-8 +kerning first=89 second=65 amount=-4 +kerning first=114 second=46 amount=-3 +kerning first=84 second=101 amount=-7 +kerning first=65 second=87 amount=-2 +kerning first=84 second=97 amount=-7 +kerning first=82 second=89 amount=-1 +kerning first=89 second=118 amount=-3 +kerning first=76 second=121 amount=-2 +kerning first=86 second=44 amount=-5 +kerning first=84 second=32 amount=-1 +kerning first=86 second=101 amount=-3 +kerning first=87 second=44 amount=-3 +kerning first=86 second=97 amount=-4 +kerning first=76 second=86 amount=-4 +kerning first=87 second=101 amount=-1 +kerning first=87 second=97 amount=-2 +kerning first=118 second=46 amount=-4 +kerning first=70 second=46 amount=-7 +kerning first=102 second=102 amount=-1 +kerning first=70 second=65 amount=-3 +kerning first=84 second=111 amount=-7 +kerning first=89 second=113 amount=-5 +kerning first=65 second=32 amount=-3 +kerning first=89 second=44 amount=-8 +kerning first=114 second=44 amount=-3 +kerning first=119 second=46 amount=-3 +kerning first=86 second=111 amount=-3 +kerning first=65 second=89 amount=-4 +kerning first=89 second=101 amount=-5 +kerning first=84 second=99 amount=-7 +kerning first=89 second=97 amount=-4 +kerning first=87 second=111 amount=-1 +kerning first=84 second=114 amount=-2 +kerning first=121 second=46 amount=-4 +kerning first=89 second=32 amount=-1 +kerning first=84 second=45 amount=-3 +kerning first=86 second=114 amount=-2 +kerning first=76 second=84 amount=-4 +kerning first=118 second=44 amount=-4 +kerning first=84 second=121 amount=-3 +kerning first=87 second=114 amount=-1 +kerning first=84 second=117 amount=-2 +kerning first=82 second=86 amount=-1 +kerning first=86 second=45 amount=-3 +kerning first=70 second=44 amount=-7 +kerning first=87 second=45 amount=-1 +kerning first=86 second=121 amount=-2 +kerning first=86 second=117 amount=-2 +kerning first=89 second=111 amount=-5 +kerning first=76 second=87 amount=-4 +kerning first=84 second=105 amount=-2 +kerning first=87 second=117 amount=-1 +kerning first=119 second=44 amount=-3 +kerning first=84 second=59 amount=-7 +kerning first=32 second=65 amount=-3 +kerning first=86 second=105 amount=-1 +kerning first=32 second=84 amount=-1 +kerning first=65 second=121 amount=-1 +kerning first=121 second=44 amount=-4 +kerning first=80 second=46 amount=-8 +kerning first=86 second=59 amount=-2 +kerning first=80 second=65 amount=-4 +kerning first=89 second=45 amount=-5 +kerning first=87 second=59 amount=-1 +kerning first=84 second=58 amount=-7 +kerning first=65 second=86 amount=-4 +kerning first=84 second=119 amount=-3 +kerning first=89 second=117 amount=-3 +kerning first=82 second=84 amount=-1 +kerning first=84 second=115 amount=-7 +kerning first=86 second=58 amount=-2 +kerning first=76 second=32 amount=-2 +kerning first=84 second=46 amount=-7 diff --git a/demo/assets/common/fonts/normalFont.fnt.meta b/demo/assets/common/fonts/normalFont.fnt.meta new file mode 100644 index 00000000..2f96db4a --- /dev/null +++ b/demo/assets/common/fonts/normalFont.fnt.meta @@ -0,0 +1,7 @@ +{ + "ver": "2.1.0", + "uuid": "80011fce-9411-4ea1-a8d3-f7d86d2d8789", + "textureUuid": "45be59f3-5655-4369-9e9f-455c81d2ddd9", + "fontSize": 64, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/fonts/normalFont.png b/demo/assets/common/fonts/normalFont.png new file mode 100644 index 00000000..6c7e7d87 Binary files /dev/null and b/demo/assets/common/fonts/normalFont.png differ diff --git a/demo/assets/common/fonts/normalFont.png.meta b/demo/assets/common/fonts/normalFont.png.meta new file mode 100644 index 00000000..e3ff197e --- /dev/null +++ b/demo/assets/common/fonts/normalFont.png.meta @@ -0,0 +1,36 @@ +{ + "ver": "2.3.5", + "uuid": "45be59f3-5655-4369-9e9f-455c81d2ddd9", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 742, + "height": 786, + "platformSettings": {}, + "subMetas": { + "normalFont": { + "ver": "1.0.4", + "uuid": "926aac08-9aad-4893-b1ab-052167293176", + "rawTextureUuid": "45be59f3-5655-4369-9e9f-455c81d2ddd9", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -0.5, + "offsetY": 20, + "trimX": 2, + "trimY": 2, + "width": 737, + "height": 742, + "rawWidth": 742, + "rawHeight": 786, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/demo/assets/common/materials.meta b/demo/assets/common/materials.meta new file mode 100644 index 00000000..b5320051 --- /dev/null +++ b/demo/assets/common/materials.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "5a439075-0bd8-494f-8742-e6398c12d1b7", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/materials/custom-2d-sprite.mtl b/demo/assets/common/materials/custom-2d-sprite.mtl new file mode 100644 index 00000000..450c03a1 --- /dev/null +++ b/demo/assets/common/materials/custom-2d-sprite.mtl @@ -0,0 +1,29 @@ +{ + "__type__": "cc.Material", + "_name": "custom-2d-sprite", + "_objFlags": 0, + "_native": "", + "_effectAsset": { + "__uuid__": "3edf42b2-00b8-4d91-9b6d-cae5b403a114" + }, + "_techniqueIndex": 0, + "_techniqueData": { + "0": { + "defines": { + "USE_TEXTURE": true, + "USE_MULTI_TEXTURE": true + }, + "props": { + "texture": { + "__uuid__": "6231041a-75a5-4af2-a40d-f27e9498901a" + }, + "blur": 0.01, + "wh_ratio": 1, + "radius": 0.45, + "texture2": { + "__uuid__": "6e056173-d285-473c-b206-40a7fff5386e" + } + } + } + } +} \ No newline at end of file diff --git a/demo/assets/common/materials/custom-2d-sprite.mtl.meta b/demo/assets/common/materials/custom-2d-sprite.mtl.meta new file mode 100644 index 00000000..2b9090d4 --- /dev/null +++ b/demo/assets/common/materials/custom-2d-sprite.mtl.meta @@ -0,0 +1,6 @@ +{ + "ver": "1.0.3", + "uuid": "2c0c62f8-3805-4dd1-96c4-977c36bab4fc", + "dataAsSubAsset": null, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/spines.meta b/demo/assets/common/spines.meta new file mode 100644 index 00000000..e7e721ec --- /dev/null +++ b/demo/assets/common/spines.meta @@ -0,0 +1,12 @@ +{ + "ver": "1.1.2", + "uuid": "d791af13-cba7-4b15-a4e6-9d2b72b5ba01", + "isBundle": false, + "bundleName": "", + "priority": 1, + "compressionType": {}, + "optimizeHotUpdate": {}, + "inlineSpriteFrames": {}, + "isRemoteBundle": {}, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/spines/spineboy.json b/demo/assets/common/spines/spineboy.json new file mode 100644 index 00000000..3b1d316f --- /dev/null +++ b/demo/assets/common/spines/spineboy.json @@ -0,0 +1,2412 @@ +{ +"bones": [ + { "name": "hip", "y": 247.48 }, + { "name": "front_thigh", "parent": "hip", "length": 74.8, "x": -17.45, "y": -11.64, "rotation": -95.51, "color": "00ff04ff" }, + { "name": "rear_thigh", "parent": "hip", "length": 85.71, "x": 8.91, "y": -5.62, "rotation": -72.54, "color": "ff000dff" }, + { "name": "torso", "parent": "hip", "length": 127.55, "x": -1.61, "y": 4.9, "rotation": 103.82, "color": "e0da19ff" }, + { + "name": "front_shin", + "parent": "front_thigh", + "length": 128.76, + "x": 78.69, + "y": 1.6, + "rotation": -2.21, + "inheritScale": false, + "color": "00ff04ff" + }, + { "name": "front_upper_arm", "parent": "torso", "length": 69.45, "x": 103.75, "y": 19.32, "rotation": 168.37, "color": "00ff04ff" }, + { "name": "neck", "parent": "torso", "length": 25.45, "x": 127.49, "y": -0.3, "rotation": -31.53, "color": "e0da19ff" }, + { "name": "rear_shin", "parent": "rear_thigh", "length": 121.87, "x": 86.1, "y": -1.32, "rotation": -19.83, "color": "ff000dff" }, + { "name": "rear_upper_arm", "parent": "torso", "length": 51.93, "x": 92.35, "y": -19.22, "rotation": -169.55, "color": "ff000dff" }, + { + "name": "front_bracer", + "parent": "front_upper_arm", + "length": 40.57, + "x": 68.8, + "y": -0.68, + "rotation": 18.29, + "color": "00ff04ff" + }, + { "name": "front_foot", "parent": "front_shin", "length": 91.34, "x": 128.75, "y": -0.33, "rotation": 77.9, "color": "00ff04ff" }, + { "name": "head", "parent": "neck", "length": 263.57, "x": 27.66, "y": -0.25, "rotation": 23.18, "color": "e0da19ff" }, + { "name": "rear_bracer", "parent": "rear_upper_arm", "length": 34.55, "x": 51.35, "rotation": 23.15, "color": "ff000dff" }, + { "name": "rear_foot", "parent": "rear_shin", "length": 82.57, "x": 121.45, "y": -0.75, "rotation": 69.3, "color": "ff000dff" }, + { "name": "front_fist", "parent": "front_bracer", "length": 65.38, "x": 40.56, "y": 0.19, "rotation": 12.43, "color": "00ff04ff" }, + { "name": "gun", "parent": "rear_bracer", "length": 43.1, "x": 34.42, "y": -0.45, "rotation": 5.34, "color": "ff000dff" }, + { "name": "gunTip", "parent": "gun", "x": 201.04, "y": 52.13, "rotation": 6.83, "color": "ff000dff" } +], +"slots": [ + { "name": "rear_upper_arm", "bone": "rear_upper_arm", "attachment": "rear_upper_arm" }, + { "name": "rear_bracer", "bone": "rear_bracer", "attachment": "rear_bracer" }, + { "name": "gun", "bone": "gun", "attachment": "gun" }, + { "name": "rear_foot", "bone": "rear_foot", "attachment": "rear_foot" }, + { "name": "rear_thigh", "bone": "rear_thigh", "attachment": "rear_thigh" }, + { "name": "rear_shin", "bone": "rear_shin", "attachment": "rear_shin" }, + { "name": "neck", "bone": "neck", "attachment": "neck" }, + { "name": "torso", "bone": "torso", "attachment": "torso" }, + { "name": "front_upper_arm", "bone": "front_upper_arm", "attachment": "front_upper_arm" }, + { "name": "head", "bone": "head", "attachment": "head" }, + { "name": "eye", "bone": "head", "attachment": "eye_indifferent" }, + { "name": "front_thigh", "bone": "front_thigh", "attachment": "front_thigh" }, + { "name": "front_foot", "bone": "front_foot", "attachment": "front_foot" }, + { "name": "front_shin", "bone": "front_shin", "attachment": "front_shin" }, + { "name": "mouth", "bone": "head", "attachment": "mouth_smile" }, + { "name": "goggles", "bone": "head", "attachment": "goggles" }, + { "name": "front_bracer", "bone": "front_bracer", "attachment": "front_bracer" }, + { "name": "front_fist", "bone": "front_fist", "attachment": "front_fist_closed" }, + { "name": "muzzle", "bone": "gunTip", "additive": true } +], +"skins": { + "default": { + "eye": { + "eye_indifferent": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 }, + "eye_surprised": { "x": 85.72, "y": -28.18, "rotation": -70.63, "width": 93, "height": 89 } + }, + "front_bracer": { + "front_bracer": { "x": 12.03, "y": -1.67, "rotation": 79.59, "width": 58, "height": 80 } + }, + "front_fist": { + "front_fist_closed": { "x": 35.49, "y": 6, "rotation": 67.16, "width": 75, "height": 82 }, + "front_fist_open": { "x": 39.56, "y": 7.76, "rotation": 67.16, "width": 86, "height": 87 } + }, + "front_foot": { + "front_foot": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 126, "height": 69 }, + "front_foot_bend1": { "x": 29.51, "y": 7.83, "rotation": 18.68, "width": 128, "height": 70 }, + "front_foot_bend2": { "x": 16.07, "y": 13.83, "rotation": 18.68, "width": 108, "height": 93 } + }, + "front_shin": { + "front_shin": { "x": 55.11, "y": -3.54, "rotation": 96.59, "width": 82, "height": 184 } + }, + "front_thigh": { + "front_thigh": { "x": 42.47, "y": 4.44, "rotation": 84.86, "width": 48, "height": 112 } + }, + "front_upper_arm": { + "front_upper_arm": { "x": 28.3, "y": 7.37, "rotation": 97.89, "width": 54, "height": 97 } + }, + "goggles": { + "goggles": { "x": 97.07, "y": 6.54, "rotation": -70.63, "width": 261, "height": 166 } + }, + "gun": { + "gun": { "x": 77.3, "y": 16.4, "rotation": 60.82, "width": 210, "height": 203 } + }, + "head": { + "head": { "x": 128.95, "y": 0.29, "rotation": -70.63, "width": 271, "height": 298 } + }, + "mouth": { + "mouth_grind": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, + "mouth_oooo": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 }, + "mouth_smile": { "x": 23.68, "y": -32.23, "rotation": -70.63, "width": 93, "height": 59 } + }, + "muzzle": { + "muzzle": { "x": 18.25, "y": 5.44, "rotation": 0.15, "width": 462, "height": 400 } + }, + "neck": { + "neck": { "x": 9.76, "y": -3.01, "rotation": -55.22, "width": 36, "height": 41 } + }, + "rear_bracer": { + "rear_bracer": { "x": 11.15, "y": -2.2, "rotation": 66.17, "width": 56, "height": 72 } + }, + "rear_foot": { + "rear_foot": { "x": 31.51, "y": 3.57, "rotation": 23.07, "width": 113, "height": 60 }, + "rear_foot_bend1": { "x": 34.39, "y": 4.8, "rotation": 23.07, "width": 117, "height": 66 }, + "rear_foot_bend2": { "x": 30.38, "y": 12.62, "rotation": 23.07, "width": 103, "height": 83 } + }, + "rear_shin": { + "rear_shin": { "x": 58.29, "y": -2.75, "rotation": 92.37, "width": 75, "height": 178 } + }, + "rear_thigh": { + "rear_thigh": { "x": 33.1, "y": -4.11, "rotation": 72.54, "width": 65, "height": 104 } + }, + "rear_upper_arm": { + "rear_upper_arm": { "x": 21.12, "y": 4.08, "rotation": 89.32, "width": 47, "height": 87 } + }, + "torso": { + "torso": { "x": 63.61, "y": 7.12, "rotation": -94.53, "width": 98, "height": 180 } + } + } +}, +"events": { + "footstep": {}, + "headAttach": { "int": 3, "float": 4 }, + "headBehind": { "int": 5, "float": 6, "string": "setup" }, + "headPop": { "int": 1, "float": 2 } +}, +"animations": { + "death": { + "slots": { + "eye": { + "attachment": [ + { "time": 0, "name": "eye_surprised" }, + { "time": 0.4666, "name": "eye_indifferent" }, + { "time": 2.2333, "name": "eye_surprised" }, + { "time": 4.5333, "name": "eye_indifferent" } + ] + }, + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_oooo" }, + { "time": 2.2333, "name": "mouth_grind" }, + { "time": 4.5333, "name": "mouth_oooo" } + ] + } + }, + "bones": { + "head": { + "rotate": [ + { "time": 0, "angle": -2.82 }, + { "time": 0.1333, "angle": -28.74 }, + { "time": 0.2333, "angle": 11.42 }, + { "time": 0.3333, "angle": -50.24 }, + { "time": 0.4, "angle": -72.66, "curve": "stepped" }, + { "time": 0.4333, "angle": -72.66 }, + { "time": 0.5, "angle": -20.24 }, + { "time": 0.5666, "angle": -85.28, "curve": "stepped" }, + { "time": 0.9333, "angle": -85.28, "curve": "stepped" }, + { "time": 2.2333, "angle": -85.28 }, + { "time": 2.5, "angle": -51.96, "curve": "stepped" }, + { "time": 4.5333, "angle": -51.96 }, + { "time": 4.6666, "angle": -85.28 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": -2.82 }, + { "time": 0.1333, "angle": 12.35 }, + { "time": 0.2333, "angle": 29.89 }, + { "time": 0.3, "angle": 70.36 }, + { "time": 0.4, "angle": -10.22, "curve": "stepped" }, + { "time": 0.4333, "angle": -10.22 }, + { "time": 0.5, "angle": 2.92 }, + { "time": 0.5666, "angle": 47.94, "curve": "stepped" }, + { "time": 2.2333, "angle": 47.94 }, + { "time": 2.5, "angle": 18.5, "curve": "stepped" }, + { "time": 4.5333, "angle": 18.5 }, + { "time": 4.6666, "angle": 47.94 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -8.61 }, + { "time": 0.1333, "angle": 28.19 }, + { "time": 0.2666, "angle": -280.19 }, + { "time": 0.4, "angle": -237.22, "curve": "stepped" }, + { "time": 0.4333, "angle": -237.22 }, + { "time": 0.5, "angle": 76.03, "curve": "stepped" }, + { "time": 0.8, "angle": 76.03, "curve": "stepped" }, + { "time": 0.9333, "angle": 76.03, "curve": "stepped" }, + { "time": 2.2333, "angle": 76.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.9333, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 2.2333, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -38.85 }, + { "time": 0.1333, "angle": -299.58 }, + { "time": 0.2666, "angle": -244.74 }, + { "time": 0.4, "angle": -292.35 }, + { "time": 0.4333, "angle": -315.84 }, + { "time": 0.5, "angle": -347.94 }, + { "time": 0.7, "angle": -347.33, "curve": "stepped" }, + { "time": 2.2333, "angle": -347.33 }, + { "time": 2.7, "angle": -290.68 }, + { "time": 2.7666, "angle": -285.1 }, + { "time": 4.6666, "angle": -290.68 }, + { "time": 4.8, "angle": 8.61 }, + { "time": 4.8666, "angle": 10.94 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": -44.69 }, + { "time": 0.1333, "angle": 112.26 }, + { "time": 0.2666, "angle": 129.07 }, + { "time": 0.4, "angle": 134.94, "curve": "stepped" }, + { "time": 0.4333, "angle": 134.94 }, + { "time": 0.5666, "angle": 172.6, "curve": "stepped" }, + { "time": 0.9333, "angle": 172.6, "curve": "stepped" }, + { "time": 2.2333, "angle": 172.6 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 21.88 }, + { "time": 0.1333, "angle": 11.48 }, + { "time": 0.2666, "angle": -18.81 }, + { "time": 0.4, "angle": -18.92 }, + { "time": 0.4333, "angle": -18.28 }, + { "time": 0.5, "angle": 60.61 }, + { "time": 0.7, "angle": -18.87, "curve": "stepped" }, + { "time": 2.2333, "angle": -18.87 }, + { "time": 2.7, "angle": -1.95, "curve": "stepped" }, + { "time": 4.6666, "angle": -1.95 }, + { "time": 4.8, "angle": 34.55 }, + { "time": 4.9333, "angle": -18.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -2.33 }, + { "time": 0.2666, "angle": 26.34 }, + { "time": 0.7, "angle": -6.07, "curve": "stepped" }, + { "time": 2.2333, "angle": -6.07 }, + { "time": 2.7, "angle": 5.72, "curve": "stepped" }, + { "time": 4.6666, "angle": 5.72 }, + { "time": 4.8666, "angle": -6.52 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 10.36 }, + { "time": 0.1333, "angle": -23.12 }, + { "time": 0.2666, "angle": -23.11 }, + { "time": 0.4, "angle": -23.16, "curve": "stepped" }, + { "time": 0.4333, "angle": -23.16 }, + { "time": 0.5666, "angle": -23.2, "curve": "stepped" }, + { "time": 0.9333, "angle": -23.2, "curve": "stepped" }, + { "time": 2.2333, "angle": -23.2 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": -2.78 }, + { "time": 0.1333, "angle": -24.58 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.9333, "angle": 0, "curve": "stepped" }, + { "time": 2.2333, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.2, "x": 50.34, "y": 151.73 }, + { "time": 0.4, "x": 5.16, "y": -119.64, "curve": "stepped" }, + { "time": 0.4333, "x": 5.16, "y": -119.64 }, + { "time": 0.5, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 0.8, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 0.9333, "x": 50.34, "y": -205.18, "curve": "stepped" }, + { "time": 2.2333, "x": 50.34, "y": -205.18 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 8.47 }, + { "time": 0.2666, "angle": 115.95 }, + { "time": 0.4, "angle": 180.66, "curve": "stepped" }, + { "time": 0.4333, "angle": 180.66 }, + { "time": 0.5, "angle": 155.22 }, + { "time": 0.6, "angle": 97.73 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -27.37 }, + { "time": 0.2666, "angle": -35.1 }, + { "time": 0.4, "angle": -37.72, "curve": "stepped" }, + { "time": 0.4333, "angle": -37.72 }, + { "time": 0.5, "angle": -40.06 }, + { "time": 0.6, "angle": 2.76 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 70.45 }, + { "time": 0.2666, "angle": 155.34 }, + { "time": 0.4, "angle": 214.31, "curve": "stepped" }, + { "time": 0.4333, "angle": 214.31 }, + { "time": 0.5, "angle": 169.67 }, + { "time": 0.8, "angle": 83.27 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 18.93 }, + { "time": 0.2666, "angle": -21.04 }, + { "time": 0.4, "angle": -29.93, "curve": "stepped" }, + { "time": 0.4333, "angle": -29.93 }, + { "time": 0.5, "angle": -16.79 }, + { "time": 0.8, "angle": 7.77 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": -11.62 }, + { "time": 0.4, "angle": -45.59, "curve": "stepped" }, + { "time": 0.4333, "angle": -45.59 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4, "angle": -48.75, "curve": "stepped" }, + { "time": 0.4333, "angle": -48.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gunTip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + } + } + }, + "hit": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0.1666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" }, + { "time": 0.3333, "name": "mouth_smile" } + ] + } + }, + "bones": { + "torso": { + "rotate": [ + { "time": 0, "angle": 56.42 }, + { "time": 0.3333, "angle": 8.89 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 35.38 }, + { "time": 0.2333, "angle": 24.94 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 10.21 }, + { "time": 0.3333, "angle": -41.3 } + ] + }, + "front_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": -310.92, + "curve": [ 0.38, 0.53, 0.744, 1 ] + }, + { "time": 0.3333, "angle": -112.59 } + ], + "translate": [ + { "time": 0, "x": 7.23, "y": -13.13 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 36.99 }, + { "time": 0.3333, "angle": -28.64 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": 13.59 }, + { "time": 0.3333, "angle": 7.55 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": 271.02, + "curve": [ 0.342, 0.36, 0.68, 0.71 ] + }, + { "time": 0.3333, "angle": -15.84 } + ], + "translate": [ + { "time": 0.3333, "x": -0.09, "y": -0.46 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": 40.03 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 14.98 }, + { "time": 0.3333, "angle": 39.75 } + ] + }, + "hip": { + "translate": [ + { "time": 0, "x": -75.54, "y": -78.03 }, + { "time": 0.2333, "x": -36.48, "y": 12.42 }, + { "time": 0.3333, "x": -36.48, "y": -2.99 } + ] + }, + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 90.94, + "curve": [ 0.227, 0.26, 0.432, 1 ] + }, + { "time": 0.3333, "angle": 32.02 } + ], + "translate": [ + { "time": 0, "x": 7.21, "y": -4 } + ] + }, + "rear_thigh": { + "rotate": [ + { + "time": 0, + "angle": 40.51, + "curve": [ 0.295, 0.3, 0.59, 0.99 ] + }, + { "time": 0.3333, "angle": 90.76 } + ], + "translate": [ + { "time": 0, "x": -1.96, "y": -0.32 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": -96.62 }, + { "time": 0.3333, "angle": -15.13 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 7.99 }, + { "time": 0.3333, "angle": -67.54 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 5.4 }, + { "time": 0.3333, "angle": -16.26 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 2.67 }, + { "time": 0.3333, "angle": -10.31 } + ] + } + } + }, + "idle": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" }, + { "time": 1.6666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_smile" }, + { "time": 1.6666, "name": "mouth_smile" } + ] + } + }, + "bones": { + "torso": { + "rotate": [ + { + "time": 0, + "angle": -5.61, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.8333, + "angle": -9.65, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -5.61 } + ], + "translate": [ + { "time": 0, "x": -6.49, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": -59.85, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -54.31, + "curve": [ 0.324, 0.11, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -59.85 } + ], + "translate": [ + { "time": 0, "x": -7.12, "y": -8.23 }, + { "time": 0.6666, "x": -6.32, "y": -8.3 }, + { "time": 1.6666, "x": -7.12, "y": -8.23 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { + "time": 0, + "angle": 62.41, + "curve": [ 0.504, 0.02, 0.75, 1 ] + }, + { + "time": 0.7333, + "angle": 43.83, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": 62.41 } + ], + "translate": [ + { "time": 0, "x": -1.83, "y": -16.78 }, + { "time": 0.6666, "x": 0.34, "y": -15.23 }, + { "time": 1.6666, "x": -1.83, "y": -16.78 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.6666, "angle": 2.39 }, + { "time": 1.6666, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -1.88, "y": -4.76, "curve": "stepped" }, + { "time": 1.6666, "x": -1.88, "y": -4.76 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 0.64, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": -4.34, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 0.64 } + ], + "translate": [ + { "time": 0, "x": -13.39, "y": 6.69, "curve": "stepped" }, + { "time": 1.6666, "x": -13.39, "y": 6.69 } + ], + "scale": [ + { + "time": 0, + "x": 0.896, + "y": 1, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 0.825, + "y": 1, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": 0.896, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": -19.28, "curve": "stepped" }, + { "time": 1.6666, "angle": -19.28 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 0.994, + "y": 1, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { + "time": 0, + "angle": 30.5, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 40.15, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 30.5 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { + "time": 0, + "angle": -23.83, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": -43.77, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": -23.83 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { + "time": 0, + "angle": 5.13, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 10.04, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": 5.13 } + ], + "scale": [ + { "time": 0, "x": 0.755, "y": 1.309, "curve": "stepped" }, + { "time": 1.6666, "x": 0.755, "y": 1.309 } + ] + }, + "hip": { + "translate": [ + { + "time": 0, + "x": -6.63, + "y": -23.01, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "x": 6.27, + "y": -35, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "x": -6.63, "y": -23.01 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { + "time": 0, + "angle": -7.34, + "curve": [ 0.235, 0, 0.558, 0.99 ] + }, + { + "time": 0.6666, + "angle": 3.85, + "curve": [ 0.594, 0, 0.653, 1 ] + }, + { "time": 1.6666, "angle": -7.34 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { + "time": 0, + "angle": -17.16, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": 12.52, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -17.16 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { + "time": 0, + "angle": -5.51, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -3.12, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -5.51 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { + "time": 0, + "angle": 45.46, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": 41.33, + "curve": [ 0.32, 0.1, 0.736, 0.91 ] + }, + { "time": 1.6666, "angle": 45.46 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -15.59, + "curve": [ 0.732, 0, 0.769, 0.99 ] + }, + { "time": 1.6666, "angle": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { + "time": 0, + "angle": -6.84, + "curve": [ 0.492, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -14.63, + "curve": [ 0.324, 0.11, 0.75, 1 ] + }, + { "time": 1.6666, "angle": -6.84 } + ], + "scale": [ + { + "time": 0, + "x": 1, + "y": 1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "x": 0.689, + "y": 1.1, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 1.6666, "x": 1, "y": 1 } + ] + } + } + }, + "jump": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_open" }, + { "time": 0.2, "name": "front_fist_closed" }, + { "time": 0.6666, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 91.53, + "curve": [ 0.278, 0.46, 0.763, 1 ] + }, + { + "time": 0.2, + "angle": -35.83, + "curve": [ 0.761, 0, 0.75, 1 ] + }, + { "time": 0.4333, "angle": 127.74 }, + { + "time": 0.7333, + "angle": 48.18, + "curve": [ 0.227, 0.26, 0.432, 1 ] + }, + { "time": 0.8333, "angle": 25.35 }, + { "time": 0.9333, "angle": 45.37 }, + { "time": 1.0333, "angle": 38.12 }, + { "time": 1.1333, "angle": 25.35 }, + { "time": 1.3333, "angle": 91.53 } + ], + "translate": [ + { "time": 0, "x": -2.56, "y": 5.77 }, + { "time": 0.4333, "x": 8.3, "y": 7.98 }, + { "time": 0.7333, "x": 7.21, "y": -4 }, + { "time": 1.3333, "x": -2.56, "y": 5.77 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -42.63 }, + { "time": 0.2, "angle": -5.74 }, + { "time": 0.4333, "angle": -50.76 }, + { "time": 0.7333, "angle": 1.89 }, + { "time": 0.8333, "angle": 11.58 }, + { "time": 0.9666, "angle": -1.89 }, + { "time": 1.1333, "angle": 11.58 }, + { "time": 1.3333, "angle": -42.63 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -26.32 }, + { "time": 0.2, "angle": 121.44 }, + { "time": 0.4333, "angle": 70.54 }, + { + "time": 0.7333, + "angle": 79.89, + "curve": [ 0.295, 0.3, 0.59, 0.99 ] + }, + { "time": 0.8333, "angle": 99.12 }, + { "time": 0.9333, "angle": 74.05 }, + { "time": 1.0333, "angle": 98.04 }, + { "time": 1.1333, "angle": 99.12 }, + { "time": 1.3333, "angle": -26.32 } + ], + "translate": [ + { "time": 0, "x": -0.56, "y": -0.32 }, + { "time": 0.4333, "x": -8.5, "y": 10.58 }, + { "time": 0.7333, "x": -1.96, "y": -0.32 }, + { "time": 1.3333, "x": -0.56, "y": -0.32 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": -78.69 }, + { "time": 0.4333, "angle": -55.56 }, + { "time": 0.7333, "angle": -62.84 }, + { "time": 0.8333, "angle": -80.74 }, + { "time": 0.9333, "angle": -41.12 }, + { "time": 1.0333, "angle": -77.4 }, + { "time": 1.1333, "angle": -80.74 }, + { "time": 1.3333, "angle": -78.69 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.7333, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -22.61 }, + { "time": 0.2, "angle": -246.68 }, + { + "time": 0.6, + "angle": 11.28, + "curve": [ 0.246, 0, 0.633, 0.53 ] + }, + { + "time": 0.7333, + "angle": -57.45, + "curve": [ 0.38, 0.53, 0.744, 1 ] + }, + { "time": 0.8666, "angle": -112.59 }, + { "time": 0.9333, "angle": -102.17 }, + { "time": 1.0333, "angle": -108.61 }, + { "time": 1.1333, "angle": -112.59 }, + { "time": 1.3333, "angle": -22.61 } + ], + "translate": [ + { "time": 0, "x": 6.08, "y": 7.15 }, + { "time": 0.2, "x": 7.23, "y": -13.13, "curve": "stepped" }, + { "time": 0.7333, "x": 7.23, "y": -13.13 }, + { "time": 1.3333, "x": 6.08, "y": 7.15 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 66.46 }, + { "time": 0.2, "angle": 42.39 }, + { "time": 0.4333, "angle": 26.06 }, + { "time": 0.7333, "angle": 13.28 }, + { "time": 0.8666, "angle": -28.64 }, + { "time": 0.9333, "angle": -22.31 }, + { "time": 1.0333, "angle": -35.39 }, + { "time": 1.1333, "angle": -28.64 }, + { "time": 1.3333, "angle": 66.46 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -28.43 }, + { "time": 0.4333, "angle": -45.6 }, + { "time": 0.7333, "angle": -53.66 }, + { "time": 0.8666, "angle": 7.55 }, + { "time": 0.9333, "angle": 31.15 }, + { "time": 1.0333, "angle": -32.58 }, + { "time": 1.1333, "angle": 7.55 }, + { "time": 1.3333, "angle": -28.43 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 39.68 }, + { "time": 0.2, "angle": 276.57 }, + { "time": 0.3, "angle": 17.73 }, + { "time": 0.4333, "angle": 83.38 }, + { + "time": 0.6, + "angle": -4.71, + "curve": [ 0.246, 0, 0.633, 0.53 ] + }, + { + "time": 0.7333, + "angle": -69.63, + "curve": [ 0.342, 0.36, 0.68, 0.71 ] + }, + { + "time": 0.7666, + "angle": 321.47, + "curve": [ 0.333, 0.33, 0.667, 0.66 ] + }, + { + "time": 0.8, + "angle": 33.7, + "curve": [ 0.358, 0.64, 0.693, 1 ] + }, + { "time": 0.8666, "angle": 34.56 }, + { "time": 1.0333, "angle": 71.96 }, + { "time": 1.1333, "angle": 34.56 }, + { "time": 1.3333, "angle": 39.68 } + ], + "translate": [ + { "time": 0, "x": -3.1, "y": -4.86 }, + { "time": 0.2, "x": 23.33, "y": 49.07 }, + { "time": 0.4333, "x": 20.78, "y": 40.21 }, + { "time": 1.3333, "x": -3.1, "y": -4.86 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 29.66 }, + { "time": 0.2, "angle": 45.06 }, + { "time": 0.4333, "angle": -4.34 }, + { "time": 0.7666, "angle": 61.68 }, + { "time": 0.8, "angle": 82.59 }, + { "time": 0.8666, "angle": 80.06 }, + { "time": 1.0333, "angle": 57.56 }, + { "time": 1.1333, "angle": 80.06 }, + { "time": 1.3333, "angle": 29.66 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 24.9 }, + { "time": 0.2, "angle": 16.31 }, + { "time": 0.4333, "angle": 7.44 }, + { "time": 0.7333, "angle": -20.35 }, + { "time": 0.8333, "angle": -0.69, "curve": "stepped" }, + { "time": 1.1333, "angle": -0.69 }, + { "time": 1.3333, "angle": 24.9 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 24.92 }, + { "time": 0.2, "angle": 10.36 }, + { "time": 0.4333, "angle": 28.65 }, + { "time": 0.7333, "angle": -2.65 }, + { "time": 0.8333, "angle": -28.94, "curve": "stepped" }, + { "time": 1.1333, "angle": -28.94 }, + { "time": 1.3333, "angle": 24.92 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -34.51, + "y": -78.62, + "curve": [ 0.232, 1, 0.75, 1 ] + }, + { + "time": 0.2, + "x": -34.51, + "y": 182.5, + "curve": [ 0.232, 0.48, 0.598, 0.79 ] + }, + { + "time": 0.7666, + "x": -34.51, + "y": 596.22, + "curve": [ 0.329, 0.17, 0.66, 0.21 ] + }, + { "time": 1.1333, "x": -34.51, "y": 2.49 }, + { "time": 1.3333, "x": -34.51, "y": -78.62 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { + "time": 0, + "angle": -90.62, + "curve": [ 0.416, 0.54, 0.743, 1 ] + }, + { + "time": 0.2, + "angle": -10.52, + "curve": [ 0.644, 0, 0.75, 1 ] + }, + { "time": 0.4333, "angle": -127.72 }, + { "time": 0.7333, "angle": -19.91 }, + { "time": 0.8333, "angle": -5.16 }, + { "time": 0.9333, "angle": -35.06 }, + { "time": 1.0333, "angle": -43.97 }, + { "time": 1.1333, "angle": -5.16 }, + { "time": 1.3333, "angle": -90.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": -0.79 }, + { "time": 0.0333, "angle": 16.27 }, + { "time": 0.0666, "angle": 23.52 }, + { "time": 0.1, "angle": 21.02 }, + { "time": 0.1333, "angle": 10.92 }, + { "time": 0.2, "angle": -38.45 }, + { "time": 0.4333, "angle": 6.62 }, + { "time": 0.7333, "angle": -11.51 }, + { "time": 1.0333, "angle": -22.91 }, + { "time": 1.3333, "angle": -0.79 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": -12.77 }, + { "time": 0.2, "angle": 17.05 }, + { "time": 0.4333, "angle": 19.45 }, + { "time": 0.7333, "angle": 2.67 }, + { "time": 1.0333, "angle": -28.49 }, + { "time": 1.3333, "angle": -12.77 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 6.18 }, + { "time": 0.2, "angle": 30.81 }, + { "time": 0.4333, "angle": 13.25 }, + { "time": 0.7333, "angle": 14.98 }, + { "time": 0.7666, "angle": 25.64 }, + { "time": 0.8, "angle": 20.62 }, + { "time": 0.8666, "angle": 64.52 }, + { "time": 1.0333, "angle": 8.59 }, + { "time": 1.1333, "angle": 64.52 }, + { "time": 1.3333, "angle": 6.18 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 } + ] + } + } + }, + "run": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_closed" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_grind" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { + "time": 0, + "angle": 42.05, + "curve": [ 0.195, 0.86, 0.75, 1 ] + }, + { "time": 0.0666, "angle": 46.07 }, + { "time": 0.1333, "angle": -20.28 }, + { "time": 0.2, "angle": -27.23 }, + { "time": 0.2666, "angle": -47.16 }, + { "time": 0.3333, "angle": -39.79 }, + { "time": 0.4, "angle": -25.86 }, + { "time": 0.4666, "angle": 14.35 }, + { "time": 0.5333, "angle": 55.62 }, + { "time": 0.6, "angle": 69.65 }, + { "time": 0.6666, "angle": 86.4 }, + { "time": 0.7333, "angle": 65.87 }, + { "time": 0.8, "angle": 42.05 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.0333, "x": -5.79, "y": 11.15 }, + { "time": 0.0666, "x": -5.13, "y": 11.55 }, + { "time": 0.1333, "x": -7.7, "y": 8.98 }, + { "time": 0.5333, "x": -1.26, "y": 3.83 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -39.7 }, + { "time": 0.2, "angle": -57.29 }, + { "time": 0.4, "angle": -39.7 }, + { "time": 0.6, "angle": -57.29 }, + { "time": 0.8, "angle": -39.7 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -56.59 }, + { "time": 0.0666, "angle": -21.57 }, + { "time": 0.1333, "angle": 27.95 }, + { "time": 0.2, "angle": 42.42 }, + { "time": 0.2666, "angle": 62.37 }, + { "time": 0.3333, "angle": 45.42 }, + { "time": 0.4, "angle": 15.67 }, + { "time": 0.4666, "angle": 28.22 }, + { "time": 0.5333, "angle": -38.62 }, + { "time": 0.6, "angle": -53.26 }, + { "time": 0.6666, "angle": -79.31 }, + { "time": 0.7333, "angle": -86.47 }, + { "time": 0.8, "angle": -56.59 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": -6.76, "y": -3.86 }, + { "time": 0.4333, "x": -15.85, "y": 7.28 }, + { "time": 0.4666, "x": -13.04, "y": 4.04 }, + { "time": 0.5, "x": -10.24, "y": 7.11 }, + { "time": 0.5333, "x": -9.01, "y": -5.15 }, + { "time": 0.6666, "x": -23.18, "y": -2.57 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": -74 }, + { "time": 0.0666, "angle": -83.38 }, + { "time": 0.1333, "angle": -106.69 }, + { "time": 0.2, "angle": -66.01 }, + { "time": 0.2666, "angle": -55.22 }, + { "time": 0.3333, "angle": -24.8 }, + { + "time": 0.4, + "angle": 18.44, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.4666, "angle": -56.65 }, + { + "time": 0.5333, + "angle": -11.94, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.6666, "angle": -41.26 }, + { "time": 0.7333, "angle": -43.6 }, + { "time": 0.8, "angle": -74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -89.36 }, + { "time": 0.0666, "angle": -95.67 }, + { "time": 0.1333, "angle": -22 }, + { "time": 0.2, "angle": -316.04 }, + { "time": 0.2666, "angle": -274.94 }, + { "time": 0.3333, "angle": -273.74 }, + { "time": 0.4, "angle": -272.09 }, + { "time": 0.4666, "angle": -264.89 }, + { "time": 0.5333, "angle": -320.09 }, + { "time": 0.6, "angle": -50.83 }, + { "time": 0.6666, "angle": -81.72 }, + { "time": 0.7333, "angle": -83.92 }, + { "time": 0.8, "angle": -89.36 } + ], + "translate": [ + { "time": 0, "x": 6.24, "y": 10.05 }, + { "time": 0.2666, "x": 4.95, "y": -13.13 }, + { "time": 0.6, "x": -2.43, "y": 1.94 }, + { "time": 0.8, "x": 6.24, "y": 10.05 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 33.43 }, + { "time": 0.0666, "angle": 20.53 }, + { "time": 0.1333, "angle": 15.26 }, + { "time": 0.2, "angle": 19.28 }, + { "time": 0.2666, "angle": 22.62 }, + { "time": 0.3333, "angle": 37.29 }, + { "time": 0.4, "angle": 41.53 }, + { "time": 0.4666, "angle": 31.73 }, + { "time": 0.5333, "angle": 67.45 }, + { "time": 0.6666, "angle": 39.77 }, + { "time": 0.7333, "angle": 30.95 }, + { "time": 0.8, "angle": 33.43 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -19.75 }, + { "time": 0.0666, "angle": -37.11 }, + { "time": 0.1333, "angle": -50.79 }, + { "time": 0.2666, "angle": -12.69 }, + { "time": 0.3333, "angle": 3.01 }, + { "time": 0.4333, "angle": 12.05 }, + { "time": 0.5333, "angle": 13.25 }, + { "time": 0.8, "angle": -19.75 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 68.68 }, + { "time": 0.0666, "angle": 73.89 }, + { "time": 0.1333, "angle": -9.64 }, + { "time": 0.2, "angle": 284.27 }, + { "time": 0.2666, "angle": 283.29 }, + { "time": 0.3333, "angle": 278.28 }, + { "time": 0.4, "angle": 271.02 }, + { "time": 0.4666, "angle": 263.2 }, + { "time": 0.5333, "angle": 314.25 }, + { "time": 0.6, "angle": 16.83 }, + { "time": 0.6666, "angle": 70.35 }, + { "time": 0.7333, "angle": 73.53 }, + { "time": 0.8, "angle": 68.68 } + ], + "translate": [ + { "time": 0, "x": -2.57, "y": -8.89 }, + { "time": 0.1333, "x": -4.68, "y": 7.2 }, + { "time": 0.2, "x": 21.73, "y": 51.17 }, + { "time": 0.6, "x": 4.33, "y": 2.05 }, + { "time": 0.8, "x": -2.57, "y": -8.89 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 31.04 }, + { "time": 0.0666, "angle": 28.28 }, + { "time": 0.1333, "angle": 49.36 }, + { "time": 0.2, "angle": 59.37 }, + { "time": 0.2666, "angle": 8.56 }, + { "time": 0.3333, "angle": 9.38 }, + { "time": 0.4, "angle": 11.51 }, + { "time": 0.4666, "angle": 7.22 }, + { "time": 0.5333, "angle": -18.44 }, + { "time": 0.6, "angle": 11.44 }, + { "time": 0.6666, "angle": 9.99 }, + { "time": 0.7333, "angle": 8.28 }, + { "time": 0.8, "angle": 31.04 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 11.03 }, + { "time": 0.2, "angle": 13.58 }, + { "time": 0.4, "angle": 11.03 }, + { "time": 0.6, "angle": 13.58 }, + { "time": 0.8, "angle": 11.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 11.03 }, + { "time": 0.1, "angle": 12.34 }, + { "time": 0.2, "angle": 25.55 }, + { "time": 0.4, "angle": 11.03 }, + { "time": 0.5, "angle": 12.34 }, + { "time": 0.6, "angle": 25.55 }, + { "time": 0.8, "angle": 11.03 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": -62.47, "y": -23.1 }, + { + "time": 0.0666, + "x": -62.47, + "y": -38.51, + "curve": [ 0.244, 0.04, 0.75, 1 ] + }, + { + "time": 0.2666, + "x": -62.47, + "y": 22.28, + "curve": [ 0.17, 0.52, 0.75, 1 ] + }, + { "time": 0.4, "x": -62.47, "y": -23.1 }, + { "time": 0.4333, "x": -62.47, "y": -24.59 }, + { + "time": 0.4666, + "x": -62.47, + "y": -43.29, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.6666, "x": -62.47, "y": 22.28 }, + { "time": 0.8, "x": -62.47, "y": -23.1 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { + "time": 0, + "angle": 0, + "curve": [ 0.481, 0.01, 0.75, 1 ] + }, + { "time": 0.0666, "angle": -64.42 }, + { + "time": 0.1333, + "angle": -20.59, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.2666, "angle": -62.51 }, + { "time": 0.3333, "angle": -79.74 }, + { "time": 0.4, "angle": -78.28 }, + { + "time": 0.4666, + "angle": -118.96, + "curve": [ 0.93, 0, 0.952, 0.95 ] + }, + { "time": 0.6, "angle": -88.95 }, + { "time": 0.6666, "angle": -79.09 }, + { "time": 0.7333, "angle": -47.77 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { + "time": 0.0333, + "angle": -21.13, + "curve": [ 0.121, 0.23, 0.75, 1 ] + }, + { "time": 0.0666, "angle": 17.64 }, + { "time": 0.1, "angle": 29.92 }, + { "time": 0.1333, "angle": 16.44 }, + { "time": 0.2, "angle": -29.22 }, + { "time": 0.2666, "angle": -1.61 }, + { "time": 0.3333, "angle": -10.22 }, + { "time": 0.4666, "angle": -15.99 }, + { "time": 0.6, "angle": 9.03 }, + { "time": 0.7333, "angle": 17.32 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.0666, "angle": -12.04 }, + { "time": 0.1333, "angle": -0.87 }, + { "time": 0.2, "angle": 25.81 }, + { "time": 0.2666, "angle": 4.71 }, + { + "time": 0.4, + "angle": 18.09, + "curve": [ 0.281, 0.73, 0.75, 1 ] + }, + { "time": 0.4333, "angle": -1.7 }, + { "time": 0.4666, "angle": 27.12 }, + { "time": 0.5, "angle": 38.83 }, + { "time": 0.5333, "angle": 30.76 }, + { "time": 0.5666, "angle": -20.49 }, + { "time": 0.6, "angle": -30.8 }, + { "time": 0.6666, "angle": -1.31 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.1333, "angle": 24.72 }, + { "time": 0.5, "angle": -11.87 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + } + }, + "events": [ + { "time": 0, "name": "footstep" }, + { "time": 0.4, "name": "footstep", "int": 1 } + ] + }, + "shoot": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0.1333, "name": "front_fist_closed" }, + { "time": 0.4, "name": "front_fist_open" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0.1333, "name": "mouth_grind" } + ] + }, + "muzzle": { + "attachment": [ + { "time": 0.1333, "name": "muzzle" }, + { "time": 0.2666, "name": null } + ], + "color": [ + { + "time": 0.1333, + "color": "ffffff00", + "curve": [ 0.118, 0.99, 0.75, 1 ] + }, + { + "time": 0.1666, + "color": "ffffffff", + "curve": [ 0.821, 0, 0.909, 0.89 ] + }, + { "time": 0.2666, "color": "ffffff00" } + ] + } + }, + "bones": { + "front_fist": { + "scale": [ + { "time": 0.1333, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.4, "x": 1, "y": 1 } + ] + }, + "gunTip": { + "translate": [ + { "time": 0.1333, "x": 0, "y": 0 }, + { "time": 0.2, "x": 20.93, "y": 1.57 } + ], + "scale": [ + { "time": 0.1333, "x": 1, "y": 1 }, + { "time": 0.2, "x": 1.247, "y": 1.516 } + ] + }, + "gun": { + "rotate": [ + { "time": 0, "angle": 1.9 } + ], + "translate": [ + { + "time": 0, + "x": 7.95, + "y": 5.84, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": -9.3, "y": -1.41 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": -30.47 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": -5.99, "y": -3.71 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 62.3 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0, 0.3, 0.678, 1 ] + }, + { "time": 0.3, "x": 2.81, "y": 11.41 }, + { "time": 0.4, "x": 0, "y": 0 } + ] + } + } + }, + "test": { + "slots": { + "front_foot": { + "color": [ + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "ff0700ff" } + ] + }, + "gun": { + "color": [ + { "time": 0, "color": "ffffffff", "curve": "stepped" }, + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "32ff00ff" } + ] + }, + "rear_foot": { + "color": [ + { "time": 0.6666, "color": "ffffffff" }, + { "time": 1.3333, "color": "ff0700ff" } + ] + } + }, + "bones": { + "head": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.3333, "angle": -20.72 }, + { "time": 0.6666, "angle": -32.41 }, + { "time": 1, "angle": -5.3 }, + { "time": 1.3333, "angle": 24.96 }, + { "time": 1.6666, "angle": 15.61 }, + { "time": 2, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": 0, + "y": 0, + "curve": [ 0.172, 0.37, 0.574, 0.73 ] + }, + { + "time": 0.1666, + "x": 144.19, + "y": -77.59, + "curve": [ 0.372, 0.61, 0.765, 1 ] + }, + { + "time": 0.3333, + "x": 217.61, + "y": -192.63, + "curve": [ 0.282, 0, 0.624, 0.31 ] + }, + { + "time": 0.5, + "x": 181.21, + "y": -365.66, + "curve": [ 0.313, 0.21, 0.654, 0.54 ] + }, + { + "time": 0.6666, + "x": 20.09, + "y": -500.4, + "curve": [ 0.147, 0.27, 0.75, 1 ] + }, + { "time": 0.8333, "x": -194.24, "y": -341.84 }, + { "time": 1, "x": -307.93, "y": -114 }, + { + "time": 1.1666, + "x": -330.38, + "y": 121.42, + "curve": [ 0.25, 0, 0.764, 0.48 ] + }, + { + "time": 1.3333, + "x": -240.42, + "y": 335.66, + "curve": [ 0.229, 0.37, 0.58, 0.73 ] + }, + { + "time": 1.5, + "x": -56.12, + "y": 288.06, + "curve": [ 0.296, 0.6, 0.641, 1 ] + }, + { + "time": 1.6666, + "x": 87.63, + "y": 191.33, + "curve": [ 0.238, 0, 0.626, 0.39 ] + }, + { + "time": 1.8333, + "x": 60.62, + "y": 95.14, + "curve": [ 0.41, 0.26, 0.803, 0.62 ] + }, + { "time": 2, "x": 0, "y": 0 } + ] + } + }, + "draworder": [ + { + "time": 0.6666, + "offsets": [ + { "slot": "head", "offset": -9 }, + { "slot": "eye", "offset": -9 }, + { "slot": "mouth", "offset": -12 }, + { "slot": "goggles", "offset": -12 } + ] + }, + { "time": 1.3333 } + ], + "events": [ + { "time": 0, "name": "headPop", "int": 0, "float": 0, "string": "pop.wav" }, + { "time": 1, "name": "headBehind", "int": 7, "float": 8, "string": "animate" }, + { "time": 2, "name": "headAttach", "int": 0, "float": 0, "string": "attach.wav" } + ] + }, + "walk": { + "slots": { + "front_fist": { + "attachment": [ + { "time": 0, "name": "front_fist_closed" } + ] + }, + "mouth": { + "attachment": [ + { "time": 0, "name": "mouth_smile" } + ] + }, + "torso": { + "attachment": [ + { "time": 0, "name": "torso" } + ] + } + }, + "bones": { + "front_thigh": { + "rotate": [ + { "time": 0, "angle": 15.79 }, + { "time": 0.1, "angle": 27.39 }, + { "time": 0.2, "angle": -7.94 }, + { "time": 0.3, "angle": -16.94 }, + { "time": 0.4, "angle": -28.62 }, + { "time": 0.5, "angle": -19.3 }, + { "time": 0.6, "angle": -3.08 }, + { "time": 0.7, "angle": 29.51 }, + { "time": 0.8, "angle": 15.79 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": -1.18, "y": 0.54 }, + { "time": 0.5, "x": 0.11, "y": 0.41 }, + { "time": 0.6, "x": 9.48, "y": 0.27 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.4, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_shin": { + "rotate": [ + { "time": 0, "angle": 5.12 }, + { "time": 0.1, "angle": -20.87 }, + { "time": 0.2, "angle": 13.37 }, + { "time": 0.3, "angle": 15.98 }, + { "time": 0.4, "angle": 5.94 }, + { "time": 0.5, "angle": -26.76 }, + { "time": 0.7, "angle": -55.44 }, + { "time": 0.8, "angle": 5.12 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_thigh": { + "rotate": [ + { "time": 0, "angle": -34.38 }, + { "time": 0.1, "angle": -30.32 }, + { "time": 0.2, "angle": -37.22 }, + { "time": 0.3, "angle": 20.73 }, + { "time": 0.4, "angle": 8.69 }, + { "time": 0.5, "angle": 12.16 }, + { "time": 0.6, "angle": -24.62 }, + { "time": 0.7, "angle": -27.26 }, + { "time": 0.8, "angle": -34.38 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0 }, + { "time": 0.4, "x": 4.08, "y": -9.53 }, + { "time": 0.5, "x": 0, "y": 0 }, + { "time": 0.7, "x": -21.14, "y": -9.6 }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_shin": { + "rotate": [ + { "time": 0, "angle": 14.26 }, + { "time": 0.1, "angle": -17.3 }, + { "time": 0.2, "angle": -12.67 }, + { "time": 0.3, "angle": -58.89 }, + { "time": 0.4, "angle": 15.95 }, + { "time": 0.5, "angle": -9 }, + { "time": 0.6, "angle": 26.06 }, + { "time": 0.7, "angle": 21.85 }, + { "time": 0.8, "angle": 14.26 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1 }, + { "time": 0.1, "x": 0.951, "y": 1 }, + { "time": 0.5, "x": 0.975, "y": 1 }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_foot": { + "rotate": [ + { "time": 0, "angle": 10.13 }, + { "time": 0.1, "angle": 12.27 }, + { "time": 0.2, "angle": -2.94 }, + { "time": 0.3, "angle": 6.29 }, + { "time": 0.4, "angle": 13.45 }, + { "time": 0.5, "angle": -3.57 }, + { "time": 0.6, "angle": -0.97 }, + { "time": 0.7, "angle": 2.97 }, + { "time": 0.8, "angle": 10.13 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_upper_arm": { + "rotate": [ + { "time": 0, "angle": -23.74 }, + { "time": 0.4, "angle": -320.57 }, + { "time": 0.8, "angle": -23.74 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_upper_arm": { + "rotate": [ + { "time": 0, "angle": 11.62 }, + { "time": 0.1, "angle": 19.36 }, + { "time": 0.4, "angle": 345.26 }, + { "time": 0.5, "angle": 343.44 }, + { "time": 0.8, "angle": 11.62 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "torso": { + "rotate": [ + { "time": 0, "angle": -12.11 }, + { "time": 0.1666, "angle": -17.16 }, + { "time": 0.4, "angle": -12.11 }, + { "time": 0.5666, "angle": -15.81 }, + { "time": 0.8, "angle": -12.11 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "neck": { + "rotate": [ + { "time": 0, "angle": 1.41 }, + { "time": 0.2333, "angle": -3.04 }, + { "time": 0.4, "angle": 1.41 }, + { "time": 0.6333, "angle": -3.04 }, + { "time": 0.8, "angle": 1.41 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "head": { + "rotate": [ + { "time": 0, "angle": 6.97 }, + { "time": 0.1666, "angle": 8.02 }, + { "time": 0.2666, "angle": 12.65 }, + { "time": 0.4, "angle": 6.97 }, + { "time": 0.5666, "angle": 8.02 }, + { "time": 0.6666, "angle": 12.65 }, + { "time": 0.8, "angle": 6.97 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.4, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "hip": { + "rotate": [ + { "time": 0, "angle": 0, "curve": "stepped" }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { + "time": 0, + "x": -23.93, + "y": 3.22, + "curve": [ 0.518, 0.03, 0.807, 0.61 ] + }, + { + "time": 0.1, + "x": -23.93, + "y": -9.24, + "curve": [ 0.135, 0.33, 0.601, 0.99 ] + }, + { + "time": 0.2, + "x": -23.93, + "y": 4.35, + "curve": [ 0.204, 0.68, 0.75, 1 ] + }, + { + "time": 0.3, + "x": -23.93, + "y": 2.38, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.4, + "x": -23.93, + "y": -2.5, + "curve": [ 0.692, 0.01, 0.75, 1 ] + }, + { + "time": 0.5, + "x": -23.93, + "y": -10.32, + "curve": [ 0.235, 0.77, 0.75, 1 ] + }, + { + "time": 0.6, + "x": -23.93, + "y": 4.35, + "curve": [ 0.287, 0.37, 0.718, 0.76 ] + }, + { + "time": 0.7, + "x": -23.93, + "y": 10.34, + "curve": [ 0.615, 0, 0.75, 1 ] + }, + { "time": 0.8, "x": -23.93, "y": 3.22 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_bracer": { + "rotate": [ + { "time": 0, "angle": 0 }, + { "time": 0.4, "angle": 20.59 }, + { "time": 0.8, "angle": 0 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_foot": { + "rotate": [ + { "time": 0, "angle": 12.49 }, + { "time": 0.1, "angle": -8.34 }, + { "time": 0.2, "angle": -6.17 }, + { "time": 0.3, "angle": -0.75 }, + { "time": 0.3333, "angle": 3.89 }, + { "time": 0.4, "angle": 10.22 }, + { "time": 0.5, "angle": 11.44 }, + { "time": 0.6, "angle": -0.33 }, + { "time": 0.7, "angle": 0.15 }, + { "time": 0.8, "angle": 12.49 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "rear_bracer": { + "rotate": [ + { "time": 0, "angle": 3.58 }, + { "time": 0.1, "angle": 5.51 }, + { "time": 0.4, "angle": -22.77 }, + { "time": 0.5, "angle": -9.65 }, + { "time": 0.8, "angle": 3.58 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "front_fist": { + "rotate": [ + { "time": 0, "angle": -15.22 }, + { "time": 0.1, "angle": -51.4 }, + { "time": 0.4, "angle": -39.4 }, + { "time": 0.5, "angle": 19.26 }, + { "time": 0.8, "angle": -15.22 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + }, + "gun": { + "rotate": [ + { + "time": 0, + "angle": -24.06, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.1, + "angle": -10.94, + "curve": [ 0.381, 0.54, 0.742, 1 ] + }, + { + "time": 0.4, + "angle": 25.34, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { + "time": 0.6666, + "angle": -27.47, + "curve": [ 0.25, 0, 0.75, 1 ] + }, + { "time": 0.8, "angle": -24.06 } + ], + "translate": [ + { "time": 0, "x": 0, "y": 0, "curve": "stepped" }, + { "time": 0.8, "x": 0, "y": 0 } + ], + "scale": [ + { "time": 0, "x": 1, "y": 1, "curve": "stepped" }, + { "time": 0.8, "x": 1, "y": 1 } + ] + } + } + } +} +} \ No newline at end of file diff --git a/demo/assets/common/spines/spineboy.json.meta b/demo/assets/common/spines/spineboy.json.meta new file mode 100644 index 00000000..e4c0ee1c --- /dev/null +++ b/demo/assets/common/spines/spineboy.json.meta @@ -0,0 +1,9 @@ +{ + "ver": "1.2.3", + "uuid": "bcd99389-a393-426e-b234-157c62b44bc4", + "textures": [ + "d9c4530a-ef05-45c1-b012-eb4686f4c70f" + ], + "scale": 1, + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/common/spines/spineboy.png b/demo/assets/common/spines/spineboy.png new file mode 100644 index 00000000..d189ad79 Binary files /dev/null and b/demo/assets/common/spines/spineboy.png differ diff --git a/demo/assets/common/spines/spineboy.png.meta b/demo/assets/common/spines/spineboy.png.meta new file mode 100644 index 00000000..17a4bb03 --- /dev/null +++ b/demo/assets/common/spines/spineboy.png.meta @@ -0,0 +1,36 @@ +{ + "ver": "2.3.5", + "uuid": "d9c4530a-ef05-45c1-b012-eb4686f4c70f", + "type": "sprite", + "wrapMode": "clamp", + "filterMode": "bilinear", + "premultiplyAlpha": false, + "genMipmaps": false, + "packable": true, + "width": 1024, + "height": 256, + "platformSettings": {}, + "subMetas": { + "spineboy": { + "ver": "1.0.4", + "uuid": "f23f461c-0a3b-470e-a79b-9ee329e02319", + "rawTextureUuid": "d9c4530a-ef05-45c1-b012-eb4686f4c70f", + "trimType": "auto", + "trimThreshold": 1, + "rotated": false, + "offsetX": -11, + "offsetY": 6, + "trimX": 2, + "trimY": 2, + "width": 998, + "height": 240, + "rawWidth": 1024, + "rawHeight": 256, + "borderTop": 0, + "borderBottom": 0, + "borderLeft": 0, + "borderRight": 0, + "subMetas": {} + } + } +} \ No newline at end of file diff --git a/demo/assets/common/spines/spineboy.txt b/demo/assets/common/spines/spineboy.txt new file mode 100644 index 00000000..9576832e --- /dev/null +++ b/demo/assets/common/spines/spineboy.txt @@ -0,0 +1,195 @@ + +spineboy.png +size:1024,256 +format: RGBA8888 +filter: Linear,Linear +repeat: none +eye_indifferent + rotate: true + xy: 389, 5 + size: 56, 53 + orig: 56, 53 + offset: 0, 0 + index: -1 +eye_surprised + rotate: false + xy: 580, 34 + size: 56, 53 + orig: 56, 53 + offset: 0, 0 + index: -1 +front_bracer + rotate: false + xy: 732, 85 + size: 35, 48 + orig: 35, 48 + offset: 0, 0 + index: -1 +front_fist_closed + rotate: false + xy: 556, 91 + size: 45, 49 + orig: 45, 49 + offset: 0, 0 + index: -1 +front_fist_open + rotate: false + xy: 668, 32 + size: 52, 52 + orig: 52, 52 + offset: 0, 0 + index: -1 +front_foot + rotate: false + xy: 924, 201 + size: 76, 41 + orig: 76, 41 + offset: 0, 0 + index: -1 +front_foot_bend1 + rotate: false + xy: 845, 200 + size: 77, 42 + orig: 77, 42 + offset: 0, 0 + index: -1 +front_foot_bend2 + rotate: false + xy: 778, 186 + size: 65, 56 + orig: 65, 56 + offset: 0, 0 + index: -1 +front_shin + rotate: true + xy: 444, 91 + size: 49, 110 + orig: 49, 110 + offset: 0, 0 + index: -1 +front_thigh + rotate: true + xy: 603, 89 + size: 29, 67 + orig: 29, 67 + offset: 0, 0 + index: -1 +front_upper_arm + rotate: true + xy: 672, 86 + size: 32, 58 + orig: 32, 58 + offset: 0, 0 + index: -1 +goggles + rotate: false + xy: 444, 142 + size: 157, 100 + orig: 157, 100 + offset: 0, 0 + index: -1 +gun + rotate: false + xy: 603, 120 + size: 126, 122 + orig: 126, 122 + offset: 0, 0 + index: -1 +head + rotate: false + xy: 279, 63 + size: 163, 179 + orig: 163, 179 + offset: 0, 0 + index: -1 +mouth_grind + rotate: false + xy: 845, 163 + size: 56, 35 + orig: 56, 35 + offset: 0, 0 + index: -1 +mouth_oooo + rotate: false + xy: 842, 126 + size: 56, 35 + orig: 56, 35 + offset: 0, 0 + index: -1 +mouth_smile + rotate: false + xy: 769, 97 + size: 56, 35 + orig: 56, 35 + offset: 0, 0 + index: -1 +muzzle + rotate: false + xy: 2, 2 + size: 275, 240 + orig: 277, 240 + offset: 0, 0 + index: -1 +neck + rotate: false + xy: 903, 173 + size: 22, 25 + orig: 22, 25 + offset: 0, 0 + index: -1 +rear_bracer + rotate: false + xy: 722, 40 + size: 34, 43 + orig: 34, 43 + offset: 0, 0 + index: -1 +rear_foot + rotate: false + xy: 444, 11 + size: 68, 36 + orig: 68, 36 + offset: 0, 0 + index: -1 +rear_foot_bend1 + rotate: false + xy: 444, 49 + size: 70, 40 + orig: 70, 40 + offset: 0, 0 + index: -1 +rear_foot_bend2 + rotate: false + xy: 778, 134 + size: 62, 50 + orig: 62, 50 + offset: 0, 0 + index: -1 +rear_shin + rotate: false + xy: 731, 135 + size: 45, 107 + orig: 45, 107 + offset: 0, 0 + index: -1 +rear_thigh + rotate: true + xy: 516, 50 + size: 39, 62 + orig: 39, 62 + offset: 0, 0 + index: -1 +rear_upper_arm + rotate: false + xy: 638, 35 + size: 28, 52 + orig: 28, 52 + offset: 0, 0 + index: -1 +torso + rotate: true + xy: 279, 2 + size: 59, 108 + orig: 59, 108 + offset: 0, 0 + index: -1 diff --git a/demo/assets/common/spines/spineboy.txt.meta b/demo/assets/common/spines/spineboy.txt.meta new file mode 100644 index 00000000..cdc121ff --- /dev/null +++ b/demo/assets/common/spines/spineboy.txt.meta @@ -0,0 +1,5 @@ +{ + "ver": "2.0.0", + "uuid": "b63a4c13-b26d-4b2b-972f-453c057a18b2", + "subMetas": {} +} \ No newline at end of file diff --git a/demo/assets/multi-render/multi-material/multi-material.prefab b/demo/assets/multi-render/multi-material/multi-material.prefab index 3c64c7d4..8094ce1f 100644 --- a/demo/assets/multi-render/multi-material/multi-material.prefab +++ b/demo/assets/multi-render/multi-material/multi-material.prefab @@ -24,11 +24,11 @@ "_active": true, "_components": [ { - "__id__": 95 + "__id__": 122 } ], "_prefab": { - "__id__": 96 + "__id__": 123 }, "_opacity": 255, "_color": { @@ -89,23 +89,23 @@ "__id__": 3 }, { - "__id__": 83 + "__id__": 110 } ], "_active": true, "_components": [ { - "__id__": 88 + "__id__": 115 }, { - "__id__": 92 + "__id__": 119 }, { - "__id__": 93 + "__id__": 120 } ], "_prefab": { - "__id__": 94 + "__id__": 121 }, "_opacity": 255, "_color": { @@ -169,11 +169,11 @@ "_active": true, "_components": [ { - "__id__": 81 + "__id__": 108 } ], "_prefab": { - "__id__": 82 + "__id__": 109 }, "_opacity": 255, "_color": { @@ -253,22 +253,31 @@ }, { "__id__": 68 + }, + { + "__id__": 77 + }, + { + "__id__": 86 + }, + { + "__id__": 95 } ], "_active": true, "_components": [ { - "__id__": 77 + "__id__": 104 }, { - "__id__": 78 + "__id__": 105 }, { - "__id__": 79 + "__id__": 106 } ], "_prefab": { - "__id__": 80 + "__id__": 107 }, "_opacity": 255, "_color": { @@ -281,7 +290,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 960, - "height": 651 + "height": 843 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -1979,7 +1988,7 @@ }, { "__type__": "cc.Node", - "_name": "radial-sprite", + "_name": "mesh-sprite", "_objFlags": 0, "_parent": { "__id__": 4 @@ -2012,7 +2021,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 200, - "height": 261 + "height": 180 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -2024,7 +2033,7 @@ "ctor": "Float64Array", "array": [ -180, - -520.5, + -480, 0, 0, 0, @@ -2075,7 +2084,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 126.73, + "width": 118.93, "height": 30 }, "_anchorPoint": { @@ -2088,7 +2097,7 @@ "ctor": "Float64Array", "array": [ 0, - 65.5, + 25, 0, 0, 0, @@ -2125,8 +2134,8 @@ ], "_srcBlendFactor": 770, "_dstBlendFactor": 771, - "_string": "Sprite - Radial", - "_N$string": "Sprite - Radial", + "_string": "Sprite - Mesh", + "_N$string": "Sprite - Mesh", "_fontSize": 20, "_lineHeight": 30, "_enableWrapText": true, @@ -2154,12 +2163,12 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "6dsJoIUjZCjaNC73IYlqEX", + "fileId": "a88tQBbOhIc7ABFOj/8+Sh", "sync": false }, { "__type__": "cc.Node", - "_name": "sprite", + "_name": "label", "_objFlags": 0, "_parent": { "__id__": 50 @@ -2184,8 +2193,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 402, - "height": 370 + "width": 140, + "height": 30 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -2203,8 +2212,8 @@ 0, 0, 1, - 0.3, - 0.3, + 1, + 1, 1 ] }, @@ -2222,7 +2231,7 @@ "_id": "" }, { - "__type__": "cc.Sprite", + "__type__": "cc.Label", "_name": "", "_objFlags": 0, "node": { @@ -2230,29 +2239,29 @@ }, "_enabled": true, "_materials": [ - { - "__uuid__": "0e00cf72-1eb0-457b-83d2-0171cc1cd97e" - } + null ], "_srcBlendFactor": 770, "_dstBlendFactor": 771, - "_spriteFrame": { - "__uuid__": "a766c72a-5fe2-4221-9452-d79edb33286a" - }, - "_type": 3, - "_sizeMode": 2, - "_fillType": 2, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_fillStart": 0.3, - "_fillRange": 0.7, - "_isTrimmedMode": false, - "_atlas": null, + "_string": "支持但暂无演示", + "_N$string": "支持但暂无演示", + "_fontSize": 20, + "_lineHeight": 30, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, "autoSwitchMaterial": 2, "allowDynamicAtlas": 2, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 2, + "_N$enableRetina": 0, "_id": "" }, { @@ -2263,7 +2272,7 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "d4UHHazKVCy42ClOvgNxma", + "fileId": "fa0KdEmgxLTLA21ifSte4O", "sync": false }, { @@ -2277,7 +2286,7 @@ "_layoutSize": { "__type__": "cc.Size", "width": 200, - "height": 261 + "height": 180 }, "_resize": 1, "_N$layoutType": 2, @@ -2306,12 +2315,12 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "f8vX6jy0VIsqnn3ZUIwzRf", + "fileId": "adKwcVQDxJDpRoPxGNaLq0", "sync": false }, { "__type__": "cc.Node", - "_name": "mesh-sprite", + "_name": "bitmap-label", "_objFlags": 0, "_parent": { "__id__": 4 @@ -2407,7 +2416,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 118.93, + "width": 48.945, "height": 30 }, "_anchorPoint": { @@ -2457,8 +2466,8 @@ ], "_srcBlendFactor": 770, "_dstBlendFactor": 771, - "_string": "Sprite - Mesh", - "_N$string": "Sprite - Mesh", + "_string": "Label", + "_N$string": "Label", "_fontSize": 20, "_lineHeight": 30, "_enableWrapText": true, @@ -2486,7 +2495,7 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "a88tQBbOhIc7ABFOj/8+Sh", + "fileId": "26oSD6Do9MCYDOTc44bG6i", "sync": false }, { @@ -2516,7 +2525,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 140, + "width": 108.75, "height": 30 }, "_anchorPoint": { @@ -2562,17 +2571,21 @@ }, "_enabled": true, "_materials": [ - null + { + "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + } ], "_srcBlendFactor": 770, "_dstBlendFactor": 771, - "_string": "支持但暂无演示", - "_N$string": "支持但暂无演示", + "_string": "Bitmap Font", + "_N$string": "Bitmap Font", "_fontSize": 20, "_lineHeight": 30, "_enableWrapText": true, - "_N$file": null, - "_isSystemFontUsed": true, + "_N$file": { + "__uuid__": "80011fce-9411-4ea1-a8d3-f7d86d2d8789" + }, + "_isSystemFontUsed": false, "_spacingX": 0, "_batchAsBitmap": false, "_styleFlags": 0, @@ -2583,7 +2596,7 @@ "_N$verticalAlign": 1, "_N$fontFamily": "Arial", "_N$overflow": 0, - "_N$cacheMode": 2, + "_N$cacheMode": 0, "_N$enableRetina": 0, "_id": "" }, @@ -2595,7 +2608,7 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "fa0KdEmgxLTLA21ifSte4O", + "fileId": "ee5y9SLaRH4b+8eW/9BxZO", "sync": false }, { @@ -2638,12 +2651,12 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "adKwcVQDxJDpRoPxGNaLq0", + "fileId": "a5HraLpUFIfLWhIikkzaHr", "sync": false }, { "__type__": "cc.Node", - "_name": "none-label", + "_name": "motionsteak", "_objFlags": 0, "_parent": { "__id__": 4 @@ -2676,7 +2689,7 @@ "_contentSize": { "__type__": "cc.Size", "width": 200, - "height": 187.8 + "height": 170 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -2688,7 +2701,7 @@ "ctor": "Float64Array", "array": [ 220, - -483.9, + -475, 0, 0, 0, @@ -2739,7 +2752,7 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 114.535, + "width": 111.18, "height": 30 }, "_anchorPoint": { @@ -2752,7 +2765,7 @@ "ctor": "Float64Array", "array": [ 0, - 28.900000000000006, + 20, 0, 0, 0, @@ -2789,8 +2802,8 @@ ], "_srcBlendFactor": 770, "_dstBlendFactor": 771, - "_string": "Label - None", - "_N$string": "Label - None", + "_string": "MotionSteak", + "_N$string": "MotionSteak", "_fontSize": 20, "_lineHeight": 30, "_enableWrapText": true, @@ -2818,12 +2831,12 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "26oSD6Do9MCYDOTc44bG6i", + "fileId": "a05VJqHelIZKmFgVVSjXxs", "sync": false }, { "__type__": "cc.Node", - "_name": "label", + "_name": "motionsteak", "_objFlags": 0, "_parent": { "__id__": 68 @@ -2848,8 +2861,8 @@ }, "_contentSize": { "__type__": "cc.Size", - "width": 80, - "height": 37.8 + "width": 20, + "height": 20 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -2861,7 +2874,7 @@ "ctor": "Float64Array", "array": [ 0, - -24.999999999999993, + -25, 0, 0, 0, @@ -2886,7 +2899,7 @@ "_id": "" }, { - "__type__": "cc.Label", + "__type__": "cc.MotionStreak", "_name": "", "_objFlags": 0, "node": { @@ -2895,30 +2908,27 @@ "_enabled": true, "_materials": [ { - "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" + "__uuid__": "0e00cf72-1eb0-457b-83d2-0171cc1cd97e" } ], "_srcBlendFactor": 770, "_dstBlendFactor": 771, - "_string": "系统字体", - "_N$string": "系统字体", - "_fontSize": 20, - "_lineHeight": 30, - "_enableWrapText": true, - "_N$file": null, - "_isSystemFontUsed": true, - "_spacingX": 0, - "_batchAsBitmap": false, - "_styleFlags": 0, - "_underlineHeight": 0, + "_fadeTime": 1, + "_minSeg": 1, + "_stroke": 16, + "_texture": { + "__uuid__": "6e056173-d285-473c-b206-40a7fff5386e" + }, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_fastMode": false, "autoSwitchMaterial": 2, - "allowDynamicAtlas": 2, - "_N$horizontalAlign": 1, - "_N$verticalAlign": 1, - "_N$fontFamily": "Arial", - "_N$overflow": 0, - "_N$cacheMode": 0, - "_N$enableRetina": 0, + "_N$preview": true, "_id": "" }, { @@ -2929,7 +2939,7 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "ee5y9SLaRH4b+8eW/9BxZO", + "fileId": "cf0tu0HYpMMJ2cS3Etl/Wv", "sync": false }, { @@ -2943,7 +2953,7 @@ "_layoutSize": { "__type__": "cc.Size", "width": 200, - "height": 187.8 + "height": 170 }, "_resize": 1, "_N$layoutType": 2, @@ -2972,7 +2982,1023 @@ "asset": { "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" }, - "fileId": "a5HraLpUFIfLWhIikkzaHr", + "fileId": "c1aHWHIBlDo6sJUzzqPK8A", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "spine", + "_objFlags": 0, + "_parent": { + "__id__": 4 + }, + "_children": [ + { + "__id__": 78 + }, + { + "__id__": 81 + } + ], + "_active": true, + "_components": [ + { + "__id__": 84 + } + ], + "_prefab": { + "__id__": 85 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 200, + "height": 192 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -380, + -747, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "label", + "_objFlags": 0, + "_parent": { + "__id__": 77 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 79 + } + ], + "_prefab": { + "__id__": 80 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 51.16, + "height": 30 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 61, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 78 + }, + "_enabled": true, + "_materials": [ + null + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "Spine", + "_N$string": "Spine", + "_fontSize": 20, + "_lineHeight": 30, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "autoSwitchMaterial": 0, + "allowDynamicAtlas": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 2, + "_N$enableRetina": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "3chb4Q98dFOrLtbzdt+vhO", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "spine", + "_objFlags": 0, + "_parent": { + "__id__": 77 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 82 + } + ], + "_prefab": { + "__id__": 83 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 20, + "height": 20 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -45, + 0, + 0, + 0, + 0, + 1, + 0.1, + 0.1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "sp.Skeleton", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 81 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "0e00cf72-1eb0-457b-83d2-0171cc1cd97e" + } + ], + "paused": false, + "defaultSkin": "default", + "defaultAnimation": "run", + "_preCacheMode": 0, + "_cacheMode": 0, + "loop": true, + "premultipliedAlpha": true, + "timeScale": 1, + "_accTime": 0, + "_playCount": 0, + "_frameCache": null, + "_curFrame": null, + "_skeletonCache": null, + "_animationName": "run", + "_animationQueue": [], + "_headAniInfo": null, + "_playTimes": 0, + "_isAniComplete": true, + "autoSwitchMaterial": 2, + "allowDynamicAtlas": 2, + "_N$skeletonData": { + "__uuid__": "bcd99389-a393-426e-b234-157c62b44bc4" + }, + "_N$_defaultCacheMode": 0, + "_N$debugSlots": false, + "_N$debugBones": false, + "_N$debugMesh": false, + "_N$useTint": false, + "_N$enableBatch": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "beF60N4qtNPaFZgrsB4mgi", + "sync": false + }, + { + "__type__": "cc.Layout", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 77 + }, + "_enabled": true, + "_layoutSize": { + "__type__": "cc.Size", + "width": 200, + "height": 192 + }, + "_resize": 1, + "_N$layoutType": 2, + "_N$cellSize": { + "__type__": "cc.Size", + "width": 40, + "height": 40 + }, + "_N$startAxis": 0, + "_N$paddingLeft": 0, + "_N$paddingRight": 0, + "_N$paddingTop": 20, + "_N$paddingBottom": 50, + "_N$spacingX": 0, + "_N$spacingY": 90, + "_N$verticalDirection": 1, + "_N$horizontalDirection": 0, + "_N$affectedByScale": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "ffL4g6oPBMh5/7G4BvdV8d", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "cache-spine", + "_objFlags": 0, + "_parent": { + "__id__": 4 + }, + "_children": [ + { + "__id__": 87 + }, + { + "__id__": 90 + } + ], + "_active": true, + "_components": [ + { + "__id__": 93 + } + ], + "_prefab": { + "__id__": 94 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 200, + "height": 192 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + -180, + -747, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "label", + "_objFlags": 0, + "_parent": { + "__id__": 86 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 88 + } + ], + "_prefab": { + "__id__": 89 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 126.75, + "height": 30 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 61, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 87 + }, + "_enabled": true, + "_materials": [ + null + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "Spine - Cache", + "_N$string": "Spine - Cache", + "_fontSize": 20, + "_lineHeight": 30, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "autoSwitchMaterial": 0, + "allowDynamicAtlas": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 2, + "_N$enableRetina": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "e7a+XFvHVE0aenyeyt0UcA", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "spine", + "_objFlags": 0, + "_parent": { + "__id__": 86 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 91 + } + ], + "_prefab": { + "__id__": 92 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 20, + "height": 20 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -45, + 0, + 0, + 0, + 0, + 1, + 0.1, + 0.1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "sp.Skeleton", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 90 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "0e00cf72-1eb0-457b-83d2-0171cc1cd97e" + } + ], + "paused": false, + "defaultSkin": "default", + "defaultAnimation": "run", + "_preCacheMode": 1, + "_cacheMode": 1, + "loop": true, + "premultipliedAlpha": true, + "timeScale": 1, + "_accTime": 0, + "_playCount": 0, + "_frameCache": null, + "_curFrame": null, + "_skeletonCache": null, + "_animationName": "run", + "_animationQueue": [], + "_headAniInfo": null, + "_playTimes": 0, + "_isAniComplete": true, + "autoSwitchMaterial": 2, + "allowDynamicAtlas": 2, + "_N$skeletonData": { + "__uuid__": "bcd99389-a393-426e-b234-157c62b44bc4" + }, + "_N$_defaultCacheMode": 1, + "_N$debugSlots": false, + "_N$debugBones": false, + "_N$debugMesh": false, + "_N$useTint": false, + "_N$enableBatch": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "74FJWuBu5AsYAnkRtrRG0O", + "sync": false + }, + { + "__type__": "cc.Layout", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 86 + }, + "_enabled": true, + "_layoutSize": { + "__type__": "cc.Size", + "width": 200, + "height": 192 + }, + "_resize": 1, + "_N$layoutType": 2, + "_N$cellSize": { + "__type__": "cc.Size", + "width": 40, + "height": 40 + }, + "_N$startAxis": 0, + "_N$paddingLeft": 0, + "_N$paddingRight": 0, + "_N$paddingTop": 20, + "_N$paddingBottom": 50, + "_N$spacingX": 0, + "_N$spacingY": 90, + "_N$verticalDirection": 1, + "_N$horizontalDirection": 0, + "_N$affectedByScale": true, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "9aqu41z15KAJFA3qEkvQwB", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "custom-material", + "_objFlags": 0, + "_parent": { + "__id__": 4 + }, + "_children": [ + { + "__id__": 96 + }, + { + "__id__": 99 + } + ], + "_active": true, + "_components": [ + { + "__id__": 102 + } + ], + "_prefab": { + "__id__": 103 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 200, + "height": 190 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 20, + -746, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "label", + "_objFlags": 0, + "_parent": { + "__id__": 95 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 97 + } + ], + "_prefab": { + "__id__": 98 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 145.605, + "height": 30 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + 30, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 96 + }, + "_enabled": true, + "_materials": [ + null + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_string": "Custom Material", + "_N$string": "Custom Material", + "_fontSize": 20, + "_lineHeight": 30, + "_enableWrapText": true, + "_N$file": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_batchAsBitmap": false, + "_styleFlags": 0, + "_underlineHeight": 0, + "autoSwitchMaterial": 0, + "allowDynamicAtlas": 0, + "_N$horizontalAlign": 1, + "_N$verticalAlign": 1, + "_N$fontFamily": "Arial", + "_N$overflow": 0, + "_N$cacheMode": 2, + "_N$enableRetina": 0, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "17PBy+QStKu7/TNPYI4DCz", + "sync": false + }, + { + "__type__": "cc.Node", + "_name": "sprite", + "_objFlags": 0, + "_parent": { + "__id__": 95 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 100 + } + ], + "_prefab": { + "__id__": 101 + }, + "_opacity": 255, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 40, + "height": 40 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_trs": { + "__type__": "TypedArray", + "ctor": "Float64Array", + "array": [ + 0, + -25, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1 + ] + }, + "_eulerAngles": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_skewX": 0, + "_skewY": 0, + "_is3DNode": false, + "_groupIndex": 0, + "groupIndex": 0, + "_id": "" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 99 + }, + "_enabled": true, + "_materials": [ + { + "__uuid__": "2c0c62f8-3805-4dd1-96c4-977c36bab4fc" + } + ], + "_srcBlendFactor": 770, + "_dstBlendFactor": 771, + "_spriteFrame": { + "__uuid__": "8cdb44ac-a3f6-449f-b354-7cd48cf84061" + }, + "_type": 0, + "_sizeMode": 2, + "_fillType": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": false, + "_atlas": null, + "autoSwitchMaterial": 2, + "allowDynamicAtlas": 2, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "60a28hu/5I07CP6SkTvPTQ", + "sync": false + }, + { + "__type__": "cc.Layout", + "_name": "", + "_objFlags": 0, + "node": { + "__id__": 95 + }, + "_enabled": true, + "_layoutSize": { + "__type__": "cc.Size", + "width": 200, + "height": 190 + }, + "_resize": 1, + "_N$layoutType": 2, + "_N$cellSize": { + "__type__": "cc.Size", + "width": 40, + "height": 40 + }, + "_N$startAxis": 0, + "_N$paddingLeft": 0, + "_N$paddingRight": 0, + "_N$paddingTop": 50, + "_N$paddingBottom": 50, + "_N$spacingX": 0, + "_N$spacingY": 20, + "_N$verticalDirection": 1, + "_N$horizontalDirection": 0, + "_N$affectedByScale": false, + "_id": "" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__uuid__": "c5f3051e-1b4f-4384-939c-b838bcb8f5bf" + }, + "fileId": "3d08Ds4LtI2LrmAruDcl75", "sync": false }, { @@ -2998,7 +4024,7 @@ "_layoutSize": { "__type__": "cc.Size", "width": 960, - "height": 651 + "height": 843 }, "_resize": 1, "_N$layoutType": 3, @@ -3104,23 +4130,23 @@ }, "_children": [ { - "__id__": 84 + "__id__": 111 } ], "_active": true, "_components": [ { - "__id__": 87 + "__id__": 114 }, { - "__id__": 89 + "__id__": 116 }, { - "__id__": 90 + "__id__": 117 } ], "_prefab": { - "__id__": 91 + "__id__": 118 }, "_opacity": 255, "_color": { @@ -3174,17 +4200,17 @@ "_name": "bar", "_objFlags": 0, "_parent": { - "__id__": 83 + "__id__": 110 }, "_children": [], "_active": true, "_components": [ { - "__id__": 85 + "__id__": 112 } ], "_prefab": { - "__id__": 86 + "__id__": 113 }, "_opacity": 255, "_color": { @@ -3238,7 +4264,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 84 + "__id__": 111 }, "_enabled": true, "_materials": [ @@ -3283,18 +4309,18 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 110 }, "_enabled": true, "_scrollView": { - "__id__": 88 + "__id__": 115 }, "_touching": false, "_opacity": 255, "enableAutoHide": false, "autoHideTime": 1, "_N$handle": { - "__id__": 85 + "__id__": 112 }, "_N$direction": 1, "_id": "" @@ -3323,7 +4349,7 @@ }, "_N$horizontalScrollBar": null, "_N$verticalScrollBar": { - "__id__": 87 + "__id__": 114 }, "_id": "" }, @@ -3332,7 +4358,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 110 }, "_enabled": true, "alignMode": 0, @@ -3359,7 +4385,7 @@ "_name": "", "_objFlags": 0, "node": { - "__id__": 83 + "__id__": 110 }, "_enabled": true, "_materials": [ diff --git a/demo/assets/multi-render/multi-material/test-material.mtl b/demo/assets/multi-render/multi-material/test-material.mtl index 44d664ec..4fb87fac 100644 --- a/demo/assets/multi-render/multi-material/test-material.mtl +++ b/demo/assets/multi-render/multi-material/test-material.mtl @@ -10,7 +10,8 @@ "_techniqueData": { "0": { "defines": { - "USE_TEXTURE": true + "USE_TEXTURE": true, + "USE_MULTI_TEXTURE": true }, "props": { "texture": { @@ -21,6 +22,12 @@ }, "texture3": { "__uuid__": "6e056173-d285-473c-b206-40a7fff5386e" + }, + "texture4": { + "__uuid__": "45be59f3-5655-4369-9e9f-455c81d2ddd9" + }, + "texture5": { + "__uuid__": "d9c4530a-ef05-45c1-b012-eb4686f4c70f" } } } diff --git a/docs/docs/start-guide/batcher-guide.md b/docs/docs/start-guide/batcher-guide.md index 2ad00cb9..26c25d5a 100644 --- a/docs/docs/start-guide/batcher-guide.md +++ b/docs/docs/start-guide/batcher-guide.md @@ -5,9 +5,9 @@ description: "在游戏开发中享受不用关注 Draw Call 的快乐。" # 新 UI 渲染批次合并指南 -在官方文档的进阶主题中,有一个 [UI 渲染批次合并指南](https://docs.cocos.com/creator/2.4/manual/zh/advanced-topics/ui-auto-batch.html),而由于服务包的 **多纹理渲染**、**重构动态图集** 等新特性的出现,有一些内容可能已经过期。 +在官方文档的进阶主题中,有一个 [UI 渲染批次合并指南](https://docs.cocos.com/creator/2.4/manual/zh/advanced-topics/ui-auto-batch.html),在服务包的 **多纹理渲染**、**重构动态图集** 等新特性的出现后,对如何合并渲染批次需要有全新的理解。 -如果你未阅读过官方的指南,可以先看一看里面的知识科普部分,而我们将直接从如何实践开始! +如果你未阅读过官方的指南,可以先阅读一遍。 --- ## 什么是多纹理渲染? @@ -16,19 +16,19 @@ description: "在游戏开发中享受不用关注 Draw Call 的快乐。" 其根本原因是纹理是使用 uniform 变量传给着色器的,而需要合并批次的话不允许每次渲染都拥有不同的 uniform 变量值。 -服务包实现的合批方法是先设置好多个 uniform 变量,比如将 8 张纹理写入到 "texture1" "texture2" "texture3"... 的 8 个 uniform 变量中,然后编写一个着色器判断应该在渲染时使用哪个 uniform 变量。 +服务包实现的合批方法是先设置好多个 uniform 变量,比如将 8 张纹理写入到 "texture1" "texture2" "texture3"... 的 8 个 uniform 变量中,然后在着色器里再判断应该在渲染时使用哪个 uniform 变量。 这样的话如果所有渲染都只用这 8 张纹理的话,就都能合并为 1 个批次。 这种做法要求设备需要支持采样多个纹理,而在现代绝大多数设备中这不是问题,至少都支持采样 8 张纹理。 -当然除了这种方法,还有另外的一些进行多纹理合批的方法,例如 "Texture Array"、"Bindless",但都有实用性与兼容性的问题。 +当然除了这种方法,还有另外几种进行多纹理合批的方法,例如 "Texture Array"、"Bindless",但都有实用性与兼容性的问题。 :::info 提示 以这种方式实现的多纹理渲染并不是没有弊端的: -因为会多传递一个顶点属性,并且需要在着色器中去判断该使用哪个纹理,这可能也会造成性能下降,毕竟**合并批次并不一定会提升性能**。 +因为会多传递一个顶点属性,并且需要在着色器中去判断该使用哪个纹理,导致**合并批次并不一定会提升性能**。 所以我们建议在多个档次设备中实际测试项目是否使用多纹理渲染的性能差距。 @@ -43,13 +43,13 @@ description: "在游戏开发中享受不用关注 Draw Call 的快乐。" --- ## 为你的项目启用动态合图 -在项目之前的开发中,我们可能会关闭动态图集,更倾向于靠静态图集或者自动图集达到降低 Draw Call 的目的。 +在项目之前的开发中,我们通常会关闭动态图集,更倾向于靠静态图集或者自动图集达到降低 Draw Call 的目的。 -这种选择除了与动态合图存在会占用更多内存的缺点有关之外,更多的是在引擎原来的动态合图中,并不能复用图集的废弃区域,这个重要特性的缺失只能靠在切换场景(Scene)后重置所有图集来解决。 +导致这个情况最重要的问题是不能复用图集的废弃区域,随着游戏的运行图集会完全用完,引擎只提供了在切换场景(Scene)后重置所有图集的机制来解决这个问题。 但对于大部分项目来说,这种治标不治本的机制基本等于没有解决这个问题。 -而现在,**服务包几乎重构了整个动态合图系统,解决了以前存在的大部分问题**,你可以启用它了。 +现在,服务包几乎重构了整个动态合图系统,你可以考虑启用它了。 :::note 提示 diff --git a/docs/docs/start-guide/breaking-change.md b/docs/docs/start-guide/breaking-change.md index 493675b2..6c7b22aa 100644 --- a/docs/docs/start-guide/breaking-change.md +++ b/docs/docs/start-guide/breaking-change.md @@ -20,7 +20,7 @@ description: "一般情况下都不需要了解。" **大部分项目可以不用关心**。 -``` +```js cc.macro.ENABLE_NATIVE_TTF_RENDERER = false; ``` diff --git a/docs/docs/start-guide/new-features.md b/docs/docs/start-guide/new-features.md index ba51606b..dbd2024a 100644 --- a/docs/docs/start-guide/new-features.md +++ b/docs/docs/start-guide/new-features.md @@ -14,7 +14,7 @@ description: "了解并上手服务包提供的所有其他新特性。" 而现在不需要了,高 DPI 文本渲染默认是关闭的,你可以通过 -``` +```js cc.sp.labelRetinaScale = 2; // 渲染文本时纹理的缩放倍数,默认值为 1. ``` @@ -37,7 +37,7 @@ cc.sp.labelRetinaScale = 2; // 渲染文本时纹理的缩放倍数,默认 只需要一句代码即可使用 cc.SpriteFrame 替换指定 attachment 的 region 对象: -``` +```js this.skel.setRegion('head', 'head', sp.SkeletonData.createRegion(spriteFrame)); ``` diff --git a/docs/docs/user-guide/dynamic-batcher/dynamic-batcher-manual.md b/docs/docs/user-guide/dynamic-batcher/dynamic-batcher-manual.md index 319e4325..1cde5b23 100644 --- a/docs/docs/user-guide/dynamic-batcher/dynamic-batcher-manual.md +++ b/docs/docs/user-guide/dynamic-batcher/dynamic-batcher-manual.md @@ -13,7 +13,7 @@ description: "随心所欲地控制动态合图的使用。" 你可以通过该接口添加 SpriteFrame 的 Texture 到图集中,内部也是使用该接口。 -``` +```js cc.dynamicAtlasManager.insertSpriteFrame(spriteFrame); ``` diff --git a/docs/docs/user-guide/multi-render/assets/material-settings.png b/docs/docs/user-guide/multi-render/assets/material-settings.png index c71be921..c1efc426 100644 Binary files a/docs/docs/user-guide/multi-render/assets/material-settings.png and b/docs/docs/user-guide/multi-render/assets/material-settings.png differ diff --git a/docs/docs/user-guide/multi-render/multi-batcher.md b/docs/docs/user-guide/multi-render/multi-batcher.md index 5a82fe14..a6480009 100644 --- a/docs/docs/user-guide/multi-render/multi-batcher.md +++ b/docs/docs/user-guide/multi-render/multi-batcher.md @@ -5,4 +5,5 @@ description: "了解如何手动进行多纹理合批。" # 多纹理合批 + 着重介绍管理器。 diff --git a/docs/docs/user-guide/multi-render/multi-material.md b/docs/docs/user-guide/multi-render/multi-material.md index 6d233127..57de40d0 100644 --- a/docs/docs/user-guide/multi-render/multi-material.md +++ b/docs/docs/user-guide/multi-render/multi-material.md @@ -1,6 +1,7 @@ --- sidebar_position: 1 -description: "了解实现多纹理渲染的基础。" +description: "了解如何手动管理多纹理材质。" +toc_max_heading_level: 5 --- # 多纹理材质 @@ -11,7 +12,7 @@ description: "了解实现多纹理渲染的基础。" ![material-settings](./assets/material-settings.png) -可以看到上面有 `texture` - `texture8` 一共 8 个纹理插槽,将需要使用的纹理拖到上面的插槽即可完成多纹理材质的配置。 +勾选 `USE_MULTI_TEXTURE` 后可以看到上面有 `texture` - `texture8` 一共 8 个纹理插槽,将需要使用的纹理拖到上面的插槽即可完成多纹理材质的配置。 ## 在组件中使用多纹理材质 @@ -37,30 +38,84 @@ description: "了解实现多纹理渲染的基础。" ## 自定义多纹理材质 -上面介绍的多纹理材质都是使用的内置的多纹理 Effect 着色器,**如果你也创建了一个拥有多个纹理插槽的 Effect 着色器,直接使用并不会被直接识别为多纹理材质。** +上面介绍的多纹理材质都是使用的内置的多纹理 Effect 着色器,你可以直接在内置多纹理 Effect 着色器的基础上修改。 +除了直接在内置着色器的基础上修改之外,任何着色器中如果存在一个宏 `USE_MULTI_TEXTURE = true`,则会被认为是多纹理材质。 +[演示项目](TODO) 中有自定义材质的示范代码。 -## MultiHandler +:::tip 提示 -这个是服务包新增的一个工具类,其主要用处是便捷、高性能地管理多纹理材质上面的所有纹理。 +是否为多纹理材质的判断逻辑流程: -虽然你可以直接通过 `cc.Material` 上的接口来设置纹理插槽,但是出于性能考虑,**多纹理材质必须使用该类实例来进行纹理增删改的相关操作,否则可能导致不能正确渲染。** +1. 获取材质当前使用的 Technique 中的第一个 Pass +2. 判断这个 Pass 是否 `USE_MULTI_TEXTURE = true` +3. 是的话,这个材质即为多纹理材质 -它有以下接口: +在某些情况下通过代码修改材质可能需要调用 `material.updateMultiSupport()` 来触发这个流程。 -### `setTexture(index: number, texture: cc.Texture2D): void` +::: -设置纹理插槽上的纹理, +## 通过代码设置纹理插槽 +每个多纹理材质都对应着一个多纹理材质管理器,这是服务包新增的一个工具类,其主要用处是便捷、高性能地管理多纹理材质上面的纹理插槽。 -当我们说 “多纹理材质” 时,指的是持有 `cc.sp.MultiHandler` 实例的材质。 +通过 `material.getMultiHandler()` 可以获取到管理器实例,请使用这个实例来操作多纹理材质的纹理插槽。 -并且使用内置多纹理 Effect 着色器的材质会自动持有一个 `cc.sp.MultiHandler` 实例。 +比如: -也就是说**使用自行创建的有多个纹理插槽着色器的材质不会被直接识别为多纹理材质。** +```js +// 获取管理器实例 +const handler = material.getMultiHandler(); -:::tip +// 设置 `texture` 纹理插槽 +handler.setTexture(0, texture); +// 置空 `texture2` 纹理插槽 +handler.setTexture(1, null); -## +// 直接移除指定纹理 +handler.removeTexture(texture.getImpl()); +``` + +从上面的代码中可以看出操作纹理插槽的时候并不是传入插槽的名称,而是需要提供下标。 + +下标 `0` - `7` 分别对应着名称为 `texture` - `texture8` 的插槽。 + +可以使用这两个函数进行转换: + +```js +// index to name +cc.sp.propertyIndex2Name(0); // return: "texture" + +// name to index +cc.sp.propertyName2Index("texture"); // return: 0 +``` + +:::caution 注意 + +注意区分材质 `cc.Material` 与材质变体 `cc.MaterialVariant`。 + +::: + +:::caution 警告 + +请勿直接通过 `setProperty` 接口修改多纹理材质的纹理插槽。 + +如果你必须这么做,需要调用 `material.getMultiHandler().syncTextures()` 来同步插槽数据到 `MultiHandler` 上。 + +::: + +## 强制设置材质的类型 + +如果你想将某个材质强制视为多纹理材质或非多纹理材质,可以: + +```js +// 视为多纹理材质 +material.setMultiSupport(true); + +// 视为非多纹理材质 +material.setMultiSupport(false); +``` + +但是这么做好像没有什么意义。 diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css index abf082b3..78fce2d0 100644 --- a/docs/src/css/custom.css +++ b/docs/src/css/custom.css @@ -13,7 +13,7 @@ --ifm-color-primary-light: #6440b1; --ifm-color-primary-lighter: #6943b9; --ifm-color-primary-lightest: #7b59c3; - --ifm-code-font-size: 80%; + --ifm-code-font-size: 85%; --ifm-code-padding-horizontal: 0.3rem; --ifm-global-radius: 0.3rem; --ifm-code-border-radius: 0.2rem; 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 index d45dc10e..63618e48 100644 --- a/extension/service-pack-support/resources/sp/effects/multi-2d-sprite.effect +++ b/extension/service-pack-support/resources/sp/effects/multi-2d-sprite.effect @@ -36,10 +36,14 @@ CCProgram vs %{ #if USE_TEXTURE in vec2 a_uv0; out vec2 v_uv0; + + #if USE_MULTI_TEXTURE in float a_texId; out float v_texId; #endif + #endif + void main () { vec4 pos = vec4(a_position, 1); @@ -51,9 +55,13 @@ CCProgram vs %{ #if USE_TEXTURE v_uv0 = a_uv0; + + #if USE_MULTI_TEXTURE v_texId = a_texId; #endif + #endif + v_color = a_color; gl_Position = pos; @@ -71,8 +79,10 @@ CCProgram fs %{ #if USE_TEXTURE in vec2 v_uv0; - in float v_texId; uniform sampler2D texture; + + #if USE_MULTI_TEXTURE + in float v_texId; uniform sampler2D texture2; uniform sampler2D texture3; uniform sampler2D texture4; @@ -81,28 +91,34 @@ CCProgram fs %{ uniform sampler2D texture7; uniform sampler2D texture8; #endif + + #endif void main () { vec4 o = vec4(1, 1, 1, 1); #if USE_TEXTURE - if(v_texId < 1.0){ + #if USE_MULTI_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); + } + #else 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 #endif o *= v_color; diff --git a/src/creator-sp.d.ts b/src/creator-sp.d.ts index 3e948028..e3bbb4d3 100644 --- a/src/creator-sp.d.ts +++ b/src/creator-sp.d.ts @@ -484,6 +484,11 @@ declare module cc { */ _multiHandler?: cc.sp.MultiHandler; + /** + * 根据材质的 `USE_MULTI_TEXTURE` 宏来更新材质是否支持多纹理 + */ + updateMultiSupport(): boolean; + /** * 判断该材质是否有 MultiHandler 实例 */ diff --git a/src/engine/engine.zip b/src/engine/engine.zip deleted file mode 100644 index 856deaca..00000000 Binary files a/src/engine/engine.zip and /dev/null differ