mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-26 22:13:32 -04:00
Set up a build queue for async sprite sheet building, which lessens blocking the main thread.
This commit is contained in:
parent
c238b49f52
commit
b2e9768127
2 changed files with 6 additions and 2 deletions
app
|
@ -1,6 +1,8 @@
|
|||
CocoModel = require('./CocoModel')
|
||||
SpriteBuilder = require 'lib/sprites/SpriteBuilder'
|
||||
|
||||
buildQueue = []
|
||||
|
||||
module.exports = class ThangType extends CocoModel
|
||||
@className: "ThangType"
|
||||
urlRoot: "/db/thang.type"
|
||||
|
@ -136,7 +138,8 @@ module.exports = class ThangType extends CocoModel
|
|||
key = @spriteSheetKey(@options)
|
||||
spriteSheet = null
|
||||
if @options.async
|
||||
@builder.buildAsync()
|
||||
buildQueue.push @
|
||||
@builder.buildAsync() unless buildQueue.length > 1
|
||||
@builder.on 'complete', @onBuildSpriteSheetComplete, @, true, key
|
||||
return true
|
||||
console.warn 'Building', @get('name'), @options, 'and blocking the main thread.'
|
||||
|
@ -146,6 +149,8 @@ module.exports = class ThangType extends CocoModel
|
|||
spriteSheet
|
||||
|
||||
onBuildSpriteSheetComplete: (e, key) ->
|
||||
buildQueue = buildQueue.slice(1)
|
||||
buildQueue[0]?.builder.buildAsync()
|
||||
@spriteSheets[key] = e.target.spriteSheet
|
||||
delete @building[key]
|
||||
@trigger 'build-complete'
|
||||
|
|
|
@ -134,7 +134,6 @@ module.exports = class PlayLevelView extends View
|
|||
session = @levelLoader.session
|
||||
diff = new Date().getTime() - new Date(session.get('created')).getTime()
|
||||
return if showFrequency is 'first-time' and diff > (5 * 60 * 1000)
|
||||
return unless @levelLoader.level.loaded
|
||||
articles = @levelLoader.supermodel.getModels Article
|
||||
for article in articles
|
||||
return unless article.loaded
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue