Browse Source

Merge pull request #9222 from Popov72/fix-spritemgr

Fix crash when using the sprite manager
sebavan 4 years ago
parent
commit
8d30b9fc1a
2 changed files with 6 additions and 6 deletions
  1. 1 1
      src/Sprites/sprite.ts
  2. 5 5
      src/Sprites/spriteManager.ts

+ 1 - 1
src/Sprites/sprite.ts

@@ -74,12 +74,12 @@ export class Sprite extends ThinSprite implements IAnimatable {
         public name: string,
         manager: ISpriteManager) {
         super();
-        this.uniqueId = this._manager.scene.getUniqueId();
         this.color = new Color4(1.0, 1.0, 1.0, 1.0);
         this.position = Vector3.Zero();
 
         this._manager = manager;
         this._manager.sprites.push(this);
+        this.uniqueId = this._manager.scene.getUniqueId();
     }
 
     /**

+ 5 - 5
src/Sprites/spriteManager.ts

@@ -245,6 +245,10 @@ export class SpriteManager implements ISpriteManager {
         }
         this._fromPacked = fromPacked;
 
+        this._scene = scene;
+        const engine = this._scene.getEngine();
+        this._spriteRenderer = new SpriteRenderer(engine, capacity, epsilon, scene);
+
         if (cellSize.width && cellSize.height) {
             this.cellWidth = cellSize.width;
             this.cellHeight = cellSize.height;
@@ -252,17 +256,13 @@ export class SpriteManager implements ISpriteManager {
             this.cellWidth = cellSize;
             this.cellHeight = cellSize;
         } else {
+            this._spriteRenderer = <any>null;
             return;
         }
 
-        this._scene = scene;
         this._scene.spriteManagers.push(this);
         this.uniqueId = this.scene.getUniqueId();
 
-        const engine = this._scene.getEngine();
-        this._spriteRenderer = new SpriteRenderer(engine, capacity, epsilon, scene);
-        this._spriteRenderer.cellWidth = this.cellWidth;
-        this._spriteRenderer.cellHeight = this.cellHeight;
         if (imgUrl) {
             this._spriteRenderer.texture = new Texture(imgUrl, scene, true, false, samplingMode);
         }