mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 15:24:55 +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 {
|
||||
class SkeletonMesh extends THREE.Mesh {
|
||||
tempPos: Vector2;
|
||||
tempUv: Vector2;
|
||||
tempLight: Color;
|
||||
tempDark: Color;
|
||||
skeleton: Skeleton;
|
||||
state: AnimationState;
|
||||
zOffset: number;
|
||||
|
||||
@ -9264,6 +9264,10 @@ var spine;
|
||||
__extends(SkeletonMesh, _super);
|
||||
function SkeletonMesh(skeletonData) {
|
||||
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.clipper = new spine.SkeletonClipping();
|
||||
_this.vertices = spine.Utils.newFloatArray(1024);
|
||||
@ -9287,6 +9291,10 @@ var spine;
|
||||
this.updateGeometry();
|
||||
};
|
||||
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 numVertices = 0;
|
||||
var verticesLength = 0;
|
||||
@ -9354,17 +9362,60 @@ var spine;
|
||||
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
||||
var clippedVertices = clipper.clippedVertices;
|
||||
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);
|
||||
}
|
||||
else {
|
||||
var verts = vertices;
|
||||
for (var v = 2, u = 0, n_9 = numFloats; v < n_9; 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];
|
||||
if (this.vertexEffect != null) {
|
||||
var vertexEffect = this.vertexEffect;
|
||||
for (var v = 0, u = 0, n_10 = numFloats; v < n_10; v += vertexSize, u += 2) {
|
||||
tempPos.x = verts[v];
|
||||
tempPos.y = verts[v + 1];
|
||||
tempLight.setFromColor(color);
|
||||
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);
|
||||
}
|
||||
|
||||
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 {
|
||||
class SkeletonMesh extends THREE.Mesh {
|
||||
tempPos: Vector2;
|
||||
tempUv: Vector2;
|
||||
tempLight: Color;
|
||||
tempDark: Color;
|
||||
skeleton: Skeleton;
|
||||
state: AnimationState;
|
||||
zOffset: number;
|
||||
|
||||
@ -6514,6 +6514,10 @@ var spine;
|
||||
__extends(SkeletonMesh, _super);
|
||||
function SkeletonMesh(skeletonData) {
|
||||
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.clipper = new spine.SkeletonClipping();
|
||||
_this.vertices = spine.Utils.newFloatArray(1024);
|
||||
@ -6537,6 +6541,10 @@ var spine;
|
||||
this.updateGeometry();
|
||||
};
|
||||
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 numVertices = 0;
|
||||
var verticesLength = 0;
|
||||
@ -6604,17 +6612,60 @@ var spine;
|
||||
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
||||
var clippedVertices = clipper.clippedVertices;
|
||||
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);
|
||||
}
|
||||
else {
|
||||
var verts = vertices;
|
||||
for (var v = 2, u = 0, n_2 = numFloats; v < n_2; 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];
|
||||
if (this.vertexEffect != null) {
|
||||
var vertexEffect = this.vertexEffect;
|
||||
for (var v = 0, u = 0, n_3 = numFloats; v < n_3; v += vertexSize, u += 2) {
|
||||
tempPos.x = verts[v];
|
||||
tempPos.y = verts[v + 1];
|
||||
tempLight.setFromColor(color);
|
||||
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);
|
||||
}
|
||||
|
||||
File diff suppressed because one or more lines are too long
@ -30,7 +30,10 @@
|
||||
|
||||
module spine.threejs {
|
||||
export class SkeletonMesh extends THREE.Mesh {
|
||||
|
||||
tempPos: Vector2 = new Vector2();
|
||||
tempUv: Vector2 = new Vector2();
|
||||
tempLight = new Color();
|
||||
tempDark = new Color();
|
||||
skeleton: Skeleton;
|
||||
state: AnimationState;
|
||||
zOffset: number = 0.1;
|
||||
@ -71,6 +74,11 @@ module spine.threejs {
|
||||
}
|
||||
|
||||
private updateGeometry() {
|
||||
let tempPos = this.tempPos;
|
||||
let tempUv = this.tempUv;
|
||||
let tempLight = this.tempLight;
|
||||
let tempDark = this.tempDark;
|
||||
|
||||
let geometry = <THREE.BufferGeometry>this.geometry;
|
||||
var numVertices = 0;
|
||||
var verticesLength = 0;
|
||||
@ -148,16 +156,58 @@ module spine.threejs {
|
||||
clipper.clipTriangles(vertices, numFloats, triangles, triangles.length, uvs, color, null, false);
|
||||
let clippedVertices = clipper.clippedVertices;
|
||||
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);
|
||||
} else {
|
||||
let verts = vertices;
|
||||
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];
|
||||
if (this.vertexEffect != null) {
|
||||
let vertexEffect = this.vertexEffect;
|
||||
for (let v = 0, u = 0, n = numFloats; v < n; v += vertexSize, u += 2) {
|
||||
tempPos.x = verts[v];
|
||||
tempPos.y = verts[v + 1];
|
||||
tempLight.setFromColor(color);
|
||||
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);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user