Skip to content

Commit

Permalink
1.42.0 Add Palette offset ACEs
Browse files Browse the repository at this point in the history
  • Loading branch information
MikalDev committed Mar 27, 2021
1 parent d77a55e commit c3aca22
Show file tree
Hide file tree
Showing 10 changed files with 52 additions and 6 deletions.
Binary file added dist/Spine-v1.42.0.c3addon
Binary file not shown.
15 changes: 15 additions & 0 deletions src/aces.json
Original file line number Diff line number Diff line change
Expand Up @@ -686,6 +686,21 @@
}
]
},
{
"id": "set-slot-palette-offset",
"scriptName": "SetSlotPaletteOffset",
"highlight": false,
"params": [
{
"id": "slot-name",
"type": "string"
},
{
"id": "palette-offset",
"type": "number"
}
]
},
{
"id": "set-palette-color",
"scriptName": "SetPaletteColor",
Expand Down
2 changes: 1 addition & 1 deletion src/addon.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"type": "plugin",
"name": "Spine",
"id": "Gritsenko_Spine",
"version": "1.41.2",
"version": "1.42.0",
"author": "Mikal and Igor Gritsenko",
"website": "https://gritsenko.github.io/c3_spine_plugin",
"documentation": "https://gritsenko.github.io/c3_spine_plugin",
Expand Down
5 changes: 5 additions & 0 deletions src/c3runtime/actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -491,6 +491,11 @@
this.palette.setSlotPalette(slotName, paletteNumber);
},

SetSlotPaletteOffset(slotName, paletteOffset)
{
this.palette.setSlotPaletteOffset(slotName, paletteOffset);
},

SetPaletteDefaultColors(paletteNumber)
{
if (!this.skeletonInfo || !this.skeletonInfo.skeleton)
Expand Down
1 change: 0 additions & 1 deletion src/c3runtime/instance.js
Original file line number Diff line number Diff line change
Expand Up @@ -603,7 +603,6 @@
spineBatcher.setInstancePalette(this.palette, this.uid);

this.palette.uploadNeeded = true;
console.log('[Spine] palette', this.palette, this.c3renderer);

// Skeleton instance loading complete
// @ts-ignore
Expand Down
2 changes: 1 addition & 1 deletion src/c3runtime/spine-draw.js
Original file line number Diff line number Diff line change
Expand Up @@ -343,6 +343,6 @@ class SpineBatch {

if (!globalThis.spineBatcher)
{
console.log('[Spine] SpineBatcher init, 1.41.2');
console.log('[Spine] SpineBatcher init, 1.42.0');
globalThis.spineBatcher = new SpineBatch();
}
9 changes: 8 additions & 1 deletion src/c3runtime/spine-palette.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ class SpinePalette {
this._indexSize = indexSize;
this._paletteNumber = paletteNumber;
this._slotPalette = {};
this._slotPaletteOffset = {};
this._paletteTexture = null;
this._c3PaletteTexture = null;
this._uploadNeeded = false;
Expand All @@ -22,13 +23,14 @@ class SpinePalette {
get paletteNumber() { return this._paletteNumber;}
set enable(value) { this._enable = value;}
get slotPalette() { return this._slotPalette;}
get slotPaletteOffset() { return this._slotPaletteOffset;}
get paletteTexture() { return this._paletteTexture;}
get uploadNeeded() { return this._uploadNeeded;}
set uploadNeeded(value) { this._uploadNeeded = value;}

createPaletteTexture(renderer)
{
let options = { mipMap: false, sampling: 'nearest', pixelFormat:'rgba8' }
let options = { mipMap: false, sampling: 'nearest', pixelFormat:'rgba8', wrapX: "repeat", wrapY: "repeat" }
this._c3PaletteTexture = renderer.CreateDynamicTexture(this.indexSize, this.paletteNumber, options);
this._paletteTexture = this._c3PaletteTexture._texture;
}
Expand All @@ -39,6 +41,11 @@ class SpinePalette {
this._slotPalette[slotName] = Math.floor(paletteNumber);
}

setSlotPaletteOffset(slotName, paletteOffset)
{
this._slotPaletteOffset[slotName] = Math.floor(paletteOffset);
}

getSlotPalette(slotName)
{
if (this.slotPalette.hasOwnProperty(slotName))
Expand Down
7 changes: 6 additions & 1 deletion src/c3runtime/spine-webgl.js
Original file line number Diff line number Diff line change
Expand Up @@ -9853,7 +9853,7 @@ var spine;
};
Shader.newTwoColoredTextured = function (context) {
var vs = "\n\t\t\t\tattribute vec4 " + Shader.POSITION + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR + ";\n\t\t\t\tattribute vec4 " + Shader.COLOR2 + ";\n\t\t\t\tattribute vec2 " + Shader.TEXCOORDS + ";\n\t\t\t\tuniform mat4 " + Shader.MVP_MATRIX + ";\n\t\t\t\tvarying vec4 v_light;\n\t\t\t\tvarying vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tv_light = " + Shader.COLOR + ";\n\t\t\t\t\tv_dark = " + Shader.COLOR2 + ";\n\t\t\t\t\tv_texCoords = " + Shader.TEXCOORDS + ";\n\t\t\t\t\tgl_Position = " + Shader.MVP_MATRIX + " * " + Shader.POSITION + ";\n\t\t\t\t}\n\t\t\t";
var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\t\t\t\tuniform sampler2D u_palette;\n\t\t\t\tuniform float paletteEnable;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tif (v_light.a >= 0.0)\n\t\t\t\t\t{\n\t\t\t\t\t\tgl_FragColor.a = texColor.a * v_light.a;\n\t\t\t\t\t\tgl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n\t\t\t\t\t} else\n\t\t\t\t\t{\n\t\t\t\t\t\t// float index = ((texColor.r * 31.0)+0.5)/32.0;\n\t\t\t\t\t\tmediump float index = texColor.r;\n\t\t\t\t\t\tmediump float paletteNumber = ((v_light.b * 63.0)+0.5)/64.0;\n\t\t\t\t\t\t// paletteColor\n\t\t\t\t\t\tgl_FragColor = texture2D(u_palette, vec2(index,paletteNumber));\n\t\t\t\t\t\t// gl_FragColor = texture2D(u_palette, vec2(index,0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t";
var fs = "\n\t\t\t\t#ifdef GL_ES\n\t\t\t\t\t#define LOWP lowp\n\t\t\t\t\tprecision mediump float;\n\t\t\t\t#else\n\t\t\t\t\t#define LOWP\n\t\t\t\t#endif\n\t\t\t\tvarying LOWP vec4 v_light;\n\t\t\t\tvarying LOWP vec4 v_dark;\n\t\t\t\tvarying vec2 v_texCoords;\n\t\t\t\tuniform sampler2D u_texture;\n\t\t\t\tuniform sampler2D u_palette;\n\t\t\t\tuniform float paletteEnable;\n\n\t\t\t\tvoid main () {\n\t\t\t\t\tvec4 texColor = texture2D(u_texture, v_texCoords);\n\t\t\t\t\tif (v_light.a >= 0.0)\n\t\t\t\t\t{\n\t\t\t\t\t\tgl_FragColor.a = texColor.a * v_light.a;\n\t\t\t\t\t\tgl_FragColor.rgb = ((texColor.a - 1.0) * v_dark.a + 1.0 - texColor.rgb) * v_dark.rgb + texColor.rgb * v_light.rgb;\n\t\t\t\t\t} else\n\t\t\t\t\t{\n\t\t\t\t\t\t// float index = ((texColor.r * 31.0)+0.5)/32.0;\n\t\t\t\t\t\tmediump float index = texColor.r + v_light.g;\n\t\t\t\t\t\tmediump float paletteNumber = ((v_light.b * 63.0)+0.5)/64.0;\n\t\t\t\t\t\t// paletteColor\n\t\t\t\t\t\tgl_FragColor = texture2D(u_palette, vec2(index,paletteNumber));\n\t\t\t\t\t\t// gl_FragColor = texture2D(u_palette, vec2(index,0));\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t";
return new Shader(context, vs, fs);
};
Shader.newColored = function (context) {
Expand Down Expand Up @@ -10452,10 +10452,14 @@ var spine;
var clippedVertexSize = clipper.isClipping() ? 2 : vertexSize;
var slot = drawOrder[i];
var paletteIndex = 0;
var paletteOffset = 0;
if (palette.enable) {
if (palette.slotPalette.hasOwnProperty(slot.data.name)) {
paletteIndex = palette.slotPalette[slot.data.name] / palette.paletteNumber;
}
if (palette.slotPaletteOffset.hasOwnProperty(slot.data.name)) {
paletteOffset = palette.slotPaletteOffset[slot.data.name] / palette.indexSize;
}
}
if (!slot.bone.active) {
clipper.clipEndWithSlot(slot);
Expand Down Expand Up @@ -10654,6 +10658,7 @@ var spine;
verts[v] = finalColor.r;
verts[v + 1] = finalColor.g;
if (palette.enable) {
verts[v + 1] = paletteOffset;
verts[v + 2] = paletteIndex;
verts[v + 3] = -1.0;
}
Expand Down
15 changes: 15 additions & 0 deletions src/lang/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -712,6 +712,21 @@
}
}
},
"set-slot-palette-offset": {
"list-name": "Set slot palette offset",
"display-text": "Set slot {0} palette offset to {1}",
"description": "Set slot palette offset.",
"params": {
"slot-name": {
"name": "Slot name",
"desc": "Slot name"
},
"palette-offset": {
"name": "Palette offset",
"desc": "Palette offset"
}
}
},
"set-palette-default-colors": {
"list-name": "Set palette to default colors",
"display-text": "Set palette {0} colors to default colors",
Expand Down
2 changes: 1 addition & 1 deletion src/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
const C3 = self.C3;

const PLUGIN_ID = "Gritsenko_Spine";
const PLUGIN_VERSION = "1.41.2";
const PLUGIN_VERSION = "1.42.0";
const PLUGIN_CATEGORY = "general";

const PLUGIN_CLASS = SDK.Plugins.Gritsenko_Spine = class SpinePlugin extends SDK.IPluginBase {
Expand Down

0 comments on commit c3aca22

Please sign in to comment.