소스 검색

Fix sprite check when there is no visible sprites

David Catuhe 6 년 전
부모
커밋
3280f82d1d
3개의 변경된 파일11개의 추가작업 그리고 1개의 파일을 삭제
  1. 3 0
      Tools/Gulp/package.json
  2. 1 1
      dist/preview release/what's new.md
  3. 7 0
      src/Sprites/spriteManager.ts

+ 3 - 0
Tools/Gulp/package.json

@@ -11,5 +11,8 @@
     "scripts": {
         "install": "cd ../../ && npm install && cd Playground/ && npm install && cd ../Viewer && npm install && cd ../Tools/Gulp/",
         "build": "gulp --max-old-space-size=8192 --tsLintFix"
+    },
+    "dependencies": {
+        "typescript": "^3.3.3333"
     }
 }

+ 1 - 1
dist/preview release/what's new.md

@@ -35,7 +35,7 @@
   - Added sheen support to PBR ([Sebavan](https://github.com/Sebavan)) **** NEED DEMO or DOC LINK)
 
 ## Optimizations
-- Moved all shaders to mediump by default. High precision is still available under an engine options ([Deltakosh](https://github.com/deltakosh))
+- Added an engine creation option to compile all shaders with medium precision ([Deltakosh](https://github.com/deltakosh))
 - Optimized effect reused for shadow maps ([Deltakosh](https://github.com/deltakosh))
 - Added support for Scissor testing ([Deltakosh](https://github.com/deltakosh))
 - Improved shader precision detection ([Deltakosh](https://github.com/deltakosh))

+ 7 - 0
src/Sprites/spriteManager.ts

@@ -328,12 +328,14 @@ export class SpriteManager implements ISpriteManager {
         var rowSize = baseSize.width / this.cellWidth;
 
         var offset = 0;
+        let noSprite = true;
         for (var index = 0; index < max; index++) {
             var sprite = this.sprites[index];
             if (!sprite || !sprite.isVisible) {
                 continue;
             }
 
+            noSprite = false;
             sprite._animate(deltaTime);
 
             this._appendSpriteVertex(offset++, sprite, 0, 0, rowSize);
@@ -341,6 +343,11 @@ export class SpriteManager implements ISpriteManager {
             this._appendSpriteVertex(offset++, sprite, 1, 1, rowSize);
             this._appendSpriteVertex(offset++, sprite, 0, 1, rowSize);
         }
+
+        if (noSprite) {
+            return;
+        }
+
         this._buffer.update(this._vertexData);
 
         // Render