Browse Source

update dispose

sjy 5 năm trước cách đây
mục cha
commit
b1034d4d00
3 tập tin đã thay đổi với 22 bổ sung1 xóa
  1. 2 0
      src/objects/Skeleton.d.ts
  2. 16 0
      src/objects/Skeleton.js
  3. 4 1
      src/renderers/WebGLRenderer.js

+ 2 - 0
src/objects/Skeleton.d.ts

@@ -21,4 +21,6 @@ export class Skeleton {
 	clone(): Skeleton;
 	getBoneByName( name: string ): undefined | Bone;
 
+	dispose();
+
 }

+ 16 - 0
src/objects/Skeleton.js

@@ -168,6 +168,22 @@ Object.assign( Skeleton.prototype, {
 
 		return undefined;
 
+	},
+
+	dispose: function ( name ) {
+
+		if (this.boneTexture) {
+
+			this.boneTexture.dispose();
+
+			this.boneTexture = undefined;
+
+			this.boneMatrices = undefined;
+
+			this.boneTextureSize = undefined;
+		}
+		// developer need to clean skeleton reference
+		this.disposed = true
 	}
 
 } );

+ 4 - 1
src/renderers/WebGLRenderer.js

@@ -1781,7 +1781,7 @@ function WebGLRenderer( parameters ) {
 
 			var skeleton = object.skeleton;
 
-			if ( skeleton ) {
+			if ( skeleton && !skeleton.disposed ) {
 
 				var bones = skeleton.bones;
 
@@ -1822,6 +1822,9 @@ function WebGLRenderer( parameters ) {
 				}
 
 			}
+			else if ( skeleton.disposed ) {
+				console.warn(" skeleton is disposed")
+			}
 
 		}