@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/module.js
CHANGED
|
@@ -5835,8 +5835,12 @@ var ShaderFactory = /*#__PURE__*/ function() {
|
|
|
5835
5835
|
break;
|
|
5836
5836
|
case gl.BOOL_VEC3:
|
|
5837
5837
|
case gl.INT_VEC3:
|
|
5838
|
-
|
|
5839
|
-
|
|
5838
|
+
if (isArray) {
|
|
5839
|
+
shaderUniform.applyFunc = shaderUniform.upload3iv;
|
|
5840
|
+
} else {
|
|
5841
|
+
shaderUniform.applyFunc = shaderUniform.upload3i;
|
|
5842
|
+
shaderUniform.cacheValue = new Vector3(0, 0, 0);
|
|
5843
|
+
}
|
|
5840
5844
|
break;
|
|
5841
5845
|
case gl.BOOL_VEC4:
|
|
5842
5846
|
case gl.INT_VEC4:
|
|
@@ -7856,6 +7860,9 @@ SimpleSpriteAssembler = __decorate([
|
|
|
7856
7860
|
case SpriteModifyFlags.pivot:
|
|
7857
7861
|
this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
|
|
7858
7862
|
break;
|
|
7863
|
+
case SpriteModifyFlags.destroy:
|
|
7864
|
+
this.sprite = null;
|
|
7865
|
+
break;
|
|
7859
7866
|
}
|
|
7860
7867
|
};
|
|
7861
7868
|
_create_class(SpriteMask, [
|
|
@@ -9056,6 +9063,10 @@ var BlendShapeFrameDirty;
|
|
|
9056
9063
|
Logger.error("mesh is null.");
|
|
9057
9064
|
return;
|
|
9058
9065
|
}
|
|
9066
|
+
if (this._mesh.destroyed) {
|
|
9067
|
+
Logger.error("mesh is destroyed.");
|
|
9068
|
+
return;
|
|
9069
|
+
}
|
|
9059
9070
|
Renderer1.prototype._prepareRender.call(this, context);
|
|
9060
9071
|
};
|
|
9061
9072
|
/**
|
|
@@ -12722,6 +12733,7 @@ var AssetPromise = /*#__PURE__*/ function() {
|
|
|
12722
12733
|
function AssetPromise(executor) {
|
|
12723
12734
|
var _this = this;
|
|
12724
12735
|
this._state = "pending";
|
|
12736
|
+
this._progress = 0;
|
|
12725
12737
|
this._onProgressCallback = [];
|
|
12726
12738
|
this._promise = new Promise(function(resolve, reject) {
|
|
12727
12739
|
_this._reject = reject;
|
|
@@ -12746,6 +12758,7 @@ var AssetPromise = /*#__PURE__*/ function() {
|
|
|
12746
12758
|
};
|
|
12747
12759
|
var setProgress = function(progress) {
|
|
12748
12760
|
if (_this._state === "pending") {
|
|
12761
|
+
_this._progress = progress;
|
|
12749
12762
|
_this._onProgressCallback.forEach(function(callback) {
|
|
12750
12763
|
return callback(progress);
|
|
12751
12764
|
});
|
|
@@ -12760,7 +12773,12 @@ var AssetPromise = /*#__PURE__*/ function() {
|
|
|
12760
12773
|
* @param callback
|
|
12761
12774
|
* @returns AssetPromise
|
|
12762
12775
|
*/ _proto.onProgress = function onProgress(callback) {
|
|
12763
|
-
this.
|
|
12776
|
+
if (this._progress) {
|
|
12777
|
+
callback(this._progress);
|
|
12778
|
+
}
|
|
12779
|
+
if (this._state === "pending") {
|
|
12780
|
+
this._onProgressCallback.push(callback);
|
|
12781
|
+
}
|
|
12764
12782
|
return this;
|
|
12765
12783
|
};
|
|
12766
12784
|
_proto.then = function then(onfulfilled, onrejected) {
|
|
@@ -13071,7 +13089,8 @@ var /** @internal */ PromiseState;
|
|
|
13071
13089
|
// Check cache
|
|
13072
13090
|
var cacheObject = this._assetUrlPool[assetBaseURL];
|
|
13073
13091
|
if (cacheObject) {
|
|
13074
|
-
return new AssetPromise(function(resolve) {
|
|
13092
|
+
return new AssetPromise(function(resolve, _, setProgress) {
|
|
13093
|
+
setProgress(1);
|
|
13075
13094
|
resolve(_this._getResolveResource(cacheObject, paths));
|
|
13076
13095
|
});
|
|
13077
13096
|
}
|
|
@@ -13088,8 +13107,10 @@ var /** @internal */ PromiseState;
|
|
|
13088
13107
|
var loadingPromises = this._loadingPromises;
|
|
13089
13108
|
var loadingPromise = loadingPromises[assetURL];
|
|
13090
13109
|
if (loadingPromise) {
|
|
13091
|
-
return new AssetPromise(function(resolve, reject) {
|
|
13092
|
-
loadingPromise.
|
|
13110
|
+
return new AssetPromise(function(resolve, reject, setProgress) {
|
|
13111
|
+
loadingPromise.onProgress(function(v) {
|
|
13112
|
+
setProgress(v);
|
|
13113
|
+
}).then(function(resource) {
|
|
13093
13114
|
resolve(resource);
|
|
13094
13115
|
}).catch(function(error) {
|
|
13095
13116
|
reject(error);
|
|
@@ -19272,12 +19293,20 @@ ShaderPool.init();
|
|
|
19272
19293
|
Logger.warn("The material of sky is not defined.");
|
|
19273
19294
|
return;
|
|
19274
19295
|
}
|
|
19296
|
+
if (material.destroyed) {
|
|
19297
|
+
Logger.warn("The material of sky is destroyed.");
|
|
19298
|
+
return;
|
|
19299
|
+
}
|
|
19275
19300
|
if (!mesh) {
|
|
19276
19301
|
Logger.warn("The mesh of sky is not defined.");
|
|
19277
19302
|
return;
|
|
19278
19303
|
}
|
|
19279
|
-
|
|
19280
|
-
|
|
19304
|
+
if (mesh.destroyed) {
|
|
19305
|
+
Logger.warn("The mesh of sky is destroyed.");
|
|
19306
|
+
return;
|
|
19307
|
+
}
|
|
19308
|
+
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;
|
|
19309
|
+
var sceneData = scene.shaderData;
|
|
19281
19310
|
var viewProjMatrix = Sky._viewProjMatrix, projectionMatrix = Sky._projectionMatrix;
|
|
19282
19311
|
var rhi = engine._hardwareRenderer;
|
|
19283
19312
|
var materialShaderData = material.shaderData, shader = material.shader, renderState = material.renderState;
|
|
@@ -24491,7 +24520,7 @@ var BaseMaterial = /*#__PURE__*/ function(Material1) {
|
|
|
24491
24520
|
/**
|
|
24492
24521
|
* @internal
|
|
24493
24522
|
*/ var AnimationCurveOwner = /*#__PURE__*/ function() {
|
|
24494
|
-
function AnimationCurveOwner(target, type, property, cureType) {
|
|
24523
|
+
function AnimationCurveOwner(target, type, component, property, cureType) {
|
|
24495
24524
|
this.baseEvaluateData = {
|
|
24496
24525
|
curKeyframeIndex: 0,
|
|
24497
24526
|
value: null
|
|
@@ -24502,9 +24531,8 @@ var BaseMaterial = /*#__PURE__*/ function(Material1) {
|
|
|
24502
24531
|
};
|
|
24503
24532
|
this.updateMark = 0;
|
|
24504
24533
|
this.target = target;
|
|
24505
|
-
this.type = type;
|
|
24506
24534
|
this.property = property;
|
|
24507
|
-
this.component =
|
|
24535
|
+
this.component = component;
|
|
24508
24536
|
this.cureType = cureType;
|
|
24509
24537
|
this._isBlendShape = _instanceof(this.component, SkinnedMeshRenderer);
|
|
24510
24538
|
var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
|
|
@@ -24736,9 +24764,9 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
|
|
|
24736
24764
|
var _proto = AnimationClipCurveBinding.prototype;
|
|
24737
24765
|
/**
|
|
24738
24766
|
* @internal
|
|
24739
|
-
*/ _proto._createCurveOwner = function _createCurveOwner(entity) {
|
|
24767
|
+
*/ _proto._createCurveOwner = function _createCurveOwner(entity, component) {
|
|
24740
24768
|
var curveType = this.curve.constructor;
|
|
24741
|
-
var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
|
|
24769
|
+
var owner = new AnimationCurveOwner(entity, this.type, component, this.property, curveType);
|
|
24742
24770
|
curveType._initializeOwner(owner);
|
|
24743
24771
|
owner.saveDefaultValue();
|
|
24744
24772
|
return owner;
|
|
@@ -24756,10 +24784,10 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
|
|
|
24756
24784
|
};
|
|
24757
24785
|
/**
|
|
24758
24786
|
* @internal
|
|
24759
|
-
*/ _proto._getTempCurveOwner = function _getTempCurveOwner(entity) {
|
|
24787
|
+
*/ _proto._getTempCurveOwner = function _getTempCurveOwner(entity, component) {
|
|
24760
24788
|
var instanceId = entity.instanceId;
|
|
24761
24789
|
if (!this._tempCurveOwner[instanceId]) {
|
|
24762
|
-
this._tempCurveOwner[instanceId] = this._createCurveOwner(entity);
|
|
24790
|
+
this._tempCurveOwner[instanceId] = this._createCurveOwner(entity, component);
|
|
24763
24791
|
}
|
|
24764
24792
|
return this._tempCurveOwner[instanceId];
|
|
24765
24793
|
};
|
|
@@ -24847,9 +24875,15 @@ AnimationCurveOwner.registerAssembler(SkinnedMeshRenderer, "blendShapeWeights",
|
|
|
24847
24875
|
var curveData = curveBindings[i];
|
|
24848
24876
|
var targetEntity = entity.findByPath(curveData.relativePath);
|
|
24849
24877
|
if (targetEntity) {
|
|
24850
|
-
var
|
|
24851
|
-
|
|
24852
|
-
|
|
24878
|
+
var component = targetEntity.getComponent(curveData.type);
|
|
24879
|
+
if (!component) {
|
|
24880
|
+
continue;
|
|
24881
|
+
}
|
|
24882
|
+
var curveOwner = curveData._getTempCurveOwner(targetEntity, component);
|
|
24883
|
+
if (curveOwner && curveData.curve.keys.length) {
|
|
24884
|
+
var value = curveOwner.evaluateValue(curveData.curve, time, false);
|
|
24885
|
+
curveOwner.applyValue(value, 1, false);
|
|
24886
|
+
}
|
|
24853
24887
|
}
|
|
24854
24888
|
}
|
|
24855
24889
|
};
|
|
@@ -26266,11 +26300,15 @@ var AnimatorLayerBlendingMode;
|
|
|
26266
26300
|
var targetEntity = curve.relativePath === "" ? entity : entity.findByPath(curve.relativePath);
|
|
26267
26301
|
if (targetEntity) {
|
|
26268
26302
|
var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
|
|
26303
|
+
var component = targetEntity.getComponent(curve.type);
|
|
26304
|
+
if (!component) {
|
|
26305
|
+
continue;
|
|
26306
|
+
}
|
|
26269
26307
|
var property = curve.property;
|
|
26270
26308
|
var instanceId = targetEntity.instanceId;
|
|
26271
26309
|
// Get owner
|
|
26272
26310
|
var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
|
|
26273
|
-
var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
|
|
26311
|
+
var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity, component));
|
|
26274
26312
|
// Get layer owner
|
|
26275
26313
|
var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
|
|
26276
26314
|
var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
|
|
@@ -27448,16 +27486,7 @@ var ParticleStopMode;
|
|
|
27448
27486
|
};
|
|
27449
27487
|
_proto._render = function _render(context) {
|
|
27450
27488
|
var generator = this.generator;
|
|
27451
|
-
|
|
27452
|
-
if (generator._firstActiveElement < generator._firstFreeElement) {
|
|
27453
|
-
primitive.instanceCount = generator._firstFreeElement - generator._firstActiveElement;
|
|
27454
|
-
} else {
|
|
27455
|
-
var instanceCount = generator._currentParticleCount - generator._firstActiveElement;
|
|
27456
|
-
if (generator._firstFreeElement > 0) {
|
|
27457
|
-
instanceCount += generator._firstFreeElement;
|
|
27458
|
-
}
|
|
27459
|
-
primitive.instanceCount = instanceCount;
|
|
27460
|
-
}
|
|
27489
|
+
generator._primitive.instanceCount = generator._getAliveParticleCount();
|
|
27461
27490
|
var material = this.getMaterial();
|
|
27462
27491
|
if (!material) {
|
|
27463
27492
|
return;
|
|
@@ -28242,13 +28271,13 @@ var MainModule = /*#__PURE__*/ function() {
|
|
|
28242
28271
|
/** Override the default playback speed of the Particle Generator. */ this.simulationSpeed = 1.0;
|
|
28243
28272
|
/** Control how the Particle Generator applies its Transform component to the particles it emits. */ this.scalingMode = ParticleScaleMode.Local;
|
|
28244
28273
|
/** If set to true, the Particle Generator automatically begins to play on startup. */ this.playOnEnabled = true;
|
|
28245
|
-
this.
|
|
28246
|
-
this._gravity = new Vector3();
|
|
28274
|
+
/** @internal */ this._maxParticleBuffer = 1000;
|
|
28247
28275
|
/** @internal */ this._startSpeedRand = new Rand(0, ParticleRandomSubSeeds.StartSpeed);
|
|
28248
28276
|
/** @internal */ this._startLifeTimeRand = new Rand(0, ParticleRandomSubSeeds.StartLifetime);
|
|
28249
28277
|
/** @internal */ this._startColorRand = new Rand(0, ParticleRandomSubSeeds.StartColor);
|
|
28250
28278
|
/** @internal */ this._startSizeRand = new Rand(0, ParticleRandomSubSeeds.StartSize);
|
|
28251
28279
|
/** @internal */ this._startRotationRand = new Rand(0, ParticleRandomSubSeeds.StartRotation);
|
|
28280
|
+
this._gravity = new Vector3();
|
|
28252
28281
|
this._generator = generator;
|
|
28253
28282
|
}
|
|
28254
28283
|
var _proto = MainModule.prototype;
|
|
@@ -28326,16 +28355,10 @@ var MainModule = /*#__PURE__*/ function() {
|
|
|
28326
28355
|
get: /**
|
|
28327
28356
|
* Max particles count.
|
|
28328
28357
|
*/ function get() {
|
|
28329
|
-
return this.
|
|
28358
|
+
return this._maxParticleBuffer - 1;
|
|
28330
28359
|
},
|
|
28331
28360
|
set: function set(value) {
|
|
28332
|
-
|
|
28333
|
-
this._maxParticles = value;
|
|
28334
|
-
var generator = this._generator;
|
|
28335
|
-
if (value < generator._currentParticleCount) {
|
|
28336
|
-
generator._resizeInstanceBuffer(value);
|
|
28337
|
-
}
|
|
28338
|
-
}
|
|
28361
|
+
this._maxParticleBuffer = value + 1;
|
|
28339
28362
|
}
|
|
28340
28363
|
},
|
|
28341
28364
|
{
|
|
@@ -28417,13 +28440,7 @@ __decorate([
|
|
|
28417
28440
|
], MainModule.prototype, "gravityModifier", void 0);
|
|
28418
28441
|
__decorate([
|
|
28419
28442
|
ignoreClone
|
|
28420
|
-
], MainModule.prototype, "
|
|
28421
|
-
__decorate([
|
|
28422
|
-
ignoreClone
|
|
28423
|
-
], MainModule.prototype, "_generator", void 0);
|
|
28424
|
-
__decorate([
|
|
28425
|
-
ignoreClone
|
|
28426
|
-
], MainModule.prototype, "_gravity", void 0);
|
|
28443
|
+
], MainModule.prototype, "_maxParticleBuffer", void 0);
|
|
28427
28444
|
__decorate([
|
|
28428
28445
|
ignoreClone
|
|
28429
28446
|
], MainModule.prototype, "_startSpeedRand", void 0);
|
|
@@ -28439,6 +28456,12 @@ __decorate([
|
|
|
28439
28456
|
__decorate([
|
|
28440
28457
|
ignoreClone
|
|
28441
28458
|
], MainModule.prototype, "_startRotationRand", void 0);
|
|
28459
|
+
__decorate([
|
|
28460
|
+
ignoreClone
|
|
28461
|
+
], MainModule.prototype, "_generator", void 0);
|
|
28462
|
+
__decorate([
|
|
28463
|
+
ignoreClone
|
|
28464
|
+
], MainModule.prototype, "_gravity", void 0);
|
|
28442
28465
|
|
|
28443
28466
|
/**
|
|
28444
28467
|
* Rotate particles throughout their lifetime.
|
|
@@ -29036,7 +29059,7 @@ __decorate([
|
|
|
29036
29059
|
subPrimitive.start = 0;
|
|
29037
29060
|
this._primitive = new Primitive(renderer.engine);
|
|
29038
29061
|
this._reorganizeGeometryBuffers();
|
|
29039
|
-
this._resizeInstanceBuffer(ParticleGenerator._particleIncreaseCount);
|
|
29062
|
+
this._resizeInstanceBuffer(true, ParticleGenerator._particleIncreaseCount);
|
|
29040
29063
|
this.emission.enabled = true;
|
|
29041
29064
|
}
|
|
29042
29065
|
var _proto = ParticleGenerator.prototype;
|
|
@@ -29093,9 +29116,13 @@ __decorate([
|
|
|
29093
29116
|
/**
|
|
29094
29117
|
* @internal
|
|
29095
29118
|
*/ _proto._emit = function _emit(time, count) {
|
|
29096
|
-
var position = ParticleGenerator._tempVector30;
|
|
29097
|
-
var direction = ParticleGenerator._tempVector31;
|
|
29098
29119
|
if (this.emission.enabled) {
|
|
29120
|
+
// Wait the existing particles to be retired
|
|
29121
|
+
if (this.main._maxParticleBuffer < this._currentParticleCount) {
|
|
29122
|
+
return;
|
|
29123
|
+
}
|
|
29124
|
+
var position = ParticleGenerator._tempVector30;
|
|
29125
|
+
var direction = ParticleGenerator._tempVector31;
|
|
29099
29126
|
var transform = this._renderer.entity.transform;
|
|
29100
29127
|
var shape = this.emission.shape;
|
|
29101
29128
|
for(var i = 0; i < count; i++){
|
|
@@ -29122,6 +29149,13 @@ __decorate([
|
|
|
29122
29149
|
this._retireActiveParticles();
|
|
29123
29150
|
this._freeRetiredParticles();
|
|
29124
29151
|
if (emission.enabled && this._isPlaying) {
|
|
29152
|
+
// If maxParticles is changed dynamically, currentParticleCount may be greater than maxParticles
|
|
29153
|
+
if (this._currentParticleCount > main._maxParticleBuffer) {
|
|
29154
|
+
var notRetireParticleCount = this._getNotRetiredParticleCount();
|
|
29155
|
+
if (notRetireParticleCount < main._maxParticleBuffer) {
|
|
29156
|
+
this._resizeInstanceBuffer(false);
|
|
29157
|
+
}
|
|
29158
|
+
}
|
|
29125
29159
|
emission._emit(lastPlayTime, this._playTime);
|
|
29126
29160
|
if (!main.isLoop && this._playTime > duration) {
|
|
29127
29161
|
this._isPlaying = false;
|
|
@@ -29193,12 +29227,12 @@ __decorate([
|
|
|
29193
29227
|
};
|
|
29194
29228
|
/**
|
|
29195
29229
|
* @internal
|
|
29196
|
-
*/ _proto._resizeInstanceBuffer = function _resizeInstanceBuffer(increaseCount) {
|
|
29230
|
+
*/ _proto._resizeInstanceBuffer = function _resizeInstanceBuffer(isIncrease, increaseCount) {
|
|
29197
29231
|
var _this__instanceVertexBufferBinding;
|
|
29198
29232
|
(_this__instanceVertexBufferBinding = this._instanceVertexBufferBinding) == null ? void 0 : _this__instanceVertexBufferBinding.buffer.destroy();
|
|
29199
29233
|
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29200
29234
|
var stride = particleUtils.instanceVertexStride;
|
|
29201
|
-
var newParticleCount = this._currentParticleCount + increaseCount;
|
|
29235
|
+
var newParticleCount = isIncrease ? this._currentParticleCount + increaseCount : this.main._maxParticleBuffer;
|
|
29202
29236
|
var newByteLength = stride * newParticleCount;
|
|
29203
29237
|
var engine = this._renderer.engine;
|
|
29204
29238
|
var vertexInstanceBuffer = new Buffer(engine, BufferBindFlag.VertexBuffer, newByteLength, BufferUsage.Dynamic, false);
|
|
@@ -29209,10 +29243,37 @@ __decorate([
|
|
|
29209
29243
|
var lastInstanceVertices = this._instanceVertices;
|
|
29210
29244
|
if (lastInstanceVertices) {
|
|
29211
29245
|
var floatStride = particleUtils.instanceVertexFloatStride;
|
|
29212
|
-
var
|
|
29213
|
-
|
|
29214
|
-
|
|
29215
|
-
|
|
29246
|
+
var firstFreeElement = this._firstFreeElement;
|
|
29247
|
+
var firstRetiredElement = this._firstRetiredElement;
|
|
29248
|
+
if (isIncrease) {
|
|
29249
|
+
var freeOffset = this._firstFreeElement * floatStride;
|
|
29250
|
+
instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, 0, freeOffset));
|
|
29251
|
+
var freeEndOffset = (this._firstFreeElement + increaseCount) * floatStride;
|
|
29252
|
+
instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, freeOffset * 4), freeEndOffset);
|
|
29253
|
+
// Maintain expanded pointers
|
|
29254
|
+
this._firstNewElement > firstFreeElement && (this._firstNewElement += increaseCount);
|
|
29255
|
+
this._firstActiveElement > firstFreeElement && (this._firstActiveElement += increaseCount);
|
|
29256
|
+
firstRetiredElement > firstFreeElement && (this._firstRetiredElement += increaseCount);
|
|
29257
|
+
} else {
|
|
29258
|
+
var migrateCount, bufferOffset;
|
|
29259
|
+
if (firstRetiredElement <= firstFreeElement) {
|
|
29260
|
+
migrateCount = firstFreeElement - firstRetiredElement;
|
|
29261
|
+
bufferOffset = 0;
|
|
29262
|
+
// Maintain expanded pointers
|
|
29263
|
+
this._firstFreeElement -= firstRetiredElement;
|
|
29264
|
+
this._firstNewElement -= firstRetiredElement;
|
|
29265
|
+
this._firstActiveElement -= firstRetiredElement;
|
|
29266
|
+
this._firstRetiredElement = 0;
|
|
29267
|
+
} else {
|
|
29268
|
+
migrateCount = this._currentParticleCount - firstRetiredElement;
|
|
29269
|
+
bufferOffset = firstFreeElement;
|
|
29270
|
+
// Maintain expanded pointers
|
|
29271
|
+
this._firstNewElement > firstFreeElement && (this._firstNewElement -= firstFreeElement);
|
|
29272
|
+
this._firstActiveElement > firstFreeElement && (this._firstActiveElement -= firstFreeElement);
|
|
29273
|
+
firstRetiredElement > firstFreeElement && (this._firstRetiredElement -= firstFreeElement);
|
|
29274
|
+
}
|
|
29275
|
+
instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, firstRetiredElement * floatStride * 4, migrateCount * floatStride), bufferOffset * floatStride);
|
|
29276
|
+
}
|
|
29216
29277
|
this._instanceBufferResized = true;
|
|
29217
29278
|
}
|
|
29218
29279
|
// Instance buffer always at last
|
|
@@ -29221,8 +29282,60 @@ __decorate([
|
|
|
29221
29282
|
this._instanceVertexBufferBinding = vertexBufferBinding;
|
|
29222
29283
|
this._currentParticleCount = newParticleCount;
|
|
29223
29284
|
};
|
|
29285
|
+
/**
|
|
29286
|
+
* @internal
|
|
29287
|
+
*/ _proto._updateShaderData = function _updateShaderData(shaderData) {
|
|
29288
|
+
this.main._updateShaderData(shaderData);
|
|
29289
|
+
this.velocityOverLifetime._updateShaderData(shaderData);
|
|
29290
|
+
this.textureSheetAnimation._updateShaderData(shaderData);
|
|
29291
|
+
this.sizeOverLifetime._updateShaderData(shaderData);
|
|
29292
|
+
this.rotationOverLifetime._updateShaderData(shaderData);
|
|
29293
|
+
this.colorOverLifetime._updateShaderData(shaderData);
|
|
29294
|
+
};
|
|
29295
|
+
/**
|
|
29296
|
+
* @internal
|
|
29297
|
+
*/ _proto._resetGlobalRandSeed = function _resetGlobalRandSeed(seed) {
|
|
29298
|
+
this._randomSeed = seed;
|
|
29299
|
+
this.main._resetRandomSeed(seed);
|
|
29300
|
+
this.emission._resetRandomSeed(seed);
|
|
29301
|
+
this.textureSheetAnimation._resetRandomSeed(seed);
|
|
29302
|
+
this.velocityOverLifetime._resetRandomSeed(seed);
|
|
29303
|
+
this.rotationOverLifetime._resetRandomSeed(seed);
|
|
29304
|
+
this.colorOverLifetime._resetRandomSeed(seed);
|
|
29305
|
+
};
|
|
29306
|
+
/**
|
|
29307
|
+
* @internal
|
|
29308
|
+
*/ _proto._getAliveParticleCount = function _getAliveParticleCount() {
|
|
29309
|
+
if (this._firstActiveElement <= this._firstFreeElement) {
|
|
29310
|
+
return this._firstFreeElement - this._firstActiveElement;
|
|
29311
|
+
} else {
|
|
29312
|
+
var instanceCount = this._currentParticleCount - this._firstActiveElement;
|
|
29313
|
+
if (this._firstFreeElement > 0) {
|
|
29314
|
+
instanceCount += this._firstFreeElement;
|
|
29315
|
+
}
|
|
29316
|
+
return instanceCount;
|
|
29317
|
+
}
|
|
29318
|
+
};
|
|
29319
|
+
/**
|
|
29320
|
+
* @internal
|
|
29321
|
+
*/ _proto._getNotRetiredParticleCount = function _getNotRetiredParticleCount() {
|
|
29322
|
+
if (this._firstRetiredElement <= this._firstFreeElement) {
|
|
29323
|
+
return this._firstFreeElement - this._firstRetiredElement;
|
|
29324
|
+
} else {
|
|
29325
|
+
var instanceCount = this._currentParticleCount - this._firstRetiredElement;
|
|
29326
|
+
if (this._firstFreeElement > 0) {
|
|
29327
|
+
instanceCount += this._firstFreeElement;
|
|
29328
|
+
}
|
|
29329
|
+
return instanceCount;
|
|
29330
|
+
}
|
|
29331
|
+
};
|
|
29332
|
+
/**
|
|
29333
|
+
* @internal
|
|
29334
|
+
*/ _proto._destroy = function _destroy() {
|
|
29335
|
+
this._instanceVertexBufferBinding.buffer.destroy();
|
|
29336
|
+
this._primitive.destroy();
|
|
29337
|
+
};
|
|
29224
29338
|
_proto._addNewParticle = function _addNewParticle(position, direction, transform, time) {
|
|
29225
|
-
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29226
29339
|
var firstFreeElement = this._firstFreeElement;
|
|
29227
29340
|
var nextFreeElement = firstFreeElement + 1;
|
|
29228
29341
|
if (nextFreeElement >= this._currentParticleCount) {
|
|
@@ -29231,23 +29344,20 @@ __decorate([
|
|
|
29231
29344
|
var main = this.main;
|
|
29232
29345
|
// Check if can be expanded
|
|
29233
29346
|
if (nextFreeElement === this._firstRetiredElement) {
|
|
29234
|
-
var increaseCount = Math.min(ParticleGenerator._particleIncreaseCount, main.
|
|
29347
|
+
var increaseCount = Math.min(ParticleGenerator._particleIncreaseCount, main._maxParticleBuffer - this._currentParticleCount);
|
|
29235
29348
|
if (increaseCount === 0) {
|
|
29236
29349
|
return;
|
|
29237
29350
|
}
|
|
29238
|
-
this._resizeInstanceBuffer(increaseCount);
|
|
29351
|
+
this._resizeInstanceBuffer(true, increaseCount);
|
|
29239
29352
|
// Recalculate nextFreeElement after resize
|
|
29240
29353
|
nextFreeElement = firstFreeElement + 1;
|
|
29241
|
-
// Maintain expanded pointers
|
|
29242
|
-
this._firstNewElement > firstFreeElement && (this._firstNewElement += increaseCount);
|
|
29243
|
-
this._firstActiveElement > firstFreeElement && (this._firstActiveElement += increaseCount);
|
|
29244
|
-
this._firstRetiredElement > firstFreeElement && (this._firstRetiredElement += increaseCount);
|
|
29245
29354
|
}
|
|
29246
29355
|
var pos, rot;
|
|
29247
29356
|
if (main.simulationSpace === ParticleSimulationSpace.World) {
|
|
29248
29357
|
pos = transform.worldPosition;
|
|
29249
29358
|
rot = transform.worldRotationQuaternion;
|
|
29250
29359
|
}
|
|
29360
|
+
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29251
29361
|
var startSpeed = main.startSpeed.evaluate(undefined, main._startSpeedRand.random());
|
|
29252
29362
|
var instanceVertices = this._instanceVertices;
|
|
29253
29363
|
var offset = firstFreeElement * particleUtils.instanceVertexFloatStride;
|
|
@@ -29351,7 +29461,7 @@ __decorate([
|
|
|
29351
29461
|
var particleUtils = engine._particleBufferUtils;
|
|
29352
29462
|
var frameCount = engine.time.frameCount;
|
|
29353
29463
|
var instanceVertices = this._instanceVertices;
|
|
29354
|
-
while(this._firstActiveElement
|
|
29464
|
+
while(this._firstActiveElement !== this._firstNewElement){
|
|
29355
29465
|
var activeParticleOffset = this._firstActiveElement * particleUtils.instanceVertexFloatStride;
|
|
29356
29466
|
var activeParticleTimeOffset = activeParticleOffset + particleUtils.timeOffset;
|
|
29357
29467
|
var particleAge = this._playTime - instanceVertices[activeParticleTimeOffset];
|
|
@@ -29368,37 +29478,10 @@ __decorate([
|
|
|
29368
29478
|
this._waitProcessRetiredElementCount++;
|
|
29369
29479
|
}
|
|
29370
29480
|
};
|
|
29371
|
-
/**
|
|
29372
|
-
* @internal
|
|
29373
|
-
*/ _proto._updateShaderData = function _updateShaderData(shaderData) {
|
|
29374
|
-
this.main._updateShaderData(shaderData);
|
|
29375
|
-
this.velocityOverLifetime._updateShaderData(shaderData);
|
|
29376
|
-
this.textureSheetAnimation._updateShaderData(shaderData);
|
|
29377
|
-
this.sizeOverLifetime._updateShaderData(shaderData);
|
|
29378
|
-
this.rotationOverLifetime._updateShaderData(shaderData);
|
|
29379
|
-
this.colorOverLifetime._updateShaderData(shaderData);
|
|
29380
|
-
};
|
|
29381
|
-
/**
|
|
29382
|
-
* @internal
|
|
29383
|
-
*/ _proto._resetGlobalRandSeed = function _resetGlobalRandSeed(seed) {
|
|
29384
|
-
this._randomSeed = seed;
|
|
29385
|
-
this.main._resetRandomSeed(seed);
|
|
29386
|
-
this.emission._resetRandomSeed(seed);
|
|
29387
|
-
this.textureSheetAnimation._resetRandomSeed(seed);
|
|
29388
|
-
this.velocityOverLifetime._resetRandomSeed(seed);
|
|
29389
|
-
this.rotationOverLifetime._resetRandomSeed(seed);
|
|
29390
|
-
this.colorOverLifetime._resetRandomSeed(seed);
|
|
29391
|
-
};
|
|
29392
|
-
/**
|
|
29393
|
-
* @internal
|
|
29394
|
-
*/ _proto._destroy = function _destroy() {
|
|
29395
|
-
this._instanceVertexBufferBinding.buffer.destroy();
|
|
29396
|
-
this._primitive.destroy();
|
|
29397
|
-
};
|
|
29398
29481
|
_proto._freeRetiredParticles = function _freeRetiredParticles() {
|
|
29399
29482
|
var particleUtils = this._renderer.engine._particleBufferUtils;
|
|
29400
29483
|
var frameCount = this._renderer.engine.time.frameCount;
|
|
29401
|
-
while(this._firstRetiredElement
|
|
29484
|
+
while(this._firstRetiredElement !== this._firstActiveElement){
|
|
29402
29485
|
var offset = this._firstRetiredElement * particleUtils.instanceVertexFloatStride + particleUtils.startLifeTimeOffset;
|
|
29403
29486
|
var age = frameCount - this._instanceVertices[offset];
|
|
29404
29487
|
// WebGL don't support map buffer range, so off this optimization
|