@galacean/engine-core 1.1.0-beta.19 → 1.1.0-beta.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +174 -91
- package/dist/main.js.map +1 -1
- package/dist/miniprogram.js +174 -91
- package/dist/module.js +174 -91
- package/dist/module.js.map +1 -1
- package/package.json +3 -3
- package/types/2d/atlas/types.d.ts +3 -0
- package/types/asset/AssetPromise.d.ts +1 -0
- package/types/mesh/SubModelMesh.d.ts +260 -0
- package/types/particle/modules/MainModule.d.ts +0 -1
- package/types/xr/IXRDevice.d.ts +26 -0
- package/types/xr/XRManager.d.ts +89 -24
- package/types/xr/XRModule.d.ts +126 -0
- package/types/xr/component/XRPoseDriver.d.ts +5 -5
- package/types/xr/component/XRTrackingMode.d.ts +15 -0
- package/types/xr/component/trackable/XRAnchor.d.ts +4 -0
- package/types/xr/component/trackable/XRImage.d.ts +6 -0
- package/types/xr/component/trackable/XRPlane.d.ts +7 -0
- package/types/xr/component/trackable/XRTracked.d.ts +13 -0
- package/types/xr/feature/XRFeatureManager.d.ts +65 -0
- package/types/xr/feature/XRFeatureType.d.ts +17 -0
- package/types/xr/feature/XRPlatformFeature.d.ts +17 -0
- package/types/xr/feature/camera/IXRCameraDescriptor.d.ts +7 -0
- package/types/xr/feature/camera/XRCameraManager.d.ts +35 -0
- package/types/xr/feature/camera/XRPlatformCamera.d.ts +5 -0
- package/types/xr/feature/hitTest/XRHItTestType.d.ts +16 -0
- package/types/xr/feature/hitTest/XRHitTestManager.d.ts +38 -0
- package/types/xr/feature/movementTracking/IXRMovementTrackingDescriptor.d.ts +9 -0
- package/types/xr/feature/movementTracking/XRMovementTrackingManager.d.ts +8 -0
- package/types/xr/feature/movementTracking/XRMovementTrackingMode.d.ts +5 -0
- package/types/xr/feature/movementTracking/XRPlatformMovementTracking.d.ts +10 -0
- package/types/xr/feature/trackable/XRRequestTrackingState.d.ts +11 -0
- package/types/xr/feature/trackable/XRTrackableManager.d.ts +41 -0
- package/types/xr/feature/trackable/XRTrackablePlatformFeature.d.ts +29 -0
- package/types/xr/feature/trackable/XRTracked.d.ts +9 -0
- package/types/xr/feature/trackable/XRTrackedUpdateFlag.d.ts +11 -0
- package/types/xr/feature/trackable/XRTrackingState.d.ts +11 -0
- package/types/xr/feature/trackable/anchor/IXRAnchorTrackingDescriptor.d.ts +8 -0
- package/types/xr/feature/trackable/anchor/XRAnchorTrackingManager.d.ts +22 -0
- package/types/xr/feature/trackable/anchor/XRAnchorTrackingMode.d.ts +4 -0
- package/types/xr/feature/trackable/anchor/XRPlatformAnchorTracking.d.ts +12 -0
- package/types/xr/feature/trackable/anchor/XRRequestTrackingAnchor.d.ts +10 -0
- package/types/xr/feature/trackable/image/IXRImageTrackingDescriptor.d.ts +5 -0
- package/types/xr/feature/trackable/image/XRImageTrackingManager.d.ts +33 -0
- package/types/xr/feature/trackable/image/XRPlatformImageTracking.d.ts +14 -0
- package/types/xr/feature/trackable/image/XRReferenceImage.d.ts +14 -0
- package/types/xr/feature/trackable/image/XRRequestTrackingImage.d.ts +11 -0
- package/types/xr/feature/trackable/image/XRTrackedImage.d.ts +5 -0
- package/types/xr/feature/trackable/plane/IXRPlaneTrackingDescriptor.d.ts +9 -0
- package/types/xr/feature/trackable/plane/XRPlaneDetectionMode.d.ts +13 -0
- package/types/xr/feature/trackable/plane/XRPlaneMode.d.ts +13 -0
- package/types/xr/feature/trackable/plane/XRPlaneTrackingManager.d.ts +14 -0
- package/types/xr/feature/trackable/plane/XRPlatformPlaneTracking.d.ts +11 -0
- package/types/xr/feature/trackable/plane/XRRequestTrackingPlane.d.ts +11 -0
- package/types/xr/feature/trackable/plane/XRTrackedPlane.d.ts +11 -0
- package/types/xr/index.d.ts +39 -18
- package/types/xr/input/XRCamera.d.ts +28 -0
- package/types/xr/input/XRController.d.ts +38 -0
- package/types/xr/input/XRControllerPoseMode.d.ts +9 -0
- package/types/xr/input/XRInput.d.ts +14 -0
- package/types/xr/input/XRInputButton.d.ts +19 -0
- package/types/xr/input/XRInputEvent.d.ts +24 -0
- package/types/xr/input/XRInputEventType.d.ts +11 -0
- package/types/xr/input/XRInputManager.d.ts +58 -0
- package/types/xr/input/XRInputType.d.ts +23 -0
- package/types/xr/input/XRTargetRayMode.d.ts +12 -0
- package/types/xr/input/XRTrackedUpdateFlag.d.ts +11 -0
- package/types/xr/input/XRTrackingState.d.ts +11 -0
- package/types/xr/session/XRSessionManager.d.ts +76 -0
- package/types/xr/session/XRSessionState.d.ts +13 -0
- package/types/xr/session/XRSessionType.d.ts +7 -0
package/dist/miniprogram.js
CHANGED
|
@@ -5840,8 +5840,12 @@ var ShaderFactory = /*#__PURE__*/ function() {
|
|
|
5840
5840
|
break;
|
|
5841
5841
|
case gl.BOOL_VEC3:
|
|
5842
5842
|
case gl.INT_VEC3:
|
|
5843
|
-
|
|
5844
|
-
|
|
5843
|
+
if (isArray) {
|
|
5844
|
+
shaderUniform.applyFunc = shaderUniform.upload3iv;
|
|
5845
|
+
} else {
|
|
5846
|
+
shaderUniform.applyFunc = shaderUniform.upload3i;
|
|
5847
|
+
shaderUniform.cacheValue = new miniprogram.Vector3(0, 0, 0);
|
|
5848
|
+
}
|
|
5845
5849
|
break;
|
|
5846
5850
|
case gl.BOOL_VEC4:
|
|
5847
5851
|
case gl.INT_VEC4:
|
|
@@ -7861,6 +7865,9 @@ SimpleSpriteAssembler = __decorate([
|
|
|
7861
7865
|
case SpriteModifyFlags.pivot:
|
|
7862
7866
|
this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
|
|
7863
7867
|
break;
|
|
7868
|
+
case SpriteModifyFlags.destroy:
|
|
7869
|
+
this.sprite = null;
|
|
7870
|
+
break;
|
|
7864
7871
|
}
|
|
7865
7872
|
};
|
|
7866
7873
|
_create_class(SpriteMask, [
|
|
@@ -9061,6 +9068,10 @@ var BlendShapeFrameDirty;
|
|
|
9061
9068
|
Logger.error("mesh is null.");
|
|
9062
9069
|
return;
|
|
9063
9070
|
}
|
|
9071
|
+
if (this._mesh.destroyed) {
|
|
9072
|
+
Logger.error("mesh is destroyed.");
|
|
9073
|
+
return;
|
|
9074
|
+
}
|
|
9064
9075
|
Renderer1.prototype._prepareRender.call(this, context);
|
|
9065
9076
|
};
|
|
9066
9077
|
/**
|
|
@@ -12727,6 +12738,7 @@ var AssetPromise = /*#__PURE__*/ function() {
|
|
|
12727
12738
|
function AssetPromise(executor) {
|
|
12728
12739
|
var _this = this;
|
|
12729
12740
|
this._state = "pending";
|
|
12741
|
+
this._progress = 0;
|
|
12730
12742
|
this._onProgressCallback = [];
|
|
12731
12743
|
this._promise = new Promise(function(resolve, reject) {
|
|
12732
12744
|
_this._reject = reject;
|
|
@@ -12751,6 +12763,7 @@ var AssetPromise = /*#__PURE__*/ function() {
|
|
|
12751
12763
|
};
|
|
12752
12764
|
var setProgress = function(progress) {
|
|
12753
12765
|
if (_this._state === "pending") {
|
|
12766
|
+
_this._progress = progress;
|
|
12754
12767
|
_this._onProgressCallback.forEach(function(callback) {
|
|
12755
12768
|
return callback(progress);
|
|
12756
12769
|
});
|
|
@@ -12765,7 +12778,12 @@ var AssetPromise = /*#__PURE__*/ function() {
|
|
|
12765
12778
|
* @param callback
|
|
12766
12779
|
* @returns AssetPromise
|
|
12767
12780
|
*/ _proto.onProgress = function onProgress(callback) {
|
|
12768
|
-
this.
|
|
12781
|
+
if (this._progress) {
|
|
12782
|
+
callback(this._progress);
|
|
12783
|
+
}
|
|
12784
|
+
if (this._state === "pending") {
|
|
12785
|
+
this._onProgressCallback.push(callback);
|
|
12786
|
+
}
|
|
12769
12787
|
return this;
|
|
12770
12788
|
};
|
|
12771
12789
|
_proto.then = function then(onfulfilled, onrejected) {
|
|
@@ -13076,7 +13094,8 @@ var /** @internal */ PromiseState;
|
|
|
13076
13094
|
// Check cache
|
|
13077
13095
|
var cacheObject = this._assetUrlPool[assetBaseURL];
|
|
13078
13096
|
if (cacheObject) {
|
|
13079
|
-
return new AssetPromise(function(resolve) {
|
|
13097
|
+
return new AssetPromise(function(resolve, _, setProgress) {
|
|
13098
|
+
setProgress(1);
|
|
13080
13099
|
resolve(_this._getResolveResource(cacheObject, paths));
|
|
13081
13100
|
});
|
|
13082
13101
|
}
|
|
@@ -13093,8 +13112,10 @@ var /** @internal */ PromiseState;
|
|
|
13093
13112
|
var loadingPromises = this._loadingPromises;
|
|
13094
13113
|
var loadingPromise = loadingPromises[assetURL];
|
|
13095
13114
|
if (loadingPromise) {
|
|
13096
|
-
return new AssetPromise(function(resolve, reject) {
|
|
13097
|
-
loadingPromise.
|
|
13115
|
+
return new AssetPromise(function(resolve, reject, setProgress) {
|
|
13116
|
+
loadingPromise.onProgress(function(v) {
|
|
13117
|
+
setProgress(v);
|
|
13118
|
+
}).then(function(resource) {
|
|
13098
13119
|
resolve(resource);
|
|
13099
13120
|
}).catch(function(error) {
|
|
13100
13121
|
reject(error);
|
|
@@ -19277,12 +19298,20 @@ ShaderPool.init();
|
|
|
19277
19298
|
Logger.warn("The material of sky is not defined.");
|
|
19278
19299
|
return;
|
|
19279
19300
|
}
|
|
19301
|
+
if (material.destroyed) {
|
|
19302
|
+
Logger.warn("The material of sky is destroyed.");
|
|
19303
|
+
return;
|
|
19304
|
+
}
|
|
19280
19305
|
if (!mesh) {
|
|
19281
19306
|
Logger.warn("The mesh of sky is not defined.");
|
|
19282
19307
|
return;
|
|
19283
19308
|
}
|
|
19284
|
-
|
|
19285
|
-
|
|
19309
|
+
if (mesh.destroyed) {
|
|
19310
|
+
Logger.warn("The mesh of sky is destroyed.");
|
|
19311
|
+
return;
|
|
19312
|
+
}
|
|
19313
|
+
var _context_camera = context.camera, engine = _context_camera.engine, scene = _context_camera.scene, aspectRatio = _context_camera.aspectRatio, fieldOfView = _context_camera.fieldOfView, viewMatrix = _context_camera.viewMatrix, cameraShaderData = _context_camera.shaderData;
|
|
19314
|
+
var sceneData = scene.shaderData;
|
|
19286
19315
|
var viewProjMatrix = Sky._viewProjMatrix, projectionMatrix = Sky._projectionMatrix;
|
|
19287
19316
|
var rhi = engine._hardwareRenderer;
|
|
19288
19317
|
var materialShaderData = material.shaderData, shader = material.shader, renderState = material.renderState;
|
|
@@ -24496,7 +24525,7 @@ var BaseMaterial = /*#__PURE__*/ function(Material1) {
|
|
|
24496
24525
|
/**
|
|
24497
24526
|
* @internal
|
|
24498
24527
|
*/ var AnimationCurveOwner = /*#__PURE__*/ function() {
|
|
24499
|
-
function AnimationCurveOwner(target, type, property, cureType) {
|
|
24528
|
+
function AnimationCurveOwner(target, type, component, property, cureType) {
|
|
24500
24529
|
this.baseEvaluateData = {
|
|
24501
24530
|
curKeyframeIndex: 0,
|
|
24502
24531
|
value: null
|
|
@@ -24507,9 +24536,8 @@ var BaseMaterial = /*#__PURE__*/ function(Material1) {
|
|
|
24507
24536
|
};
|
|
24508
24537
|
this.updateMark = 0;
|
|
24509
24538
|
this.target = target;
|
|
24510
|
-
this.type = type;
|
|
24511
24539
|
this.property = property;
|
|
24512
|
-
this.component =
|
|
24540
|
+
this.component = component;
|
|
24513
24541
|
this.cureType = cureType;
|
|
24514
24542
|
this._isBlendShape = _instanceof(this.component, SkinnedMeshRenderer);
|
|
24515
24543
|
var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
|
|
@@ -24741,9 +24769,9 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
|
|
|
24741
24769
|
var _proto = AnimationClipCurveBinding.prototype;
|
|
24742
24770
|
/**
|
|
24743
24771
|
* @internal
|
|
24744
|
-
*/ _proto._createCurveOwner = function _createCurveOwner(entity) {
|
|
24772
|
+
*/ _proto._createCurveOwner = function _createCurveOwner(entity, component) {
|
|
24745
24773
|
var curveType = this.curve.constructor;
|
|
24746
|
-
var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
|
|
24774
|
+
var owner = new AnimationCurveOwner(entity, this.type, component, this.property, curveType);
|
|
24747
24775
|
curveType._initializeOwner(owner);
|
|
24748
24776
|
owner.saveDefaultValue();
|
|
24749
24777
|
return owner;
|
|
@@ -24761,10 +24789,10 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
|
|
|
24761
24789
|
};
|
|
24762
24790
|
/**
|
|
24763
24791
|
* @internal
|
|
24764
|
-
*/ _proto._getTempCurveOwner = function _getTempCurveOwner(entity) {
|
|
24792
|
+
*/ _proto._getTempCurveOwner = function _getTempCurveOwner(entity, component) {
|
|
24765
24793
|
var instanceId = entity.instanceId;
|
|
24766
24794
|
if (!this._tempCurveOwner[instanceId]) {
|
|
24767
|
-
this._tempCurveOwner[instanceId] = this._createCurveOwner(entity);
|
|
24795
|
+
this._tempCurveOwner[instanceId] = this._createCurveOwner(entity, component);
|
|
24768
24796
|
}
|
|
24769
24797
|
return this._tempCurveOwner[instanceId];
|
|
24770
24798
|
};
|
|
@@ -24852,9 +24880,15 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
|
|
|
24852
24880
|
var curveData = curveBindings[i];
|
|
24853
24881
|
var targetEntity = entity.findByPath(curveData.relativePath);
|
|
24854
24882
|
if (targetEntity) {
|
|
24855
|
-
var
|
|
24856
|
-
|
|
24857
|
-
|
|
24883
|
+
var component = targetEntity.getComponent(curveData.type);
|
|
24884
|
+
if (!component) {
|
|
24885
|
+
continue;
|
|
24886
|
+
}
|
|
24887
|
+
var curveOwner = curveData._getTempCurveOwner(targetEntity, component);
|
|
24888
|
+
if (curveOwner && curveData.curve.keys.length) {
|
|
24889
|
+
var value = curveOwner.evaluateValue(curveData.curve, time, false);
|
|
24890
|
+
curveOwner.applyValue(value, 1, false);
|
|
24891
|
+
}
|
|
24858
24892
|
}
|
|
24859
24893
|
}
|
|
24860
24894
|
};
|
|
@@ -26271,11 +26305,15 @@ exports.AnimatorLayerBlendingMode = void 0;
|
|
|
26271
26305
|
var targetEntity = curve.relativePath === "" ? entity : entity.findByPath(curve.relativePath);
|
|
26272
26306
|
if (targetEntity) {
|
|
26273
26307
|
var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
|
|
26308
|
+
var component = targetEntity.getComponent(curve.type);
|
|
26309
|
+
if (!component) {
|
|
26310
|
+
continue;
|
|
26311
|
+
}
|
|
26274
26312
|
var property = curve.property;
|
|
26275
26313
|
var instanceId = targetEntity.instanceId;
|
|
26276
26314
|
// Get owner
|
|
26277
26315
|
var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
|
|
26278
|
-
var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
|
|
26316
|
+
var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity, component));
|
|
26279
26317
|
// Get layer owner
|
|
26280
26318
|
var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
|
|
26281
26319
|
var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
|
|
@@ -27453,16 +27491,7 @@ exports.ParticleStopMode = void 0;
|
|
|
27453
27491
|
};
|
|
27454
27492
|
_proto._render = function _render(context) {
|
|
27455
27493
|
var generator = this.generator;
|
|
27456
|
-
|
|
27457
|
-
if (generator._firstActiveElement < generator._firstFreeElement) {
|
|
27458
|
-
primitive.instanceCount = generator._firstFreeElement - generator._firstActiveElement;
|
|
27459
|
-
} else {
|
|
27460
|
-
var instanceCount = generator._currentParticleCount - generator._firstActiveElement;
|
|
27461
|
-
if (generator._firstFreeElement > 0) {
|
|
27462
|
-
instanceCount += generator._firstFreeElement;
|
|
27463
|
-
}
|
|
27464
|
-
primitive.instanceCount = instanceCount;
|
|
27465
|
-
}
|
|
27494
|
+
generator._primitive.instanceCount = generator._getAliveParticleCount();
|
|
27466
27495
|
var material = this.getMaterial();
|
|
27467
27496
|
if (!material) {
|
|
27468
27497
|
return;
|
|
@@ -28247,13 +28276,13 @@ var MainModule = /*#__PURE__*/ function() {
|
|
|
28247
28276
|
/** Override the default playback speed of the Particle Generator. */ this.simulationSpeed = 1.0;
|
|
28248
28277
|
/** Control how the Particle Generator applies its Transform component to the particles it emits. */ this.scalingMode = exports.ParticleScaleMode.Local;
|
|
28249
28278
|
/** If set to true, the Particle Generator automatically begins to play on startup. */ this.playOnEnabled = true;
|
|
28250
|
-
this.
|
|
28251
|
-
this._gravity = new miniprogram.Vector3();
|
|
28279
|
+
/** @internal */ this._maxParticleBuffer = 1000;
|
|
28252
28280
|
/** @internal */ this._startSpeedRand = new miniprogram.Rand(0, ParticleRandomSubSeeds.StartSpeed);
|
|
28253
28281
|
/** @internal */ this._startLifeTimeRand = new miniprogram.Rand(0, ParticleRandomSubSeeds.StartLifetime);
|
|
28254
28282
|
/** @internal */ this._startColorRand = new miniprogram.Rand(0, ParticleRandomSubSeeds.StartColor);
|
|
28255
28283
|
/** @internal */ this._startSizeRand = new miniprogram.Rand(0, ParticleRandomSubSeeds.StartSize);
|
|
28256
28284
|
/** @internal */ this._startRotationRand = new miniprogram.Rand(0, ParticleRandomSubSeeds.StartRotation);
|
|
28285
|
+
this._gravity = new miniprogram.Vector3();
|
|
28257
28286
|
this._generator = generator;
|
|
28258
28287
|
}
|
|
28259
28288
|
var _proto = MainModule.prototype;
|
|
@@ -28331,16 +28360,10 @@ var MainModule = /*#__PURE__*/ function() {
|
|
|
28331
28360
|
get: /**
|
|
28332
28361
|
* Max particles count.
|
|
28333
28362
|
*/ function get() {
|
|
28334
|
-
return this.
|
|
28363
|
+
return this._maxParticleBuffer - 1;
|
|
28335
28364
|
},
|
|
28336
28365
|
set: function set(value) {
|
|
28337
|
-
|
|
28338
|
-
this._maxParticles = value;
|
|
28339
|
-
var generator = this._generator;
|
|
28340
|
-
if (value < generator._currentParticleCount) {
|
|
28341
|
-
generator._resizeInstanceBuffer(value);
|
|
28342
|
-
}
|
|
28343
|
-
}
|
|
28366
|
+
this._maxParticleBuffer = value + 1;
|
|
28344
28367
|
}
|
|
28345
28368
|
},
|
|
28346
28369
|
{
|
|
@@ -28422,13 +28445,7 @@ __decorate([
|
|
|
28422
28445
|
], MainModule.prototype, "gravityModifier", void 0);
|
|
28423
28446
|
__decorate([
|
|
28424
28447
|
ignoreClone
|
|
28425
|
-
], MainModule.prototype, "
|
|
28426
|
-
__decorate([
|
|
28427
|
-
ignoreClone
|
|
28428
|
-
], MainModule.prototype, "_generator", void 0);
|
|
28429
|
-
__decorate([
|
|
28430
|
-
ignoreClone
|
|
28431
|
-
], MainModule.prototype, "_gravity", void 0);
|
|
28448
|
+
], MainModule.prototype, "_maxParticleBuffer", void 0);
|
|
28432
28449
|
__decorate([
|
|
28433
28450
|
ignoreClone
|
|
28434
28451
|
], MainModule.prototype, "_startSpeedRand", void 0);
|
|
@@ -28444,6 +28461,12 @@ __decorate([
|
|
|
28444
28461
|
__decorate([
|
|
28445
28462
|
ignoreClone
|
|
28446
28463
|
], MainModule.prototype, "_startRotationRand", void 0);
|
|
28464
|
+
__decorate([
|
|
28465
|
+
ignoreClone
|
|
28466
|
+
], MainModule.prototype, "_generator", void 0);
|
|
28467
|
+
__decorate([
|
|
28468
|
+
ignoreClone
|
|
28469
|
+
], MainModule.prototype, "_gravity", void 0);
|
|
28447
28470
|
|
|
28448
28471
|
/**
|
|
28449
28472
|
* Rotate particles throughout their lifetime.
|
|
@@ -29041,7 +29064,7 @@ __decorate([
|
|
|
29041
29064
|
subPrimitive.start = 0;
|
|
29042
29065
|
this._primitive = new Primitive(renderer.engine);
|
|
29043
29066
|
this._reorganizeGeometryBuffers();
|
|
29044
|
-
this._resizeInstanceBuffer(ParticleGenerator._particleIncreaseCount);
|
|
29067
|
+
this._resizeInstanceBuffer(true, ParticleGenerator._particleIncreaseCount);
|
|
29045
29068
|
this.emission.enabled = true;
|
|
29046
29069
|
}
|
|
29047
29070
|
var _proto = ParticleGenerator.prototype;
|
|
@@ -29098,9 +29121,13 @@ __decorate([
|
|
|
29098
29121
|
/**
|
|
29099
29122
|
* @internal
|
|
29100
29123
|
*/ _proto._emit = function _emit(time, count) {
|
|
29101
|
-
var position = ParticleGenerator._tempVector30;
|
|
29102
|
-
var direction = ParticleGenerator._tempVector31;
|
|
29103
29124
|
if (this.emission.enabled) {
|
|
29125
|
+
// Wait the existing particles to be retired
|
|
29126
|
+
if (this.main._maxParticleBuffer < this._currentParticleCount) {
|
|
29127
|
+
return;
|
|
29128
|
+
}
|
|
29129
|
+
var position = ParticleGenerator._tempVector30;
|
|
29130
|
+
var direction = ParticleGenerator._tempVector31;
|
|
29104
29131
|
var transform = this._renderer.entity.transform;
|
|
29105
29132
|
var shape = this.emission.shape;
|
|
29106
29133
|
for(var i = 0; i < count; i++){
|
|
@@ -29127,6 +29154,13 @@ __decorate([
|
|
|
29127
29154
|
this._retireActiveParticles();
|
|
29128
29155
|
this._freeRetiredParticles();
|
|
29129
29156
|
if (emission.enabled && this._isPlaying) {
|
|
29157
|
+
// If maxParticles is changed dynamically, currentParticleCount may be greater than maxParticles
|
|
29158
|
+
if (this._currentParticleCount > main._maxParticleBuffer) {
|
|
29159
|
+
var notRetireParticleCount = this._getNotRetiredParticleCount();
|
|
29160
|
+
if (notRetireParticleCount < main._maxParticleBuffer) {
|
|
29161
|
+
this._resizeInstanceBuffer(false);
|
|
29162
|
+
}
|
|
29163
|
+
}
|
|
29130
29164
|
emission._emit(lastPlayTime, this._playTime);
|
|
29131
29165
|
if (!main.isLoop && this._playTime > duration) {
|
|
29132
29166
|
this._isPlaying = false;
|
|
@@ -29198,12 +29232,12 @@ __decorate([
|
|
|
29198
29232
|
};
|
|
29199
29233
|
/**
|
|
29200
29234
|
* @internal
|
|
29201
|
-
*/ _proto._resizeInstanceBuffer = function _resizeInstanceBuffer(increaseCount) {
|
|
29235
|
+
*/ _proto._resizeInstanceBuffer = function _resizeInstanceBuffer(isIncrease, increaseCount) {
|
|
29202
29236
|
var _this__instanceVertexBufferBinding;
|
|
29203
29237
|
(_this__instanceVertexBufferBinding = this._instanceVertexBufferBinding) == null ? void 0 : _this__instanceVertexBufferBinding.buffer.destroy();
|
|
29204
29238
|
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29205
29239
|
var stride = particleUtils.instanceVertexStride;
|
|
29206
|
-
var newParticleCount = this._currentParticleCount + increaseCount;
|
|
29240
|
+
var newParticleCount = isIncrease ? this._currentParticleCount + increaseCount : this.main._maxParticleBuffer;
|
|
29207
29241
|
var newByteLength = stride * newParticleCount;
|
|
29208
29242
|
var engine = this._renderer.engine;
|
|
29209
29243
|
var vertexInstanceBuffer = new Buffer(engine, exports.BufferBindFlag.VertexBuffer, newByteLength, exports.BufferUsage.Dynamic, false);
|
|
@@ -29214,10 +29248,37 @@ __decorate([
|
|
|
29214
29248
|
var lastInstanceVertices = this._instanceVertices;
|
|
29215
29249
|
if (lastInstanceVertices) {
|
|
29216
29250
|
var floatStride = particleUtils.instanceVertexFloatStride;
|
|
29217
|
-
var
|
|
29218
|
-
|
|
29219
|
-
|
|
29220
|
-
|
|
29251
|
+
var firstFreeElement = this._firstFreeElement;
|
|
29252
|
+
var firstRetiredElement = this._firstRetiredElement;
|
|
29253
|
+
if (isIncrease) {
|
|
29254
|
+
var freeOffset = this._firstFreeElement * floatStride;
|
|
29255
|
+
instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, 0, freeOffset));
|
|
29256
|
+
var freeEndOffset = (this._firstFreeElement + increaseCount) * floatStride;
|
|
29257
|
+
instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, freeOffset * 4), freeEndOffset);
|
|
29258
|
+
// Maintain expanded pointers
|
|
29259
|
+
this._firstNewElement > firstFreeElement && (this._firstNewElement += increaseCount);
|
|
29260
|
+
this._firstActiveElement > firstFreeElement && (this._firstActiveElement += increaseCount);
|
|
29261
|
+
firstRetiredElement > firstFreeElement && (this._firstRetiredElement += increaseCount);
|
|
29262
|
+
} else {
|
|
29263
|
+
var migrateCount, bufferOffset;
|
|
29264
|
+
if (firstRetiredElement <= firstFreeElement) {
|
|
29265
|
+
migrateCount = firstFreeElement - firstRetiredElement;
|
|
29266
|
+
bufferOffset = 0;
|
|
29267
|
+
// Maintain expanded pointers
|
|
29268
|
+
this._firstFreeElement -= firstRetiredElement;
|
|
29269
|
+
this._firstNewElement -= firstRetiredElement;
|
|
29270
|
+
this._firstActiveElement -= firstRetiredElement;
|
|
29271
|
+
this._firstRetiredElement = 0;
|
|
29272
|
+
} else {
|
|
29273
|
+
migrateCount = this._currentParticleCount - firstRetiredElement;
|
|
29274
|
+
bufferOffset = firstFreeElement;
|
|
29275
|
+
// Maintain expanded pointers
|
|
29276
|
+
this._firstNewElement > firstFreeElement && (this._firstNewElement -= firstFreeElement);
|
|
29277
|
+
this._firstActiveElement > firstFreeElement && (this._firstActiveElement -= firstFreeElement);
|
|
29278
|
+
firstRetiredElement > firstFreeElement && (this._firstRetiredElement -= firstFreeElement);
|
|
29279
|
+
}
|
|
29280
|
+
instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, firstRetiredElement * floatStride * 4, migrateCount * floatStride), bufferOffset * floatStride);
|
|
29281
|
+
}
|
|
29221
29282
|
this._instanceBufferResized = true;
|
|
29222
29283
|
}
|
|
29223
29284
|
// Instance buffer always at last
|
|
@@ -29226,8 +29287,60 @@ __decorate([
|
|
|
29226
29287
|
this._instanceVertexBufferBinding = vertexBufferBinding;
|
|
29227
29288
|
this._currentParticleCount = newParticleCount;
|
|
29228
29289
|
};
|
|
29290
|
+
/**
|
|
29291
|
+
* @internal
|
|
29292
|
+
*/ _proto._updateShaderData = function _updateShaderData(shaderData) {
|
|
29293
|
+
this.main._updateShaderData(shaderData);
|
|
29294
|
+
this.velocityOverLifetime._updateShaderData(shaderData);
|
|
29295
|
+
this.textureSheetAnimation._updateShaderData(shaderData);
|
|
29296
|
+
this.sizeOverLifetime._updateShaderData(shaderData);
|
|
29297
|
+
this.rotationOverLifetime._updateShaderData(shaderData);
|
|
29298
|
+
this.colorOverLifetime._updateShaderData(shaderData);
|
|
29299
|
+
};
|
|
29300
|
+
/**
|
|
29301
|
+
* @internal
|
|
29302
|
+
*/ _proto._resetGlobalRandSeed = function _resetGlobalRandSeed(seed) {
|
|
29303
|
+
this._randomSeed = seed;
|
|
29304
|
+
this.main._resetRandomSeed(seed);
|
|
29305
|
+
this.emission._resetRandomSeed(seed);
|
|
29306
|
+
this.textureSheetAnimation._resetRandomSeed(seed);
|
|
29307
|
+
this.velocityOverLifetime._resetRandomSeed(seed);
|
|
29308
|
+
this.rotationOverLifetime._resetRandomSeed(seed);
|
|
29309
|
+
this.colorOverLifetime._resetRandomSeed(seed);
|
|
29310
|
+
};
|
|
29311
|
+
/**
|
|
29312
|
+
* @internal
|
|
29313
|
+
*/ _proto._getAliveParticleCount = function _getAliveParticleCount() {
|
|
29314
|
+
if (this._firstActiveElement <= this._firstFreeElement) {
|
|
29315
|
+
return this._firstFreeElement - this._firstActiveElement;
|
|
29316
|
+
} else {
|
|
29317
|
+
var instanceCount = this._currentParticleCount - this._firstActiveElement;
|
|
29318
|
+
if (this._firstFreeElement > 0) {
|
|
29319
|
+
instanceCount += this._firstFreeElement;
|
|
29320
|
+
}
|
|
29321
|
+
return instanceCount;
|
|
29322
|
+
}
|
|
29323
|
+
};
|
|
29324
|
+
/**
|
|
29325
|
+
* @internal
|
|
29326
|
+
*/ _proto._getNotRetiredParticleCount = function _getNotRetiredParticleCount() {
|
|
29327
|
+
if (this._firstRetiredElement <= this._firstFreeElement) {
|
|
29328
|
+
return this._firstFreeElement - this._firstRetiredElement;
|
|
29329
|
+
} else {
|
|
29330
|
+
var instanceCount = this._currentParticleCount - this._firstRetiredElement;
|
|
29331
|
+
if (this._firstFreeElement > 0) {
|
|
29332
|
+
instanceCount += this._firstFreeElement;
|
|
29333
|
+
}
|
|
29334
|
+
return instanceCount;
|
|
29335
|
+
}
|
|
29336
|
+
};
|
|
29337
|
+
/**
|
|
29338
|
+
* @internal
|
|
29339
|
+
*/ _proto._destroy = function _destroy() {
|
|
29340
|
+
this._instanceVertexBufferBinding.buffer.destroy();
|
|
29341
|
+
this._primitive.destroy();
|
|
29342
|
+
};
|
|
29229
29343
|
_proto._addNewParticle = function _addNewParticle(position, direction, transform, time) {
|
|
29230
|
-
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29231
29344
|
var firstFreeElement = this._firstFreeElement;
|
|
29232
29345
|
var nextFreeElement = firstFreeElement + 1;
|
|
29233
29346
|
if (nextFreeElement >= this._currentParticleCount) {
|
|
@@ -29236,23 +29349,20 @@ __decorate([
|
|
|
29236
29349
|
var main = this.main;
|
|
29237
29350
|
// Check if can be expanded
|
|
29238
29351
|
if (nextFreeElement === this._firstRetiredElement) {
|
|
29239
|
-
var increaseCount = Math.min(ParticleGenerator._particleIncreaseCount, main.
|
|
29352
|
+
var increaseCount = Math.min(ParticleGenerator._particleIncreaseCount, main._maxParticleBuffer - this._currentParticleCount);
|
|
29240
29353
|
if (increaseCount === 0) {
|
|
29241
29354
|
return;
|
|
29242
29355
|
}
|
|
29243
|
-
this._resizeInstanceBuffer(increaseCount);
|
|
29356
|
+
this._resizeInstanceBuffer(true, increaseCount);
|
|
29244
29357
|
// Recalculate nextFreeElement after resize
|
|
29245
29358
|
nextFreeElement = firstFreeElement + 1;
|
|
29246
|
-
// Maintain expanded pointers
|
|
29247
|
-
this._firstNewElement > firstFreeElement && (this._firstNewElement += increaseCount);
|
|
29248
|
-
this._firstActiveElement > firstFreeElement && (this._firstActiveElement += increaseCount);
|
|
29249
|
-
this._firstRetiredElement > firstFreeElement && (this._firstRetiredElement += increaseCount);
|
|
29250
29359
|
}
|
|
29251
29360
|
var pos, rot;
|
|
29252
29361
|
if (main.simulationSpace === exports.ParticleSimulationSpace.World) {
|
|
29253
29362
|
pos = transform.worldPosition;
|
|
29254
29363
|
rot = transform.worldRotationQuaternion;
|
|
29255
29364
|
}
|
|
29365
|
+
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29256
29366
|
var startSpeed = main.startSpeed.evaluate(undefined, main._startSpeedRand.random());
|
|
29257
29367
|
var instanceVertices = this._instanceVertices;
|
|
29258
29368
|
var offset = firstFreeElement * particleUtils.instanceVertexFloatStride;
|
|
@@ -29356,7 +29466,7 @@ __decorate([
|
|
|
29356
29466
|
var particleUtils = engine._particleBufferUtils;
|
|
29357
29467
|
var frameCount = engine.time.frameCount;
|
|
29358
29468
|
var instanceVertices = this._instanceVertices;
|
|
29359
|
-
while(this._firstActiveElement
|
|
29469
|
+
while(this._firstActiveElement !== this._firstNewElement){
|
|
29360
29470
|
var activeParticleOffset = this._firstActiveElement * particleUtils.instanceVertexFloatStride;
|
|
29361
29471
|
var activeParticleTimeOffset = activeParticleOffset + particleUtils.timeOffset;
|
|
29362
29472
|
var particleAge = this._playTime - instanceVertices[activeParticleTimeOffset];
|
|
@@ -29373,37 +29483,10 @@ __decorate([
|
|
|
29373
29483
|
this._waitProcessRetiredElementCount++;
|
|
29374
29484
|
}
|
|
29375
29485
|
};
|
|
29376
|
-
/**
|
|
29377
|
-
* @internal
|
|
29378
|
-
*/ _proto._updateShaderData = function _updateShaderData(shaderData) {
|
|
29379
|
-
this.main._updateShaderData(shaderData);
|
|
29380
|
-
this.velocityOverLifetime._updateShaderData(shaderData);
|
|
29381
|
-
this.textureSheetAnimation._updateShaderData(shaderData);
|
|
29382
|
-
this.sizeOverLifetime._updateShaderData(shaderData);
|
|
29383
|
-
this.rotationOverLifetime._updateShaderData(shaderData);
|
|
29384
|
-
this.colorOverLifetime._updateShaderData(shaderData);
|
|
29385
|
-
};
|
|
29386
|
-
/**
|
|
29387
|
-
* @internal
|
|
29388
|
-
*/ _proto._resetGlobalRandSeed = function _resetGlobalRandSeed(seed) {
|
|
29389
|
-
this._randomSeed = seed;
|
|
29390
|
-
this.main._resetRandomSeed(seed);
|
|
29391
|
-
this.emission._resetRandomSeed(seed);
|
|
29392
|
-
this.textureSheetAnimation._resetRandomSeed(seed);
|
|
29393
|
-
this.velocityOverLifetime._resetRandomSeed(seed);
|
|
29394
|
-
this.rotationOverLifetime._resetRandomSeed(seed);
|
|
29395
|
-
this.colorOverLifetime._resetRandomSeed(seed);
|
|
29396
|
-
};
|
|
29397
|
-
/**
|
|
29398
|
-
* @internal
|
|
29399
|
-
*/ _proto._destroy = function _destroy() {
|
|
29400
|
-
this._instanceVertexBufferBinding.buffer.destroy();
|
|
29401
|
-
this._primitive.destroy();
|
|
29402
|
-
};
|
|
29403
29486
|
_proto._freeRetiredParticles = function _freeRetiredParticles() {
|
|
29404
29487
|
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29405
29488
|
var frameCount = this._renderer.engine.time.frameCount;
|
|
29406
|
-
while(this._firstRetiredElement
|
|
29489
|
+
while(this._firstRetiredElement !== this._firstActiveElement){
|
|
29407
29490
|
var offset = this._firstRetiredElement * particleUtils.instanceVertexFloatStride + particleUtils.startLifeTimeOffset;
|
|
29408
29491
|
var age = frameCount - this._instanceVertices[offset];
|
|
29409
29492
|
// WebGL don't support map buffer range, so off this optimization
|