重新修正忽视规则,防止clone后项目无法复现
This commit is contained in:
1 parent
a516777eb6
commit
bd1204f1b9
133 files changed
+69225
-2
No files matched your search
+113
@@ -0,0 +1,113 @@
|
||||
/******************************************************************************
|
||||
* Spine Runtimes License Agreement
|
||||
* Last updated April 5, 2025. Replaces all prior versions.
|
||||
*
|
||||
* Copyright (c) 2013-2025, Esoteric Software LLC
|
||||
*
|
||||
* Integration of the Spine Runtimes into software or otherwise creating
|
||||
* derivative works of the Spine Runtimes is permitted under the terms and
|
||||
* conditions of Section 2 of the Spine Editor License Agreement:
|
||||
* http://esotericsoftware.com/spine-editor-license
|
||||
*
|
||||
* Otherwise, it is permitted to integrate the Spine Runtimes into software
|
||||
* or otherwise create derivative works of the Spine Runtimes (collectively,
|
||||
* "Products"), provided that each user of the Products must obtain their own
|
||||
* Spine Editor license and redistribution of the Products in any form must
|
||||
* include this license and copyright notice.
|
||||
*
|
||||
* THE SPINE RUNTIMES ARE PROVIDED BY ESOTERIC SOFTWARE LLC "AS IS" AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL ESOTERIC SOFTWARE LLC BE LIABLE FOR ANY
|
||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES,
|
||||
* BUSINESS INTERRUPTION, OR LOSS OF USE, DATA, OR PROFITS) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THE SPINE RUNTIMES, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*****************************************************************************/
|
||||
import { BlendMode, Texture, TextureFilter, TextureWrap } from "@esotericsoftware/spine-core";
|
||||
import { Texture as PixiTexture, SCALE_MODES, MIPMAP_MODES, WRAP_MODES, BLEND_MODES } from "@pixi/core";
|
||||
export class SpineTexture extends Texture {
|
||||
static textureMap = new Map();
|
||||
static from(texture) {
|
||||
if (SpineTexture.textureMap.has(texture)) {
|
||||
return SpineTexture.textureMap.get(texture);
|
||||
}
|
||||
return new SpineTexture(texture);
|
||||
}
|
||||
texture;
|
||||
constructor(image) {
|
||||
// Todo: maybe add error handling if you feed a video texture to spine?
|
||||
super(image.resource.source);
|
||||
this.texture = PixiTexture.from(image);
|
||||
}
|
||||
setFilters(minFilter, _magFilter) {
|
||||
this.texture.baseTexture.scaleMode = SpineTexture.toPixiTextureFilter(minFilter);
|
||||
this.texture.baseTexture.mipmap = SpineTexture.toPixiMipMap(minFilter);
|
||||
// pixi only has one filter for both min and mag, too bad
|
||||
}
|
||||
setWraps(uWrap, _vWrap) {
|
||||
this.texture.baseTexture.wrapMode = SpineTexture.toPixiTextureWrap(uWrap);
|
||||
// Pixi only has one setting
|
||||
}
|
||||
dispose() {
|
||||
// I am not entirely sure about this...
|
||||
this.texture.destroy();
|
||||
}
|
||||
static toPixiTextureFilter(filter) {
|
||||
switch (filter) {
|
||||
case TextureFilter.Nearest:
|
||||
case TextureFilter.MipMapNearestLinear:
|
||||
case TextureFilter.MipMapNearestNearest:
|
||||
return SCALE_MODES.NEAREST;
|
||||
case TextureFilter.Linear:
|
||||
case TextureFilter.MipMapLinearLinear: // TextureFilter.MipMapLinearLinear == TextureFilter.MipMap
|
||||
case TextureFilter.MipMapLinearNearest:
|
||||
return SCALE_MODES.LINEAR;
|
||||
default:
|
||||
throw new Error(`Unknown texture filter: ${String(filter)}`);
|
||||
}
|
||||
}
|
||||
static toPixiMipMap(filter) {
|
||||
switch (filter) {
|
||||
case TextureFilter.Nearest:
|
||||
case TextureFilter.Linear:
|
||||
return MIPMAP_MODES.OFF;
|
||||
case TextureFilter.MipMapNearestLinear:
|
||||
case TextureFilter.MipMapNearestNearest:
|
||||
case TextureFilter.MipMapLinearLinear: // TextureFilter.MipMapLinearLinear == TextureFilter.MipMap
|
||||
case TextureFilter.MipMapLinearNearest:
|
||||
return MIPMAP_MODES.ON;
|
||||
default:
|
||||
throw new Error(`Unknown texture filter: ${String(filter)}`);
|
||||
}
|
||||
}
|
||||
static toPixiTextureWrap(wrap) {
|
||||
switch (wrap) {
|
||||
case TextureWrap.ClampToEdge:
|
||||
return WRAP_MODES.CLAMP;
|
||||
case TextureWrap.MirroredRepeat:
|
||||
return WRAP_MODES.MIRRORED_REPEAT;
|
||||
case TextureWrap.Repeat:
|
||||
return WRAP_MODES.REPEAT;
|
||||
default:
|
||||
throw new Error(`Unknown texture wrap: ${String(wrap)}`);
|
||||
}
|
||||
}
|
||||
static toPixiBlending(blend) {
|
||||
switch (blend) {
|
||||
case BlendMode.Normal:
|
||||
return BLEND_MODES.NORMAL;
|
||||
case BlendMode.Additive:
|
||||
return BLEND_MODES.ADD;
|
||||
case BlendMode.Multiply:
|
||||
return BLEND_MODES.MULTIPLY;
|
||||
case BlendMode.Screen:
|
||||
return BLEND_MODES.SCREEN;
|
||||
default:
|
||||
throw new Error(`Unknown blendMode: ${String(blend)}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3BpbmVUZXh0dXJlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NwaW5lVGV4dHVyZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OytFQTJCK0U7QUFFL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRTlGLE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUV4RyxNQUFNLE9BQU8sWUFBYSxTQUFRLE9BQU87SUFDaEMsTUFBTSxDQUFDLFVBQVUsR0FBdUMsSUFBSSxHQUFHLEVBQWlDLENBQUM7SUFFbEcsTUFBTSxDQUFDLElBQUksQ0FBRSxPQUF3QjtRQUMzQyxJQUFJLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUUsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRWUsT0FBTyxDQUFjO0lBRXJDLFlBQXFCLEtBQXNCO1FBQzFDLHVFQUF1RTtRQUN2RSxLQUFLLENBQUUsS0FBSyxDQUFDLFFBQThCLENBQUMsTUFBYSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxVQUFVLENBQUUsU0FBd0IsRUFBRSxVQUF5QjtRQUNyRSxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2pGLElB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S0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELENBQUM7SUFDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogU3BpbmUgUnVudGltZXMgTGljZW5zZSBBZ3JlZW1lbnRcbiAqIExhc3QgdXBkYXRlZCBBcHJpbCA1LCAyMDI1LiBSZXBsYWNlcyBhbGwgcHJpb3IgdmVyc2lvbnMuXG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIEVzb3RlcmljIFNvZnR3YXJlIExMQ1xuICpcbiAqIEludGVncmF0aW9uIG9mIHRoZSBTcGluZSBSdW50aW1lcyBpbnRvIHNvZnR3YXJlIG9yIG90aGVyd2lzZSBjcmVhdGluZ1xuICogZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgaXMgcGVybWl0dGVkIHVuZGVyIHRoZSB0ZXJtcyBhbmRcbiAqIGNvbmRpdGlvbnMgb2YgU2VjdGlvbiAyIG9mIHRoZSBTcGluZSBFZGl0b3IgTGljZW5zZSBBZ3JlZW1lbnQ6XG4gKiBodHRwOi8vZXNvdGVyaWNzb2Z0d2FyZS5jb20vc3BpbmUtZWRpdG9yLWxpY2Vuc2VcbiAqXG4gKiBPdGhlcndpc2UsIGl0IGlzIHBlcm1pdHRlZCB0byBpbnRlZ3JhdGUgdGhlIFNwaW5lIFJ1bnRpbWVzIGludG8gc29mdHdhcmVcbiAqIG9yIG90aGVyd2lzZSBjcmVhdGUgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgU3BpbmUgUnVudGltZXMgKGNvbGxlY3RpdmVseSxcbiAqIFwiUHJvZHVjdHNcIiksIHByb3ZpZGVkIHRoYXQgZWFjaCB1c2VyIG9mIHRoZSBQcm9kdWN0cyBtdXN0IG9idGFpbiB0aGVpciBvd25cbiAqIFNwaW5lIEVkaXRvciBsaWNlbnNlIGFuZCByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZHVjdHMgaW4gYW55IGZvcm0gbXVzdFxuICogaW5jbHVkZSB0aGlzIGxpY2Vuc2UgYW5kIGNvcHlyaWdodCBub3RpY2UuXG4gKlxuICogVEhFIFNQSU5FIFJVTlRJTUVTIEFSRSBQUk9WSURFRCBCWSBFU09URVJJQyBTT0ZUV0FSRSBMTEMgXCJBUyBJU1wiI
Line truncated
|
||||
Reference in new issue
Block a user