-nancheck = (v) ->
-    if v? and (v!=v or v[0]!=v[0]) then debugger
-    v
-
 {mat2, mat3, mat4, vec2, vec3, vec4, quat} = require 'gl-matrix'
 {update_ob_physics} = require './physics.coffee'
 {clamp} = window

                full_exclude_list.push thing
        @objects = for ob in objects when ob not in exclude then ob
        {@scene, scene: {@context}} = @objects[0]
        # Position in animation frames, usually assigned in update(),
        # used when evaluating the animation
        @pos = 0
        # Final factor is calculated from weight and fade in/out
        # usually in update(), and used when evaluating the animation.
        # Multiplies all values of each channel
        # and it's normalized with other animations playing the same channel
        # so the final factor of all animations combined will always be <= 1
        @final_factor = 1
        # Set and used when evaluating the animation to calculate frame_delta
        @last_eval = performance.now()
        # All the rest are only used in update()
        @speed = 0
        @weight = 1
        @blendin_total = 0
        @blendout_total = 0
        @blendin_remaining = 0
        @blendout_remaining = 0
        # Set start_frame and end_frame
        # from markers (if any) or from scene
        {markers_by_name, frame_start, frame_end} = @scene

                # First, iterate through all animations
                # to accumulate the result for this channel
                blend = null
                # TODO: blender seems to behave as if the influence of the first strip
                # is always 1 or 0, independently of other strips.
                # we're doing this (with blend_factor = 1 below)
                # but we want it to work across different animations
                # (including copies of the same animation)
                type = name = prop = ''
                for {strip, action, pos, blend_factor} in strip_actions
                    orig_chan = action.channels[path]
