浏览代码

Fix emitter in infinite mode.

clementlandrin 2 月之前
父节点
当前提交
b8aff73619
共有 2 个文件被更改,包括 3 次插入1 次删除
  1. 2 1
      hrt/prefab/fx/gpuemitter/BaseSimulation.hx
  2. 1 0
      hrt/prefab/fx/gpuemitter/GPUEmitterObject.hx

+ 2 - 1
hrt/prefab/fx/gpuemitter/BaseSimulation.hx

@@ -17,6 +17,7 @@ class BaseSimulation extends ComputeUtils {
 
 
 		@const var FACE_CAM : Bool = false;
 		@const var FACE_CAM : Bool = false;
 		@const var CAMERA_BOUNDS : Bool = false;
 		@const var CAMERA_BOUNDS : Bool = false;
+		@const var INFINITE : Bool = false;
 
 
 		@param var dtParam : Float;
 		@param var dtParam : Float;
 		@param var cameraUp : Vec3;
 		@param var cameraUp : Vec3;
@@ -44,7 +45,7 @@ class BaseSimulation extends ComputeUtils {
 			prevModelView = batchBuffer[computeVar.globalInvocation.x].modelView;
 			prevModelView = batchBuffer[computeVar.globalInvocation.x].modelView;
 			particleRandom = particleBuffer[computeVar.globalInvocation.x].random;
 			particleRandom = particleBuffer[computeVar.globalInvocation.x].random;
 			particleColor = int2rgba(floatBitsToInt(particleBuffer[computeVar.globalInvocation.x].color));
 			particleColor = int2rgba(floatBitsToInt(particleBuffer[computeVar.globalInvocation.x].color));
-			relativeTransform = scaleMatrix((life < lifeTime ? 1.0 : 0.0) * (computeVar.globalInvocation.x > curCount ? 0.0 : 1.0) * vec3(particleRandom * (maxSize - minSize) + minSize));
+			relativeTransform = scaleMatrix(((INFINITE || life < lifeTime) ? 1.0 : 0.0) * (computeVar.globalInvocation.x > curCount ? 0.0 : 1.0) * vec3(particleRandom * (maxSize - minSize) + minSize));
 		}
 		}
 
 
 		function main() {
 		function main() {

+ 1 - 0
hrt/prefab/fx/gpuemitter/GPUEmitterObject.hx

@@ -226,6 +226,7 @@ class GPUEmitterObject extends h3d.scene.MeshBatch {
 			baseSimulation.dtParam = ctx.elapsedTime;
 			baseSimulation.dtParam = ctx.elapsedTime;
 			baseSimulation.maxSize = data.maxSize;
 			baseSimulation.maxSize = data.maxSize;
 			baseSimulation.minSize = data.minSize;
 			baseSimulation.minSize = data.minSize;
+			baseSimulation.INFINITE = data.infinite;
 			switch ( data.align ) {
 			switch ( data.align ) {
 			case FaceCam:
 			case FaceCam:
 				baseSimulation.FACE_CAM = true;
 				baseSimulation.FACE_CAM = true;