anchor.diff:          break;
         case Direction.RIGHT:
           mainDirection += rightDirection;
  +        break;
  +
  +      case Direction.UPLEFT:
  +        mainDirection += upLeftDirection;
  +        break;
  +      case Direction.UPRIGHT:
  +        mainDirection += upRightDirection;
  +        break;
  +      case Direction.DOWNLEFT:
  +        mainDirection += downLeftDirection;
  +        break;
  +      case Direction.DOWNRIGHT:
  +        mainDirection += downRightDirection;
           break;
       }
   
  
positive.code:   void nullMainDirection() {
      if (!mainDirection.isZero) mainDirection = _zeroVector;
    }
    
    /**
     * Set the main direction's x component to zero.
     */
    void nullMainDirectionX() {
      mainDirection *= _zeroOneVector;
    }
    
    /**
     * Set the main direction's y component to zero.
     */
  
negative.code:   StageXL.Vector downDirection = new StageXL.Vector(0, 1);
    StageXL.Vector leftDirection = new StageXL.Vector(-1, 0);
    StageXL.Vector rightDirection = new StageXL.Vector(1, 0);
  
    StageXL.Vector upLeftDirection;
    StageXL.Vector upRightDirection;
  
    StageXL.Vector downLeftDirection;
    StageXL.Vector downRightDirection;
  
    DirectionSystem() {
      upLeftDirection = upDirection.rotate(-90 * (math.PI / 180));
      upRightDirection = upDirection.rotate(90 * (math.PI / 180));
  
      downLeftDirection = downDirection.rotate(90 * (math.PI / 180));
      downRightDirection = downDirection.rotate(-90 * (math.PI / 180));
    }
  
    /**
  