[ts][threejs] Allow passing material customizer to SkeletonMesh.

This commit is contained in:
Mario Zechner 2022-03-17 11:48:32 +01:00
parent 4df4bcfb76
commit dd7a651144
2 changed files with 5 additions and 6 deletions

View File

@ -81,8 +81,9 @@
var skeletonData = skeletonJson.readSkeletonData(assetManager.require(skeletonFile));
// Create a SkeletonMesh from the data and attach it to the scene
skeletonMesh = new spine.SkeletonMesh(skeletonData, function (parameters) {
skeletonMesh = new spine.SkeletonMesh(skeletonData, (parameters) => {
parameters.depthTest = false;
parameters.alphaTest = 0.5;
});
skeletonMesh.state.setAnimation(0, animation, true);
mesh.add(skeletonMesh);

View File

@ -32,9 +32,7 @@ import { MeshBatcher } from "./MeshBatcher";
import * as THREE from "three";
import { ThreeJsTexture } from "./ThreeJsTexture";
export interface SkeletonMeshMaterialParametersCustomizer {
(materialParameters: THREE.ShaderMaterialParameters): void;
}
export type SkeletonMeshMaterialParametersCustomizer = (materialParameters: THREE.ShaderMaterialParameters) => void;
export class SkeletonMeshMaterial extends THREE.ShaderMaterial {
constructor (customizer: SkeletonMeshMaterialParametersCustomizer) {
@ -103,7 +101,7 @@ export class SkeletonMesh extends THREE.Object3D {
private vertices = Utils.newFloatArray(1024);
private tempColor = new Color();
constructor (skeletonData: SkeletonData) {
constructor (skeletonData: SkeletonData, private materialCustomerizer: SkeletonMeshMaterialParametersCustomizer = (material) => { }) {
super();
this.skeleton = new Skeleton(skeletonData);
@ -138,7 +136,7 @@ export class SkeletonMesh extends THREE.Object3D {
private nextBatch () {
if (this.batches.length == this.nextBatchIndex) {
let batch = new MeshBatcher();
let batch = new MeshBatcher(10920, this.materialCustomerizer);
this.add(batch);
this.batches.push(batch);
}