Browse Source

Update MeshBatch with heaps changes.

clementlandrin 5 months ago
parent
commit
87764673b6
2 changed files with 10 additions and 5 deletions
  1. 7 2
      hrt/prefab/fx/gpuemitter/GPUEmitter.hx
  2. 3 3
      hrt/prefab/l3d/ModelLibrary.hx

+ 7 - 2
hrt/prefab/fx/gpuemitter/GPUEmitter.hx

@@ -104,6 +104,7 @@ class GPUEmitterObject extends h3d.scene.MeshBatch {
 
 	var rateAccumulation : Float = 0.0;
 	var firstDispatch : Bool = true;
+	var countBytes : haxe.io.Bytes;
 
 	public function new(data, primitive, materials, ?parent) {
 		super(primitive, null, parent);
@@ -115,8 +116,9 @@ class GPUEmitterObject extends h3d.scene.MeshBatch {
 				break;
 			p = p.parent;
 		}
-		this.meshBatchFlags.set(EnableGpuUpdate);
-		this.meshBatchFlags.set(EnableStorageBuffer);
+
+		enableGpuUpdate();
+		enableStorageBuffer();
 		if ( materials != null )
 			this.materials = materials;
 		particleShader = new ParticleShader();
@@ -386,6 +388,9 @@ class GPUEmitterObject extends h3d.scene.MeshBatch {
 
 		if ( paramTexture != null )
 			paramTexture.dispose();
+
+		if ( countBytes != null )
+			countBytes = null;
 	}
 }
 

+ 3 - 3
hrt/prefab/l3d/ModelLibrary.hx

@@ -181,7 +181,7 @@ class MeshEmitter {
 	public function emit( absPos : h3d.Matrix, emitCountTip : Int = -1, ?cb : h3d.scene.MeshBatch -> Void ) {
 		for ( i => mat in materials ) {
 			var batch = @:privateAccess libraryInstance.getBatch(batches[i]);
-			libraryInstance.library.emit({ mat : mat, mesh : mesh }, batch, absPos, emitCountTip, batch.meshBatchFlags);
+			libraryInstance.library.emit({ mat : mat, mesh : mesh }, batch, absPos, emitCountTip);
 			if ( cb != null )
 				cb(batch);
 		}
@@ -1104,12 +1104,12 @@ class ModelLibrary extends Prefab {
 		return bk;
 	}
 
-	public function emit(bk : MaterialMesh, batch : h3d.scene.MeshBatch, ?absPos : h3d.Matrix, emitCountTip = -1, ?flags : haxe.EnumFlags<h3d.scene.MeshBatch.MeshBatchFlag> ) {
+	public function emit(bk : MaterialMesh, batch : h3d.scene.MeshBatch, ?absPos : h3d.Matrix, emitCountTip = -1) {
 		cache.shader.uvTransform.set(bk.mat.uvX, bk.mat.uvY, bk.mat.uvSX, bk.mat.uvSY);
 		cache.shader.libraryParams.set(bk.mat.texId, 1.0 / atlasResolution / bk.mat.uvSX, 0.0, 0.0);
 		if ( batch.primitiveSubPart == null ) {
 			batch.primitiveSubPart = new h3d.scene.MeshBatch.MeshBatchPart();
-			batch.begin(emitCountTip, flags);
+			batch.begin(emitCountTip);
 		}
 		batch.primitiveSubPart.indexCount = bk.mat.indexCount;
 		batch.primitiveSubPart.indexStart = bk.mat.indexStart;