mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[ts][threejs] Added VertexEffect to SkeletonMesh
This commit is contained in:
parent
b685e490c1
commit
8d4a14b200
4
spine-ts/build/spine-all.d.ts
vendored
4
spine-ts/build/spine-all.d.ts
vendored
@ -1699,6 +1699,10 @@ declare module spine.threejs {
|
|||||||
}
|
}
|
||||||
declare module spine.threejs {
|
declare module spine.threejs {
|
||||||
class SkeletonMesh extends THREE.Mesh {
|
class SkeletonMesh extends THREE.Mesh {
|
||||||
|
tempPos: Vector2;
|
||||||
|
tempUv: Vector2;
|
||||||
|
tempLight: Color;
|
||||||
|
tempDark: Color;
|
||||||
skeleton: Skeleton;
|
skeleton: Skeleton;
|
||||||
state: AnimationState;
|
state: AnimationState;
|
||||||
zOffset: number;
|
zOffset: number;
|
||||||
|
|||||||
@ -9264,6 +9264,10 @@ var spine;
|
|||||||
__extends(SkeletonMesh, _super);
|
__extends(SkeletonMesh, _super);
|
||||||
function SkeletonMesh(skeletonData) {
|
function SkeletonMesh(skeletonData) {
|
||||||
var _this = _super.call(this) || this;
|
var _this = _super.call(this) || this;
|
||||||
|
_this.tempPos = new spine.Vector2();
|
||||||
|
_this.tempUv = new spine.Vector2();
|
||||||
|
_this.tempLight = new spine.Color();
|
||||||
|
_this.tempDark = new spine.Color();
|
||||||
_this.zOffset = 0.1;
|
_this.zOffset = 0.1;
|
||||||
_this.clipper = new spine.SkeletonClipping();
|
_this.clipper = new spine.SkeletonClipping();
|
||||||
_this.vertices = spine.Utils.newFloatArray(1024);
|
_this.vertices = spine.Utils.newFloatArray(1024);
|
||||||
@ -9287,6 +9291,10 @@ var spine;
|
|||||||
this.updateGeometry();
|
this.updateGeometry();
|
||||||
};
|
};
|
||||||
SkeletonMesh.prototype.updateGeometry = function () {
|
SkeletonMesh.prototype.updateGeometry = function () {
|
||||||
|
var tempPos = this.tempPos;
|
||||||
|
var tempUv = this.tempUv;
|
||||||
|
var tempLight = this.tempLight;
|
||||||
|
var tempDark = this.tempDark;
|
||||||
var geometry = this.geometry;
|
var geometry = this.geometry;
|
||||||
var numVertices = 0;
|
var numVertices = 0;
|
||||||
var verticesLength = 0;
|
var verticesLength = 0;
|
||||||
@ -9354,17 +9362,60 @@ var spine;
|
|||||||
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
||||||
var clippedVertices = clipper.clippedVertices;
|
var clippedVertices = clipper.clippedVertices;
|
||||||
var clippedTriangles = clipper.clippedTriangles;
|
var clippedTriangles = clipper.clippedTriangles;
|
||||||
|
if (this.vertexEffect != null) {
|
||||||
|
var vertexEffect = this.vertexEffect;
|
||||||
|
var verts = clippedVertices;
|
||||||
|
for (var v = 0, n_9 = clippedVertices.length; v < n_9; v += vertexSize) {
|
||||||
|
tempPos.x = verts[v];
|
||||||
|
tempPos.y = verts[v + 1];
|
||||||
|
tempLight.setFromColor(color);
|
||||||
|
tempDark.set(0, 0, 0, 0);
|
||||||
|
tempUv.x = verts[v + 6];
|
||||||
|
tempUv.y = verts[v + 7];
|
||||||
|
vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
|
||||||
|
verts[v] = tempPos.x;
|
||||||
|
verts[v + 1] = tempPos.y;
|
||||||
|
verts[v + 2] = tempLight.r;
|
||||||
|
verts[v + 3] = tempLight.g;
|
||||||
|
verts[v + 4] = tempLight.b;
|
||||||
|
verts[v + 5] = tempLight.a;
|
||||||
|
verts[v + 6] = tempUv.x;
|
||||||
|
verts[v + 7] = tempUv.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
batcher.batch(clippedVertices, clippedVertices.length, clippedTriangles, clippedTriangles.length, z);
|
batcher.batch(clippedVertices, clippedVertices.length, clippedTriangles, clippedTriangles.length, z);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var verts = vertices;
|
var verts = vertices;
|
||||||
for (var v = 2, u = 0, n_9 = numFloats; v < n_9; v += vertexSize, u += 2) {
|
if (this.vertexEffect != null) {
|
||||||
verts[v] = color.r;
|
var vertexEffect = this.vertexEffect;
|
||||||
verts[v + 1] = color.g;
|
for (var v = 0, u = 0, n_10 = numFloats; v < n_10; v += vertexSize, u += 2) {
|
||||||
verts[v + 2] = color.b;
|
tempPos.x = verts[v];
|
||||||
verts[v + 3] = color.a;
|
tempPos.y = verts[v + 1];
|
||||||
verts[v + 4] = uvs[u];
|
tempLight.setFromColor(color);
|
||||||
verts[v + 5] = uvs[u + 1];
|
tempDark.set(0, 0, 0, 0);
|
||||||
|
tempUv.x = uvs[u];
|
||||||
|
tempUv.y = uvs[u + 1];
|
||||||
|
vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
|
||||||
|
verts[v] = tempPos.x;
|
||||||
|
verts[v + 1] = tempPos.y;
|
||||||
|
verts[v + 2] = tempLight.r;
|
||||||
|
verts[v + 3] = tempLight.g;
|
||||||
|
verts[v + 4] = tempLight.b;
|
||||||
|
verts[v + 5] = tempLight.a;
|
||||||
|
verts[v + 6] = tempUv.x;
|
||||||
|
verts[v + 7] = tempUv.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (var v = 2, u = 0, n_11 = numFloats; v < n_11; v += vertexSize, u += 2) {
|
||||||
|
verts[v] = color.r;
|
||||||
|
verts[v + 1] = color.g;
|
||||||
|
verts[v + 2] = color.b;
|
||||||
|
verts[v + 3] = color.a;
|
||||||
|
verts[v + 4] = uvs[u];
|
||||||
|
verts[v + 5] = uvs[u + 1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
batcher.batch(vertices, numFloats, triangles, triangles.length, z);
|
batcher.batch(vertices, numFloats, triangles, triangles.length, z);
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
4
spine-ts/build/spine-threejs.d.ts
vendored
4
spine-ts/build/spine-threejs.d.ts
vendored
@ -1238,6 +1238,10 @@ declare module spine.threejs {
|
|||||||
}
|
}
|
||||||
declare module spine.threejs {
|
declare module spine.threejs {
|
||||||
class SkeletonMesh extends THREE.Mesh {
|
class SkeletonMesh extends THREE.Mesh {
|
||||||
|
tempPos: Vector2;
|
||||||
|
tempUv: Vector2;
|
||||||
|
tempLight: Color;
|
||||||
|
tempDark: Color;
|
||||||
skeleton: Skeleton;
|
skeleton: Skeleton;
|
||||||
state: AnimationState;
|
state: AnimationState;
|
||||||
zOffset: number;
|
zOffset: number;
|
||||||
|
|||||||
@ -6514,6 +6514,10 @@ var spine;
|
|||||||
__extends(SkeletonMesh, _super);
|
__extends(SkeletonMesh, _super);
|
||||||
function SkeletonMesh(skeletonData) {
|
function SkeletonMesh(skeletonData) {
|
||||||
var _this = _super.call(this) || this;
|
var _this = _super.call(this) || this;
|
||||||
|
_this.tempPos = new spine.Vector2();
|
||||||
|
_this.tempUv = new spine.Vector2();
|
||||||
|
_this.tempLight = new spine.Color();
|
||||||
|
_this.tempDark = new spine.Color();
|
||||||
_this.zOffset = 0.1;
|
_this.zOffset = 0.1;
|
||||||
_this.clipper = new spine.SkeletonClipping();
|
_this.clipper = new spine.SkeletonClipping();
|
||||||
_this.vertices = spine.Utils.newFloatArray(1024);
|
_this.vertices = spine.Utils.newFloatArray(1024);
|
||||||
@ -6537,6 +6541,10 @@ var spine;
|
|||||||
this.updateGeometry();
|
this.updateGeometry();
|
||||||
};
|
};
|
||||||
SkeletonMesh.prototype.updateGeometry = function () {
|
SkeletonMesh.prototype.updateGeometry = function () {
|
||||||
|
var tempPos = this.tempPos;
|
||||||
|
var tempUv = this.tempUv;
|
||||||
|
var tempLight = this.tempLight;
|
||||||
|
var tempDark = this.tempDark;
|
||||||
var geometry = this.geometry;
|
var geometry = this.geometry;
|
||||||
var numVertices = 0;
|
var numVertices = 0;
|
||||||
var verticesLength = 0;
|
var verticesLength = 0;
|
||||||
@ -6604,17 +6612,60 @@ var spine;
|
|||||||
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
||||||
var clippedVertices = clipper.clippedVertices;
|
var clippedVertices = clipper.clippedVertices;
|
||||||
var clippedTriangles = clipper.clippedTriangles;
|
var clippedTriangles = clipper.clippedTriangles;
|
||||||
|
if (this.vertexEffect != null) {
|
||||||
|
var vertexEffect = this.vertexEffect;
|
||||||
|
var verts = clippedVertices;
|
||||||
|
for (var v = 0, n_2 = clippedVertices.length; v < n_2; v += vertexSize) {
|
||||||
|
tempPos.x = verts[v];
|
||||||
|
tempPos.y = verts[v + 1];
|
||||||
|
tempLight.setFromColor(color);
|
||||||
|
tempDark.set(0, 0, 0, 0);
|
||||||
|
tempUv.x = verts[v + 6];
|
||||||
|
tempUv.y = verts[v + 7];
|
||||||
|
vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
|
||||||
|
verts[v] = tempPos.x;
|
||||||
|
verts[v + 1] = tempPos.y;
|
||||||
|
verts[v + 2] = tempLight.r;
|
||||||
|
verts[v + 3] = tempLight.g;
|
||||||
|
verts[v + 4] = tempLight.b;
|
||||||
|
verts[v + 5] = tempLight.a;
|
||||||
|
verts[v + 6] = tempUv.x;
|
||||||
|
verts[v + 7] = tempUv.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
batcher.batch(clippedVertices, clippedVertices.length, clippedTriangles, clippedTriangles.length, z);
|
batcher.batch(clippedVertices, clippedVertices.length, clippedTriangles, clippedTriangles.length, z);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
var verts = vertices;
|
var verts = vertices;
|
||||||
for (var v = 2, u = 0, n_2 = numFloats; v < n_2; v += vertexSize, u += 2) {
|
if (this.vertexEffect != null) {
|
||||||
verts[v] = color.r;
|
var vertexEffect = this.vertexEffect;
|
||||||
verts[v + 1] = color.g;
|
for (var v = 0, u = 0, n_3 = numFloats; v < n_3; v += vertexSize, u += 2) {
|
||||||
verts[v + 2] = color.b;
|
tempPos.x = verts[v];
|
||||||
verts[v + 3] = color.a;
|
tempPos.y = verts[v + 1];
|
||||||
verts[v + 4] = uvs[u];
|
tempLight.setFromColor(color);
|
||||||
verts[v + 5] = uvs[u + 1];
|
tempDark.set(0, 0, 0, 0);
|
||||||
|
tempUv.x = uvs[u];
|
||||||
|
tempUv.y = uvs[u + 1];
|
||||||
|
vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
|
||||||
|
verts[v] = tempPos.x;
|
||||||
|
verts[v + 1] = tempPos.y;
|
||||||
|
verts[v + 2] = tempLight.r;
|
||||||
|
verts[v + 3] = tempLight.g;
|
||||||
|
verts[v + 4] = tempLight.b;
|
||||||
|
verts[v + 5] = tempLight.a;
|
||||||
|
verts[v + 6] = tempUv.x;
|
||||||
|
verts[v + 7] = tempUv.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for (var v = 2, u = 0, n_4 = numFloats; v < n_4; v += vertexSize, u += 2) {
|
||||||
|
verts[v] = color.r;
|
||||||
|
verts[v + 1] = color.g;
|
||||||
|
verts[v + 2] = color.b;
|
||||||
|
verts[v + 3] = color.a;
|
||||||
|
verts[v + 4] = uvs[u];
|
||||||
|
verts[v + 5] = uvs[u + 1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
batcher.batch(vertices, numFloats, triangles, triangles.length, z);
|
batcher.batch(vertices, numFloats, triangles, triangles.length, z);
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@ -30,7 +30,10 @@
|
|||||||
|
|
||||||
module spine.threejs {
|
module spine.threejs {
|
||||||
export class SkeletonMesh extends THREE.Mesh {
|
export class SkeletonMesh extends THREE.Mesh {
|
||||||
|
tempPos: Vector2 = new Vector2();
|
||||||
|
tempUv: Vector2 = new Vector2();
|
||||||
|
tempLight = new Color();
|
||||||
|
tempDark = new Color();
|
||||||
skeleton: Skeleton;
|
skeleton: Skeleton;
|
||||||
state: AnimationState;
|
state: AnimationState;
|
||||||
zOffset: number = 0.1;
|
zOffset: number = 0.1;
|
||||||
@ -71,6 +74,11 @@ module spine.threejs {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private updateGeometry() {
|
private updateGeometry() {
|
||||||
|
let tempPos = this.tempPos;
|
||||||
|
let tempUv = this.tempUv;
|
||||||
|
let tempLight = this.tempLight;
|
||||||
|
let tempDark = this.tempDark;
|
||||||
|
|
||||||
let geometry = <THREE.BufferGeometry>this.geometry;
|
let geometry = <THREE.BufferGeometry>this.geometry;
|
||||||
var numVertices = 0;
|
var numVertices = 0;
|
||||||
var verticesLength = 0;
|
var verticesLength = 0;
|
||||||
@ -148,16 +156,58 @@ module spine.threejs {
|
|||||||
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
||||||
let clippedVertices = clipper.clippedVertices;
|
let clippedVertices = clipper.clippedVertices;
|
||||||
let clippedTriangles = clipper.clippedTriangles;
|
let clippedTriangles = clipper.clippedTriangles;
|
||||||
|
if (this.vertexEffect != null) {
|
||||||
|
let vertexEffect = this.vertexEffect;
|
||||||
|
let verts = clippedVertices;
|
||||||
|
for (let v = 0, n = clippedVertices.length; v < n; v += vertexSize) {
|
||||||
|
tempPos.x = verts[v];
|
||||||
|
tempPos.y = verts[v + 1];
|
||||||
|
tempLight.setFromColor(color);
|
||||||
|
tempDark.set(0, 0, 0, 0);
|
||||||
|
tempUv.x = verts[v + 6];
|
||||||
|
tempUv.y = verts[v + 7];
|
||||||
|
vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
|
||||||
|
verts[v] = tempPos.x;
|
||||||
|
verts[v + 1] = tempPos.y;
|
||||||
|
verts[v + 2] = tempLight.r;
|
||||||
|
verts[v + 3] = tempLight.g;
|
||||||
|
verts[v + 4] = tempLight.b;
|
||||||
|
verts[v + 5] = tempLight.a;
|
||||||
|
verts[v + 6] = tempUv.x;
|
||||||
|
verts[v + 7] = tempUv.y;
|
||||||
|
}
|
||||||
|
}
|
||||||
batcher.batch(clippedVertices, clippedVertices.length, clippedTriangles, clippedTriangles.length, z);
|
batcher.batch(clippedVertices, clippedVertices.length, clippedTriangles, clippedTriangles.length, z);
|
||||||
} else {
|
} else {
|
||||||
let verts = vertices;
|
let verts = vertices;
|
||||||
for (let v = 2, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
|
if (this.vertexEffect != null) {
|
||||||
verts[v] = color.r;
|
let vertexEffect = this.vertexEffect;
|
||||||
verts[v + 1] = color.g;
|
for (let v = 0, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
|
||||||
verts[v + 2] = color.b;
|
tempPos.x = verts[v];
|
||||||
verts[v + 3] = color.a;
|
tempPos.y = verts[v + 1];
|
||||||
verts[v + 4] = uvs[u];
|
tempLight.setFromColor(color);
|
||||||
verts[v + 5] = uvs[u + 1];
|
tempDark.set(0, 0, 0, 0);
|
||||||
|
tempUv.x = uvs[u];
|
||||||
|
tempUv.y = uvs[u + 1];
|
||||||
|
vertexEffect.transform(tempPos, tempUv, tempLight, tempDark);
|
||||||
|
verts[v] = tempPos.x;
|
||||||
|
verts[v + 1] = tempPos.y;
|
||||||
|
verts[v + 2] = tempLight.r;
|
||||||
|
verts[v + 3] = tempLight.g;
|
||||||
|
verts[v + 4] = tempLight.b;
|
||||||
|
verts[v + 5] = tempLight.a;
|
||||||
|
verts[v + 6] = tempUv.x;
|
||||||
|
verts[v + 7] = tempUv.y;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for (let v = 2, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
|
||||||
|
verts[v] = color.r;
|
||||||
|
verts[v + 1] = color.g;
|
||||||
|
verts[v + 2] = color.b;
|
||||||
|
verts[v + 3] = color.a;
|
||||||
|
verts[v + 4] = uvs[u];
|
||||||
|
verts[v + 5] = uvs[u + 1];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
batcher.batch(vertices, numFloats, triangles, triangles.length, z);
|
batcher.batch(vertices, numFloats, triangles, triangles.length, z);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user