Эх сурвалжийг харах

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

Mario Zechner 3 жил өмнө
parent
commit
dd7a651144

+ 2 - 1
spine-ts/spine-threejs/example/index.html

@@ -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);

+ 3 - 5
spine-ts/spine-threejs/src/SkeletonMesh.ts

@@ -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 {
-	(materialParameters: THREE.ShaderMaterialParameters): void;
-}
+export type SkeletonMeshMaterialParametersCustomizer = (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);
 		}
 		}