diff --git a/app/lib/surface/CocoSprite.coffee b/app/lib/surface/CocoSprite.coffee index b454031e1..421dbe8c9 100644 --- a/app/lib/surface/CocoSprite.coffee +++ b/app/lib/surface/CocoSprite.coffee @@ -167,10 +167,11 @@ module.exports = CocoSprite = class CocoSprite extends CocoClass @imageObject?.play?() mark.play() for name, mark of @marks - update: -> + update: (frameChanged) -> # Gets the sprite to reflect what the current state of the thangs and surface are return if @stillLoading @updatePosition() + return unless frameChanged @updateScale() @updateAlpha() @updateRotation() diff --git a/app/lib/surface/SpriteBoss.coffee b/app/lib/surface/SpriteBoss.coffee index f84d52a28..004934105 100644 --- a/app/lib/surface/SpriteBoss.coffee +++ b/app/lib/surface/SpriteBoss.coffee @@ -158,7 +158,7 @@ module.exports = class SpriteBoss extends CocoClass update: (frameChanged) -> @adjustSpriteExistence() if frameChanged - sprite.update() for thangID, sprite of @sprites + sprite.update frameChanged for thangID, sprite of @sprites @updateSelection() @spriteLayers["Default"].updateLayerOrder() @cache() @@ -181,7 +181,7 @@ module.exports = class SpriteBoss extends CocoClass sprite.hasMoved = false @removeSprite sprite if missing @cache true if updateCache and @cached - + # mainly for handling selecting thangs from session when the thang is not always in existence if @willSelectThang and @sprites[@willSelectThang[0]] @selectThang @willSelectThang... @@ -212,12 +212,12 @@ module.exports = class SpriteBoss extends CocoClass @play() onCastSpells: -> @stop() - + play: -> sprite.imageObject.play() for thangID, sprite of @sprites @selectionMark?.play() @targetMark?.play() - + stop: -> sprite.imageObject.stop() for thangID, sprite of @sprites @selectionMark?.stop() diff --git a/app/lib/surface/Surface.coffee b/app/lib/surface/Surface.coffee index fd278b8cc..7479edf75 100644 --- a/app/lib/surface/Surface.coffee +++ b/app/lib/surface/Surface.coffee @@ -208,10 +208,12 @@ module.exports = Surface = class Surface extends CocoClass @onFramesScrubbed() # For performance, don't play these for instant transitions. onTweenEnd() + return unless @loaded @updateState true @onFrameChanged() onFramesScrubbed: (e) => + return unless @loaded if e # Gotta play all the sounds when scrubbing (but not when doing an immediate transition). rising = @currentFrame > @lastFrame diff --git a/app/views/play/level/tome/spell_palette_view.coffee b/app/views/play/level/tome/spell_palette_view.coffee index 8085b6145..2ba25e5ed 100644 --- a/app/views/play/level/tome/spell_palette_view.coffee +++ b/app/views/play/level/tome/spell_palette_view.coffee @@ -44,6 +44,7 @@ module.exports = class SpellPaletteView extends View allDocs = {} for lc in lcs for doc in (lc.get('propertyDocumentation') ? []) + doc = _.clone doc allDocs['__' + doc.name] ?= [] allDocs['__' + doc.name].push doc if doc.type is 'snippet' then doc.owner = 'snippets'