@galacean/engine 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/browser.js CHANGED
@@ -10679,8 +10679,12 @@
10679
10679
  break;
10680
10680
  case gl.BOOL_VEC3:
10681
10681
  case gl.INT_VEC3:
10682
- shaderUniform.applyFunc = isArray ? shaderUniform.upload3iv : shaderUniform.upload3i;
10683
- shaderUniform.cacheValue = new Vector3(0, 0, 0);
10682
+ if (isArray) {
10683
+ shaderUniform.applyFunc = shaderUniform.upload3iv;
10684
+ } else {
10685
+ shaderUniform.applyFunc = shaderUniform.upload3i;
10686
+ shaderUniform.cacheValue = new Vector3(0, 0, 0);
10687
+ }
10684
10688
  break;
10685
10689
  case gl.BOOL_VEC4:
10686
10690
  case gl.INT_VEC4:
@@ -12678,6 +12682,9 @@
12678
12682
  case SpriteModifyFlags.pivot:
12679
12683
  this._dirtyUpdateFlag |= RendererUpdateFlags.WorldVolume;
12680
12684
  break;
12685
+ case SpriteModifyFlags.destroy:
12686
+ this.sprite = null;
12687
+ break;
12681
12688
  }
12682
12689
  };
12683
12690
  _create_class$3(SpriteMask, [
@@ -13860,6 +13867,10 @@
13860
13867
  Logger.error("mesh is null.");
13861
13868
  return;
13862
13869
  }
13870
+ if (this._mesh.destroyed) {
13871
+ Logger.error("mesh is destroyed.");
13872
+ return;
13873
+ }
13863
13874
  Renderer1.prototype._prepareRender.call(this, context);
13864
13875
  };
13865
13876
  /**
@@ -17504,6 +17515,7 @@
17504
17515
  var AssetPromise = function AssetPromise(executor) {
17505
17516
  var _this = this;
17506
17517
  this._state = "pending";
17518
+ this._progress = 0;
17507
17519
  this._onProgressCallback = [];
17508
17520
  this._promise = new Promise(function(resolve, reject) {
17509
17521
  _this._reject = reject;
@@ -17528,6 +17540,7 @@
17528
17540
  };
17529
17541
  var setProgress = function setProgress(progress) {
17530
17542
  if (_this._state === "pending") {
17543
+ _this._progress = progress;
17531
17544
  _this._onProgressCallback.forEach(function(callback) {
17532
17545
  return callback(progress);
17533
17546
  });
@@ -17542,7 +17555,12 @@
17542
17555
  * @param callback
17543
17556
  * @returns AssetPromise
17544
17557
  */ _proto.onProgress = function onProgress(callback) {
17545
- this._onProgressCallback.push(callback);
17558
+ if (this._progress) {
17559
+ callback(this._progress);
17560
+ }
17561
+ if (this._state === "pending") {
17562
+ this._onProgressCallback.push(callback);
17563
+ }
17546
17564
  return this;
17547
17565
  };
17548
17566
  _proto.then = function then(onfulfilled, onrejected) {
@@ -17851,7 +17869,8 @@
17851
17869
  // Check cache
17852
17870
  var cacheObject = this._assetUrlPool[assetBaseURL];
17853
17871
  if (cacheObject) {
17854
- return new AssetPromise(function(resolve) {
17872
+ return new AssetPromise(function(resolve, _, setProgress) {
17873
+ setProgress(1);
17855
17874
  resolve(_this._getResolveResource(cacheObject, paths));
17856
17875
  });
17857
17876
  }
@@ -17868,8 +17887,10 @@
17868
17887
  var loadingPromises = this._loadingPromises;
17869
17888
  var loadingPromise = loadingPromises[assetURL];
17870
17889
  if (loadingPromise) {
17871
- return new AssetPromise(function(resolve, reject) {
17872
- loadingPromise.then(function(resource) {
17890
+ return new AssetPromise(function(resolve, reject, setProgress) {
17891
+ loadingPromise.onProgress(function(v) {
17892
+ setProgress(v);
17893
+ }).then(function(resource) {
17873
17894
  resolve(resource);
17874
17895
  }).catch(function(error) {
17875
17896
  reject(error);
@@ -23972,12 +23993,20 @@
23972
23993
  Logger.warn("The material of sky is not defined.");
23973
23994
  return;
23974
23995
  }
23996
+ if (material.destroyed) {
23997
+ Logger.warn("The material of sky is destroyed.");
23998
+ return;
23999
+ }
23975
24000
  if (!mesh) {
23976
24001
  Logger.warn("The mesh of sky is not defined.");
23977
24002
  return;
23978
24003
  }
23979
- var _context_camera = context.camera, engine = _context_camera.engine, aspectRatio = _context_camera.aspectRatio, fieldOfView = _context_camera.fieldOfView, viewMatrix = _context_camera.viewMatrix, cameraShaderData = _context_camera.shaderData;
23980
- var sceneData = context.camera.scene.shaderData;
24004
+ if (mesh.destroyed) {
24005
+ Logger.warn("The mesh of sky is destroyed.");
24006
+ return;
24007
+ }
24008
+ 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;
24009
+ var sceneData = scene.shaderData;
23981
24010
  var viewProjMatrix = Sky._viewProjMatrix, projectionMatrix = Sky._projectionMatrix;
23982
24011
  var rhi = engine._hardwareRenderer;
23983
24012
  var materialShaderData = material.shaderData, shader = material.shader, renderState = material.renderState;
@@ -29148,7 +29177,7 @@
29148
29177
  /**
29149
29178
  * @internal
29150
29179
  */ var AnimationCurveOwner = /*#__PURE__*/ function() {
29151
- function AnimationCurveOwner(target, type, property, cureType) {
29180
+ function AnimationCurveOwner(target, type, component, property, cureType) {
29152
29181
  this.baseEvaluateData = {
29153
29182
  curKeyframeIndex: 0,
29154
29183
  value: null
@@ -29159,9 +29188,8 @@
29159
29188
  };
29160
29189
  this.updateMark = 0;
29161
29190
  this.target = target;
29162
- this.type = type;
29163
29191
  this.property = property;
29164
- this.component = target.getComponent(type);
29192
+ this.component = component;
29165
29193
  this.cureType = cureType;
29166
29194
  this._isBlendShape = _instanceof1$2(this.component, SkinnedMeshRenderer);
29167
29195
  var assemblerType = AnimationCurveOwner.getAssemblerType(type, property);
@@ -29387,9 +29415,9 @@
29387
29415
  var _proto = AnimationClipCurveBinding.prototype;
29388
29416
  /**
29389
29417
  * @internal
29390
- */ _proto._createCurveOwner = function _createCurveOwner(entity) {
29418
+ */ _proto._createCurveOwner = function _createCurveOwner(entity, component) {
29391
29419
  var curveType = this.curve.constructor;
29392
- var owner = new AnimationCurveOwner(entity, this.type, this.property, curveType);
29420
+ var owner = new AnimationCurveOwner(entity, this.type, component, this.property, curveType);
29393
29421
  curveType._initializeOwner(owner);
29394
29422
  owner.saveDefaultValue();
29395
29423
  return owner;
@@ -29407,10 +29435,10 @@
29407
29435
  };
29408
29436
  /**
29409
29437
  * @internal
29410
- */ _proto._getTempCurveOwner = function _getTempCurveOwner(entity) {
29438
+ */ _proto._getTempCurveOwner = function _getTempCurveOwner(entity, component) {
29411
29439
  var instanceId = entity.instanceId;
29412
29440
  if (!this._tempCurveOwner[instanceId]) {
29413
- this._tempCurveOwner[instanceId] = this._createCurveOwner(entity);
29441
+ this._tempCurveOwner[instanceId] = this._createCurveOwner(entity, component);
29414
29442
  }
29415
29443
  return this._tempCurveOwner[instanceId];
29416
29444
  };
@@ -29495,9 +29523,15 @@
29495
29523
  var curveData = curveBindings[i];
29496
29524
  var targetEntity = entity.findByPath(curveData.relativePath);
29497
29525
  if (targetEntity) {
29498
- var curveOwner = curveData._getTempCurveOwner(targetEntity);
29499
- var value = curveOwner.evaluateValue(curveData.curve, time, false);
29500
- curveOwner.applyValue(value, 1, false);
29526
+ var component = targetEntity.getComponent(curveData.type);
29527
+ if (!component) {
29528
+ continue;
29529
+ }
29530
+ var curveOwner = curveData._getTempCurveOwner(targetEntity, component);
29531
+ if (curveOwner && curveData.curve.keys.length) {
29532
+ var value = curveOwner.evaluateValue(curveData.curve, time, false);
29533
+ curveOwner.applyValue(value, 1, false);
29534
+ }
29501
29535
  }
29502
29536
  }
29503
29537
  };
@@ -30890,11 +30924,15 @@
30890
30924
  var targetEntity = curve.relativePath === "" ? entity : entity.findByPath(curve.relativePath);
30891
30925
  if (targetEntity) {
30892
30926
  var _curveOwnerPool, _instanceId, _propertyOwners, _property, _layerCurveOwnerPool, _instanceId1, _layerPropertyOwners, _property1;
30927
+ var component = targetEntity.getComponent(curve.type);
30928
+ if (!component) {
30929
+ continue;
30930
+ }
30893
30931
  var property = curve.property;
30894
30932
  var instanceId = targetEntity.instanceId;
30895
30933
  // Get owner
30896
30934
  var propertyOwners = (_curveOwnerPool = curveOwnerPool)[_instanceId = instanceId] || (_curveOwnerPool[_instanceId] = Object.create(null));
30897
- var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity));
30935
+ var owner = (_propertyOwners = propertyOwners)[_property = property] || (_propertyOwners[_property] = curve._createCurveOwner(targetEntity, component));
30898
30936
  // Get layer owner
30899
30937
  var layerPropertyOwners = (_layerCurveOwnerPool = layerCurveOwnerPool)[_instanceId1 = instanceId] || (_layerCurveOwnerPool[_instanceId1] = Object.create(null));
30900
30938
  var layerOwner = (_layerPropertyOwners = layerPropertyOwners)[_property1 = property] || (_layerPropertyOwners[_property1] = curve._createCurveLayerOwner(owner));
@@ -32057,16 +32095,7 @@
32057
32095
  };
32058
32096
  _proto._render = function _render(context) {
32059
32097
  var generator = this.generator;
32060
- var primitive = generator._primitive;
32061
- if (generator._firstActiveElement < generator._firstFreeElement) {
32062
- primitive.instanceCount = generator._firstFreeElement - generator._firstActiveElement;
32063
- } else {
32064
- var instanceCount = generator._currentParticleCount - generator._firstActiveElement;
32065
- if (generator._firstFreeElement > 0) {
32066
- instanceCount += generator._firstFreeElement;
32067
- }
32068
- primitive.instanceCount = instanceCount;
32069
- }
32098
+ generator._primitive.instanceCount = generator._getAliveParticleCount();
32070
32099
  var material = this.getMaterial();
32071
32100
  if (!material) {
32072
32101
  return;
@@ -32839,13 +32868,13 @@
32839
32868
  /** Override the default playback speed of the Particle Generator. */ this.simulationSpeed = 1.0;
32840
32869
  /** Control how the Particle Generator applies its Transform component to the particles it emits. */ this.scalingMode = exports.ParticleScaleMode.Local;
32841
32870
  /** If set to true, the Particle Generator automatically begins to play on startup. */ this.playOnEnabled = true;
32842
- this._maxParticles = 1000;
32843
- this._gravity = new Vector3();
32871
+ /** @internal */ this._maxParticleBuffer = 1000;
32844
32872
  /** @internal */ this._startSpeedRand = new Rand(0, ParticleRandomSubSeeds.StartSpeed);
32845
32873
  /** @internal */ this._startLifeTimeRand = new Rand(0, ParticleRandomSubSeeds.StartLifetime);
32846
32874
  /** @internal */ this._startColorRand = new Rand(0, ParticleRandomSubSeeds.StartColor);
32847
32875
  /** @internal */ this._startSizeRand = new Rand(0, ParticleRandomSubSeeds.StartSize);
32848
32876
  /** @internal */ this._startRotationRand = new Rand(0, ParticleRandomSubSeeds.StartRotation);
32877
+ this._gravity = new Vector3();
32849
32878
  this._generator = generator;
32850
32879
  };
32851
32880
  var _proto = MainModule.prototype;
@@ -32923,16 +32952,10 @@
32923
32952
  get: /**
32924
32953
  * Max particles count.
32925
32954
  */ function get() {
32926
- return this._maxParticles;
32955
+ return this._maxParticleBuffer - 1;
32927
32956
  },
32928
32957
  set: function set(value) {
32929
- if (this._maxParticles !== value) {
32930
- this._maxParticles = value;
32931
- var generator = this._generator;
32932
- if (value < generator._currentParticleCount) {
32933
- generator._resizeInstanceBuffer(value);
32934
- }
32935
- }
32958
+ this._maxParticleBuffer = value + 1;
32936
32959
  }
32937
32960
  },
32938
32961
  {
@@ -33014,13 +33037,7 @@
33014
33037
  ], MainModule.prototype, "gravityModifier", void 0);
33015
33038
  __decorate$1([
33016
33039
  ignoreClone
33017
- ], MainModule.prototype, "_maxParticles", void 0);
33018
- __decorate$1([
33019
- ignoreClone
33020
- ], MainModule.prototype, "_generator", void 0);
33021
- __decorate$1([
33022
- ignoreClone
33023
- ], MainModule.prototype, "_gravity", void 0);
33040
+ ], MainModule.prototype, "_maxParticleBuffer", void 0);
33024
33041
  __decorate$1([
33025
33042
  ignoreClone
33026
33043
  ], MainModule.prototype, "_startSpeedRand", void 0);
@@ -33036,6 +33053,12 @@
33036
33053
  __decorate$1([
33037
33054
  ignoreClone
33038
33055
  ], MainModule.prototype, "_startRotationRand", void 0);
33056
+ __decorate$1([
33057
+ ignoreClone
33058
+ ], MainModule.prototype, "_generator", void 0);
33059
+ __decorate$1([
33060
+ ignoreClone
33061
+ ], MainModule.prototype, "_gravity", void 0);
33039
33062
  /**
33040
33063
  * Rotate particles throughout their lifetime.
33041
33064
  */ var RotationOverLifetimeModule = /*#__PURE__*/ function(ParticleGeneratorModule1) {
@@ -33627,7 +33650,7 @@
33627
33650
  subPrimitive.start = 0;
33628
33651
  this._primitive = new Primitive(renderer.engine);
33629
33652
  this._reorganizeGeometryBuffers();
33630
- this._resizeInstanceBuffer(ParticleGenerator._particleIncreaseCount);
33653
+ this._resizeInstanceBuffer(true, ParticleGenerator._particleIncreaseCount);
33631
33654
  this.emission.enabled = true;
33632
33655
  }
33633
33656
  var _proto = ParticleGenerator.prototype;
@@ -33684,9 +33707,13 @@
33684
33707
  /**
33685
33708
  * @internal
33686
33709
  */ _proto._emit = function _emit(time, count) {
33687
- var position = ParticleGenerator._tempVector30;
33688
- var direction = ParticleGenerator._tempVector31;
33689
33710
  if (this.emission.enabled) {
33711
+ // Wait the existing particles to be retired
33712
+ if (this.main._maxParticleBuffer < this._currentParticleCount) {
33713
+ return;
33714
+ }
33715
+ var position = ParticleGenerator._tempVector30;
33716
+ var direction = ParticleGenerator._tempVector31;
33690
33717
  var transform = this._renderer.entity.transform;
33691
33718
  var shape = this.emission.shape;
33692
33719
  for(var i = 0; i < count; i++){
@@ -33713,6 +33740,13 @@
33713
33740
  this._retireActiveParticles();
33714
33741
  this._freeRetiredParticles();
33715
33742
  if (emission.enabled && this._isPlaying) {
33743
+ // If maxParticles is changed dynamically, currentParticleCount may be greater than maxParticles
33744
+ if (this._currentParticleCount > main._maxParticleBuffer) {
33745
+ var notRetireParticleCount = this._getNotRetiredParticleCount();
33746
+ if (notRetireParticleCount < main._maxParticleBuffer) {
33747
+ this._resizeInstanceBuffer(false);
33748
+ }
33749
+ }
33716
33750
  emission._emit(lastPlayTime, this._playTime);
33717
33751
  if (!main.isLoop && this._playTime > duration) {
33718
33752
  this._isPlaying = false;
@@ -33784,12 +33818,12 @@
33784
33818
  };
33785
33819
  /**
33786
33820
  * @internal
33787
- */ _proto._resizeInstanceBuffer = function _resizeInstanceBuffer(increaseCount) {
33821
+ */ _proto._resizeInstanceBuffer = function _resizeInstanceBuffer(isIncrease, increaseCount) {
33788
33822
  var _this__instanceVertexBufferBinding;
33789
33823
  (_this__instanceVertexBufferBinding = this._instanceVertexBufferBinding) == null ? void 0 : _this__instanceVertexBufferBinding.buffer.destroy();
33790
33824
  var particleUtils = this._renderer.engine._particleBufferUtils;
33791
33825
  var stride = particleUtils.instanceVertexStride;
33792
- var newParticleCount = this._currentParticleCount + increaseCount;
33826
+ var newParticleCount = isIncrease ? this._currentParticleCount + increaseCount : this.main._maxParticleBuffer;
33793
33827
  var newByteLength = stride * newParticleCount;
33794
33828
  var engine = this._renderer.engine;
33795
33829
  var vertexInstanceBuffer = new Buffer(engine, exports.BufferBindFlag.VertexBuffer, newByteLength, exports.BufferUsage.Dynamic, false);
@@ -33800,10 +33834,37 @@
33800
33834
  var lastInstanceVertices = this._instanceVertices;
33801
33835
  if (lastInstanceVertices) {
33802
33836
  var floatStride = particleUtils.instanceVertexFloatStride;
33803
- var freeOffset = this._firstFreeElement * floatStride;
33804
- instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, 0, freeOffset));
33805
- var freeEndOffset = (this._firstFreeElement + increaseCount) * floatStride;
33806
- instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, freeOffset * 4), freeEndOffset);
33837
+ var firstFreeElement = this._firstFreeElement;
33838
+ var firstRetiredElement = this._firstRetiredElement;
33839
+ if (isIncrease) {
33840
+ var freeOffset = this._firstFreeElement * floatStride;
33841
+ instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, 0, freeOffset));
33842
+ var freeEndOffset = (this._firstFreeElement + increaseCount) * floatStride;
33843
+ instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, freeOffset * 4), freeEndOffset);
33844
+ // Maintain expanded pointers
33845
+ this._firstNewElement > firstFreeElement && (this._firstNewElement += increaseCount);
33846
+ this._firstActiveElement > firstFreeElement && (this._firstActiveElement += increaseCount);
33847
+ firstRetiredElement > firstFreeElement && (this._firstRetiredElement += increaseCount);
33848
+ } else {
33849
+ var migrateCount, bufferOffset;
33850
+ if (firstRetiredElement <= firstFreeElement) {
33851
+ migrateCount = firstFreeElement - firstRetiredElement;
33852
+ bufferOffset = 0;
33853
+ // Maintain expanded pointers
33854
+ this._firstFreeElement -= firstRetiredElement;
33855
+ this._firstNewElement -= firstRetiredElement;
33856
+ this._firstActiveElement -= firstRetiredElement;
33857
+ this._firstRetiredElement = 0;
33858
+ } else {
33859
+ migrateCount = this._currentParticleCount - firstRetiredElement;
33860
+ bufferOffset = firstFreeElement;
33861
+ // Maintain expanded pointers
33862
+ this._firstNewElement > firstFreeElement && (this._firstNewElement -= firstFreeElement);
33863
+ this._firstActiveElement > firstFreeElement && (this._firstActiveElement -= firstFreeElement);
33864
+ firstRetiredElement > firstFreeElement && (this._firstRetiredElement -= firstFreeElement);
33865
+ }
33866
+ instanceVertices.set(new Float32Array(lastInstanceVertices.buffer, firstRetiredElement * floatStride * 4, migrateCount * floatStride), bufferOffset * floatStride);
33867
+ }
33807
33868
  this._instanceBufferResized = true;
33808
33869
  }
33809
33870
  // Instance buffer always at last
@@ -33812,8 +33873,60 @@
33812
33873
  this._instanceVertexBufferBinding = vertexBufferBinding;
33813
33874
  this._currentParticleCount = newParticleCount;
33814
33875
  };
33876
+ /**
33877
+ * @internal
33878
+ */ _proto._updateShaderData = function _updateShaderData(shaderData) {
33879
+ this.main._updateShaderData(shaderData);
33880
+ this.velocityOverLifetime._updateShaderData(shaderData);
33881
+ this.textureSheetAnimation._updateShaderData(shaderData);
33882
+ this.sizeOverLifetime._updateShaderData(shaderData);
33883
+ this.rotationOverLifetime._updateShaderData(shaderData);
33884
+ this.colorOverLifetime._updateShaderData(shaderData);
33885
+ };
33886
+ /**
33887
+ * @internal
33888
+ */ _proto._resetGlobalRandSeed = function _resetGlobalRandSeed(seed) {
33889
+ this._randomSeed = seed;
33890
+ this.main._resetRandomSeed(seed);
33891
+ this.emission._resetRandomSeed(seed);
33892
+ this.textureSheetAnimation._resetRandomSeed(seed);
33893
+ this.velocityOverLifetime._resetRandomSeed(seed);
33894
+ this.rotationOverLifetime._resetRandomSeed(seed);
33895
+ this.colorOverLifetime._resetRandomSeed(seed);
33896
+ };
33897
+ /**
33898
+ * @internal
33899
+ */ _proto._getAliveParticleCount = function _getAliveParticleCount() {
33900
+ if (this._firstActiveElement <= this._firstFreeElement) {
33901
+ return this._firstFreeElement - this._firstActiveElement;
33902
+ } else {
33903
+ var instanceCount = this._currentParticleCount - this._firstActiveElement;
33904
+ if (this._firstFreeElement > 0) {
33905
+ instanceCount += this._firstFreeElement;
33906
+ }
33907
+ return instanceCount;
33908
+ }
33909
+ };
33910
+ /**
33911
+ * @internal
33912
+ */ _proto._getNotRetiredParticleCount = function _getNotRetiredParticleCount() {
33913
+ if (this._firstRetiredElement <= this._firstFreeElement) {
33914
+ return this._firstFreeElement - this._firstRetiredElement;
33915
+ } else {
33916
+ var instanceCount = this._currentParticleCount - this._firstRetiredElement;
33917
+ if (this._firstFreeElement > 0) {
33918
+ instanceCount += this._firstFreeElement;
33919
+ }
33920
+ return instanceCount;
33921
+ }
33922
+ };
33923
+ /**
33924
+ * @internal
33925
+ */ _proto._destroy = function _destroy() {
33926
+ this._instanceVertexBufferBinding.buffer.destroy();
33927
+ this._primitive.destroy();
33928
+ };
33815
33929
  _proto._addNewParticle = function _addNewParticle(position, direction, transform, time) {
33816
- var particleUtils = this._renderer.engine._particleBufferUtils;
33817
33930
  var firstFreeElement = this._firstFreeElement;
33818
33931
  var nextFreeElement = firstFreeElement + 1;
33819
33932
  if (nextFreeElement >= this._currentParticleCount) {
@@ -33822,23 +33935,20 @@
33822
33935
  var main = this.main;
33823
33936
  // Check if can be expanded
33824
33937
  if (nextFreeElement === this._firstRetiredElement) {
33825
- var increaseCount = Math.min(ParticleGenerator._particleIncreaseCount, main.maxParticles - this._currentParticleCount);
33938
+ var increaseCount = Math.min(ParticleGenerator._particleIncreaseCount, main._maxParticleBuffer - this._currentParticleCount);
33826
33939
  if (increaseCount === 0) {
33827
33940
  return;
33828
33941
  }
33829
- this._resizeInstanceBuffer(increaseCount);
33942
+ this._resizeInstanceBuffer(true, increaseCount);
33830
33943
  // Recalculate nextFreeElement after resize
33831
33944
  nextFreeElement = firstFreeElement + 1;
33832
- // Maintain expanded pointers
33833
- this._firstNewElement > firstFreeElement && (this._firstNewElement += increaseCount);
33834
- this._firstActiveElement > firstFreeElement && (this._firstActiveElement += increaseCount);
33835
- this._firstRetiredElement > firstFreeElement && (this._firstRetiredElement += increaseCount);
33836
33945
  }
33837
33946
  var pos, rot;
33838
33947
  if (main.simulationSpace === exports.ParticleSimulationSpace.World) {
33839
33948
  pos = transform.worldPosition;
33840
33949
  rot = transform.worldRotationQuaternion;
33841
33950
  }
33951
+ var particleUtils = this._renderer.engine._particleBufferUtils;
33842
33952
  var startSpeed = main.startSpeed.evaluate(undefined, main._startSpeedRand.random());
33843
33953
  var instanceVertices = this._instanceVertices;
33844
33954
  var offset = firstFreeElement * particleUtils.instanceVertexFloatStride;
@@ -33942,7 +34052,7 @@
33942
34052
  var particleUtils = engine._particleBufferUtils;
33943
34053
  var frameCount = engine.time.frameCount;
33944
34054
  var instanceVertices = this._instanceVertices;
33945
- while(this._firstActiveElement != this._firstNewElement){
34055
+ while(this._firstActiveElement !== this._firstNewElement){
33946
34056
  var activeParticleOffset = this._firstActiveElement * particleUtils.instanceVertexFloatStride;
33947
34057
  var activeParticleTimeOffset = activeParticleOffset + particleUtils.timeOffset;
33948
34058
  var particleAge = this._playTime - instanceVertices[activeParticleTimeOffset];
@@ -33959,37 +34069,10 @@
33959
34069
  this._waitProcessRetiredElementCount++;
33960
34070
  }
33961
34071
  };
33962
- /**
33963
- * @internal
33964
- */ _proto._updateShaderData = function _updateShaderData(shaderData) {
33965
- this.main._updateShaderData(shaderData);
33966
- this.velocityOverLifetime._updateShaderData(shaderData);
33967
- this.textureSheetAnimation._updateShaderData(shaderData);
33968
- this.sizeOverLifetime._updateShaderData(shaderData);
33969
- this.rotationOverLifetime._updateShaderData(shaderData);
33970
- this.colorOverLifetime._updateShaderData(shaderData);
33971
- };
33972
- /**
33973
- * @internal
33974
- */ _proto._resetGlobalRandSeed = function _resetGlobalRandSeed(seed) {
33975
- this._randomSeed = seed;
33976
- this.main._resetRandomSeed(seed);
33977
- this.emission._resetRandomSeed(seed);
33978
- this.textureSheetAnimation._resetRandomSeed(seed);
33979
- this.velocityOverLifetime._resetRandomSeed(seed);
33980
- this.rotationOverLifetime._resetRandomSeed(seed);
33981
- this.colorOverLifetime._resetRandomSeed(seed);
33982
- };
33983
- /**
33984
- * @internal
33985
- */ _proto._destroy = function _destroy() {
33986
- this._instanceVertexBufferBinding.buffer.destroy();
33987
- this._primitive.destroy();
33988
- };
33989
34072
  _proto._freeRetiredParticles = function _freeRetiredParticles() {
33990
34073
  var particleUtils = this._renderer.engine._particleBufferUtils;
33991
34074
  var frameCount = this._renderer.engine.time.frameCount;
33992
- while(this._firstRetiredElement != this._firstActiveElement){
34075
+ while(this._firstRetiredElement !== this._firstActiveElement){
33993
34076
  var offset = this._firstRetiredElement * particleUtils.instanceVertexFloatStride + particleUtils.startLifeTimeOffset;
33994
34077
  var age = frameCount - this._instanceVertices[offset];
33995
34078
  // WebGL don't support map buffer range, so off this optimization
@@ -39941,6 +40024,7 @@
39941
40024
  var faceCount = ktx2File.getFaces();
39942
40025
  var format = getTranscodeFormatFromTarget(targetFormat, hasAlpha);
39943
40026
  var faces = new Array(faceCount);
40027
+ var isBC = format === 2 || format === 3 || format === 7;
39944
40028
  for(var face = 0; face < faceCount; face++){
39945
40029
  var mipmaps = new Array(levelCount);
39946
40030
  for(var mip = 0; mip < levelCount; mip++){
@@ -39948,8 +40032,15 @@
39948
40032
  var mipWidth = void 0, mipHeight = void 0;
39949
40033
  for(var layer = 0; layer < layerCount; layer++){
39950
40034
  var levelInfo = ktx2File.getImageLevelInfo(mip, layer, face);
39951
- mipWidth = levelInfo.origWidth;
39952
- mipHeight = levelInfo.origHeight;
40035
+ // see: https://github.com/KhronosGroup/KTX-Software/issues/254
40036
+ if (isBC && mip === 0 && (width !== levelInfo.width || height !== levelInfo.height)) {
40037
+ width = mipWidth = levelInfo.width;
40038
+ height = mipHeight = levelInfo.height;
40039
+ console.warn("KTX2 transcode to BC will resize to width: " + width + ", height: " + height + ". You'd better use an image whose size if multiple of 4.");
40040
+ } else {
40041
+ mipWidth = levelInfo.origWidth;
40042
+ mipHeight = levelInfo.origHeight;
40043
+ }
39953
40044
  var dst = new Uint8Array(ktx2File.getImageTranscodedSizeInBytes(mip, layer, 0, format));
39954
40045
  var status = ktx2File.transcodeImage(dst, mip, layer, face, format, 0, -1, -1);
39955
40046
  if (!status) {
@@ -42416,6 +42507,12 @@
42416
42507
  materialShaderData.setTexture(key, texture);
42417
42508
  }));
42418
42509
  break;
42510
+ case "Boolean":
42511
+ materialShaderData.setInt(key, value ? 1 : 0);
42512
+ break;
42513
+ case "Integer":
42514
+ materialShaderData.setInt(key, Number(value));
42515
+ break;
42419
42516
  }
42420
42517
  };
42421
42518
  var engine = resourceManager.engine;
@@ -42548,9 +42645,10 @@
42548
42645
  var _loop = function _loop(i) {
42549
42646
  var atlasItem = atlasItems[i];
42550
42647
  if (atlasItem.img) {
42648
+ var _atlasItem_type;
42551
42649
  chainPromises.push(resourceManager.load({
42552
42650
  url: Utils.resolveAbsoluteUrl(item.url, atlasItem.img),
42553
- type: exports.AssetType.Texture2D,
42651
+ type: (_atlasItem_type = atlasItem.type) != null ? _atlasItem_type : exports.AssetType.Texture2D,
42554
42652
  params: {
42555
42653
  format: format,
42556
42654
  mipmap: mipmap
@@ -43407,7 +43505,7 @@
43407
43505
  ], GALACEAN_animation_event);
43408
43506
 
43409
43507
  //@ts-ignore
43410
- var version = "1.1.0-beta.19";
43508
+ var version = "1.1.0-beta.20";
43411
43509
  console.log("Galacean engine version: " + version);
43412
43510
  for(var key in CoreObjects){
43413
43511
  Loader.registerClass(key, CoreObjects[key]);