[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)); var skeletonData = skeletonJson.readSkeletonData(assetManager.require(skeletonFile));
// Create a SkeletonMesh from the data and attach it to the scene // 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.depthTest = false;
parameters.alphaTest = 0.5;
}); });
skeletonMesh.state.setAnimation(0, animation, true); skeletonMesh.state.setAnimation(0, animation, true);
mesh.add(skeletonMesh); mesh.add(skeletonMesh);

View File

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