 
             next_child = node.children.filter((_) -> _.children?)[0]
 
+            # Start promise chain
             Promise.resolve()
                 .then =>
                     # Fade out siblings

        end = begin + word.length
        text_object.children.slice begin, end

    chainedFadeIn: (children, target_child, duration) ->
        # transition = (prev, curr, index, array) ->
        #     prev.transition()
        #         .duration duration
        #         .tween "fadeOpacity", ->
        #             from = this.material.uniforms.opacity.value
        #             i = d3.interpolate from, to
        #             (t) ->
        #                 this.material.uniforms.opacity.value = i(t)

    animateLines: (root) =>



    foo: ->
        console.log @camera.position

# .transition()
# .duration duration
# .delay (_, i) -> i * 10
# # .tween "fadeOpacity", ->
# #     fadeOpacityTween.bind(this)(1)
# .tween "fadeOpacity", ->
#     from = this.material.uniforms.opacity.value
#     i = d3.interpolate from, to
#     (t) ->
#         this.material.uniforms.opacity.value = i(t)
# .each "end", resolve

# fadeOpacityTween = (to, obj) ->
#     from = this.material.uniforms.opacity.value
#     i = d3.interpolate from, to
#     (t) ->
#         this.material.uniforms.opacity.value = i(t)

# addBBox = (node) =>
#     bbox = new THREE.BoundingBoxHelper( node._text_object, 0xff0000 )
