 
     @sprite = new ReactiveField null
     @edges = new ReactiveField null
+    @horizon = new ReactiveField null
     @pixelCanvas = new ReactiveField null
     @sourceImageVisible = new ReactiveField true
     @mesh = new ReactiveField null

      LOI.Assets.SpriteEditor.Tools.Pencil
      LOI.Assets.SpriteEditor.Tools.Eraser
      LOI.Assets.SpriteEditor.Tools.ColorFill
      LOI.Assets.SpriteEditor.Tools.ColorPicker
      LOI.Assets.MeshEditor.Tools.MoveCamera
      LOI.Assets.SpriteEditor.Tools.PaintNormals
      LOI.Assets.SpriteEditor.Tools.Symmetry
      LOI.Assets.MeshEditor.Tools.PixelGrid
      LOI.Assets.MeshEditor.Tools.PlaneGrid
      LOI.Assets.MeshEditor.Tools.SourceImage
    ]

    tools = for toolClass in toolClasses

      setAssetId: setAssetId
      getPaletteId: @paletteId
      setPaletteId: (paletteId) =>
        # Update mesh palette.
        LOI.Assets.Asset.update LOI.Assets.Mesh.className, @meshId(), $set: palette: _id: paletteId

        # Also update palettes of all sprites.
        return unless cameraAngles = @meshData()?.cameraAngles

        for cameraAngle in cameraAngles when cameraAngle.sprite
          LOI.Assets.Asset.update LOI.Assets.Sprite.className, cameraAngle.sprite._id, $set: palette: _id: paletteId

    @materials new LOI.Assets.Components.Materials
      assetId: @meshId
