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